Hex
1.0
Hydrogen-electron collision solver
|
Functions | |
double | lastZeroBound (int n, int l) |
Get last node of the bound radial wave function. More... | |
double | getBoundFar (int n, int l, double eps, int max_steps) |
double | Norm (int n, int l) |
double | getSturmFar (int n, int l, double lambda, double eps, int max_steps) |
double | P (unsigned n, unsigned l, double r) |
Hydrogen bound radial orbital. More... | |
double | F (double k, int l, double r, double sigma) |
double | evalFreeStatePhase (double k, int l, double sigma) |
double | S (int n, int l, double r, double lambda=DEFAULT_LAMBDA) |
Sturmian wave function
\[ S_{n\ell}(r) = \left(\frac{\lambda_\ell (k-1)!}{(2\ell+1+k)!}\right)^{1/2} (\lambda_\ell r)^{\ell+1} \exp(-\lambda_\ell r/2) L_{k-1}^{2\ell+2}(\lambda_\ell r) \] . More... | |
double | evalFreeState_asy (double k, int l, double r, double sigma) |
double | getFreeAsyZero (double k, int l, double Sigma, double eps, int max_steps, int nzero) |
double | getFreeAsyTop (double k, int l, double Sigma, double eps, int max_steps, int ntop) |
double | getFreeFar (double k, int l, double Sigma=special::constant::Nan, double eps=1e-10, int max_steps=DEFAULT_MAXSTEPS) |
Return sufficiently far radius for using the asymptotic form of the free state. More... | |
double | getBoundN (int n, int l) |
Return all constant factors of the bound state. More... | |
Namespace holding routines concerned with the hydrogen atom. Only a narrow subset of the members is used.
double Hydrogen::evalFreeState_asy | ( | double | k, |
int | l, | ||
double | r, | ||
double | sigma | ||
) |
Evaluate free state asymptotics \( \sin (kr - \pi l / 2 + \sigma_l) \).
double Hydrogen::evalFreeStatePhase | ( | double | k, |
int | l, | ||
double | sigma = special::constant::Nan |
||
) |
Evaluate phase of the free state function. Use precomputed value of the Coulomb phase shift "sigma" if available.
double Hydrogen::F | ( | double | k, |
int | l, | ||
double | r, | ||
double | sigma = special::constant::Nan |
||
) |
Evaluate free state
\[ \psi_{\mathbf{k}lm}(\mathbf{r}) = \frac{1}{k} \sqrt{\frac{2}{\pi}} F_l(k,r) Y_{lm} (\mathbf{\hat{r}}) Y_{lm}^\ast(\mathbf{\hat{k}}) \]
Use precomputed value of the Coulomb phase shift "sigma" if available. Complete wave function is further modified by a complex unit factor,
\[ \Psi_{\mathbf{k}lm}(\mathbf{r}) = \mathrm{i}^l \mathrm{e}^{\mathrm{i}\sigma_l(k)} \psi_{\mathbf{k}lm}(\mathbf{r}) \ . \]
The missing phase (as a real number) can be retrieved by evalFreeStatePhase .
double Hydrogen::getBoundFar | ( | int | n, |
int | l, | ||
double | eps, | ||
int | max_steps = DEFAULT_MAXSTEPS |
||
) |
Return radial distance in the exponential decreasing regions, for which the radial function is equal to "eps".
double Hydrogen::getBoundN | ( | int | n, |
int | l | ||
) |
This function doesn't compute only the normalization factor \( N_{nl} \) but also multiplied the angular-momentum factor \( (2/n)^l \).
double Hydrogen::getFreeAsyTop | ( | double | k, |
int | l, | ||
double | Sigma, | ||
double | eps, | ||
int | max_steps, | ||
int | ntop | ||
) |
Find local maxima of the free function asymptotics.
double Hydrogen::getFreeAsyZero | ( | double | k, |
int | l, | ||
double | Sigma, | ||
double | eps, | ||
int | max_steps, | ||
int | nzero | ||
) |
Find zeros of the free function asymptotics.
double Hydrogen::getFreeFar | ( | double | k, |
int | l, | ||
double | Sigma = special::constant::Nan , |
||
double | eps = 1e-10 , |
||
int | max_steps = DEFAULT_MAXSTEPS |
||
) |
Return radial distance in the oscillating region, for which the radial function less than "eps" in some zero-node of the asymptotical form. The asymptotic form is
\[ F_\ell(k,r) \propto \sin \left(kr - \frac{\ell\pi}{2} + \frac{1}{k}\log 2k + \sigma_\ell(k)\right) \ , \]
so the free state will be evaluated in such radii that the following is fulfilled:
\[ n\pi = kr - \frac{\ell\pi}{2} + \frac{1}{k}\log 2k + \sigma_\ell(k) \ . \]
double Hydrogen::getSturmFar | ( | int | n, |
int | l, | ||
double | lambda, | ||
double | eps, | ||
int | max_steps = DEFAULT_MAXSTEPS |
||
) |
Return radial distance in the exponential decreasing regions, for which the radial function is equal to "eps".
double Hydrogen::lastZeroBound | ( | int | n, |
int | l | ||
) |
double Hydrogen::Norm | ( | int | n, |
int | l | ||
) |
double Hydrogen::P | ( | unsigned | n, |
unsigned | l, | ||
double | r | ||
) |
The hydrogen radial functions \( R_{nl} \) are defined as
\[ R_{nl}(r) = \sqrt{\left(\frac{2}{n}\right)^3 \frac{(n-l-1)!}{2n(n+l)!}} \left(\frac{2r}{n}\right)^l L_{n-l-1}^{(2l+1)}\left(\frac{2r}{n}\right) \mathrm{e}^{-r/n} \ , \]
where \( L_n^{(\alpha)}(r) \) are the generalized Laguerre polynomials. This function, however, returns the "radial orbital", which is understood here to be the radial function multiplied by the radius,
\[ P_{nl}(r) = r R_{nl}(r) \ . \]
double Hydrogen::S | ( | int | n, |
int | l, | ||
double | r, | ||
double | lambda | ||
) |