iTranslated by AI
Perturbation Calculation of Helium Atom Using Monte Carlo Integration
This is the 12th day of the Julia Advent Calendar 2023 🎄
Introduction
In this article, we will learn about the perturbation method using the electronic state calculation of a helium atom as a case study. To keep the calculations light and avoid analytical derivations, we will use Antique.jl for wavefunctions and MonteCarloIntegration.jl for integration. For a formal explanation of perturbation theory, please refer to Professor Muto's lecture notes from Tokyo Institute of Technology.
Package Usage
Before dealing with the helium atom
using Pkg; Pkg.add("Antique")
Since Z=2 following this example.
using Antique
He⁺ = antique(:HydrogenAtom, Z=2, Eₕ=1.0, a₀=1.0, mₑ=1.0, ℏ=1.0)
In a hydrogen-like atom where the nuclear mass is sufficiently large, the eigenvalues for the principal quantum number
For the ground state of
This can be calculated by specifying n=1 in the function E() of the previously defined module He⁺ as follows:
He⁺.E(n=1)
-2.0
Regarding energy units, using the conversion factors from the 2018 CODATA recommended values, it can be converted to the following value:
Eₕ2eV = 27.211386245988 # eV # https://physics.nist.gov/cgi-bin/cuu/Value?hrev
println("E = ", He⁺.E(n=1), " Eₕ")
println(" = ", He⁺.E(n=1) * Eₕ2eV, " eV")
E = -2.0 Eₕ
= -54.422772491976 eV
Next, let's check the normalization condition of the wavefunction. We will use MonteCarloIntegration.jl for integration, so install it using the following command.
using Pkg; Pkg.add("MonteCarloIntegration")
Here is an example of calculating the following integral with this package:
using MonteCarloIntegration
res = vegas(r -> abs(He⁺.ψ(r...))^2 * r[1]^2 * sin(r[2]), [0,0,0], [100,π,2π], atol=1e-5)
println("<ψ|ψ> = ", res.integral_estimate, " ± ", res.standard_deviation)
<ψ|ψ> = 0.9983502045775035 ± 0.0007877199112562297
Since we obtained approximately 1, we can consider the calculation to be correct.
Explanation of the program
Here is some supplementary information about the program. First, r[1] corresponds to r[2] to r[3] to He⁺.ψ(r...) is a shorthand for He⁺.ψ(r[1],r[2],r[3]) using the splat syntax.
Hamiltonian
Derivation of the Hamiltonian
We treat the helium atom as a three-body system consisting of two electrons and one nucleus (alpha particle = two neutrons and two protons). Considering both electrons and the nucleus as point masses and assuming only Coulomb forces for interactions, the non-relativistic Hamiltonian is expressed as follows:
Converting this to dimensionless form using atomic units (for details, see IUPAC Greenbook 3.2.9):
Here, the Hamiltonian is made dimensionless using the Hartree energy
In this note, we will consider this by dividing it into the unperturbed Hamiltonian
and the perturbation term
Unperturbed Energy and Wavefunctions
Perturbation theory starts with the premise that the unperturbed problem has already been solved, so we first prepare the eigenvalues and eigenfunctions of the unperturbed Hamiltonian
If we let these eigenvalues be
Using these two equations, we can show that:
Thus, it can be shown that
Note on wavefunctions
However, simply satisfying the Schrödinger equation is not enough. In a system containing two or more electrons (fermions), the wavefunction must be antisymmetric with respect to the exchange of their spatial and spin coordinates. This is an axiom independent of the Schrödinger equation and is not automatically satisfied just by solving the Schrödinger equation; therefore, calculations must be performed using basis functions that satisfy this symmetry in advance. Discussions on this can be found in Section 2.1.3 of ["Modern Quantum Chemistry: Introduction to Advanced Electronic Structure Theory" by A. Szabo and N. S. Ostlund] (Japanese translation by Kimio Ohno, Takeo Sakai, and Yuji Mochizuki, University of Tokyo Press, 1987). That said, in this case, we are limited to
Now, let's determine the specific energy. Since it is a simple sum, it can be calculated as follows:
Eₕ2eV = 27.211386245988 # eV # https://physics.nist.gov/cgi-bin/cuu/Value?hrev
println("E = ", (He⁺.E(n=1) + He⁺.E(n=1)), " Eₕ")
println(" = ", (He⁺.E(n=1) + He⁺.E(n=1)) * Eₕ2eV, " eV")
E = -4.0 Eₕ
= -108.845544983952 eV
Next, let's check the normalization condition of the wavefunction. The wavefunction is defined as a function of six variables as follows:
Ψ(r₁,θ₁,φ₁,r₂,θ₂,φ₂) = He⁺.ψ(r₁,θ₁,φ₁) * He⁺.ψ(r₂,θ₂,φ₂)
Let's check the normalization condition using Monte Carlo integration as before.
res = vegas(x -2
x[1]^2 * sin(x[2]) *
x[4]^2 * sin(x[5]) *
abs(Ψ(x...))^2 ,
[0,0,0,0,0,0],
[50,π,2π,50,π,2π],
atol=1e-5
)
println("<ψ|ψ> = ", res.integral_estimate, " ± ", res.standard_deviation)
<ψ|ψ> = 1.0004144350516748 ± 0.0017535335574600287
It has been confirmed that the result is approximately 1.
First-order Energy
The unperturbed wavefunction
Since the wavefunction is defined in spherical coordinates, we convert it to Cartesian coordinates before calculating the distance between the electrons (there might be a way to calculate it directly from spherical coordinates).
x(r,θ,φ) = r*sin(θ)*cos(φ)
y(r,θ,φ) = r*sin(θ)*sin(φ)
z(r,θ,φ) = r*cos(θ)
function r₁₂(r₁,θ₁,φ₁,r₂,θ₂,φ₂)
return sqrt(
(x(r₁,θ₁,φ₁) - x(r₂,θ₂,φ₂)) ^ 2 +
(y(r₁,θ₁,φ₁) - y(r₂,θ₂,φ₂)) ^ 2 +
(z(r₁,θ₁,φ₁) - z(r₂,θ₂,φ₂)) ^ 2
)
end
By inserting this into the integration code used earlier to verify the normalization condition, we can calculate the expectation value of the perturbation term (electron-electron repulsion).
res = vegas(x ->
x[1]^2 * sin(x[2]) *
x[4]^2 * sin(x[5]) *
conj(Ψ(x...)) *
1 / r₁₂(x...) *
Ψ(x...) ,
[0,0,0,0,0,0],
[50,π,2π,50,π,2π],
rtol = 1e-6,
atol = 1e-6
)
∫ψψV₁₂ψψdr₁dr₂ = res.integral_estimate
println("<V₁₂> = ", ∫ψψV₁₂ψψdr₁dr₂, " Eₕ")
println(" = ", ∫ψψV₁₂ψψdr₁dr₂ * Eₕ2eV, " eV")
<V₁₂> = 1.2495678829756485 Eₕ
= 34.0024743042319 eV
Adding this to the previous
E = He⁺.E(n=1) + He⁺.E(n=1) + ∫ψψV₁₂ψψdr₁dr₂
println("<H> = ", E, " Eₕ")
println(" = ", E * Eₕ2eV, " eV")
<H> = -2.7504321170243515 Eₕ
= -74.8430706797201 eV
While this is higher than the currently most accurate known energy
Considerations from the variational principle
From the perspective of the variational principle, while the unperturbed wavefunction is not completely off the mark for the Hamiltonian including the perturbation term, it is likely not a very accurate wavefunction. Note that the variational principle implies that "the lower the energy, the more accurate the energy is." Since other expectation values are not guaranteed to be more accurate, be aware that energy is not an absolute criterion for judging the overall quality of a wavefunction. For more details, please refer to this explanation.
Conclusion
Perturbation theory is not an approach that ends after considering only the first-order approximation; it is an approach that involves adding higher-order corrections. In this article, we shall be satisfied with having confirmed the validity of calculating the expectation value of the perturbation term using unperturbed wavefunctions (the lowest-order perturbation calculation).
References
- Professor Muto's lecture notes from Tokyo Institute of Technology
- Antique.jl
- MonteCarloIntegration.jl
- IUPAC Greenbook 3.2.9
- 2018 CODATA recommended values
- A. Szabo and N. S. Ostlund, "Modern Quantum Chemistry: Introduction to Advanced Electronic Structure Theory" (Translated by Kimio Ohno, Takeo Sakai, and Yuji Mochizuki, University of Tokyo Press, 1987)
- H. Nakashima, H. Nakatsuji, Phys. Rev. Lett. 101, 240406 (2008)
- J. F. Pérez-Torres, J. Chem. Educ. 96, 4, 704–707 (2019)
Discussion