MCL#

Monoclinic cell is defined by four parameters \(a\), \(b\), \(c\) and \(\alpha\) with \(b \le c\), \(\alpha < 90^{\circ}\).

Cell constructor#

To get an example of the cell use wulfric.cell.SC_MCL().

wulfric.cell.sc_get_example() returns an example where \(a = \pi\), \(b = 1.3 \pi\) \(c = 1.6 \pi\) and \(\alpha = 75^{\circ}\).

import wulfric

cell = wulfric.cell.sc_get_example("MCL")
atoms = dict(positions=[[0, 0, 0]], spglib_types=[1])

# To avoid multiple calls to spglib one can do it once and then pass spglib_data
# to the functions where it is needed
spglib_data = wulfric.get_spglib_data(cell=cell, atoms=atoms)

kp = wulfric.Kpoints.from_crystal(cell=cell, atoms=atoms, convention="SC")

conv_cell, conv_atoms = wulfric.crystal.get_conventional(
    cell=cell, atoms=atoms, convention="SC", spglib_data=spglib_data
)

prim_cell, prim_atoms = wulfric.crystal.get_primitive(
    cell=cell, atoms=atoms, convention="SC", spglib_data=spglib_data
)

K-path#

print(kp.path_string)
GAMMA-Y-H-C-E-M1-A-X-H1|M-D-Z|Y-D

High-symmetry points#

print(kp.hs_table(decimals=4))
Name    rel_b1  rel_b2  rel_b3      k_x     k_y     k_z
GAMMA   0.0000  0.0000  0.0000   0.0000  0.0000  0.0000
A       0.5000 -0.5000  0.0000   1.0000 -0.7692  0.2061
C       0.0000 -0.5000 -0.5000   0.0000 -0.7692 -0.4409
D       0.5000  0.0000 -0.5000   1.0000  0.0000 -0.6470
D1      0.5000  0.0000  0.5000   1.0000  0.0000  0.6470
E       0.5000 -0.5000 -0.5000   1.0000 -0.7692 -0.4409
H       0.0000 -0.4232 -0.6348   0.0000 -0.6511 -0.6470
H1      0.0000 -0.5768 -0.3652   0.0000 -0.8874 -0.2348
H2      0.0000 -0.4232  0.3652   0.0000 -0.6511  0.6470
M       0.5000 -0.4232 -0.6348   1.0000 -0.6511 -0.6470
M1      0.5000 -0.5768 -0.3652   1.0000 -0.8874 -0.2348
M2      0.5000 -0.4232  0.3652   1.0000 -0.6511  0.6470
X       0.0000 -0.5000  0.0000   0.0000 -0.7692  0.2061
Y       0.0000  0.0000 -0.5000   0.0000  0.0000 -0.6470
Y1      0.0000  0.0000  0.5000   0.0000  0.0000  0.6470
Z       0.5000  0.0000  0.0000   1.0000  0.0000  0.0000

Brillouin zone and default k-path#

pe = wulfric.PlotlyEngine(_sphinx_gallery_fix=True)

pe.plot_brillouin_zone(
    cell=prim_cell, color="red", legend_label="Brillouin zone of the primitive cell"
)
pe.plot_brillouin_zone(
    cell=cell, color="chocolate", legend_label="Brillouin zone of the original cell"
)
pe.plot_kpath(kp=kp)
pe.plot_kpoints(kp=kp, only_from_kpath=True)

pe.show(axes_visible=False)


Cells of real space#

pe = wulfric.PlotlyEngine(_sphinx_gallery_fix=True)

pe.plot_cell(cell=cell, legend_label="Original cell", color="Chocolate")
pe.plot_cell(cell=prim_cell, legend_label="Primitive cell", color="Black")
pe.plot_cell(cell=conv_cell, legend_label="Conventional cell", color="Blue")
pe.plot_wigner_seitz_cell(
    cell=prim_cell, legend_label="Wigner-Seitz cell", color="green"
)

pe.show(axes_visible=False)


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

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

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

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

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

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

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

Total running time of the script: (0 minutes 1.230 seconds)

Gallery generated by Sphinx-Gallery