Skip to content

Commit

Permalink
Implemented radial moments for hydrogenic orbitals
Browse files Browse the repository at this point in the history
  • Loading branch information
jagot committed Dec 4, 2020
1 parent 50387d5 commit abf9519
Showing 1 changed file with 36 additions and 1 deletion.
37 changes: 36 additions & 1 deletion src/orbitals.jl
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,39 @@ function non_relativistic_orbital(n::Integer, ℓ::Integer, Z = 1)
r -> C(r) * exp(q*r)
end

export non_relativistic_orbital
"""
radial_moment(k, n, ℓ[, Z = 1])
Compute the radial moment ``⟨rᵏ⟩`` for a hydrogenic orbital ``(n,ℓ)``
in a Coulomb potential of charge ``Z``. The formulas are taken from Table 2⁵ of
- Condon, E. U., & Shortley, G. H. (1951). The theory of atomic
spectra. Cambridge: Cambridge University Press.
and are available for ``k ∈ -4:4``.
"""
function radial_moment(k::Integer, n::Integer, ℓ::Integer, Z = 1)
if k == 1
(3n^2 -*(ℓ+1))/2Z
elseif k == 2
n^2*(5n^2 + 1 - 3*(ℓ+1))/2Z^2
elseif k == 3
n^2*(35n^2*(n^2-1) - 30n^2*(ℓ+2)*(ℓ-1) + 3*(ℓ+2)*(ℓ+1)**(ℓ-1))/8Z^3
elseif k == 4
n^4*(63n^4 - 35n^2*(2^2+2-3) + 5*(ℓ+1)*(3^2+3-10) + 12)/8Z^4
elseif k == -1
Z/n^2
elseif k == -2
Z^2/(n^3*(ℓ+1//2))
elseif k == -3
Z^3/(n^3*(ℓ+1)*(ℓ+1//2)*ℓ)
elseif k == -4
Z^4/2*(3n^2 -*(ℓ+1))/(n^5*(ℓ+3//2)*(ℓ+1)*(ℓ+1//2)**(ℓ-1//2))
elseif k == 0
one(Z)
else
throw(ArgumentError("Radial moment not available for k = $(k)"))
end
end

export non_relativistic_orbital, radial_moment

0 comments on commit abf9519

Please sign in to comment.