ADPs with Symmetry Constraints
Description: Include symmetry constraints with anisotropic displacement parameters.
Comment: In a particular version of Topas 5, it doesn't constrain the values of anisotropic displacement parameters according to the site symmetry. Symmetry constraints were taken from [1], which is a reprint of [2].
In all other versions of Topas, use the keyword “adps” to get Topas to insert the correct, symmetry-constrained values.
The macros below correspond to Table 4.1 in [1], which refers to Table 4.2, which gives the necessary restrictions for each Wyckoff site in each spacegroup. I'm assuming that a general position in any space group has no constraints on the ADP values.
The U12, U13, U23 values in the tables are listed as 2*U12, 2*U13, 2*U23, so I think this means that they should be divided by two. But I think this should only be an issue in nos 13-16, where there is a constraint between U22 and U12.
Note added by John: Be careful in space group 227 if you're using the Willis table. It's missing one “18” in the list. This means that the constraints for Wyckoff sites f onwards are displace one column to the left. It should read “17 17 18 18 18 9 6 10”.
The Willis table is here. You should always check carefully against (e.g. international tables) when you don't use TOPAS to generate adps. A program like VESTA will also warn you if they are incorrect. There is a small number of space-group/Wyckoff site combinations where TOPAS crashes when generating adps so this is sometimes needed.
References:
- [1] Willis, B. T. M., and A. W. Pryor. 1975. Thermal Vibrations in Crystallography. London: Cambridge University Press, pp. 104-110.
Contributed by: Matthew Rowles
macro ADP(U11, U22, U33, U12, U13, U23) { u11 U11 u22 U22 u33 U33 u12 U12 u13 U13 u23 U23 } macro ADP_0 (U11, U22, U33, U12, U13, U23) { ADP(U11, U22 , U33 , U12 , U13 , U23 ) } macro ADP_1 (U11, U22, U33, U13 ) { ADP(U11, U22 , U33 , 0 , U13 , 0 ) } macro ADP_2 (U11, U22, U33, U12 ) { ADP(U11, U22 , U33 , U12 , 0 , 0 ) } macro ADP_3 (U11, U22, U33, U23) { ADP(U11, U22 , U33 , 0 , 0 , U23 ) } macro ADP_4 (U11, U22, U33 ) { ADP(U11, U22 , U33 , 0 , 0 , 0 ) } macro ADP_5 (U11, U33, U12 ) { ADP(U11, =Get(u11);, U33 , U12 , 0 , 0 ) } macro ADP_6 (U11, U33, U12, U13 ) { ADP(U11, =Get(u11);, U33 , U12 , U13 , =Get(u13); ) } macro ADP_7 (U11, U33, U12, U13 ) { ADP(U11, =Get(u11);, U33 , U12 , U13 , =-Get(u13); ) } macro ADP_8 (U11, U33 ) { ADP(U11, =Get(u11);, U33 , 0 , 0 , 0 ) } macro ADP_9 (U11, U22, U23) { ADP(U11, U22 , =Get(u22);, 0 , 0 , U23 ) } macro ADP_10(U11, U22, U12, U23) { ADP(U11, U22 , =Get(u22);, U12 , =Get(u12);, U23 ) } macro ADP_11(U11, U22, U13, U23) { ADP(U11, U22 , =Get(u22);, =-Get(u13) , U13 , U23 ) } macro ADP_12(U11, U22 ) { ADP(U11, U22 , =Get(u22);, 0 , 0 , 0 ) } macro ADP_13(U11, U22, U33, U13 ) { ADP(U11, U22 , U33 , =Get(u22)/2;, U13 , 0 ) } macro ADP_14(U11, U22, U33 ) { ADP(U11, U22 , U33 , =Get(u22)/2;, 0 , 0 ) } macro ADP_15(U11, U22, U33, U13 ) { ADP(U11, U22 , U33 , =Get(u22)/2;, U13 , =2 Get(u13);) } macro ADP_16(U11, U33 ) { ADP(U11, =Get(u11);, U33 , =Get(u11)/2;, 0 , 0 ) } macro ADP_17(U11 ) { ADP(U11, =Get(u11);, =Get(u11);, 0 , 0 , 0 ) } macro ADP_18(U11, U12 ) { ADP(U11, =Get(u11);, =Get(u11);, U12 , =Get(u12);, =Get(u12); ) }