![]() |
|
High-precision calculations for one- and two-valence atomic systems
|
Performs asymptotic expansion for f and g at large r, up to order Nx in (1/r).
Templated on energy type T: T=double for bound states, or T=std::complex<double> for Green's function solutions at complex energy. The expansion coefficients, lambda, and sigma extend analytically; the principal branch of sqrt gives Re(lambda)>0, i.e. the decaying solution.
The branch may instead be chosen explicitly via with_lambda (e.g. lambda = i p for the oscillating en > 0 tail, see AsymptoticSpinorContinuum). Everything else (sigma, the small-component amplitude, and the 1/r coefficients) is derived from lambda.
#include <AsymptoticSpinor.hpp>
Public Member Functions | |
| AsymptoticSpinor (int in_kappa, double in_Zeff, T in_en, double in_alpha=PhysConst::alpha, double in_eps_target=1.0e-14, double m=1.0) | |
| std::pair< T, T > | fg (double r) const |
| Returns {f(r), g(r)} via asymptotic expansion at large r. | |
Static Public Member Functions | |
| static AsymptoticSpinor | with_lambda (int in_kappa, double in_Zeff, T in_en, T in_lambda, double in_alpha=PhysConst::alpha, double in_eps_target=1.0e-14, double m=1.0) |
| Constructs with an explicitly chosen lambda (exponent in exp(-lambda r)), i.e. with a chosen branch of sqrt(-en(2m + en alpha^2)). | |
|
inlinestatic |
Constructs with an explicitly chosen lambda (exponent in exp(-lambda r)), i.e. with a chosen branch of sqrt(-en(2m + en alpha^2)).
in_lambda must satisfy lambda^2 = -en(2m + en alpha^2); only its sign is free. Used for the en > 0 tail, where lambda = +/- i p and the principal branch is ambiguous (it sits on the branch cut).
|
inline |
Returns {f(r), g(r)} via asymptotic expansion at large r.
Large-r expansion of upper/lower radial components of the Dirac solution, see Johnson (2007), Eqs. (2.170) – (2.171).
f(r) = r^s exp(-yr) * { A(1 + O(1/r) + ...) + B(O(1/r) + ...)},
g(r) = r^s exp(-yr) * { -B(1 + O(1/r) + ...) + A(O(1/r) + ...)},
where s~1, y~1, A~1, B<<1.
The 1/r expansion inside the braces is truncated at order Nx. The series is terminated early if the relative change drops below eps_target (typically around order ~5).