This modules contains the subroutines used by the renormalized Numerov propagator.
Renormalized Numerov propagator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | number_of_channels_ |
size of the basis |
||
integer(kind=int32), | intent(in) | :: | channel_indices_(number_of_channels_) |
holds the indices pointing to the basis arrays |
||
integer(kind=int32), | intent(in) | :: | channels_omega_values_(number_of_channels_) |
holds all values of \bar{\Omega} |
||
integer(kind=int32), | intent(in) | :: | nonzero_terms_per_element_(:) |
keeps the number of non-zero terms in the sum (Eq. (6.21)) for each non-zero element of W/V |
||
integer(kind=int32), | intent(in) | :: | nonzero_legendre_indices_(:) |
holds the proper indices pointing to l1/l2/lltabs, which correspond to the non-vanishing elements of the sum (Eq. (6.21)) for each non-zero element of W/V |
||
real(kind=dp), | intent(in) | :: | nonzero_algebraic_coefficients_(:) |
holds the values of the non-zero algebraic coefficients |
||
integer(kind=int32), | intent(in) | :: | number_of_steps_ |
number of steps from r_min to r_max |
||
integer(kind=int32), | intent(in) | :: | total_angular_momentum_ |
total angular momentum |
||
real(kind=dp), | intent(inout) | :: | log_der_matrix_(number_of_channels_,number_of_channels_) |
resulting log-derivative matrix at r_max |
Combines the contribution from the interaction potential, total and and internal energy (pes_matrix_) with centrifugal matrix \( W_{\mathrm{N}} = V_{\mathrm{N}} + 1/R^{2} L^{2} \)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | intermolecular_distance_ |
intermolecular distance |
||
real(kind=dp), | intent(in) | :: | pes_matrix_(:,:) |
holds contribution from the interaction potential, total and and internal energy |
||
real(kind=dp), | intent(in) | :: | centrifugal_matrix_(:,:) |
\(R^{2}\) centrifugal matrix |
||
real(kind=dp), | intent(inout) | :: | coupling_matrix_(:,:) |
(output) Coupling (W) matrix |
calculates the log-derivative matrix from called by numerov at the end of the propagation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | step_ |
propagator step |
||
integer(kind=int32), | intent(in) | :: | number_of_channels_ |
number of scattering channels in the block |
||
real(kind=dp), | intent(in) | :: | t_matrix_minus_(number_of_channels_,number_of_channels_) |
T-matrix at R_{max - 1} |
||
real(kind=dp), | intent(in) | :: | t_matrix_(number_of_channels_,number_of_channels_) |
T-matrix at R_{max} |
||
real(kind=dp), | intent(in) | :: | t_matrix_plus_(number_of_channels_,number_of_channels_) |
T-matrix at R_{max + 1} |
||
real(kind=dp), | intent(in) | :: | r_matrix_(number_of_channels_,number_of_channels_) |
R-matrix at R_{max} |
||
real(kind=dp), | intent(in) | :: | r_matrix_plus_(number_of_channels_,number_of_channels_) |
R-matrix at R_{max + 1} |
||
real(kind=dp), | intent(inout) | :: | log_der_matrix_(number_of_channels_,number_of_channels_) |
log-derivative matrix |
Calculates the T-matrix from the coupling matrix at grid point N: \( T_{\mathrm{N}} = h^{2}/12 W_{\mathrm{N}} \)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | step_ |
step of the propagator |
||
real(kind=dp), | intent(in) | :: | coupling_matrix_(:,:) |
Coupling (W) matrix v |
||
real(kind=dp), | intent(inout) | :: | t_matrix_(:,:) |
(output) T-matrix at grid point N |
Calculates the U-matrix from T-matrix at grid point N: \(U_{\mathrm{N}} = 12(\mathbf{I} - 10 T_{\mathrm{N}})^{-1} - 10 \mathbf{I}\)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | t_matrix_(:,:) |
T-matrix at grid point N |
||
real(kind=dp), | intent(inout) | :: | u_matrix_(:,:) |
(output) U-matrix at grid point N |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | number_of_channels_ |
size of the basis |
||
real(kind=dp), | intent(in) | :: | step_numerov_ |
step of the propagator |
||
integer(kind=int32), | intent(in) | :: | total_angular_momentum_ |
total angular momentum |
||
real(kind=dp), | intent(in) | :: | intermolecular_distance_ |
intermolecular distance |
||
integer(kind=int32), | intent(in) | :: | channel_indices_(number_of_channels_) |
holds the indices pointing to the basis arrays |
||
integer(kind=int32), | intent(in) | :: | channels_omega_values_(number_of_channels_) |
holds all values of \bar{\Omega} |
||
integer(kind=int32), | intent(in) | :: | nonzero_terms_per_element_(:) |
keeps the number of non-vanishing elements of the sum over \(\lambda\) for each non-zero element of the PES matrix |
||
integer(kind=int32), | intent(in) | :: | nonzero_legendre_indices_(:) |
holds indices pointing to legendre_indices, which correspond to the non-vanishing elements of the sum over \(\lambda\) for each non-zero element of the PES matrix; |
||
real(kind=dp), | intent(in) | :: | nonzero_algebraic_coefficients_(:) |
holds the values of the non-zero algebraic coefficients |
||
real(kind=dp), | intent(in) | :: | centrifugal_matrix_(number_of_channels_,number_of_channels_) |
(R*2)centrifugal matrix - |
||
real(kind=dp), | intent(inout) | :: | r_matrix_(number_of_channels_,number_of_channels_) |
on input: R-matrix at previous step on output: R-matrix at next step |
||
logical, | intent(in), | optional | :: | is_t_matrix_required_ | ||
real(kind=dp), | intent(out), | optional | :: | t_matrix_returned_(number_of_channels_,number_of_channels_) |
on input: R-matrix at previous step on output: R-matrix at next step |
Handles propagation at the last two grid points: R_{N-1} and R_{N}: provides T-matrix at N-1, N and N+1 points and the Ratio matrix at N and N+1 points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | number_of_channels_ |
size of the basis |
||
real(kind=dp), | intent(in) | :: | step_numerov_ |
step of the propagator |
||
integer(kind=int32), | intent(in) | :: | total_angular_momentum_ |
total angular momentum |
||
integer(kind=int32), | intent(in) | :: | channel_indices_(number_of_channels_) |
holds the indices pointing to the basis arrays |
||
integer(kind=int32), | intent(in) | :: | channels_omega_values_(number_of_channels_) |
holds all values of \bar{\Omega} |
||
integer(kind=int32), | intent(in) | :: | nonzero_terms_per_element_(:) |
keeps the number of non-vanishing elements of the sum over \(\lambda\) for each non-zero element of the PES matrix |
||
integer(kind=int32), | intent(in) | :: | nonzero_legendre_indices_(:) |
holds indices pointing to legendre_indices, which correspond to the non-vanishing elements of the sum over \(\lambda\) for each non-zero element of the PES matrix; |
||
real(kind=dp), | intent(in) | :: | nonzero_algebraic_coefficients_(:) |
holds the values of the non-zero algebraic coefficients |
||
real(kind=dp), | intent(in) | :: | centrifugal_matrix_(number_of_channels_,number_of_channels_) |
\(R^{2} \cdot\) centrifugal matrix - |
||
real(kind=dp), | intent(inout) | :: | r_matrix_(number_of_channels_,number_of_channels_) |
Ratio matrix at N-1 step |
||
real(kind=dp), | intent(out) | :: | t_matrix_minus_(number_of_channels_,number_of_channels_) |
T-matrix at N-1 step |
||
real(kind=dp), | intent(out) | :: | t_matrix_(number_of_channels_,number_of_channels_) |
T-matrix at N step |
||
real(kind=dp), | intent(out) | :: | t_matrix_plus_(number_of_channels_,number_of_channels_) |
T-matrix at N+1 step |
||
real(kind=dp), | intent(out) | :: | r_matrix_r_max_(number_of_channels_,number_of_channels_) |
Ratio matrix at N step |
||
real(kind=dp), | intent(out) | :: | r_matrix_plus_(number_of_channels_,number_of_channels_) |
Ratio matrix at N+1 step |
Initial setup of the propagator: call centrifugal matrix (kept throughotu the propagation) and other matrices at \(R_{\mathrm{min}}\)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | number_of_channels_ |
size of the basis |
||
real(kind=dp), | intent(in) | :: | step_numerov_ |
step of the propagator |
||
integer(kind=int32), | intent(in) | :: | total_angular_momentum_ |
total angular momentum |
||
real(kind=dp), | intent(in) | :: | intermolecular_distance_ |
intermolecular distance |
||
integer(kind=int32), | intent(in) | :: | channel_indices_(number_of_channels_) |
holds the indices pointing to the basis arrays |
||
integer(kind=int32), | intent(in) | :: | channels_omega_values_(number_of_channels_) |
holds all values of \bar{\Omega} |
||
integer(kind=int32), | intent(in) | :: | nonzero_terms_per_element_(:) |
keeps the number of non-vanishing elements of the sum over \(\lambda\) for each non-zero element of the pes matrix |
||
integer(kind=int32), | intent(in) | :: | nonzero_legendre_indices_(:) |
holds indices pointing to legendre_indices, which correspond to the non-vanishing elements of the sum over \(\lambda\) for each non-zero element of the pes matrix; |
||
real(kind=dp), | intent(in) | :: | nonzero_algebraic_coefficients_(:) |
holds the values of the non-zero algebraic coefficients |
||
real(kind=dp), | intent(inout) | :: | centrifugal_matrix_(number_of_channels_,number_of_channels_) |
(R*2)centrifugal matrix - calculated once, will be used throughout the propagation |
||
real(kind=dp), | intent(inout) | :: | r_matrix_(number_of_channels_,number_of_channels_) |
R-matrix at r_min |
Print a simple message after the propagation is finished
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | r_min_ |
initial point on the \(R\) grid |
||
real(kind=dp), | intent(in) | :: | r_max_ |
final point on the \(R\) grid |
||
integer(kind=int32), | intent(in) | :: | number_of_steps_ |
number of steps on the \(R\) grid |