Monoclinic (MCL)#

Pearson symbol: mP

Constructor: MCL()

It is defined by four parameter: \(a\), \(b\), \(c\) and \(\alpha\) with primitive and conventional cell:

\[\begin{split}\begin{matrix} \boldsymbol{a}_1 &=& \boldsymbol{a}_1^c &=& (a, &0, &0)\\ \boldsymbol{a}_2 &=& \boldsymbol{a}_2^c &=& (0, &b, &0)\\ \boldsymbol{a}_3 &=& \boldsymbol{a}_3^c &=& (0, &c\cos\alpha, &c\sin\alpha) \end{matrix}\end{split}\]

with

\[\begin{split}\boldsymbol{C} = \boldsymbol{C}^{-1} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\end{split}\]

Order of parameters: \(b \le c\), \(\alpha < 90^{\circ}\).

K-path#

\(\mathrm{\Gamma-Y-H-C-E-M_1-A-X-H_1\vert M-D-Z\vert Y-D}\)

\[\begin{matrix} \eta = \dfrac{1 - b\cos\alpha / c}{2\sin^2\alpha} & \nu = \dfrac{1}{2} - \dfrac{\eta c\cos\alpha}{b} \end{matrix}\]

Point

\(\times\boldsymbol{b}_1\)

\(\times\boldsymbol{b}_2\)

\(\times\boldsymbol{b}_3\)

\(\mathrm{\Gamma}\)

\(0\)

\(0\)

\(0\)

\(\mathrm{A}\)

\(1/2\)

\(1/2\)

\(0\)

\(\mathrm{C}\)

\(0\)

\(1/2\)

\(1/2\)

\(\mathrm{D}\)

\(1/2\)

\(0\)

\(1/2\)

\(\mathrm{D_1}\)

\(1/2\)

\(0\)

\(-1/2\)

\(\mathrm{E}\)

\(1/2\)

\(1/2\)

\(1/2\)

\(\mathrm{H}\)

\(0\)

\(\eta\)

\(1-\nu\)

\(\mathrm{H_1}\)

\(0\)

\(1-\eta\)

\(\nu\)

\(\mathrm{H_2}\)

\(0\)

\(\eta\)

\(-\nu\)

\(\mathrm{M}\)

\(1/2\)

\(\eta\)

\(1-\nu\)

\(\mathrm{M_1}\)

\(1/2\)

\(1-\eta\)

\(\nu\)

\(\mathrm{M_2}\)

\(1/2\)

\(\eta\)

\(-\nu\)

\(\mathrm{X}\)

\(0\)

\(1/2\)

\(0\)

\(\mathrm{Y}\)

\(0\)

\(0\)

\(1/2\)

\(\mathrm{Y_1}\)

\(0\)

\(0\)

\(-1/2\)

\(\mathrm{Z}\)

\(1/2\)

\(0\)

\(0\)

Variations#

There are no variations for monoclinic lattice. One example is predefined: mcl with \(a = \pi\), \(b = 1.3 \pi\) \(c = 1.6 \pi\) and \(\alpha = 75^{\circ}\).

Examples#

Brillouin zone and default kpath#

# Wulfric - Crystal, Lattice, Atoms, K-path.
# Copyright (C) 2023-2024 Andrey Rybakov
#
# e-mail: anry@uv.es, web: adrybakov.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

import wulfric as wulf

l = wulf.lattice_example("{name}")
# Standardization is explicit since 0.3
l.standardize()
backend = wulf.PlotlyBackend()
backend.plot(l, kind="brillouin-kpath")
# Save an image:
backend.save("mcl_brillouin.png")
# Interactive plot:
backend.show()

Primitive and conventional cell#

# Wulfric - Crystal, Lattice, Atoms, K-path.
# Copyright (C) 2023-2024 Andrey Rybakov
#
# e-mail: anry@uv.es, web: adrybakov.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

import wulfric as wulf

l = wulf.lattice_example("{name}")
# Standardization is explicit since 0.3
l.standardize()
backend = wulf.PlotlyBackend()
backend.plot(l, kind="primitive")
# Save an image:
backend.save("mcl_real.png")
# Interactive plot:
backend.show()

Wigner-Seitz cell#

# Wulfric - Crystal, Lattice, Atoms, K-path.
# Copyright (C) 2023-2024 Andrey Rybakov
#
# e-mail: anry@uv.es, web: adrybakov.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

import wulfric as wulf

l = wulf.lattice_example("{name}")
# Standardization is explicit since 0.3
l.standardize()
backend = wulf.PlotlyBackend()
backend.plot(l, kind="wigner-seitz")
# Save an image:
backend.save("mcl_wigner-seitz.png")
# Interactive plot:
backend.show()

Cell standardization#

Conditions \(b \le c\) and \(\alpha < 90^{\circ}\) are checked directly. Matrix \(\boldsymbol{S}\) is constructed in three steps.

