Specifying Rotations

You specify a rotation by a sequence of one or more substrings separated by commas,


Each substring rot1, rot2, … is a rotation around a particular axis and has the syntax


angle is the size of the rotation, in radians; x, y, and z are three real numbers specifying the rotation axis. There should be no spaces in the string.

Each successive substring specifies a rotation about the new coordinate system. As a special case, the Euler angles are defined as a sequence of three rotations, the first about z by angle α, the second a rotation about the new y axis by angle β; the third about the new z axis by angle γ. For the case α=π/4, β=π/3, and γ=π/2, the syntax would be


You can use as a the following strings as shorthand:
   x: = shorthand for (1,0,0)
   y: = shorthand for (0,1,0)
   z: = shorthand for (0,0,1)

Thus the rotation above could equally be specified as:


Below are two instances of rotations, especially useful for cubic systems:

  z:pi/4,y:acos(1/sqrt(3))  ← Rotates z to the (1,1,1) direction
  z:-pi/4,y:pi/2            ← Rotates z to the (1,-1,0) direction

Space groups

Crystallographic space groups consist of a translation part a in addition to a rotation part R. In general a point r gets mapped into

r′ = R r + a

The Questaal codes have an additional syntax for space groups. The translation part gets appended to rotation part in one of the following forms:  :(x1,x2,x3)  or alternatively  ::(p1,p2,p3)  with the double ‘::’. The first defines the translation in Cartesian coordinates; the second as fractional multiples of lattice vectors.

Example: Co is hcp with c/a=1.632993. Writing the basis as

SITE    ATOM=A XPOS=1/3 -1/3 1/2
        ATOM=A XPOS= 0 0 0

generators of the space group read in either of the two equivalent forms

i*r3z:(-1*sqrt(3)/6,-1/2,-0.8164966) r2z:(-1*sqrt(3)/6,-1/2,0.8164966) r2x
i*r3z::(1/3,-1/3,-1/2) r2z::(1/3,-1/3,1/2) r2x

Edit This Page