ampsci
High-precision calculations for one- and two-valence atomic systems
DiracHydrogen.hpp
1#pragma once
2#include "qip/StrongType.hpp"
3
4//! @brief Exact relativistic hydrogen-like (Coulomb) wavefuntions
5/*!
6@details in form phi = (1/r)(f O, ig O')
7
8From: H. A. Bethe and E. E. Salpeter, Quantum Mechanics of One-and Two-Electron
9Atoms (Plenum, New York, 1977).
10
11Note: Uses some numerically unstable functions, including Gamma functions and
12confluent hypergeometric functions. So, for some inputs, may be numerically
13unstable. For reasonable inputs (i.e., Zeff=5, up to n=~10), good to at least
14parts in 10^12
15
16*/
17namespace DiracHydrogen {
18
19//------------------------------------------------------------------------------
20// Uses Strong Types:
21enum class DiracTypes { DiracQN, AlphaFS, Zeff, PrincipalQN, RaB };
22
26// double (allow eff):
29
30//------------------------------------------------------------------------------
31
32//! Relativistic factor gamma = Sqrt[k^2 - (aZ)^2]
33double gamma(DiracQN k, Zeff z, AlphaFS a);
34
35//! Energy, without rest mass
36double enk(PrincipalQN n, DiracQN k, Zeff z, AlphaFS a);
37
38//! Enk = enk + c^2
39double Enk(PrincipalQN n, DiracQN k, Zeff z, AlphaFS a);
40
41//! Upper radial component
42double f(RaB r, PrincipalQN n, DiracQN k, Zeff z, AlphaFS a);
43
44//! Lower (small) radial component
45double g(RaB r, PrincipalQN n, DiracQN k, Zeff z, AlphaFS a);
46
47double gfratio(double r, int k, double z, double a, double e, double m = 1.0);
48
49} // namespace DiracHydrogen
Exact relativistic hydrogen-like (Coulomb) wavefuntions.
Definition DiracHydrogen.cpp:7
double enk(PrincipalQN n, DiracQN k, Zeff z, AlphaFS a)
Energy, without rest mass.
Definition DiracHydrogen.cpp:51
double gamma(DiracQN k, Zeff z, AlphaFS a)
Relativistic factor gamma = Sqrt[k^2 - (aZ)^2].
Definition DiracHydrogen.cpp:67
double f(RaB r, PrincipalQN n, DiracQN k, Zeff z, AlphaFS a)
Upper radial component.
Definition DiracHydrogen.cpp:71
double g(RaB r, PrincipalQN n, DiracQN k, Zeff z, AlphaFS a)
Lower (small) radial component.
Definition DiracHydrogen.cpp:83
double Enk(PrincipalQN n, DiracQN k, Zeff z, AlphaFS a)
Enk = enk + c^2.
Definition DiracHydrogen.cpp:62
A light-weight easy-to-use single-file header-only template class for strong typing.
Definition StrongType.hpp:45