Hydrogenic energies
Hydrogenic bound state energies can be calculated using the hydrogenic_energy
functions. Depending on the arguments, the function dispatches on different implementations, calculating the energy for different physical cases.
AtomicMiscellany.hydrogenic_energy
— Functionhydrogenic_energy(
dynamics::AbstractParticle[, nucleus::AbstractNuclearModel], Z;
qnumbers...
) -> Float64
Returns the energy (in atomic units) of a hydrogenic bound state for given dynamics (particle), central potential generated by a nuclear charge distribution, and quantum numbers.
Each nuclear model is, by the definition of AbstractNuclearModel
, normalized to unity. This means that the nuclear charge $Z$ needs to be passed as a separate argument. Also, the second argument (nucleus
) can be omitted and it defaults to PointNucleus
.
Quantum numbers
The keyword arguments (qnumbers...
) can be used to specify all the necessarily quantum numbers to uniquely identify the state. In some cases, some quantum numbers may be omitted.
In the non-relativistic case we need to specify n
and ℓ
, whereas in the relativistic case it is n
and κ
.
See the related implementation notes for more information and details.
Examples
As a simple usage example, let's plot the PNC energies for a few $n$ values, comparing the relativistic and non-relativistic energies.
plot(
legend=:bottomleft, size = (800, 400),
xlabel = "Nuclear charge Z", ylabel = "Energy (mc²)",
title = "n=1-3 PNC energies",
)
Z = range(1, α^-1, length=501)
plot!(Z, hydrogenic_energy.(NRElectron, Z; n = 1) .* α^2, label="NR", c=1)
plot!(Z, hydrogenic_energy.(NRElectron, Z; n = 2) .* α^2, label=false, c=1)
plot!(Z, hydrogenic_energy.(NRElectron, Z; n = 3) .* α^2, label=false, c=1)
plot!(Z, hydrogenic_energy.(DiracElectron, Z; n = 1, κ = -1) .* α^2, label="Dirac", c=2)
plot!(Z, hydrogenic_energy.(DiracElectron, Z; n = 2, κ = -1) .* α^2, label=false, c=2)
plot!(Z, hydrogenic_energy.(DiracElectron, Z; n = 3, κ = -1) .* α^2, label=false, c=2)
Similarly, we can look at the FNC correction to the point nucleus energies
plot(
legend=:bottomright, yaxis = :log10, size = (800, 400),
xlabel = "Nuclear charge Z", ylabel = "FNC energy correction (mc²)",
title = "n=1-4 FNC corrections (relativistic)",
)
Z = range(1, α^-1, length=501)
nm = UniformShellNucleus(1e-4) # RMS: 1e-4 a.u., for all Z
δE(p, Z; kwargs...) = hydrogenic_energy(p, nm, Z; kwargs...) .- hydrogenic_energy(p, Z; kwargs...)
plot!(Z, δE.(DiracElectron, Z; n = 1, κ = -1) .* α^2, label="n=1")
plot!(Z, δE.(DiracElectron, Z; n = 2, κ = -1) .* α^2, label="n=2")
plot!(Z, δE.(DiracElectron, Z; n = 3, κ = -1) .* α^2, label="n=3")
plot!(Z, δE.(DiracElectron, Z; n = 4, κ = -1) .* α^2, label="n=4")
Particles
Different free-particle dynamics (e.g. non-relativistic or relativistic) lead to different energies. We use subtypes of AbstractParticle
to dispatch on the different types.
AtomicMiscellany.AbstractParticle
— Typeabstract type AbstractParticle
Subtypes of AbstractParticle
represent various particles and/or Hamiltonians, such as particles described the Dirac equation or the non-relativistic Schrödinger equation.
The subtypes are used to determine which physical particle species is meant when dispatching on generic functions calculating some properties of or related to the particle.
Currently, we support spin-1/2 particles described by either the non-relativistic Schrödinger equation or the relativistic Dirac equation.
AtomicMiscellany.NRParticle
— Typestruct NRParticle <: AbstractParticle
Represents a non-relativistic particle, described by the non-relativistic Schrödinger equation.
\[i \frac{\partial\Psi}{\partial t} = - \frac{\nabla^2}{2 m^2} \Psi\]
AtomicMiscellany.DiracParticle
— Typestruct DiracParticle <: AbstractParticle
Represents a relativistic particle, the free-particle dynamics of which are described by the Dirac equation.
\[(\gamma^\mu \partial_\mu - m) \Psi = 0\]
Note that we set the zero of the energy to $+mc^2$.
For convenience, we also instantiate cases with specific masses.
AtomicMiscellany.NRElectron
— Constantconst NRElectron
A non-relativistic particle (NRParticle
) with the mass of an electron.
AtomicMiscellany.DiracElectron
— Constantconst DiracElectron :: DiracParticle
A relativistic Dirac fermion (DiracParticle
) with the mass of an electron.
AtomicMiscellany.NRMuon
— Constantconst NRMuon
A non-relativistic particle (NRParticle
) with the mass of a muon.
AtomicMiscellany.DiracMuon
— Constantconst DiracMuon :: DiracParticle
A relativistic Dirac fermion (DiracParticle
) with the mass of a muon.