Skip to content

Moyo conventions of standardized cell

Note

This document is based on moyo==0.17.0.

This document describes how the standardized cell MoyoDataset.std_cell and the primitive standardized cell MoyoDataset.prim_std_cell are specified in Moyo. The conventions described here apply uniformly to the core Rust implementation as well as all other language bindings.

setting option in MoyoDataset::new

We refer to the criteria to choose a representative of each space-group type as a setting. After symmetry operations of an input crystal structure are determined, moyo transforms the space group into a representative of its space-group type defined by the chosen setting. Here, the transformation comprises both a change of basis and an origin shift.

Moyo supports three settings;

  • Setting.Standard: the so called "ITA setting", which is one of the conventional descriptions for each space-group type used in the International Tables for Crystallography Volume A (2016). The ITA setting chooses unique axis b setting, cell choice 1 for monoclinic space groups, hexagonal axes for rhombohedral groups, and origin choice 2 for centrosymmetric groups.
  • Setting.Spglib: the setting used in spglib, which chooses the smallest one in the serial numbers for Hall symbols described in Prof. Seto's page. Be sure that this serial number, so called "Hall number", would not be a standard crystallographic definition 1.
  • Setting.HallNumber: allows users to specify a "Hall number" (an integer from 1 to 530) directly.

Moyo chooses Setting.Standard as the default setting, which is different from spglib's default Setting.Spglib. This change of the default behavior affects in centrosymmetric groups: moyo chooses origin choice 2 by default, while spglib chooses origin choice 1 by default.

rotate_basis option in MoyoDataset::new

Because the basis vectors of the input crystal structure are not assumed to align with Cartesian x, y, and z axes, moyo rotates the basis vectors at rotate_basis=True (default) as follows:

Standardized cell with setting=Setting.Standard, rotate_basis=true, and right-handed input basis vectors

Let \(\mathbf{P}_{\mathrm{std}}\) be MoyoDataset.std_linear and \(\mathbf{p}_{\mathrm{std}}\) be MoyoDataset.std_origin_shift. The transformation \((\mathbf{P}_{\mathrm{std}}, \mathbf{p}_{\mathrm{std}})\) brings the input crystal structure into the standardized cell (MoyoDataset.std_cell). When setting=Setting.Standard, the standardized cell gives the space group in the ITA setting.

Let \(\mathbf{A}\) be the column-wise basis vectors of the input crystal structure, Cell.basis, and \(\mathbf{A}_{\mathbf{std}}\) be the column-wise basis vectors of the standardized cell, MoyoDataset.std_cell.basis. When rotate_basis=true, the following relation holds:

\[ \mathbf{A}_{\mathbf{std}} = \mathbf{R} \mathbf{A} \mathbf{P}_{\mathrm{std}}, \]

where \(\mathbf{R}\) is MoyoDataset.std_rotation_matrix. Here, \(\mathbf{R}\) is a proper rotation matrix that brings the input basis vectors into a certain orientation depending on the crystal family.

Caution

The Rust-implementation attribute Cell.basis stores the basis vectors in column-wise manner, while the other language bindings store them in row-wise manner.

The standardized cell basis vectors \(\mathbf{A}_{\mathrm{std}}\) are defined for each crystal family as the following table. Note that rotate_basis=true is assumed, and that the input basis vectors are right-handed.

Crystal family "Conventional" basis vectors \(\mathbf{A}_{\mathrm{std}}\)
(MoyoDataset.std_cell.basis)
Additional conditions
Triclinic \(\begin{pmatrix} a_x & b_x & c_x \\ a_y & b_y & c_y \\ a_z & b_z & c_z \end{pmatrix}\) Niggli reduced 2; \(a_x, b_y, c_z \gt 0\) 3
Monoclinic \(\begin{pmatrix} a & 0 & c \cos \beta \\ 0 & b & 0 \\ 0 & 0 & c \sin \beta \end{pmatrix}\) \(a, b, c \sin \beta \gt 0\); \(\cos \beta \le 0\) 4 5
Orthorhombic \(\begin{pmatrix} a & 0 & 0 \\ 0 & b & 0 \\ 0 & 0 & c \end{pmatrix}\) \(a, b, c \gt 0\) 4; \(a \le b \le c\) as far as possible 6
Tetragonal \(\begin{pmatrix} a & 0 & 0 \\ 0 & a & 0 \\ 0 & 0 & c \end{pmatrix}\) \(a, c \gt 0\) 4
Hexagonal \(\begin{pmatrix} a & -a / 2 & 0 \\0 & \sqrt{3} a / 2 & 0 \\ 0 & 0 & c \end{pmatrix}\) \(a, c > 0\) 4
Cubic \(\begin{pmatrix} a & 0 & 0 \\ 0 & a & 0 \\ 0 & 0 & a \end{pmatrix}\) \(a > 0\) 7

Primitive standardized cell with setting=Setting.Standard, rotate_basis=true, and right-handed input basis vectors

Let \(\mathbf{P}_{\mathrm{prim}}\) be MoyoDataset.prim_std_linear and \(\mathbf{p}_{\mathrm{prim}}\) be MoyoDataset.prim_std_origin_shift. The transformation \((\mathbf{P}_{\mathrm{prim}}, \mathbf{p}_{\mathrm{prim}})\) brings the input crystal structure into the primitive standardized cell (MoyoDataset.prim_std_cell). Moyo chooses a transformation matrix \(\mathbf{Q}\) from a primitive cell to the standardized cell as the following table.

