Solution of the coupled equations

  • Hubert Jóźwiak

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)\):

Renormalized Numerov's algorithm is implemented in numerov procedure in propagator_mod module.

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

The transformation between arbitrary BF and SF matrices is implemented in boundary_conditions_mod: Eq. \eqref{eq:BF-SF-transform} is implemented in calculate_sf_matrix_from_bf_matrix and calculate_single_sf_element subroutines, while Eq. \eqref{eq:p-coeff} is handled by the p_coeff function.

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 SCATTERING code uses Riccati-Bessel functions calculated by the special_functions library
Shanjie Zhang, Jianming Jin,
Computation of Special Functions,
Wiley, 1996,
ISBN: 0-471-11963-6,
LC: QA351.C45.

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.

This part of calculations, starting from Eq. \eqref{eq:log-der-to-K}, is handled by the calculate_k_matrix subroutine in the boundary_conditions_mod module.

Finally, the scattering S-matrix \( {S}^{Jp} \) is obtained from the open-open portion of \( {K}^{Jp} \)

Eq. \eqref{eq:K-to-S} is implemented in the calculate_s_matrix procedure in the boundary_conditions_mod module.

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.

Eq. \eqref{eq:sunitarity} is implemented in the unitarity_check procedure in the unitarity_check_mod module.