Face-centred orthorhombic (ORCF)#

Pearson symbol: oF

Constructor: ORCF()

It is defined by three parameters: \(a\), \(b\) and \(c\) with conventional lattice:

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

And primitive lattice:

\[\begin{split}\begin{matrix} \boldsymbol{a}_1 &=& (0, &b/2, &c/2)\\ \boldsymbol{a}_2 &=& (a/2, &0, &c/2)\\ \boldsymbol{a}_3 &=& (a/2, &b/2, &0) \end{matrix}\end{split}\]

Cell standardization#

Lengths of the lattice vectors of the conventional cell have to satisfy \(\vert\boldsymbol{a}_1\vert < \vert\boldsymbol{a}_2\vert < \vert\boldsymbol{a}_3\vert\). That means that lattice vectors of the primitive cell have to satisfy: \(\vert\boldsymbol{a}_1\vert > \vert\boldsymbol{a}_2\vert > \vert\boldsymbol{a}_3\vert\).

If this condition is not satisfied, then the lattice is transformed to the standard form. We use the primitive lattice vectors for the standardization:

First we order first two vectors by length:

  • If \(\vert\boldsymbol{a}_1\vert < \vert\boldsymbol{a}_2\vert\)
    \[(\boldsymbol{a}_1, \boldsymbol{a}_2, \boldsymbol{a}_3) \rightarrow (\boldsymbol{a}_2, \boldsymbol{a}_1, -\boldsymbol{a}_3)\]

Then we find a correct place for the third vector:

  • If \(\vert\boldsymbol{a}_1\vert < \vert\boldsymbol{a}_3\vert\)
    \[(\boldsymbol{a}_1, \boldsymbol{a}_2, \boldsymbol{a}_3) \rightarrow (\boldsymbol{a}_3, \boldsymbol{a}_1, \boldsymbol{a}_2)\]
  • If \(\vert\boldsymbol{a}_2\vert < \vert\boldsymbol{a}_3\vert\)
    \[(\boldsymbol{a}_1, \boldsymbol{a}_2, \boldsymbol{a}_3) \rightarrow (\boldsymbol{a}_1, -\boldsymbol{a}_3, \boldsymbol{a}_2)\]

Note

The third lattice vector is multiplied by \(-1\) in some cases to preserve the handedness of the cell.

K-path#

ORCF1#

\(\mathrm{\Gamma-Y-T-Z-\Gamma-X-A_1-Y\vert T-X_1\vert X-A-Z\vert L-\Gamma}\)

\[\begin{matrix} \zeta = \dfrac{1 + a^2/b^2 - a^2/c^2}{4} & \eta = \dfrac{1 + a^2/b^2 + a^2/c^2}{4} \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 + \zeta\)

\(\zeta\)

\(\mathrm{A_1}\)

\(1/2\)

\(1/2 - \zeta\)

\(1-\zeta\)

\(\mathrm{L}\)

\(1/2\)

\(1/2\)

\(1/2\)

\(\mathrm{T}\)

\(1\)

\(1/2\)

\(1/2\)

\(\mathrm{X}\)

\(0\)

\(\eta\)

\(\eta\)

\(\mathrm{X_1}\)

\(1\)

\(1-\eta\)

\(1-\eta\)

\(\mathrm{Y}\)

\(1/2\)

\(0\)

\(1/2\)

\(\mathrm{Z}\)

\(1/2\)

\(1/2\)

\(0\)

ORCF2#

\(\mathrm{\Gamma-Y-C-D-X-\Gamma-Z-D_1-H-C\vert C_1-Z\vert X-H_1\vert H-Y\vert L-\Gamma}\)

\[\begin{matrix} \eta = \dfrac{1 + a^2/b^2 - a^2/c^2}{4} & \delta = \dfrac{1 + b^2/a^2 - b^2/c^2}{4} & \phi = \dfrac{1 + c^2/b^2 - c^2/a^2}{4} \end{matrix}\]

Point

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

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

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

\(\mathrm{\Gamma}\)

\(0\)

\(0\)

\(0\)

\(\mathrm{C}\)

\(1/2\)

\(1/2 - \eta\)

\(1 - \eta\)

\(\mathrm{C_1}\)

