Hex  2.2
Hydrogen-electron collision solver
Hex Documentation
Author
Jakub Benda, MFF UK, jakub.bendaseznam.cz
Date
15. 3. 2016

Hex-dwba

Hex-dwba is a high-energy computational module of the Hex package. It implements the distorted wave Born approximation of the first order and is expected to give trustworthy results for ehergies above 1 keV. However, it can be also run in the plane wave mode (if the option --nodistort is used). The full usage scheme is

hex-dwba [--nodistort] [--nodirect] [--noexchange] <ni> <li> <nf> <lf> <Ei> <L> [<rmax>]

where the options allow to skip some contributions (direct/exchange) and the number parameters are: the initial and final atomic quantum numbers, impact energy, total angular momentum and (optional) radial grid length used in distorted wave method. The result is an SQL batch file for use in hex-db.

Plane wave approximation

Plane wave Born approximation of the first order (PWBA-1) is a perturbation approach to computation of electron-atom scattering variables. The most important for the whole Hex package is the scattering T-matrix, which in PWBA-1 reads

\[ T = \left<\Psi_f\right|V\left|\Psi_i\right> \ , \]

where both the final and initial wave function of the system are approximated by a product of atomic orbital and projectile plane wave,

\[ \Psi_i(\mathbf{r}_1,\mathbf{r}_2) = \frac{1}{r_1}P_{N_iL_i}(r_1) Y_{L_iM_i}(\hat{\mathbf{r}}_1) \cdot \frac{4\pi}{k_ir_2} \sum_{l_im_i} \mathrm{i}^{l_i} \hat{j}_{l_i}(k_ir_2) Y_{l_im_i}(\hat{\mathbf{r}}_2) Y_{l_im_i}^* (\hat{\mathbf{k}}_i) \ . \]

The potential is the sum of the proton and atomic electron potential,

\[ V(\mathbf{r}_1,\mathbf{r}_2) = \frac{1}{|\mathbf{r}_1 - \mathbf{r}_2|} - \frac{1}{\mathbf{r}_2} \ . \]

The exchange amplitude can be computed as well if the coordinates in \( \Psi_i \) are exchanged and also the coordinates in \( V \).

After some simplifications, the resulting direct and exchange T-matrices are

\[ T_{\mathrm{dir},\ell} = \frac{8}{k_ik_f} \sum_{l \lambda} \frac{\mathrm{i}^{l-\ell}}{2\lambda+1} \sqrt{\frac{2l+1}{4\pi}} G_{L_i,M_i,\lambda,M_f-M_i}^{L_f,M_f} G_{\lambda,M_f-M_i,\ell,M_i-M_f}^{l,0} I_{\mathrm{dir},\ell\lambda l}^{N_i,L_i,N_f,L_f}(k_f,k_i) \ , \]

\[ T_{\mathrm{exc},\ell} = \frac{8}{k_ik_f} \sum_{l \lambda} \frac{\mathrm{i}^{l-\ell}}{2\lambda+1} \sqrt{\frac{2l+1}{4\pi}} G_{l,0,\lambda,M_f}^{L_f,M_f} G_{L_i,M_i,\ell,M_i-M_f}^{L_i,M_i} I_{\mathrm{exc},\ell\lambda l}^{N_i,L_i,N_f,L_f}(k_f,k_i) \ , \]

with the direct and exchange integral

\[ I_{\mathrm{dir},\ell\lambda l}^{N_i,L_i,N_f,L_f}(k_f,k_i) = \int_0^\infty \int_0^\infty \hat{j}_{\ell}(k_fr_2) P_{N_fL_f}(r_1) \left(\frac{r_<^\lambda}{r_>^{\lambda+1}} - \frac{\delta_\lambda^0}{r_2}\right) P_{N_iL_i}(r_1) \hat{j}_{l}(k_ir_2) \mathrm{d}r_1 \mathrm{d}r_2 \ , \]

