One-body Hamiltonians

The one-body Hamiltonian for electron $i$ in an atom is given by

\[\begin{equation} \hamiltonian_i \defd -\frac{\nabla_i^2}{2} + V(\vec{r}_i). \end{equation}\]

In spherical coordinates (and using reduced wavefunctions), the Laplacian transforms to

\[\begin{equation} \operator{T}_{r_i} = -\frac{\partial_{r_i}^2}{2} + \frac{\ell(\ell+1)}{2r_i^2}, \end{equation}\]

where the second term, called the centrifugal potential, although originating from the Laplacian, is usually treated together with the nuclear potential $V(r_i)$.

AtomicStructure.one_body_hamiltonianFunction
one_body_hamiltonian(::Type{Tuple}, atom, orb)

Return the kinetic and one-body potential energy operators (as a tuple) for the orbital orb of atom.

source
one_body_hamiltonian(::Type{Tuple}, atom, orb)

Return the one-body energy operator for the orbital orb of atom.

source
AtomicStructure.KineticEnergyHamiltonianType
KineticEnergyHamiltonian

The kinetic energy part of the one-body Hamiltonian, ubcluding the centrifugal potential. It is diagonal in spin, i.e. it does not couple orbitals of opposite spin.

source

Diagonalization of one-body Hamiltonians

AtomicStructure.diagonalize_one_bodyFunction
diagonalize_one_body(H, nev; method=:arnoldi_shift_invert, tol=1e-10, σ=-1)

Diagonalize the one-body Hamiltonian H and find the nev lowest eigenpairs, using the specified diagonalization method; valid choices are

  • :arnoldi which performs the standard Krylov iteration looking for the eigenvalues with smallest real values,

  • :arnoldi_shift_invert which performs the Krylov iteration but with the shifted and inverted matrix (H - I*σ)⁻¹ looking for the eigenvalues with largest real values,

  • :eigen which uses Julia's built-in eigensolver.

tol sets the Krylov tolerance.

source