High-precision calculations for one- and two-valence atomic systems
DiracHydrogen.hpp
1#pragma once
2#include "qip/StrongType.hpp"
3
4/*!
5 @brief Exact relativistic hydrogen-like (Coulomb) wavefunctions
6 @details In the form
7 \f[ \psi_{n\kappa m}(\vb{r}) = \frac{1}{r}
8 \begin{pmatrix} f_{n\kappa}(r)\,\Omega_{\kappa m}(\hat n) \\
9 i\,g_{n\kappa}(r)\,\Omega_{-\kappa,m}(\hat n) \end{pmatrix}. \f]
10
11 From: H. A. Bethe and E. E. Salpeter, Quantum Mechanics of One-and Two-Electron
12 Atoms (Plenum, New York, 1977).
13
14 Note: Uses some numerically unstable functions, including Gamma functions and
15 confluent hypergeometric functions. So, for some inputs, may be numerically
16 unstable. For reasonable inputs (i.e., Zeff=5, up to n=~10), good to at least
17 parts in 10^12
18
19 The optional electron mass parameter @p m defaults to 1 (atomic units).
20 The full relativistic energy is E = m*c^2 + enk = m/alpha^2 + enk.
21*/
22namespace DiracHydrogen {
23
24//------------------------------------------------------------------------------
25// Uses Strong Types:
26enum class DiracTypes { DiracQN, AlphaFS, Zeff, PrincipalQN, RaB };
27
31// double (allow eff):
34
35//------------------------------------------------------------------------------
36
37//! Relativistic factor gamma = Sqrt[k^2 - (aZ)^2]
38double gamma(DiracQN k, Zeff z, AlphaFS a);
39
40//! Energy, without rest mass. @p m is the electron mass (default 1 a.u.)
41double enk(PrincipalQN n, DiracQN k, Zeff z, AlphaFS a, double m = 1.0);
42
43//! Full energy: Enk = m/alpha^2 + enk. @p m is the electron mass (default 1 a.u.)
44double Enk(PrincipalQN n, DiracQN k, Zeff z, AlphaFS a, double m = 1.0);
45
46//! Upper (large) radial component. @p m is the electron mass (default 1 a.u.)
47double f(RaB r, PrincipalQN n, DiracQN k, Zeff z, AlphaFS a, double m = 1.0);
48
49//! Lower (small) radial component. @p m is the electron mass (default 1 a.u.)
50double g(RaB r, PrincipalQN n, DiracQN k, Zeff z, AlphaFS a, double m = 1.0);
51
52//! Ratio g/f at r, for given energy @p e (without rest mass) and mass @p m.
53double gfratio(double r, int k, double z, double a, double e, double m = 1.0);
54
55} // namespace DiracHydrogen
Exact relativistic hydrogen-like (Coulomb) wavefunctions.
Definition DiracHydrogen.cpp:7
double gamma(DiracQN k, Zeff z, AlphaFS a)
Relativistic factor gamma = Sqrt[k^2 - (aZ)^2].
Definition DiracHydrogen.cpp:66
double enk(PrincipalQN n, DiracQN k, Zeff z, AlphaFS a, double m)
Energy, without rest mass. m is the electron mass (default 1 a.u.)
Definition DiracHydrogen.cpp:55
double gfratio(double r, int k, double z, double a, double e, double m)
Ratio g/f at r, for given energy e (without rest mass) and mass m.
Definition DiracHydrogen.cpp:102
double Enk(PrincipalQN n, DiracQN k, Zeff z, AlphaFS a, double m)
Full energy: Enk = m/alpha^2 + enk. m is the electron mass (default 1 a.u.)
Definition DiracHydrogen.cpp:62
double f(RaB r, PrincipalQN n, DiracQN k, Zeff z, AlphaFS a, double m)
Upper (large) radial component. m is the electron mass (default 1 a.u.)
Definition DiracHydrogen.cpp:70
double g(RaB r, PrincipalQN n, DiracQN k, Zeff z, AlphaFS a, double m)
Lower (small) radial component. m is the electron mass (default 1 a.u.)
Definition DiracHydrogen.cpp:86
A light-weight easy-to-use single-file header-only template class for strong typing.
Definition StrongType.hpp:44