\[ I_{\mathrm{exc},\ell\lambda l}^{N_i,L_i,N_f,L_f}(k_f,k_i) = \int_0^\infty \int_0^\infty \hat{j}_{\ell}(k_fr_2) P_{N_fL_f}(r_1) \left(\frac{r_<^\lambda}{r_>^{\lambda+1}} - \frac{\delta_\lambda^0}{r_1}\right) P_{N_iL_i}(r_2) \hat{j}_{l}(k_ir_1) \mathrm{d}r_1 \mathrm{d}r_2 \ . \]

Here, \( G \) is the Gaunt's integral, \( \hat{j}_\ell \) the Riccati-Bessel function of the \( \ell \)-th order.

Method

The twodimensional integrals could be in principle directly numerically evaluated, but a fasted alternative is implemented here, which is semi-analytical. All integrands can be expressed as a product of a multiplicative constant, power of the coordinate, trigonometric function of some multiple of the coordinate and damped exponential,

\[ F(r) = \sum_i k_i x^{a_i} \sin (b_ir)\, \mathrm{e}^{-c_ir} \]

or

\[ F(r) = \sum_i k_i x^{a_i} \cos (b_ir)\, \mathrm{e}^{-c_ir} \]

Such a function can be easily integrated. It is

\[ \int_0^\infty x^a \sin (bx)\, \mathrm{e}^{-cx} \mathrm{d}x = -\mathrm{Im}\,\frac{a!}{(c-\mathrm{i}b)^{a+1}} \ , \]

\[ \int_r^\infty x^a \sin (bx)\, \mathrm{e}^{-cx} \mathrm{d}x = -\mathrm{Im}\,\left\{ \frac{a!}{(c-\mathrm{i}b)^{a+1}} \mathrm{e}^{-(c-\mathrm{i}b)x} \sum_{k=0}^a \frac{[(c-\mathrm{i}b)x]^k}{k!} \right\} \]

and analogously for cosine integral (will contain real parts instead of imaginary parts). Evaluating these analytical expressions is and order faster than evaluating the inner integral.

Necessary input are the formulas for associated Laguerre polynomials,

\[ L_k^s(x) = \sum_{j=s}^k \frac{ (-1)^j (k!)^2 x^{j-s} }{ (k-j)! j! (j-s)! } \ , \]

hydrogen radial functions

\[ P_{nl}(r) = r \sqrt{\left(\frac{2}{n}\right)^3 \frac{(n-l-1)!}{2n((n+l)!)^3}} \left(\frac{2r}{n}\right)^l L_{n+l}^{2l+1}(2r/n) \mathrm{e}^{-r/n} \]

and Riccati-Bessel function

\[ \hat{j}_l(x) = \sum_{i=0}^{\lfloor\frac{l+1}{2}\rfloor} \left\{ \left(\frac{2}{x}\right)^{l-2i} \frac{(l-i)!}{i!} {-1/2-i \choose l-2i} \sin x - \left(\frac{2}{x}\right)^{l-2i} \frac{(l-i)!}{i!} i {-1/2-i \choose l-2i+1 } \cos x \right\}\ . \]

Distorted wave mode

The distorted wave Born approximation of the first order (DWBA-1) is similar to the well-known plane wave Born approximation. However, to speed up the convergence of the Born series (of which we are using just a single term in the first-order computation), part of the potential is excluded from the perurbative description and solved precisely. The spliting is the following

\[ V = W + U \, \]

(1)

where \( V \) is the full potential felt by the projectile, \( U \) is the so called "distorting potential" that will be solved precisely as mentioned above and explained below. This splitting has two consequences:

Implementation

The program iterates over partial waves of the asymptotic final state. For every iterations is will loop over all initial states that can contribute to the requested scattering process and still result in the current asymptotic final state.

The radial functions \( \chi_{k\ell}(r) \) are computed using numerical solution of the equation (2) by the adaptive Cash-Karp Runge-Kutta method provided by GSL (see below).

Requirements

You will need a modern C++ compiler to compile the program as for example

DWBA uses some free external libraries

The libraries are mostly present in the repositories of all major Linux distributions. They can be also compiled from source code in Windows – this has been tested in the Code::Blocks IDE. However, the compilation on Windows is not trivial and needed some manual aid.