Coupled equations are solved numerically. The SCATTERING code uses renormalized Numerov's algorithm (see Johnson) to propagate the log-derivative of \( {f}^{Jp}_{\gamma} (R)\):
At the last point of propagation, \( R_{max} \), the log-derivative matrix is transformed to the space-fixed (SF) frame using the following transformation
where the coefficients of the transformation are given as
In the next step, the SF log-derivative matrix is then transformed to the reactance K-matrix through the following equation
Here, \( {J} \) and \( {N} \) are diagonal matrices with elements depending on whether the corresponding \( \gamma \) level is energetically accessible (\( E - E_{\gamma} \geq 0 \) ) or inaccessible ( \( E-E_{\gamma} < 0\) ). These two cases are referred to as open and closed channels, respectively. For the open channels, the \( {J} \) and \( {N} \) matrices take the following form:
where \( S_{l}(k_{\gamma}R) \) and \( C_{l}(k_{\gamma}R) \) are Riccati-Bessel functions of the first and second kind, respectively. For the closed channels:
with \( I_{l+\frac{1}{2}}(k_{\gamma} R) \) and \( K_{l+\frac{1}{2}}(k_{\gamma} R) \) being the modified Bessel functions of the first and second kind. Primes in the formula for the reactance matrix denote derivatives of the Bessel functions.
The \( {K}^{Jp} \) matrix takes the block form: where \( {K}_{oo} \), \( {K}_{oc} \), \( {K}_{co} \) and \( {K}_{cc} \) are open-open, open-closed, closed-open and closed-closed submatrices of \( {K}^{Jp} \). It can be shown (see Johnson), that the open-open part of the reactance matrix is not changed upon the following replacement:
This allows to avoid computational problems with modified Bessel functions. The same transformation is applied for the \( {N} \) and \( {N}' \) matrices.
Finally, the scattering S-matrix \( {S}^{Jp} \) is obtained from the open-open portion of \( {K}^{Jp} \)
The S-matrices are saved to external, binary file, in a manner similar to the one used by MOLSCAT (see S-matrix file).
Every time the S-matrix is determined, the code checks if the unitary condition is fulfilled If this condition is not fulfilled for several \(J,p\) blocks, the code lists these blocks at the end of the output file and suggests to increase the steps parameter or to reduce the r_step value.