qimpy.dft.ions.PseudoQuantumNumbers

class PseudoQuantumNumbers(l, j)

Bases: object

Quantum numbers of pseudo-atom in projector or orbital order.

Parameters:
  • l (Tensor) –

  • j (Tensor) –

__init__(l, j)

Initialize given l of each projector / orbital of a pseudopotential. The input corresponds to the distinct radial functions read from a pseudoptential, while the members of this class are for each projector function including spherical harmonics.

Parameters:
  • l (Tensor) –

  • j (Tensor | None) –

Return type:

None

Methods

__init__

Initialize given l of each projector / orbital of a pseudopotential.

expand_matrix

Expand matrix D from (n, l) basis to include m and s.

get_index

Get integer indices corresponding to all quantum numbers.

get_spin_angle_transform

Return transformation matrix from (l, j, m_l), s to (l, j, m_j).

pauli_expectation

Pauli-matrix expectation values in orbital basis (spinorial case only).

Attributes

n_tot

total number of projectors / orbitals (accounting for m)

l_max

maximum l of projectors / orbitals

i_rf

index of radial function (across all l)

n

pseudo-principal quantum number (for each l,j, 1-based)

l

orbital angular momentum

m

azimuthal quantum number

i_lm

combined (l, m) index into solid harmonics array

is_relativistic

whether this pseudopotential is relativistic

n_tot_s

total number of spinorial states

ns

pseudo-principal quantum number of spinorial states

ls

orbital angular momentum in spinor-expanded set

j

total angular momentum of each spinorial orbital

mj

total azimuthal angular momentum

i_ljm

combined (l, j, m_j) index used for orbitals

i_ljms

combined (l, j, m_l, s) index used for projectors

expand_matrix(D, n_spinor)

Expand matrix D from (n, l) basis to include m and s. Spin s is included explicitly only if n_spinor is 2. Additionally, if pseudopotential is relativistic, the expanded matrix includes spin-angle overlap factors; n_spinor must be 2 for this mode.

Parameters:
  • D (Tensor) –

  • n_spinor (int) –

Return type:

Tensor

get_index(n_spinor)

Get integer indices corresponding to all quantum numbers. If not relativistic, the result is (n, l, m, 0) for n_tot orbitals in non-spinorial calculations, and is (n, l, m, 2ms) for 2`n_tot` orbitals in spinorial calculations. If relativistic, the result is (n, l, 2j, 2mj) for n_tot_s orbitals.

Parameters:

n_spinor (int) –

Return type:

Tensor

get_spin_angle_transform()

Return transformation matrix from (l, j, m_l), s to (l, j, m_j). Only for relativistic cases, with output shape n_tot x 2 x n_tot_s.

Return type:

Tensor

pauli_expectation()

Pauli-matrix expectation values in orbital basis (spinorial case only). The result is 4 x n_tot_s x n_tot_s for relativistic pseudopotentials, and 4 x (2 n_tot) x (2 n_tot) for non-relativistic pseudopotentials, where the first dimension of 4 corresponds to identity, x, y and z.

Return type:

Tensor

i_ljm: Tensor

combined (l, j, m_j) index used for orbitals

i_ljms: Tensor

combined (l, j, m_l, s) index used for projectors

i_lm: Tensor

combined (l, m) index into solid harmonics array

i_rf: Tensor

index of radial function (across all l)

is_relativistic: bool

whether this pseudopotential is relativistic

j: Tensor

total angular momentum of each spinorial orbital

l: Tensor

orbital angular momentum

l_max: int

maximum l of projectors / orbitals

ls: Tensor

orbital angular momentum in spinor-expanded set

m: Tensor

azimuthal quantum number

mj: Tensor

total azimuthal angular momentum

n: Tensor

pseudo-principal quantum number (for each l,j, 1-based)

n_tot: int

total number of projectors / orbitals (accounting for m)

n_tot_s: int

total number of spinorial states

ns: Tensor

pseudo-principal quantum number of spinorial states