Step 1#

  • If \(\beta = \gamma = \frac{\pi}{2}\) and \(\alpha \ne \frac{\pi}{2}\) (i.e. \(\boldsymbol{a}_1\cdot\boldsymbol{a}_3 = \boldsymbol{a}_1\cdot\boldsymbol{a}_2 = 0\) and \(\boldsymbol{a}_2\cdot\boldsymbol{a}_3 \ne 0\), then

    \[(\boldsymbol{a}_1^1, \boldsymbol{a}_2^1, \boldsymbol{a}_3^1) = (\boldsymbol{a}_1, \boldsymbol{a}_2, \boldsymbol{a}_3)\]

    and

    \[\begin{split}\boldsymbol{S}_1 = \boldsymbol{S}_1^{-1} = \boldsymbol{S}_1^T = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\end{split}\]
  • If \(\alpha = \gamma = \frac{\pi}{2}\) and \(\beta \ne \frac{\pi}{2}\) (i.e. \(\boldsymbol{a}_2\cdot\boldsymbol{a}_3 = \boldsymbol{a}_1\cdot\boldsymbol{a}_2 = 0\) and \(\boldsymbol{a}_1\cdot\boldsymbol{a}_3 \ne 0\), then

    \[(\boldsymbol{a}_1^1, \boldsymbol{a}_2^1, \boldsymbol{a}_3^1) = (\boldsymbol{a}_2, \boldsymbol{a}_3, \boldsymbol{a}_1)\]

    and

    \[\begin{split}\boldsymbol{S}_1 = \begin{pmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{pmatrix} \qquad \boldsymbol{S}_1^{-1} = \boldsymbol{S}_1^T = \begin{pmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix}\end{split}\]
  • If \(\alpha = \beta = \frac{\pi}{2}\) and \(\gamma \ne \frac{\pi}{2}\) (i.e. \(\boldsymbol{a}_2\cdot\boldsymbol{a}_3 = \boldsymbol{a}_1\cdot\boldsymbol{a}_3 = 0\) and \(\boldsymbol{a}_1\cdot\boldsymbol{a}_2 \ne 0\), then

    \[(\boldsymbol{a}_1^1, \boldsymbol{a}_2^1, \boldsymbol{a}_3^1) = (\boldsymbol{a}_3, \boldsymbol{a}_1, \boldsymbol{a}_2)\]

    and

    \[\begin{split}\boldsymbol{S}_1 = \begin{pmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix} \qquad \boldsymbol{S}_1^{-1} = \boldsymbol{S}_1^T = \begin{pmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{pmatrix}\end{split}\]

Step 2#

  • If \(\vert \boldsymbol{a}_2^1 \vert \le \vert \boldsymbol{a}_3^1 \vert\), then

    \[(\boldsymbol{a}_1^2, \boldsymbol{a}_2^2, \boldsymbol{a}_3^2) = (\boldsymbol{a}_1^1, \boldsymbol{a}_2^1, \boldsymbol{a}_3^1)\]

    and

    \[\begin{split}\boldsymbol{S}_2 = \boldsymbol{S}_2^{-1} = \boldsymbol{S}_2^T = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\end{split}\]
  • If \(\vert \boldsymbol{a}_2^1 \vert > \vert \boldsymbol{a}_3^1 \vert\), then

    \[(\boldsymbol{a}_1^2, \boldsymbol{a}_2^2, \boldsymbol{a}_3^2) = (-\boldsymbol{a}_1^1, \boldsymbol{a}_3^1, \boldsymbol{a}_2^1)\]

    and

    \[\begin{split}\boldsymbol{S}_2 = \begin{pmatrix} -1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{pmatrix} \qquad \boldsymbol{S}_2^{-1} = \boldsymbol{S}_2^T = \begin{pmatrix} -1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{pmatrix}\end{split}\]

Step 3#

  • If \(\alpha^2 < \frac{\pi}{2}\) (i.e \(\boldsymbol{a}_2 \cdot \boldsymbol{a}_3 > 0\)), then

    \[(\boldsymbol{a}_1^s, \boldsymbol{a}_2^s, \boldsymbol{a}_3^s) = (\boldsymbol{a}_1^2, \boldsymbol{a}_2^2, \boldsymbol{a}_3^2)\]

    and

    \[\begin{split}\boldsymbol{S}_3 = \boldsymbol{S}_3^{-1} = \boldsymbol{S}_3^T = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\end{split}\]
  • If \(\alpha^2 > \frac{\pi}{2}\) (i.e \(\boldsymbol{a}_2 \cdot \boldsymbol{a}_3 < 0\)), then

    \[(\boldsymbol{a}_1^s, \boldsymbol{a}_2^s, \boldsymbol{a}_3^s) = (-\boldsymbol{a}_1^2, -\boldsymbol{a}_2^2, \boldsymbol{a}_3^2)\]

    and

    \[\begin{split}\boldsymbol{S}_3 = \begin{pmatrix} -1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \qquad \boldsymbol{S}_3^{-1} = \boldsymbol{S}_3^T = \begin{pmatrix} -1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\end{split}\]

Finally#

\[\boldsymbol{S} = \boldsymbol{S}_3 \boldsymbol{S}_2 \boldsymbol{S}_1 \qquad \boldsymbol{S}^{-1} = \boldsymbol{S}_1^{-1} \boldsymbol{S}_2^{-1} \boldsymbol{S}_3^{-1}\]

Note

All changes of the cell preserve handiness of the original one.

Edge cases#

If (\(\alpha = 60^{\circ}\) or \(\alpha = 120^{\circ}\)) and \(b = c\), then the lattice is Hexagonal (HEX).

If (\(\alpha = 30^{\circ}\) or \(\alpha = 150^{\circ}\) or \(\alpha = 45^{\circ}\) or \(\alpha = 145^{\circ}\)) and \(b = c\), then the lattice is Base-centred orthorhombic (ORCC).

If (\(\alpha = 60^{\circ}\) or \(\alpha = 120^{\circ}\)) and \(a \ne b = c/2\), then the lattice is Orthorhombic (ORC).

If \(a \ne b \ne c\) and \(\alpha = 90^{\circ}\), then the lattice is Orthorhombic (ORC).

If (\(\alpha = 60^{\circ}\) or \(\alpha = 120^{\circ}\)) and \(a = b = c/2\), then the lattice is Tetragonal (TET).

If (\(a = b \ne c\) or \(a = c \ne b\) or \(b = c \ne a\)) and \(\alpha = 90^{\circ}\), then the lattice is Tetragonal (TET).

If \(a = b = c\) and \(\alpha = 90^{\circ}\), then the lattice is Cubic (CUB).