Triclinic (TRI)#

Pearson symbol: aP

Triclinic lattice is described by the class TRI.

It is defined by six parameters: \(a\), \(b\), \(c\) and \(\alpha\), \(\beta\), \(\gamma\). with primitive and conventional lattice:

\[ \begin{align}\begin{aligned}\boldsymbol{a}_1 = (a, 0, 0)\\\boldsymbol{a}_2 = (b\cos(\gamma), b\sin(\gamma), 0)\\\boldsymbol{a}_3 = (c\cos(\beta), \frac{c(\cos(\alpha) - \cos(\beta)\cos(\gamma))}{\sin{\gamma}}, \frac{c}{\sin(\gamma)}\sqrt{\sin^2(\gamma) - \cos^2(\alpha) - \cos^2(\beta) + 2\cos(\alpha)\cos(\beta)\cos(\gamma)})\end{aligned}\end{align} \]

Variations#

There are four variation of triclinic lattice.

TRI1a#

\(k_{\alpha} > 90^{\circ}, k_{\beta} > 90^{\circ}, k_{\gamma} > 90^{\circ}, k_{\gamma} = \min(k_{\alpha}, k_{\beta}, k_{\gamma})\)

TRI2a#

\(k_{\alpha} > 90^{\circ}, k_{\beta} > 90^{\circ}, k_{\gamma} = 90^{\circ}\)

TRI1b#

\(k_{\alpha} < 90^{\circ}, k_{\beta} < 90^{\circ}, k_{\gamma} < 90^{\circ}, k_{\gamma} = \max(k_{\alpha}, k_{\beta}, k_{\gamma})\)

TRI2b#

\(k_{\alpha} < 90^{\circ}, k_{\beta} < 90^{\circ}, k_{\gamma} = 90^{\circ}\)

In definition of the examples we cheated and defined them through reciprocal lattice parameters.

Example structures#

TRI1a#

Default kpath: \(\Gamma-Y-F-L-I\vert I_1-Z-F_1\vert Y-X_1\vert X-\Gamma-N\vert M-\Gamma\).

Brillouin zone and default kpath#

Picture

Code

../../../../../_images/tri1a_brillouin.png
import radtools as rad

l = rad.lattice_example(f"TRI1a")
l.plot("brillouin-kpath")
# Save an image:
l.savefig(
    "tri1a_brillouin.png",
    elev=45,
    azim=-55,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=45, azim=-55)
Primitive and conventional cell#

Picture

Code

../../../../../_images/tri1a_real.png
import radtools as rad

l = rad.lattice_example(f"TRI1a")
l.plot("primitive")
# Save an image:
l.savefig(
    "tri1a_real.png",
    elev=31,
    azim=-20,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=31, azim=-20)
Wigner-Seitz cell#

Picture

Code

../../../../../_images/tri1a_wigner-seitz.png
import radtools as rad

l = rad.lattice_example(f"TRI1a")
l.plot("wigner-seitz")
# Save an image:
l.savefig(
    "tri1a_wigner-seitz.png",
    elev=9,
    azim=18,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=9, azim=18)

TRI2a#

Default kpath: \(\Gamma-Y-F-L-I\vert I_1-Z-F_1\vert Y-X_1\vert X-\Gamma-N\vert M-\Gamma\).

Brillouin zone and default kpath#

Picture

Code

../../../../../_images/tri2a_brillouin.png
import radtools as rad

l = rad.lattice_example(f"TRI2a")
l.plot("brillouin-kpath")
# Save an image:
l.savefig(
    "tri2a_brillouin.png",
    elev=10,
    azim=32,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=10, azim=32)
Primitive and conventional cell#

Picture

Code

../../../../../_images/tri2a_real.png
import radtools as rad

l = rad.lattice_example(f"TRI2a")
l.plot("primitive")
# Save an image:
l.savefig(
    "tri2a_real.png",
    elev=39,
    azim=44,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=39, azim=44)
Wigner-Seitz cell#

Picture

Code

../../../../../_images/tri2a_wigner-seitz.png
import radtools as rad

l = rad.lattice_example(f"TRI2a")
l.plot("wigner-seitz")
# Save an image:
l.savefig(
    "tri2a_wigner-seitz.png",
    elev=30,
    azim=62,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=30, azim=62)

TRI1b#

Default kpath: \(\Gamma-Y-F-L-I\vert I_1-Z-F_1\vert Y-X_1\vert X-\Gamma-N\vert M-\Gamma\).

Brillouin zone and default kpath#

Picture

Code

../../../../../_images/tri1b_brillouin.png
import radtools as rad

l = rad.lattice_example(f"TRI1b")
l.plot("brillouin-kpath")
# Save an image:
l.savefig(
    "tri1b_brillouin.png",
    elev=30,
    azim=42,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=30, azim=42)
Primitive and conventional cell#

Picture

Code

../../../../../_images/tri1b_real.png
import radtools as rad

l = rad.lattice_example(f"TRI1b")
l.plot("primitive")
# Save an image:
l.savefig(
    "tri1b_real.png",
    elev=12,
    azim=11,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=12, azim=11)
Wigner-Seitz cell#

Picture

Code

../../../../../_images/tri1b_wigner-seitz.png
import radtools as rad

l = rad.lattice_example(f"TRI1b")
l.plot("wigner-seitz")
# Save an image:
l.savefig(
    "tri1b_wigner-seitz.png",
    elev=21,
    azim=39,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=21, azim=39)

TRI2b#

Default kpath: \(\Gamma-Y-F-L-I\vert I_1-Z-F_1\vert Y-X_1\vert X-\Gamma-N\vert M-\Gamma\).

Brillouin zone and default kpath#

Picture

Code

../../../../../_images/tri2b_brillouin.png
import radtools as rad

l = rad.lattice_example(f"TRI2b")
l.plot("brillouin-kpath")
# Save an image:
l.savefig(
    "tri2b_brillouin.png",
    elev=40,
    azim=1,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=40, azim=1)
Primitive and conventional cell#

Picture

Code

../../../../../_images/tri2b_real.png
import radtools as rad

l = rad.lattice_example(f"TRI2b")
l.plot("primitive")
# Save an image:
l.savefig(
    "tri2b_real.png",
    elev=17,
    azim=54,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=17, azim=54)
Wigner-Seitz cell#

Picture

Code

../../../../../_images/tri2b_wigner-seitz.png
import radtools as rad

l = rad.lattice_example(f"TRI2b")
l.plot("wigner-seitz")
# Save an image:
l.savefig(
    "tri2b_wigner-seitz.png",
    elev=19,
    azim=13,
    dpi=300,
   bbox_inches="tight",
)
# Interactive plot:
l.show(elev=19, azim=13)

Ordering of parameters#

TODO