phonon_lifetime.system package#

System module.

class phonon_lifetime.system.RepeatSystem(system: System, n_repeats: tuple[int, int, int])#

Bases: System

A system that repeats another system.

as_pristine() PristineSystem#

Return a new System with no defects.

get_mode(idx: int) NormalMode[__annotationlib_name_1__]#

Get the normal mode for a given index.

get_modes() NormalModes[__annotationlib_name_1__]#

Get the normal modes of the system.

property inner_system: System#

The original system that is being repeated.

property masses: ndarray[tuple[int], dtype[floating]]#

Mass of every atom in the system.

property n_primitive_atoms: int#

Number of atoms in the primitive cell.

property n_repeats: tuple[int, int, int]#

Number of repeats of the primitive cell in each direction (nx, ny, nz).

property primitive_atom_fractions: ndarray[tuple[int, int], dtype[floating]]#

The positions of the atoms as a fraction of the primitive cell.

primitive_atom_positions[i] is the position (x, y, z) of the i’th atom in the primitive cell.

property primitive_cell: ndarray[tuple[int, int], dtype[floating]]#

Primitive cell lattice vectors.

primitive_cell[i] is the vector (x, y, z) for the i’th lattice vector of the primitive cell.

property strain_tensor: ndarray[tuple[int, int, Literal[3], Literal[3]], dtype[float64]]#

Strain tensor matrix for the system.

strain_tensor[i, j, alpha, beta] is the force constant between the i’th and j’th atom in the system, for each pair of cartesian directions (alpha, beta).

property symbols: list[str]#

Chemical symbol of every atom in the system.

class phonon_lifetime.system.System#

Bases: ABC

Represents a System of atoms.

abstractmethod as_pristine() PristineSystem#

Return a new System with no defects.

get_mode(idx: int) NormalMode[__annotationlib_name_1__]#

Get the normal mode for a given index.

abstractmethod get_modes() NormalModes[__annotationlib_name_1__]#

Get the normal modes of the system.

abstract property masses: ndarray[tuple[int], dtype[floating]]#

Mass of every atom in the system.

property n_atoms: int#

Number of atoms in the system.

abstract property n_primitive_atoms: int#

Number of atoms in the primitive cell.

abstract property n_repeats: tuple[int, int, int]#

Number of repeats of the primitive cell in each direction (nx, ny, nz).

abstract property primitive_atom_fractions: ndarray[tuple[int, int], dtype[floating]]#

The positions of the atoms as a fraction of the primitive cell.

primitive_atom_positions[i] is the position (x, y, z) of the i’th atom in the primitive cell.

abstract property primitive_cell: ndarray[tuple[int, int], dtype[floating]]#

Primitive cell lattice vectors.

primitive_cell[i] is the vector (x, y, z) for the i’th lattice vector of the primitive cell.

abstract property strain_tensor: ndarray[tuple[int, int, Literal[3], Literal[3]], dtype[float64]]#

Strain tensor matrix for the system.

strain_tensor[i, j, alpha, beta] is the force constant between the i’th and j’th atom in the system, for each pair of cartesian directions (alpha, beta).

abstract property symbols: list[str]#

Chemical symbol of every atom in the system.

phonon_lifetime.system.as_ase_atoms(system: PristineSystem) Atoms#
phonon_lifetime.system.as_primitive(system: System) PristineSystem#
phonon_lifetime.system.get_atom_centres(system: System) np.ndarray[__annotationlib_name_1__, np.dtype[np.floating]]#

Get the centres of the atoms in the system.

phonon_lifetime.system.get_atom_fractions(system: System) np.ndarray[__annotationlib_name_1__, np.dtype[np.floating]]#

Get the scaled positions of the atoms in the system.

This gives the fraction along each of the ith lattice vector of the supercell.

phonon_lifetime.system.get_atom_supercell_fractions(system: System) np.ndarray[__annotationlib_name_1__, np.dtype[np.floating]]#

Get the positions of the atoms in the system in cartesian coordinates.

phonon_lifetime.system.get_supercell_cell(system: System) np.ndarray[__annotationlib_name_1__, np.dtype[np.floating]]#

Get the supercell lattice vectors.

supercell_cell[i] is the vector (x, y, z) for the i’th lattice vector of the supercell.

phonon_lifetime.system.plot_xy(system: System, displacement: ndarray[tuple[int, Literal[3]], dtype[floating]] | None = None, *, ax: Axes3D | None = None, bond_cutoff: float = inf, scale_bond_lines: bool = True) tuple[Figure, Axes3D, tuple[PathCollection, Line3DCollection]]#
phonon_lifetime.system.plot_xyz(system: System, displacement: ndarray[tuple[int, Literal[3]], dtype[floating]] | None = None, *, ax: Axes3D | None = None, bond_cutoff: float = inf, scale_bond_lines: bool = True) tuple[Figure, Axes3D, tuple[PathCollection, Line3DCollection]]#

Submodules#

phonon_lifetime.system.build module#

type phonon_lifetime.system.build.CubicStructure = Literal['simple', 'bcc', 'fcc']#
phonon_lifetime.system.build.cubic(*, mass: float, n_repeats: tuple[int, int, int], structure: CubicStructure, distance: float = 1.0) PristineSystem#

Build a simple cubic system.

phonon_lifetime.system.build.from_ase_atoms(atoms: Atoms, n_repeats: tuple[int, int, int]) PristineSystem#

Build a system from an ASE Atoms object.

phonon_lifetime.system.build.from_primitive(*, mass: float, primitive_cell: np.ndarray[__annotationlib_name_1__, np.dtype[np.float64]], n_repeats: tuple[int, int, int]) PristineSystem#

Build a system with a primitive cell.

phonon_lifetime.system.build.graphene(*, mass: float, n_repeats: tuple[int, int, Literal[1]], distance: float = 2.46) PristineSystem#

Build a graphene system.