Crystal family Bravais class Transformation matrix from primitive to conventional, \(\mathbf{Q}\) \(\mathbf{Q}^{-1}\)
Triclinic aP \(\mathbf{Q}_P = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\) \(\mathbf{Q}_P^{-1} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\)
Monoclinic mP \(\mathbf{Q}_P\) \(\mathbf{Q}_P^{-1}\)
mC \(\mathbf{Q}_C = \begin{pmatrix} 1 & -1 & 0 \\ 1 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\) \(\mathbf{Q}_C^{-1} = \begin{pmatrix} 1/2 & 1/2 & 0 \\ -1/2 & 1/2 & 0 \\ 0 & 0 & 1 \end{pmatrix}\)
Orthorhombic oP \(\mathbf{Q}_P\) \(\mathbf{Q}_P^{-1}\)
oS \(\mathbf{Q}_C\) \(\mathbf{Q}_C^{-1}\)
oF \(\mathbf{Q}_F = \begin{pmatrix} -1 & 1 & 1 \\ 1 & -1 & 1 \\ 1 & 1 & -1 \end{pmatrix}\) \(\mathbf{Q}_F^{-1} = \begin{pmatrix} 0 & 1/2 & 1/2 \\ 1/2 & 0 & 1/2 \\ 1/2 & 1/2 & 0 \end{pmatrix}\)
oI \(\mathbf{Q}_I = \begin{pmatrix} 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{pmatrix}\) \(\mathbf{Q}_I^{-1} = \begin{pmatrix} -1/2 & 1/2 & 1/2 \\ 1/2 & -1/2 & 1/2 \\ 1/2 & 1/2 & -1/2 \end{pmatrix}\)
Tetragonal tP \(\mathbf{Q}_P\) \(\mathbf{Q}_P^{-1}\)
tI \(\mathbf{Q}_I\) \(\mathbf{Q}_I^{-1}\)
Hexagonal hR \(\mathbf{Q}_R = \begin{pmatrix} 1 & 0 & 1 \\ -1 & 1 & 1 \\ 0 & -1 & 1 \end{pmatrix}\) \(\mathbf{Q}_R^{-1} = \begin{pmatrix} 2/3 & -1/3 & -1/3 \\ 1/3 & 1/3 & -2/3 \\ 1/3 & 1/3 & 1/3 \end{pmatrix}\)
hP \(\mathbf{Q}_P\) \(\mathbf{Q}_P^{-1}\)
Cubic cP \(\mathbf{Q}_P\) \(\mathbf{Q}_P^{-1}\)
cF \(\mathbf{Q}_F\) \(\mathbf{Q}_F^{-1}\)
cI \(\mathbf{Q}_I\) \(\mathbf{Q}_I^{-1}\)

Depending on the Bravais class of the standardized cell, the following relation holds:

\[ (\mathbf{P}_{\mathrm{prim}}, \mathbf{p}_{\mathrm{prim}}) = (\mathbf{P}_{\mathrm{std}}, \mathbf{p}_{\mathrm{std}}) (\mathbf{Q}, \mathbf{0})^{-1} \]
\[ \mathbf{A}_{\mathrm{prim}} = \mathbf{A}_{\mathrm{std}} \mathbf{Q}^{-1}. \]

  1. That being said, the order of the Hall symbols are the same as Table A1.4.2.7 in International Tables for Crystallography Volume B (2010). 

  2. Applied regardless of rotate_basis value. 

  3. \(c_z < 0\) for left-handed input basis vectors. 

  4. \(c < 0\) for left-handed input basis vectors. 

  5. The basis vectors \(\mathbf{a}\) and \(\mathbf{c}\) are taken from the Delaunay-reduced triple \(\mathbf{v}_1, \mathbf{v}_2, -(\mathbf{v}_1 + \mathbf{v}_2)\) of the lattice plane perpendicular to the unique axis, whose members are pairwise non-acute. Among the pairs that keep the Hall setting (the centering and the glide translations, up to an origin shift), moyo chooses the one with \(\beta\) closest to \(\pi / 2\), prefers the non-acute value (\(\pi / 2 \le \beta \lt \pi\), i.e. \(\cos \beta \le 0\)) between the supplements following the ITA convention, and finally the lexicographically smallest \((a, b, c)\), which gives \(a \le c\) for the settings that allow the \(\mathbf{a} \leftrightarrow \mathbf{c}\) swap (\(P2\), \(P2_1\), \(Pm\), \(P2/m\), \(P2_1/m\)) following E. Parthe and L. M. Gelato, Acta Cryst. A39, 169-173 (1983), as spglib does. Consequently \(\pi / 2 \le \beta \le 2\pi / 3\)

  6. moyo orders the basis vectors as \(a \le b \le c\) as far as the space-group setting allows. Among the six axis permutations, only those that preserve the centering and map the space group onto itself up to an origin shift (i.e. elements of the affine normalizer) are admissible, and moyo picks the admissible one with the lexicographically smallest \((a, b, c)\). Full ordering is not always attainable; for example, side-face-centered cells (oS) admit only the \(\mathbf{a} \leftrightarrow \mathbf{b}\) swap, enforcing \(a \le b\) alone. 

  7. Negative (z, z)-component for left-handed input basis vectors.