\(1/2\)

\(1/2 + \eta\)

\(\eta\)

\(\mathrm{D}\)

\(1/2-\delta\)

\(1/2\)

\(1 - \delta\)

\(\mathrm{D_1}\)

\(1/2+\delta\)

\(1/2\)

\(\delta\)

\(\mathrm{L}\)

\(1/2\)

\(1/2\)

\(1/2\)

\(\mathrm{H}\)

\(1 - \phi\)

\(1/2 - \phi\)

\(1/2\)

\(\mathrm{H_1}\)

\(\phi\)

\(1/2 + \phi\)

\(1/2\)

\(\mathrm{X}\)

\(0\)

\(1/2\)

\(1/2\)

\(\mathrm{Y}\)

\(1/2\)

\(0\)

\(1/2\)

\(\mathrm{Z}\)

\(1/2\)

\(1/2\)

\(0\)

ORCF3#

\(\mathrm{\Gamma-Y-T-Z-\Gamma-X-A_1-Y\vert X-A-Z\vert L-\Gamma}\)

\[\begin{matrix} \zeta = \dfrac{1 + a^2/b^2 - a^2/c^2}{4} & \eta = \dfrac{1 + a^2/b^2 + a^2/c^2}{4} \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 + \zeta\)

\(\zeta\)

\(\mathrm{A_1}\)

\(1/2\)

\(1/2 - \zeta\)

\(1-\zeta\)

\(\mathrm{L}\)

\(1/2\)

\(1/2\)

\(1/2\)

\(\mathrm{T}\)

\(1\)

\(1/2\)

\(1/2\)

\(\mathrm{X}\)

\(0\)

\(\eta\)

\(\eta\)

\(\mathrm{X_1}\)

\(1\)

\(1-\eta\)

\(1-\eta\)

\(\mathrm{Y}\)

\(1/2\)

\(0\)

\(1/2\)

\(\mathrm{Z}\)

\(1/2\)

\(1/2\)

\(0\)

Variations#

There are three variations of face-centered orthorombic lattice.

For the examples of variations \(a\) is set to \(1\); \(b\) and \(c\) fulfil the conditions:

  • \(b = \dfrac{c}{\sqrt{c^2 - 1}}\)

  • \(c > \sqrt{2}\)

First condition defines in ORCF3 lattice and ensures ordering of lattice parameters \(b > a\). Ordering \(c > b\) is forced by second condition.

For ORCF1 and ORCF2 lattices \(a < 1\) and \(a > 1\) is chosen. While \(b\) and \(c\) are the same as for ORCF3 lattice.

At the end all three parameters are multiplied by \(\pi\).

ORCF1#

\(\dfrac{1}{a^2} > \dfrac{1}{b^2} + \dfrac{1}{c^2}\).

Predefined example: orcf1 with \(a = 0.7\pi\), \(b = 5\pi/4\) and \(c = 5\pi/3\).

ORCF2#

\(\dfrac{1}{a^2} < \dfrac{1}{b^2} + \dfrac{1}{c^2}\).

Predefined example: orcf2 with \(a = 1.2\pi\), \(b = 5\pi/4\) and \(c = 5\pi/3\).

ORCF3#

\(\dfrac{1}{a^2} = \dfrac{1}{b^2} + \dfrac{1}{c^2}\).

Predefined example: orcf3 with \(a = \pi\), \(b = 5\pi/4\) and \(c = 5\pi/3\).

Examples#

ORCF1#

Brillouin zone and default kpath#

# RAD-tools - Sandbox (mainly condense matter plotting).
# Copyright (C) 2022-2024  Andrey Rybakov
#
# e-mail: anry@uv.es, web: rad-tools.org
#
# 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 radtools as rad

l = rad.lattice_example("ORCF1")
backend = rad.PlotlyBackend()
backend.plot(l, kind="brillouin-kpath")
# Save an image:
backend.save("orcf1_brillouin.png")
# Interactive plot:
backend.show()

Primitive and conventional cell#

# RAD-tools - Sandbox (mainly condense matter plotting).
# Copyright (C) 2022-2024  Andrey Rybakov
#
# e-mail: anry@uv.es, web: rad-tools.org
#
# 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 radtools as rad

