unitarity_check_mod Module

This module contains subroutines that check the unitarity condition of the S-matrix (see Eq. (13) in "Solution of coupled equations").


Uses

  • module~~unitarity_check_mod~~UsesGraph module~unitarity_check_mod unitarity_check_mod module~utility_functions_mod utility_functions_mod module~unitarity_check_mod->module~utility_functions_mod module~global_variables_mod global_variables_mod module~unitarity_check_mod->module~global_variables_mod iso_fortran_env iso_fortran_env module~unitarity_check_mod->iso_fortran_env module~utility_functions_mod->iso_fortran_env module~global_variables_mod->iso_fortran_env

Used by

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

Contents


Functions

private function check_unitarity_for_each_channel(sum_of_squares) result(is_unitary_)

checks if the calculated sum of squares equals 1 for each channel

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: sum_of_squares(:)

\(\sum_{\gamma'} \Bigl|{S}^{Jp}_{\gamma, \gamma'}\Bigr|^{2}\)

Return Value logical

(output) if .true. unitarity is fulfilled, .false. otherwise


Subroutines

public subroutine print_final_unitarity_warning(list_of_blocks)

print the final warning that the unitarity check failed in given blocks

Arguments

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

array holding values of total angular momenta, for which unitarity condition is not fulfilled

public subroutine unitarity_check(number_of_open_channels, s_matrix_real, s_matrix_imag, is_unitary)

checks the unitarity of the S-matrix (Eq. (13) 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) :: s_matrix_real(number_of_open_channels,number_of_open_channels)

real part of the S-matrix

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

imaginary part of the S-matrix

logical, intent(inout) :: is_unitary

(output) if .true. unitarity is fulfilled, .false. otherwise

private subroutine calculate_sum_of_squares_for_each_channel(s_matrix_real, s_matrix_imag, sum_of_squares_)

calculates the sum \( \sum_{\gamma'} \Bigl|{S}^{Jp}_{\gamma, \gamma'}\Bigr|^{2} \) for all \(\gamma\) channels

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: s_matrix_real(:,:)

real part of the S-matrix

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

imaginary part of the S-matrix

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

(output) \( \sum_{\gamma'} \Bigl|{S}^{Jp}_{\gamma, \gamma'}\Bigr|^{2} \)

private subroutine handle_unitarity_output_message(is_unitary, sum_of_squares)

handle printing messages depending on the outcome of unitarity check

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: is_unitary

if .true. unitarity is fulfilled, .false. otherwise

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

array holding \(\sum_{\gamma^{\prime}}|S_{\gamma,\gamma^{\prime}}|^{2}\) for each \(\gamma\)

private subroutine print_sum_of_squares(sum_of_squares)

print S-matrix on screen

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: sum_of_squares(:)

array holding \(\sum_{\gamma^{\prime}}|S_{\gamma,\gamma^{\prime}}|^{2}\) for each \(\gamma\)