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.