CurrentModule = Antique
The hydrogen atom is the simplest Coulomb 2-body system.
This model is described with the time-independent Schrödinger equation
and the Hamiltonian
where
Antique.HydrogenAtom
Antique.V(::HydrogenAtom, ::Any)
Antique.E(::HydrogenAtom)
Antique.ψ(::HydrogenAtom, ::Any, ::Any, ::Any)
Antique.R(::HydrogenAtom, ::Any)
Antique.L(::HydrogenAtom, ::Any)
Antique.Y(::HydrogenAtom, ::Any, ::Any)
Antique.P(::HydrogenAtom, ::Any)
- cpprefjp, legendre, assoc_legendre, laguerre, assoc_laguerre
- The Digital Library of Mathematical Functions (DLMF), 18.3 Table1, 18.5 Table1, 18.5.16, 18.3 Table1, 18.5 Table1, 18.5.17, 18.3 Table1, 18.5 Table1, 18.5.12
- L. D. Landau, E. M. Lifshitz, Quantum Mechanics (Pergamon Press, 1965), p.598 (c.1), p.598 (c.4), p.603 (d.13), p.603 (d.13)
- L. I. Schiff, Quantum Mechanics (McGraw-Hill Book Company, 1968), p.79 (14.12), p.93 (16.19)
- A. Messiah, Quanfum Mechanics (Dover Publications, 1999), p.493 (B.72), p.494 Table, p.493 (B.72), p.483 (B.12), p.483 (B.12)
- W. Greiner, Quantum Mechanics: An Introduction Third Edition (Springer, 1994), p.83 (4), p.83 (5), p.149 (21)
- D. J. Griffiths, Introduction to Quantum Mechanics (Prentice Hall, 1995), p.126 (4.28), p.96 Table3.1, p.126 (4.27), p.139 (4.88), p.140 Table4.4, p.139 (4.87), p.140 Table4.5
- D. A. McQuarrie, J. D. Simon, Physical Chemistry: A Molecular Approach (University Science Books, 1997), p.195 Table6.1, p.196 (6.26), p.196 Table6.2, p.207 Table6.4
- P. W. Atkins, J. De Paula, Atkins' Physical Chemistry, 8th edition (W. H. Freeman, 2008), p.234
- J. J. Sakurai, J. Napolitano, Modern Quantum Mechanics Third Edition (Cambridge University Press, 2021), p.245 Problem 3.30.b,
[Install Antique.jl](@ref Install) for the first use and run using Antique
before each use. The energy E()
, wavefunction ψ()
, potential V()
and some other functions are suppoted. In this system, the model is generated by HydrogenAtom
and several parameters Z
, Eₕ
, mₑ
, a₀
and ℏ
are set as optional arguments.
using Antique
H = HydrogenAtom(Z=1, Eₕ=1.0, a₀=1.0, mₑ=1.0, ℏ=1.0)
; #hide
Parameters:
H.Z
H.Eₕ
H.mₑ
H.a₀
H.ℏ
Eigen values:
E(H, n=1)
E(H, n=2)
Wave length (
Eₕ2nm⁻¹ = 2.1947463136320e-2 # https://physics.nist.gov/cgi-bin/cuu/CCValue?hrminv
println("ΔE = ", E(H,n=2) - E(H,n=1), " Eₕ")
println("λ = ", ((E(H,n=2)-E(H,n=1))*Eₕ2nm⁻¹)^-1, " nm")
Hyperfine Splitting:
# E. Tiesinga, et al., Rev. Mod. Phys. 93, 025010 (2021) https://doi.org/10.1103/RevModPhys.93.025010
e = 1.602176634e-19 # C https://physics.nist.gov/cgi-bin/cuu/Value?e
h = 6.62607015e-34 # J Hz-1 https://physics.nist.gov/cgi-bin/cuu/Value?h
c = 299792458 # m s-1 https://physics.nist.gov/cgi-bin/cuu/Value?c
a0 = 5.29177210903e-11 # m https://physics.nist.gov/cgi-bin/cuu/Value?bohrrada0
μ0 = 1.25663706212e-6 # N A-2 https://physics.nist.gov/cgi-bin/cuu/Value?mu0
μB = 9.2740100783e-24 # J T-1 https://physics.nist.gov/cgi-bin/cuu/Value?mub
μN = 5.0507837461e-27 # J T-1 https://physics.nist.gov/cgi-bin/cuu/Value?mun
ge = 2.00231930436256 # https://physics.nist.gov/cgi-bin/cuu/Value?gem
gp = 5.5856946893 # https://physics.nist.gov/cgi-bin/cuu/Value?gp
# D. J. Griffiths, Am. J. Phys. 50, 698 (1982) https://doi.org/10.1119/1.12733
δ = abs(ψ(H,0,0,0))^2
ΔE = 2 / 3 * μ0 * μN * μB * gp * ge * δ * a0^(-3)
println("1/π = ", 1/π)
println("<δ(r)> = ", δ, " a₀⁻³")
println("<δ(r)> = ", δ * a0^(-3), " m⁻³")
println("ΔE = ", ΔE, " J")
println("ν = ΔE/h = ", ΔE / h * 1e-6, " MHz")
println("λ = hc/ΔE = ", h*c/ΔE*100, " cm")
Potential energy curve:
using CairoMakie
f = Figure()
ax = Axis(f[1,1], xlabel=L"$r~/~a_0$", ylabel=L"$V(r)~/~E_\mathrm{h}$", limits=(0.0,15.0,-2.0,0.2))
lines!(ax, 0.1:0.01:20, r -> V(H, r))
f
Radial functions:
using CairoMakie
using LaTeXStrings
# setting
f = Figure()
ax = Axis(f[1,1], xlabel=L"$r~/~a_0$", ylabel=L"$r^2|R_{nl}(r)|^2~/~a_0^{-1}$", limits=(0,20,0,0.58))
# plot
ws = []
ls = []
for n in 1:3
for l in 0:n-1
w = lines!(
ax,
0..20,
r -> r^2 * R(H,r,n=n,l=l)^2,
linewidth = 2,
linestyle = [:solid,:dash,:dot,:dashdot,:dashdotdot][l+1],
color = n,
colormap = :tab10,
colorrange = (1,10)
)
push!(ws, w)
push!(ls, latexstring("n=$n, l=$l"))
end
end
# legend
axislegend(ax, ws, ls, position=:rt)
f
Wave functions (electron density in
using Antique
H = HydrogenAtom(Z=1, Eₕ=1.0, a₀=1.0, mₑ=1.0, ℏ=1.0)
loop(x) = x<-1 ? loop(x+2) : (1<x ? loop(x-2) : x)
myacos(x) = acos(loop(x))
r(x,y,z) = sqrt(x^2+y^2+z^2)
θ(x,y,z) = x^2+y^2<1e-9 ? 0 : myacos(z/r(x,y,z))
φ(x,y,z) = y^2<1e-9 ? 0 : sign(y)*myacos(x/sqrt(x^2+y^2))
P(x,y,z) = abs(ψ(H,r(x,y,z),θ(x,y,z),φ(x,y,z),n=5,l=2,m=1))^2
using CairoMakie
f = Figure(size=(500,500), backgroundcolor=:transparent)
a = Axis(f[1,1], aspect=1)
hidespines!(a)
hidedecorations!(a)
heatmap!(a, -40:0.1:40, -40:0.1:40, (y,z) -> P(0,y,z), colorrange=(0.0,0.00001))
f
save("assets/fig/HydrogenAtom.png", f) # hide
; # hide
Unit testing and Integration testing were done using computer algebra system (Symbolics.jl) and numerical integration (QuadGK.jl). The test script is here.
using Markdown
using Antique
Markdown.parse(Antique.load("../../test/result/HydrogenAtom.log"))