High-precision calculations for one- and two-valence atomic systems
DiracHydrogen.hpp
1#pragma once
2
3/*!
4 @brief Exact relativistic hydrogen-like (Dirac-Coulomb) wavefunctions
5
6 @details
7 Analytic solutions of the single-particle Dirac equation for a pointlike
8 nuclear charge Z (the Dirac-Coulomb problem). The orbitals have the form
9
10 \f[
11 \psi_{n\kappa m}(\vb{r}) = \frac{1}{r}
12 \begin{pmatrix} f_{n\kappa}(r)\,\Omega_{\kappa m}(\hat n) \\
13 i\,g_{n\kappa}(r)\,\Omega_{-\kappa,m}(\hat n) \end{pmatrix},
14 \f]
15
16 with f the large (upper) and g the small (lower) radial component.
17 Expressions follow H. A. Bethe and E. E. Salpeter, Quantum Mechanics of
18 One- and Two-Electron Atoms (1977).
19
20 The optional lepton mass @p mass defaults to 1 (atomic units). The full
21 relativistic energy is \f$ E = mass\,c^2 + \en_{n\kappa} = mass/\alpha^2 +
22 \en_{n\kappa} \f$, and the radial functions scale with mass as
23 \f$ f_{mass}(r) = \sqrt{mass}\,f_1(mass\,r) \f$.
24
25 \par Non-relativistic limit
26 Passing \f$ \alpha \le 0 \f$ selects the non-relativistic (Schrodinger)
27 limit directly, rather than evaluating the Dirac expressions at a tiny
28 \f$ \alpha \f$ (which is numerically unstable). In this limit the large
29 component reduces to the non-relativistic radial function (f = P_nl), the
30 small component vanishes (g = 0), and the energy is
31 \f$ \en_n = -mass\,Z^2/(2n^2) \f$.
32
33 @note Uses some numerically unstable functions (Gamma functions and
34 confluent hypergeometric functions), so may be inaccurate for extreme
35 inputs. For reasonable inputs (Zeff = 5, up to n ~ 10) tested good to at
36 least parts in 10^12.
37*/
38namespace DiracHydrogen {
39
40/*!
41 @brief Relativistic factor gamma = Sqrt[kappa^2 - (Z*alpha)^2]
42 @details
43 \f[ \gamma = \sqrt{\kappa^2 - (Z\alpha)^2}. \f]
44 @param kappa Dirac quantum number
45 @param zeff Effective nuclear charge, Z
46 @param alpha Fine-structure constant
47 @return gamma
48*/
49double gamma(int kappa, double zeff, double alpha);
50
51/*!
52 @brief Single-particle energy, without rest mass: enk
53
54 @details
55 Bound-state Dirac-Coulomb energy, excluding the rest-mass term:
56
57 \f[
58 \en_{n\kappa} = mass\,c^2\left[
59 \left(1 + \frac{(Z\alpha)^2}{(\gamma + n - |\kappa|)^2}\right)^{-1/2}
60 - 1 \right],
61 \f]
62
63 evaluated in a numerically stable form (avoids cancellation between the
64 \f$ O(c^2) \f$ terms). For \f$ \alpha \le 0 \f$ returns the non-relativistic
65 energy \f$ \en_n = -mass\,Z^2/(2n^2) \f$.
66
67 @param n Principal quantum number (may be non-integer, effective n)
68 @param kappa Dirac quantum number (ignored in the non-relativistic limit)
69 @param zeff Effective nuclear charge, Z
70 @param alpha Fine-structure constant; alpha <= 0 gives non-relativistic
71 @param mass Lepton mass, in units of the electron mass (default 1)
72 @return enk (atomic units)
73 @note alpha <= 0 selects the non-relativistic limit
74*/
75double enk(double n, int kappa, double zeff, double alpha, double mass = 1.0);
76
77/*!
78 @brief Full energy, including rest mass: Enk = mass/alpha^2 + enk
79 @details
80 \f[ E_{n\kappa} = mass\,c^2 + \en_{n\kappa} = mass/\alpha^2 + \en_{n\kappa}. \f]
81 @param n Principal quantum number (may be non-integer)
82 @param kappa Dirac quantum number
83 @param zeff Effective nuclear charge, Z
84 @param alpha Fine-structure constant
85 @param mass Lepton mass, in units of the electron mass (default 1)
86 @return Enk (atomic units)
87 @warning Diverges as alpha -> 0 (rest energy mass/alpha^2); not meaningful in
88 the non-relativistic limit.
89*/
90double Enk(double n, int kappa, double zeff, double alpha, double mass = 1.0);
91
92/*!
93 @brief Upper (large) radial component, f(r)
94
95 @details
96 Large (upper) component of the Dirac-Coulomb orbital (see the namespace
97 description for the full expression). For \f$ \alpha \le 0 \f$ returns the
98 non-relativistic large component, \f$ f(r) = P_{nl}(r) \f$ (see @ref P_nl),
99 with l = l(kappa).
100
101 @param r Radial coordinate (atomic units)
102 @param n Principal quantum number (may be non-integer)
103 @param kappa Dirac quantum number
104 @param zeff Effective nuclear charge, Z
105 @param alpha Fine-structure constant; alpha <= 0 gives non-relativistic
106 @param mass Lepton mass, in units of the electron mass (default 1)
107 @return f(r)
108 @note alpha <= 0 selects the non-relativistic limit: f = P_nl (and g = 0)
109*/
110double f(double r, double n, int kappa, double zeff, double alpha,
111 double mass = 1.0);
112
113/*!
114 @brief Lower (small) radial component, g(r)
115
116 @details
117 Small (lower) component of the Dirac-Coulomb orbital (see the namespace
118 description for the full expression). In the non-relativistic limit
119 \f$ \alpha \le 0 \f$ the small component vanishes, g(r) = 0.
120
121 @param r Radial coordinate (atomic units)
122 @param n Principal quantum number (may be non-integer)
123 @param kappa Dirac quantum number
124 @param zeff Effective nuclear charge, Z
125 @param alpha Fine-structure constant; alpha <= 0 gives g = 0
126 @param mass Lepton mass, in units of the electron mass (default 1)
127 @return g(r)
128 @note alpha <= 0 selects the non-relativistic limit: g = 0
129*/
130double g(double r, double n, int kappa, double zeff, double alpha,
131 double mass = 1.0);
132
133/*!
134 @brief Ratio g/f at radius r
135 @details
136 Small-to-large component ratio at radius @p r, for a given energy @p en
137 (without rest mass). Independent of the overall normalisation.
138 @param r Radial coordinate (atomic units)
139 @param kappa Dirac quantum number
140 @param zeff Effective nuclear charge, Z
141 @param alpha Fine-structure constant
142 @param en Single-particle energy (without rest mass)
143 @param mass Lepton mass, in units of the electron mass (default 1)
144 @return g(r)/f(r)
145*/
146double gfratio(double r, int kappa, double zeff, double alpha, double en,
147 double mass = 1.0);
148
149/*!
150 @brief Nonrelativistic bound-state radial function: P_nl(r) = r * R_nl(r)
151 @details
152 Hydrogen-like Schrodinger radial function, unit normalised:
153 \f$ \int_0^\infty P_{nl}^2\,\d r = 1 \f$. Mass scales as
154 \f$ P_{nl,mass}(r) = \sqrt{mass}\,P_{nl,1}(mass\,r) \f$.
155
156 Evaluated via the confluent hypergeometric form
157 \f$ \rho^l e^{-\rho/2}\,{}_1F_1(l+1-n, 2l+2, \rho) \f$, \f$ \rho = 2Z\,mass\,r/n \f$,
158 so @p n may be non-integer (effective n). For integer n this reduces to the
159 usual associated Laguerre polynomial.
160
161 @param r Radial coordinate (atomic units)
162 @param n Principal quantum number; may be non-integer (effective n)
163 @param l Orbital angular momentum
164 @param zeff Effective nuclear charge, Z
165 @param mass Lepton mass, in units of the electron mass (default 1)
166 @return P_nl(r)
167 @warning For non-integer n the series does not terminate and the function
168 grows like \f$ e^{+Zr/n} \f$ at large r (not a normalisable bound
169 state); it is only meaningful at finite r / near-integer n.
170*/
171double P_nl(double r, double n, int l, double zeff, double mass = 1.0);
172
173} // namespace DiracHydrogen
Exact relativistic hydrogen-like (Dirac-Coulomb) wavefunctions.
Definition DiracHydrogen.cpp:5
double Enk(double n, int kappa, double zeff, double alpha, double mass)
Full energy, including rest mass: Enk = mass/alpha^2 + enk.
Definition DiracHydrogen.cpp:64
double gfratio(double r, int kappa, double zeff, double alpha, double en, double mass)
Ratio g/f at radius r.
Definition DiracHydrogen.cpp:144
double enk(double n, int kappa, double zeff, double alpha, double mass)
Single-particle energy, without rest mass: enk.
Definition DiracHydrogen.cpp:48
double P_nl(double r, double n, int l, double zeff, double mass)
Nonrelativistic bound-state radial function: P_nl(r) = r * R_nl(r)
Definition DiracHydrogen.cpp:122
double f(double r, double n, int kappa, double zeff, double alpha, double mass)
Upper (large) radial component, f(r)
Definition DiracHydrogen.cpp:74
double g(double r, double n, int kappa, double zeff, double alpha, double mass)
Lower (small) radial component, g(r)
Definition DiracHydrogen.cpp:99
double gamma(int kappa, double zeff, double alpha)
Relativistic factor gamma = Sqrt[kappa^2 - (Z*alpha)^2].
Definition DiracHydrogen.cpp:69