Procedure | Location | Procedure Type | Description |
---|---|---|---|
add_cross_sections | state_to_state_cross_sections_mod | Subroutine | Add partial cross-sections to accumulated cross-sections |
add_scalar_to_diagonal | array_operations_mod | Interface | |
alloc_status | utility_functions_mod | Subroutine | check the status after allocation |
allocate_1d | array_operations_mod | Interface | |
allocate_2d | array_operations_mod | Interface | |
allocate_3d | array_operations_mod | Interface | |
append | array_operations_mod | Interface | |
calculate_centrifugal_matrix | centrifugal_matrix_mod | Subroutine | calculates the (R*2)centrifugal matrix from the second term of Eq. 3 in "What are coupled equations?" section; Matrix elements are given in Eq. 4 and 6 of "Coupling Matrix" secion |
calculate_coupling_matrix | propagator_mod | Subroutine | 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} \) |
calculate_diagonal_centrifugal_element | centrifugal_matrix_mod | Function | calculates diagonal element of the centrifgual matrix, see Eq. 4 in "Coupling Matrix" section |
calculate_k_matrix | boundary_conditions_mod | Subroutine | calculates the K-matrix from log-derivative matrix using Eq. (4) in "Solution of coupled equations" |
calculate_largest_wavevector | channels_mod | Function | Calculates the largest wavevector in the block; called only if there are any open channels |
calculate_log_der_matrix | propagator_mod | Subroutine | calculates the log-derivative matrix from called by numerov at the end of the propagation |
calculate_number_of_channels_body_fixed | channels_mod | Subroutine | calculate number of channels in even and odd parity blocks in the body-fixed frame; in principle, \(\bar{\Omega}\in \langle 0, \mathrm{min}(j, J))), but number of channels additionally depends on the sign of \( p (-1)^{J} \): channels with \(\bar{\Omega}=0\) values enter blocks with \( p (-1)^{J} = + 1 \) only; |
calculate_number_of_channels_space_fixed | channels_mod | Subroutine | calculate number of channels in even and odd parity blocks in the space-fixed frame based on available values of orbital angular momentum: \( l \in \langle |j-J|, j+J \rangle \); parity is defined as \(p= (-1)^{j+l}\) |
calculate_number_of_steps | channels_mod | Function | Calculates the number of steps on the intermolecular (R) grid in current block. This is done either directly (if r_step > 0) or through the number of steps per half de Broglie wavelength |
calculate_offdiagonal_centrifugal_element | centrifugal_matrix_mod | Function | calculates off-diagonal element of the centrifgual matrix, see Eq. 5 in "Coupling Matrix" section |
calculate_pes_matrix | pes_matrix_mod | Subroutine | calculates the contribution to the coupling matrix from the the interaction potential (PES); see Eq. 1 in "Coupling Matrix" section; diagonal contribution from wavevectors (see the last term in Eq. 3 of "What are coupled equations" section) is added |
calculate_s_matrix | boundary_conditions_mod | Subroutine | calculates S-matrix from open-open portion of the K-matrix using Eq. (12) in "Solution of coupled equations" |
calculate_sf_matrix_from_bf_matrix | boundary_conditions_mod | Subroutine | 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 |
calculate_single_pes_matrix_element | pes_matrix_mod | Function | Implementation of Eq. 1 in "Coupling Matrix" section; diagonal contribution from wavevectors (see the last term in Eq. 3 of "What are coupled equations" section) is added |
calculate_single_SF_element | boundary_conditions_mod | Subroutine | calculates a single space-fixed matrix element from Eq. (2) in "Solution of coupled equations" |
calculate_state_to_state_cross_section | state_to_state_cross_sections_mod | Subroutine | Calculates all state-to-state cross-sections. |
calculate_sum_of_squares_for_each_channel | unitarity_check_mod | Subroutine | calculates the sum \( \sum_{\gamma'} \Bigl|{S}^{Jp}_{\gamma, \gamma'}\Bigr|^{2} \) for all \(\gamma\) channels |
calculate_t_matrix | propagator_mod | Subroutine | Calculates the T-matrix from the coupling matrix at grid point N: \( T_{\mathrm{N}} = h^{2}/12 W_{\mathrm{N}} \) |
calculate_u_matrix | propagator_mod | Subroutine | 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}\) |
char_to_lowercase | utility_functions_mod | Function | forces lowercase on a single character |
check_cross_section_thresholds | state_to_state_cross_sections_mod | Subroutine | Checks if the elastic_xs_threshold (threshold for elastic XS) and inelastic_xs_threshold (threshold for inelastic XS) conditions are already fulfilled. |
check_namelist_basis | input_validation | Subroutine | Check variables read from namelist "basis" |
check_namelist_input | input_validation | Subroutine | Check variables read from namelist "input" |
check_namelist_potential | input_validation | Subroutine | Check variables read from namelist "potential" |
check_nonzero_pes_matrix_elements | pes_matrix_mod | Subroutine | checks the number of non-zero PES matrix elements due to the \bar{\Omega} = \bar{\Omega}' condition, "number_of_nonzero_pes_matrix_elements", and the total number of non-zero algebraic coefficients, \( g_{{\lambda},\gamma,\gamma'}^{Jp} \), in the whole matrix, "number_of_nonzero_algebraic_coefficients". |
check_number_of_channels | channels_mod | Subroutine | check if the number of channels is the same in body-fixed and space-fixed frames |
check_unitarity_for_each_channel | unitarity_check_mod | Function | checks if the calculated sum of squares equals 1 for each channel |
compute_imag_component | state_to_state_cross_sections_mod | Function | Computes the imaginary part of the cross-section contribution for given indices. |
compute_individual_cross_section | state_to_state_cross_sections_mod | Function | Calculates cross-section for a given initial and final state. |
compute_real_component | state_to_state_cross_sections_mod | Function | Computes the real part of the cross-section contribution for given indices. |
count_open_basis_levels | physics_utilities_mod | Function | counts the energetically accessible levels in the basis |
count_open_channels_in_block | channels_mod | Function | counts the energetically accessible channels in the given block |
delta_for_zero_omega | centrifugal_matrix_mod | Function | Checks if the input value equals 0; used in the calculation of off-diagonal elements of the centrifugal matrix; see Eq. 5 in "Coupling Matrix" section |
determine_largest_cross_sections | state_to_state_cross_sections_mod | Subroutine | Determine the largest partial elastic and inelastic cross-sections in a given set of cross-sections. |
envj | special_functions_mod | Function | utility function used by MSTA1 and MSTA2. |
file_io_status | utility_functions_mod | Subroutine | check the status during various io operations on files |
fill_symmetric_matrix | array_operations_mod | Interface | |
find_coupling_index | radial_coupling_terms_mod | Function | Locates the correct quantum number that describes the v/j coupling. Note that coupling terms are symmetric with respect to the change of pre- and post-collisional quantum numbers. |
find_lambda_index | radial_coupling_terms_mod | Function | Locates given \(\lambda\) value in legendre_indices. |
find_reduced_term | radial_coupling_terms_mod | Function | Finds and returns the reduced term for the given indices. |
float_to_character | utility_functions_mod | Function | Converts a floating-point number to a character string. |
general_propagation_step | propagator_mod | Subroutine | |
get_block_indices | state_to_state_cross_sections_mod | Function | Returns indices from channel_indices_ that match the specified quantum state. |
get_radial_coupling_term_value | radial_coupling_terms_mod | Subroutine | Returns the interpolated value of a specific radial coupling term at a given distance. |
handle_coupling_index_error | radial_coupling_terms_mod | Subroutine | Handles error when the appropriate coupling term is not found. |
handle_final_propagation_steps | propagator_mod | Subroutine | 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 |
handle_lambda_index_error | radial_coupling_terms_mod | Subroutine | Handles error when \(\lambda\) is not found in legendre_indices. |
handle_unitarity_output_message | unitarity_check_mod | Subroutine | handle printing messages depending on the outcome of unitarity check |
incorrect_value | utility_functions_mod | Interface | interface for the following message:
|
incorrect_value_ch | utility_functions_mod | Subroutine |
|
incorrect_value_dp | utility_functions_mod | Subroutine |
|
incorrect_value_int32 | utility_functions_mod | Subroutine |
|
incorrect_value_sp | utility_functions_mod | Subroutine |
|
initial_setup | propagator_mod | Subroutine | Initial setup of the propagator: call centrifugal matrix (kept throughotu the propagation) and other matrices at \(R_{\mathrm{min}}\) |
initialize_cross_section_arrays | state_to_state_cross_sections_mod | Subroutine | allocate arrays keeping accumulated and partial cross-sections in each jtot and parity block |
initialize_pes_matrix | pes_matrix_mod | Subroutine | launches "check_nonzero_pes_matrix_elements" and "prepare_pes_matrix_elements" subroutines; called from the main program |
input_summary | input_reader_mod | Subroutine | summarize the input parameters for the current run |
integer_to_character | utility_functions_mod | Function | transfers integer to a character |
interpolate_radial_coupling_terms | radial_coupling_terms_mod | Subroutine | Interpolates the radial coupling terms using cubic spline functions. The resulting spline coefficients for each coupling term are stored in coupling_terms_b_coeffs, coupling_terms_c_coeffs, and coupling_terms_d_coeffs matrices. |
invert_symmetric_matrix | array_operations_mod | Interface | |
is_open | physics_utilities_mod | Function | checks if a channel/level is energetically accessible (open) by comparing energy with total_energy |
is_sum_even | math_utilities_mod | Function | checks if the sum of 3 integers is an even integer |
ispline | math_utilities_mod | Function | returns interpolated value at guven u_ point number of points and ascending order of x is not checked since ispline is called after "spline" where these checks are done |
modified_bessel_k_ratio | math_utilities_mod | Subroutine | calculates the ratio of the modified Bessel function of the second kind K_{l_ + 1/2}(x) and its first derivative (Eq. 8 in the "Solution of the coupled equations" section) Uses Temme's algorithm [N. M. Temme, J. Comput. Phys. 19 (1975) 324], implemented in "modified_bessel_temme_algorithm" subroutine; Unfortunately, the "ikv" function from special_functions library failed at large x_ values. |
modified_bessel_temme_algorithm | math_utilities_mod | Subroutine | Implementation of the Temme's algorithm [N. M. Temme, J. Comput. Phys. 19 (1975) 324] to calculating modified Bessel functions of the second kind. This is a direct modernization of the "mbessk" subroutine in MOLSCAT: https://github.com/molscat/molscat/blob/master/source_code/rbessk.f |
msta1 | special_functions_mod | Function | determines a backward recurrence starting point for Jn(x). |
msta2 | special_functions_mod | Function | determines a backward recurrence starting point for Jn(x). |
no_open_channels_message | utility_functions_mod | Subroutine | print a short message that there are no open channels in given block |
numerov | propagator_mod | Subroutine | Renormalized Numerov propagator |
p_coeff | boundary_conditions_mod | Function | calculates the P coefficients from Eq. (3) in "Solution of coupled equations" |
percival_seaton_coefficient | math_utilities_mod | Function | calculates Percival-Seaton coefficients (body-fixed variant) |
prepare_pes_matrix_elements | pes_matrix_mod | Subroutine | -- nonzero_terms_per_element - number of non-vanishing terms in the sum over \(\lambda\) in Eq. 1 in the "Coupling Matrix" section -- nonzero_legendre_indices - corresponding \(\lambda\) value for each non-vanishing coefficient is saved as an index to "legendre_indices" -- nonzero_algebraic_coefficients -- holds all non-vanishing \( g_{{\lambda},\gamma,\gamma'}^{Jp} \) coefficients |
prepare_wavevector_array | channels_mod | Subroutine | Prepare an array of wavevectors in a given block (in A^2) which are saved in the S-matrix file |
print_all_cross_sections | state_to_state_cross_sections_mod | Subroutine | Prints information about cross-sections from provided "cross_sections_" array |
print_basic_cross_section_info | state_to_state_cross_sections_mod | Subroutine | Prints basic information about the largest elastic and inelastic state-to-state xs (print_level <= 2) |
print_channels | channels_mod | Subroutine | prints information about body-fixed channels on screen |
print_cross_sections_for_jtot | state_to_state_cross_sections_mod | Subroutine | Prints information about cross-sections at the end of each total angular momentum (jtot) block |
print_detailed_cross_section_info | state_to_state_cross_sections_mod | Subroutine | Prints detailed information about the largest elastic and inelastic state-to-state xs (print_level >= 3) |
print_final_cross_sections | state_to_state_cross_sections_mod | Subroutine | Prints information about cross-sections at the end of the program |
print_final_unitarity_warning | unitarity_check_mod | Subroutine | print the final warning that the unitarity check failed in given blocks |
print_largest_partial_cross_sections | state_to_state_cross_sections_mod | Subroutine | Print the largest partial elastic and inelastic state-to-state cross-sections in a given block. |
print_pes_matrix_elements_summary | pes_matrix_mod | Subroutine | print a shor summary on the number of non-zero matrix elements of the PES matrix |
print_pes_quantum_numbers | radial_coupling_terms_mod | Subroutine | Prints quantum numbers describing radial coupling terms of the PES based on the provided set type and column count. |
print_short_block_summary | channels_mod | Subroutine | |
print_sum_of_squares | unitarity_check_mod | Subroutine | print S-matrix on screen |
process_single_matrix_element | pes_matrix_mod | Subroutine | calculates the non-zero algebraic coefficients \( g_{{\lambda},\gamma,\gamma'}^{Jp} \) for a single matrix element - see Eq. (1) in the "Coupling matrix" section; algebraic coefficients are saved to nonzero_algebraic_coefficients array; corresponding indices to legendre_indices are saved to nonzero_legendre_indices array |
propagator_summary | propagator_mod | Subroutine | Print a simple message after the propagation is finished |
rctj | special_functions_mod | Subroutine | computes Riccati-Bessel function of the first kind, and derivatives. |
rcty | special_functions_mod | Subroutine | computes Riccati-Bessel function of the second kind, and derivatives. |
read_and_validate_lambda | radial_coupling_terms_mod | Subroutine | Reads the value of lambda and compares with expected value. |
read_input_file | input_reader_mod | Subroutine | reads the input file prepared by the user using NAMELIST feature the code uses 3 namelists: "input", "basis" and "potential" |
read_potential_data | radial_coupling_terms_mod | Subroutine | Reads the intermolecular distance and radial coupling terms formatted in columns by iterating over number of tabulated ]](R\) points. Immediately converts \(R\) and radial coupling terms to a.u. |
read_radial_coupling_terms | radial_coupling_terms_mod | Subroutine | Reads the radial coupling terms from the external file. The file is assumed to be formatted as described in "Supplying radial terms" section. The read radial coupling terms are kept in "tabulated_coupling_terms" |
reduce_coupling_terms | radial_coupling_terms_mod | Subroutine | Reduces the coupling terms based on the existence of couplings. |
reduce_radial_coupling_terms | radial_coupling_terms_mod | Subroutine | Reduces the tabulated_coupling_terms matrix to retain only the necessary coupling terms. |
rgamma | math_utilities_mod | Function | Calculates 1/Gamma(1-X); modernized version of Molscat's rgamma function; see: https://github.com/molscat/molscat/blob/36fa8f93a92f851e9d84245dd6a972e2910541c5/source_code/rbesjy.f --------------------------------------------------------------------! |
riccati_bessel_j | math_utilities_mod | Subroutine | calculates the Riccati-Bessel function of the first kind and its first derivative. Calls the rctj function from special_functions.f90 |
riccati_bessel_y | math_utilities_mod | Subroutine | calculates the Riccati-Bessel function of the second kind and its first derivative. Calls the rcty function from special_functions.f90 |
save_open_basis_levels | physics_utilities_mod | Subroutine | saves indices to open levels in the basis and corresponding wavevectors (in A^2) |
save_partial_xs_file_header | state_to_state_cross_sections_mod | Subroutine | save "header" of the partial cross-sections file: -- label, "itype", number of levels in the basis, reduced mass of the system -- vibrational and rotational quantum numbers -- rovibrational energies -- index pointing to the initial level and the kinetic/total energy |
save_partial_xs_single_block | state_to_state_cross_sections_mod | Subroutine | |
save_s_matrix_block_info | save_s_matrix_mod | Subroutine | save information about current block -- total angular momentum, parity exponent, number of open channels in the current block -- array of indices pointing to the basis arrays, array holding \(l\) values, wavenumbers -- real part of the S-matrix -- imaginary part of the S-matrix |
save_s_matrix_file_header | save_s_matrix_mod | Subroutine | save "header" of the S-matrix file: -- label, "itype", number of levels in the basis, reduced mass of the system -- vibrational and rotational quantum numbers -- rovibrational energies -- index pointing to the initial level and the kinetic/total energy |
set_body_fixed_channels | channels_mod | Subroutine | Prepares the channel_indices array which holds indices that refer to the basis arrays: v1level/j1level/internal_energies, and channels_omega_values which holds values of \bar{\Omega} |
set_number_of_channels | channels_mod | Subroutine | determine the number of scattering channels in each parity block for given total angular momentum in both body-fixed and space-fixed frames |
set_space_fixed_channels | channels_mod | Subroutine | Prepares the channel_l_values array which holds values of orbital angular momentum, \(l\), a space-fixed-frame quantum number. |
skip_header_lines | radial_coupling_terms_mod | Subroutine | Skips the first n_skip_lines (read on input) lines in the coupling_terms_file |
spline | math_utilities_mod | Subroutine | determines b, c and d coefficients of the cubic spline function y(x) = y_i + b_i * dx + c_i * dx^2 + d_i * dx^3, where dx = x - x_i, and x_i <= x < x_i+1. The algorithm is based on Gerald, C., and Wheatley, P., "Applied Numerical Analysis", Addison-Wesley, 1994. |
sum_cross_section_contributions | state_to_state_cross_sections_mod | Function | Sum the contributions to the cross-section from S-matrix components |
time_count_summary | utility_functions_mod | Subroutine | print the message about the time it took to complete a single task |
to_lowercase | utility_functions_mod | Function | forces lowercase on given string |
total_energy | physics_utilities_mod | Function | returns the total energy |
triangle_inequality_holds | math_utilities_mod | Function | check if the triangle inequality for 3 variables hols |
unitarity_check | unitarity_check_mod | Subroutine | checks the unitarity of the S-matrix (Eq. (13) in "Solution of coupled equations") |
units_conversion | physics_utilities_mod | Subroutine | converts all physical quantities to atomic units |
update_body_fixed_channels_info | channels_mod | Subroutine | update channel_indices array which holds indices within the loop over level_index_ in set_body_fixed_channels |
update_channel_counts_body_fixed | channels_mod | Subroutine | updates number_of_channels_even and number_of_channels_odd in the body-fixed frame for given \(J\) and \(\bar{Omega}_{max}\) |
update_channel_counts_space_fixed | channels_mod | Subroutine | updates number_of_channels_even and number_of_channels_odd in the space-fixed frame for given range of orbital angular momentum |
validate_r_range | radial_coupling_terms_mod | Subroutine | Checks if read R values are consistent with r_min and r_max. |
wavevector_squared_from_energy | physics_utilities_mod | Function | returns the squared wavevector, \(k_{a}^{2}\), given the energy of a given state, \(E_{a}\); calls etot() function; atomic units in the whole function \( k_{a} = \sqrt(2 \mu (E_{tot} - E_{a}) \) since it uses reduced_mass and total_energy(), the function checks if units are already converted |
write_channel_line | channels_mod | Subroutine | |
write_error | utility_functions_mod | Subroutine | writes an error message on a chosen unit |
write_header | utility_functions_mod | Subroutine | writes headers on screen |
write_message | utility_functions_mod | Subroutine | writes a message on a chosen unit |
write_warning | utility_functions_mod | Subroutine | writes a warning message on a chosen unit |
zero_projections_3j_condition | math_utilities_mod | Function | checks the condition for nonvanishing 3-j symbol with zero projections: triangle inequality on x,y,z and if the sum x+y+z is an even integer |