Skip to content

Spin–orbit calculations

The fixed spin–orbit contribution of a separable pseudopotential can be represented through projector functions and their spin-dependent coefficients. This calculation evaluates AO–projector overlaps and contracts them into a Hamiltonian in the chosen atomic-orbital basis.

Potentials describe the projector data for each element, while the calculator reuses basis-dependent preparation across geometries. The result carries the spin-traceless Pauli components; it is the fixed pseudopotential contribution, not a self-consistent electronic-structure calculation.

Projector potentials

UniformNumericalSpinOrbitPotential dataclass

UniformNumericalSpinOrbitPotential(
    projectors: UniformNumericalAtomicBasis, d_so: HermOrbMatrix
)

Separable spin-orbit potential for one species.

projectors is the ordered KB-projector family. d_so stores its spin-traceless nonlocal coefficient matrix in eV, expanded as Pauli \(x,y,z\) components over the projector axes. In the real-projector convention used here, every component of d_so is purely imaginary and Hermitian.

Parameters:

  • projectors (UniformNumericalAtomicBasis) –

    Uniform numerical KB projectors for one species.

  • d_so (HermOrbMatrix) –

    Projector-space \(D^{\mathrm{SO}}\) in eV, with one atomic orbital partition and pauli="xyz".

UniformNumericalSpinOrbitPotentialSet dataclass

UniformNumericalSpinOrbitPotentialSet(
    atomic_potentials: tuple[UniformNumericalSpinOrbitPotential, ...]
    | list[UniformNumericalSpinOrbitPotential],
)

Uniform numerical spin-orbit potentials keyed by atomic number.

projectors is the role-neutral basis set assembled from each atomic potential's projector family.

atomic_potential

atomic_potential(atomic_number: int) -> UniformNumericalSpinOrbitPotential

Return the potential for one atomic number.

Hamiltonian calculation

UniformNumericalSpinOrbitCalculator

UniformNumericalSpinOrbitCalculator(
    basis_set: UniformNumericalBasisSet,
    potential_set: UniformNumericalSpinOrbitPotentialSet,
    *,
    cpu_threads: int = 1,
)

Calculate the fixed spin-orbit Hamiltonian for one numerical basis.

Species-level radial transforms and two-center AO--projector tables are prepared lazily and reused. Each geometry is evaluated as finite-cutoff AO--projector overlaps followed by projector-centered sparse contractions. cpu_threads controls native neighbor search, overlap evaluation, and contraction; it defaults to one.

calculate

calculate(geometry: Geometry) -> HermBlockSparseOrbMatrix

Return fixed Pauli \(x,y,z\) SOC blocks in eV.