Hex
1.0
Hydrogenelectron collision solver

Hexdwba is a highenergy 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.
The distorted wave Born approximation of the first order (DWBA1) is similar to the wellknown 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 firstorder 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:
\[ \left( \frac{1}{2}\frac{\mathrm{d}^2}{\mathrm{d}r^2} +\frac{\ell(\ell+1)}{2r^2} +U(r) \right)\chi_{k\ell}(r) = E_{k}\chi_{k\ell}(r) \ . \]  (2) 
\[ T = (N+1) \left<\chi_f^{()}\psi_f\rightVU_f\left\mathcal{A}\Psi_i^{(+)}\right> + \left<\chi_f^{()}\psi_f\rightU_f\left\psi_i\beta_i\right> \ . \]  (3) 
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 CashKarp RungeKutta method provided by GSL (see below).
You will need a modern C++ compiler to compile the program as for example
DWBA uses some free external libraries
The first is used for numerical integration and special and utitlity functions. The second is used for largeprecision rational numbers that are necessary when working with analytic formulas. Both libraries are opensource and maintained. They can be downloaded free of charge and compiled on any Posixcompatible system. The compilation in Windows system can be done e.g. in the Code::Blocks IDE (that is not at all straightforward, though).