l = rad.lattice_example("ORCF1")
backend = rad.PlotlyBackend()
backend.plot(l, kind="primitive", label="primitive")
backend.plot(l, kind="conventional", label="conventional", color="black")
# Save an image:
backend.save("orcf1_real.png")
# Interactive plot:
backend.show()

Wigner-Seitz cell#

# RAD-tools - Sandbox (mainly condense matter plotting).
# Copyright (C) 2022-2024  Andrey Rybakov
#
# e-mail: anry@uv.es, web: rad-tools.org
#
# 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 radtools as rad

l = rad.lattice_example("ORCF1")
backend = rad.PlotlyBackend()
backend.plot(l, kind="wigner-seitz")
# Save an image:
backend.save("orcf1_wigner-seitz.png")
# Interactive plot:
backend.show()

ORCF2#

Brillouin zone and default kpath#

# RAD-tools - Sandbox (mainly condense matter plotting).
# Copyright (C) 2022-2024  Andrey Rybakov
#
# e-mail: anry@uv.es, web: rad-tools.org
#
# 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 radtools as rad

l = rad.lattice_example("ORCF2")
backend = rad.PlotlyBackend()
backend.plot(l, kind="brillouin-kpath")
# Save an image:
backend.save("orcf2_brillouin.png")
# Interactive plot:
backend.show()

Primitive and conventional cell#

# RAD-tools - Sandbox (mainly condense matter plotting).
# Copyright (C) 2022-2024  Andrey Rybakov
#
# e-mail: anry@uv.es, web: rad-tools.org
#
# 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 radtools as rad

l = rad.lattice_example("ORCF2")
backend = rad.PlotlyBackend()
backend.plot(l, kind="primitive", label="primitive")
backend.plot(l, kind="conventional", label="conventional", color="black")
# Save an image:
backend.save("orcf2_real.png")
# Interactive plot:
backend.show()

Wigner-Seitz cell#

# RAD-tools - Sandbox (mainly condense matter plotting).
# Copyright (C) 2022-2024  Andrey Rybakov
#
# e-mail: anry@uv.es, web: rad-tools.org
#
# 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 radtools as rad

l = rad.lattice_example("ORCF2")
backend = rad.PlotlyBackend()
backend.plot(l, kind="wigner-seitz")
# Save an image:
backend.save("orcf2_wigner-seitz.png")
# Interactive plot:
backend.show()

ORCF3#

Brillouin zone and default kpath#

# RAD-tools - Sandbox (mainly condense matter plotting).
# Copyright (C) 2022-2024  Andrey Rybakov
#
# e-mail: anry@uv.es, web: rad-tools.org
#
# 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 radtools as rad

l = rad.lattice_example("ORCF3")
backend = rad.PlotlyBackend()
backend.plot(l, kind="brillouin-kpath")
# Save an image:
backend.save("orcf3_brillouin.png")
# Interactive plot:
backend.show()

Primitive and conventional cell#

# RAD-tools - Sandbox (mainly condense matter plotting).
# Copyright (C) 2022-2024  Andrey Rybakov
#
# e-mail: anry@uv.es, web: rad-tools.org
#
# 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 radtools as rad

l = rad.lattice_example("ORCF3")
backend = rad.PlotlyBackend()
backend.plot(l, kind="primitive", label="primitive")
backend.plot(l, kind="conventional", label="conventional", color="black")
# Save an image:
backend.save("orcf3_real.png")
# Interactive plot:
backend.show()

Wigner-Seitz cell#

# RAD-tools - Sandbox (mainly condense matter plotting).
# Copyright (C) 2022-2024  Andrey Rybakov
#
# e-mail: anry@uv.es, web: rad-tools.org
#
# 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 radtools as rad

l = rad.lattice_example("ORCF3")
backend = rad.PlotlyBackend()
backend.plot(l, kind="wigner-seitz")
# Save an image:
backend.save("orcf3_wigner-seitz.png")
# Interactive plot:
backend.show()

Edge cases#

If \(a = b \ne c\) or \(a = c \ne b\) or \(b = c \ne a\), then the lattice is Body-centred tetragonal (BCT).

If \(a = b = c\), then the lattice is Face-centred cubic (FCC).