I noticed the following example given on the official website of the tool “Wyckoff position generator”:
Wyckoff position generator
Generates coordinates for all equivalent atoms from one specific atom,
given its Wyckoff position of the crystal space group.Example: for I41/amd (No. 141) space group, an atom (0, 0, 0.0729) at
Wyckoff position 8e yields the following 8 atoms:(0,0,0.0729), (0.5,0.5,0.5729), (0,0.5,0.3229), (0.5,0,0.8229),
(0.5,0,0.6771), (0,0.5,0.1771), (0.5,0.5,0.4271), (0,0,-0.0729)
I try to check/confirm the above example based on the data here, as represented below:
For this purpose, I figured out the following code snippet:
In[7]:= Clear["Global`*"];
v1 = {1/2, 1/2, 1/2};
v2 = {{0, 0, z + 1/8}, {0, 1/2, z + 3/8}, {1/2, 0, -z + 5/8}, {1/2,
1/2, -z + 3/8}};
(*ArrayFlatten[{v2,(v1+#&)/@v2},1]/. Solve[z+1/8==0.0729,z];*)
Mod[#, 1] & /@
ArrayFlatten[{v2, TranslationTransform[v1] /@ v2} /.
Solve[z + 1/8 == 0.0729, z], 1];
ArrayFlatten[%, 1]
Out[11]= {{0, 0, 0.0729}, {0, 1/2, 0.3229}, {1/2, 0, 0.6771}, {1/2, 1/
2, 0.4271}, {1/2, 1/2, 0.5729}, {1/2, 0, 0.8229}, {0, 1/2,
0.1771}, {0, 0, 0.9271}}
The last two lines of the command seem a bit bloated and cumbersome. Is there any way to improve it in order to make it elegant and efficient?
Any hints/comments/suggestions will be appreciated.
Regards,
Zhao

