Hex  1.0 Hydrogen-electron collision solver
Hydrogen Namespace Reference

Hydrogen atom. More...

## 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)

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)$

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...

## Detailed Description

Namespace holding routines concerned with the hydrogen atom. Only a narrow subset of the members is used.

## Function Documentation

 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".

Warning
A naive hunt & bisection algorithm is used, which will collapse if any of the roots lies in the vicinity of $$r_k = 2^k$$.
 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".

Warning
A naive hunt & bisection algorithm is used, which will collapse if any of the roots lies in the vicinity of $$r_k = 2^k$$.
 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 )