boundary_conditions_mod Module

This module contains subroutines that transform the asymptotic log-derivative matrix into the scattering S-matrix (see "Solution of coupled equations" section).


Uses

  • module~~boundary_conditions_mod~~UsesGraph module~boundary_conditions_mod boundary_conditions_mod module~physics_utilities_mod physics_utilities_mod module~boundary_conditions_mod->module~physics_utilities_mod fwigxjpf fwigxjpf module~boundary_conditions_mod->fwigxjpf module~math_utilities_mod math_utilities_mod module~boundary_conditions_mod->module~math_utilities_mod module~global_variables_mod global_variables_mod module~boundary_conditions_mod->module~global_variables_mod module~array_operations_mod array_operations_mod module~boundary_conditions_mod->module~array_operations_mod iso_fortran_env iso_fortran_env module~boundary_conditions_mod->iso_fortran_env module~physics_utilities_mod->module~global_variables_mod module~physics_utilities_mod->module~array_operations_mod module~physics_utilities_mod->iso_fortran_env module~utility_functions_mod utility_functions_mod module~physics_utilities_mod->module~utility_functions_mod module~math_utilities_mod->iso_fortran_env module~math_utilities_mod->module~utility_functions_mod module~special_functions_mod special_functions_mod module~math_utilities_mod->module~special_functions_mod module~global_variables_mod->iso_fortran_env module~array_operations_mod->iso_fortran_env module~utility_functions_mod->iso_fortran_env

Used by

  • module~~boundary_conditions_mod~~UsedByGraph module~boundary_conditions_mod boundary_conditions_mod program~scattering SCATTERING program~scattering->module~boundary_conditions_mod

Contents


Functions

private function p_coeff(total_angular_momentum_, j_, l_, omega_) result(p_coeff_)

calculates the P coefficients from Eq. (3) in "Solution of coupled equations"

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: total_angular_momentum_

total angular momentum

integer(kind=int32), intent(in) :: j_

rotational quantum number

integer(kind=int32), intent(in) :: l_

orbital angular momentum

integer(kind=int32), intent(in) :: omega_

projection of j on the BF-Z axis

Return Value real(kind=dp)

result - P function (Eq. (3) in "Solution of coupled equations")


Subroutines

public subroutine calculate_k_matrix(number_of_channels, log_der_matrix, number_of_open_channels, channel_indices, channel_l_values, r_, k_matrix)

calculates the K-matrix from log-derivative matrix using Eq. (4) in "Solution of coupled equations"

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: number_of_channels

y-matrix is of number_of_channels x number_of_channels size

real(kind=dp), intent(in) :: log_der_matrix(number_of_channels,number_of_channels)

asymptotic log-derivative matrix

integer(kind=int32), intent(in) :: number_of_open_channels

number of open channels

integer(kind=int32), intent(in) :: channel_indices(number_of_channels)

holds the indices pointing to the basis arrays

integer(kind=int32), intent(in) :: channel_l_values(number_of_channels)

holds all values of l

real(kind=dp), intent(in) :: r_

r_max

real(kind=dp), intent(inout) :: k_matrix(number_of_open_channels,number_of_open_channels)

K-matrix

public subroutine calculate_s_matrix(number_of_open_channels, k_matrix, s_matrix_real, s_matrix_imag)

calculates S-matrix from open-open portion of the K-matrix using Eq. (12) in "Solution of coupled equations"

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: number_of_open_channels

number of open channels

real(kind=dp), intent(in) :: k_matrix(number_of_open_channels,number_of_open_channels)

K-matrix

real(kind=dp), intent(inout) :: s_matrix_real(number_of_open_channels,number_of_open_channels)

(output) real part of the S-matrix

real(kind=dp), intent(inout) :: s_matrix_imag(number_of_open_channels,number_of_open_channels)

(output) imaginary part of the S-matrix

public subroutine calculate_sf_matrix_from_bf_matrix(number_of_channels, total_angular_momentum_, channel_indices, channels_omega_values, channel_l_values, bf_matrix, sf_matrix)

takes as an input matrix in the body-fixed frame and transforms it to the spec-fixed frame; iterates over all matrix elements and calls calculate_single_SF_element

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: number_of_channels

size of the basis

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) :: channel_l_values(number_of_channels)

holds all values of l

real(kind=dp), intent(in) :: bf_matrix(number_of_channels,number_of_channels)

matrix in the BF frame

real(kind=dp), intent(inout) :: sf_matrix(number_of_channels,number_of_channels)

(output) matrix in the SF frame

private subroutine calculate_single_SF_element(number_of_channels, total_angular_momentum_, v_, j_, vp_, jp_, l_, lp_, channel_indices, channels_omega_values, bf_matrix, sf_element)

calculates a single space-fixed matrix element from Eq. (2) in "Solution of coupled equations"

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: number_of_channels

size of the basis

integer(kind=int32), intent(in) :: total_angular_momentum_

total angular momentum

integer(kind=int32), intent(in) :: v_

vibrational and rotational quantum numbers

integer(kind=int32), intent(in) :: j_

vibrational and rotational quantum numbers

integer(kind=int32), intent(in) :: vp_

vibrational and rotational quantum numbers

integer(kind=int32), intent(in) :: jp_

vibrational and rotational quantum numbers

integer(kind=int32), intent(in) :: l_

orbital angular momenta

integer(kind=int32), intent(in) :: lp_

orbital angular momenta

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}

real(kind=dp), intent(in) :: bf_matrix(number_of_channels,number_of_channels)

matrix in the BF frame

real(kind=dp), intent(out) :: sf_element

(output) matrix element in the SF frame