Warning: Trying to access array offset on value of type null in /home/site/wwwroot/lib/plugins/move/action/rename.php on line 42

Warning: Cannot modify header information - headers already sent by (output started at /home/site/wwwroot/lib/plugins/move/action/rename.php:42) in /home/site/wwwroot/inc/Action/Export.php on line 106

Warning: Cannot modify header information - headers already sent by (output started at /home/site/wwwroot/lib/plugins/move/action/rename.php:42) in /home/site/wwwroot/inc/Action/Export.php on line 106
adps_with_symmetry_constraints

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:

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);  ) }