global_variables_mod Module

This module defines global variables used throughout the code.


Uses

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

Used by

  • module~~global_variables_mod~~UsedByGraph module~global_variables_mod global_variables_mod module~physics_utilities_mod physics_utilities_mod module~physics_utilities_mod->module~global_variables_mod module~propagator_mod propagator_mod module~propagator_mod->module~global_variables_mod module~propagator_mod->module~physics_utilities_mod module~pes_matrix_mod pes_matrix_mod module~propagator_mod->module~pes_matrix_mod module~centrifugal_matrix_mod centrifugal_matrix_mod module~propagator_mod->module~centrifugal_matrix_mod module~input_validation input_validation module~input_validation->module~global_variables_mod module~pes_matrix_mod->module~global_variables_mod module~pes_matrix_mod->module~physics_utilities_mod module~radial_coupling_terms_mod radial_coupling_terms_mod module~pes_matrix_mod->module~radial_coupling_terms_mod module~centrifugal_matrix_mod->module~global_variables_mod module~channels_mod channels_mod module~channels_mod->module~global_variables_mod module~channels_mod->module~physics_utilities_mod module~radial_coupling_terms_mod->module~global_variables_mod module~input_reader_mod input_reader_mod module~input_reader_mod->module~global_variables_mod module~input_reader_mod->module~physics_utilities_mod module~input_reader_mod->module~input_validation module~unitarity_check_mod unitarity_check_mod module~unitarity_check_mod->module~global_variables_mod module~boundary_conditions_mod boundary_conditions_mod module~boundary_conditions_mod->module~global_variables_mod module~boundary_conditions_mod->module~physics_utilities_mod module~save_s_matrix_mod save_s_matrix_mod module~save_s_matrix_mod->module~global_variables_mod module~state_to_state_cross_sections_mod state_to_state_cross_sections_mod module~state_to_state_cross_sections_mod->module~global_variables_mod module~state_to_state_cross_sections_mod->module~physics_utilities_mod program~scattering SCATTERING program~scattering->module~global_variables_mod program~scattering->module~physics_utilities_mod program~scattering->module~propagator_mod program~scattering->module~pes_matrix_mod program~scattering->module~channels_mod program~scattering->module~radial_coupling_terms_mod program~scattering->module~input_reader_mod program~scattering->module~unitarity_check_mod program~scattering->module~boundary_conditions_mod program~scattering->module~save_s_matrix_mod program~scattering->module~state_to_state_cross_sections_mod

Contents


Variables

Type Visibility Attributes Name Initial
real(kind=dp), public, parameter :: amu_to_au = 1822.8884862_dp

converter from atomic mass units to atomic units of mass

real(kind=dp), public, parameter :: bohr_to_angstrom = 0.5291772109_dp

converter from atomic units of length to angstrom

integer(kind=int32), public :: consecutive_blocks_threshold = 1

number of consecutive blocks for which the threshold condition on cross-sections needs to be fulfilled to terminate calculations if "jtot_max" = -1

real(kind=dp), public, allocatable :: coupling_terms(:,:,:)

array holding necessary radial coupling terms of the PES (based on levels provided in the basis); the 3 dimensions correspond to \(R, \lambda, \eta \eta'\) grids and are of (number_of_r_points, number_of_legendre_indices, minimal_number_of_coupling_terms) size

real(kind=dp), public, allocatable :: coupling_terms_b_coeffs(:,:,:)

arrays holding spline coefficients interpolating coupling_terms

real(kind=dp), public, allocatable :: coupling_terms_c_coeffs(:,:,:)

arrays holding spline coefficients interpolating coupling_terms

real(kind=dp), public, allocatable :: coupling_terms_d_coeffs(:,:,:)

arrays holding spline coefficients interpolating coupling_terms

character(len=80), public :: coupling_terms_file_name = "RadialTerms.dat"

name of the file with tabulated radial coupling terms of the PES

integer(kind=int32), public, parameter :: coupling_terms_file_unit = 8

unit number for reading the coupling terms file

character(len=8), public :: coupling_terms_r_unit = "--------"

unit used for intermolecular distances in the radial coupling terms file; only "bohr" and "angstrom" are accepted

real(kind=dp), public :: elastic_xs_threshold = 0.1_dp

threshold condition on elastic cross-sections used in "jtot_max"=-1

real(kind=dp), public :: energy = -1.0_dp

if "relative_energy_flag" = 0, "energy" is the total energy if "relative_energy_flag" = 1, "energy" is the kinetic energy

real(kind=dp), public, parameter :: hartree_to_cm = 219474.631363_dp

converter from atomic units of energy to cm\(^{-1}\)

real(kind=dp), public :: inelastic_xs_threshold = 0.1_dp

threshold condition on elastic cross-sections used in "jtot_max"=-1

integer(kind=int32), public :: initial_level = -1

if "relative_energy_flag" = 1, "initial" points to a specific level in the basis indicating the initial molecular level

integer(kind=int32), public, parameter :: input_unit = 5

unit number for reading the input file

real(kind=dp), public, allocatable :: internal_energies(:)

array holding energies of rovibrational levels of the molecule, corresponding to vib_levels and rot_levels elements; of number_of_basis_levels size

integer(kind=int32), public :: jtot_max = -1

range of total angular momenta, for which coupled equations are solved

integer(kind=int32), public :: jtot_min = 0

range of total angular momenta, for which coupled equations are solved

integer(kind=int32), public :: jtot_step = 1

range of total angular momenta, for which coupled equations are solved

character(len=80), public :: label = "Test scattering calculations"

user-defined label

integer(kind=int32), public, allocatable :: legendre_indices(:)

array holding legendre indices of the PES expansion, \(\lambda\), of number_of_legendre_indices size; see Eq. 2 in the "Coupling Matrix" section

integer(kind=int32), public :: minimal_number_of_coupling_terms

minimal number of coupling terms based on levels provided in the basis

integer(kind=int32), public :: n_skip_lines = 0

number of lines that at the beginning of "coupling_terms_file_name" that are to be skipped

integer(kind=int32), public :: number_of_basis_levels = -1

number of rovibrational levels in the basis

integer(kind=int32), public :: number_of_legendre_indices = -1

number of the radial coupling terms in the potential expansion

integer(kind=int32), public :: number_of_r_points = -1

number of grid points for the radial coupling terms in the potential expansion

integer(kind=int32), public, parameter :: partial_file_unit = 12

unit number for writing partial cross-sections to an external file

character(len=80), public :: partial_xs_file_name = "partial_xs_file_name.dat"

name of the file holding partial state-to-state cross-sections

real(kind=dp), public, parameter :: pi = dacos(-1.0_dp)

\(\Pi\) value

real(kind=dp), public :: potential_depth = 0.0_dp

the absolute value of the depth of the potential, included in the determination of the step size of the propagator through \(k_{potential_depth} = \sqrt{2\mu(\mathrm{potential_depth})}\)

integer(kind=int32), public :: print_level = 2

print level control; should be >= 0

logical, public :: print_partial_cross_sections = .false.

if .true. partial cross-sections will be saved to "partial_xs_file_name"

real(kind=dp), public, allocatable :: r_grid(:)

array holding \(R\) grid points, filled while reading radial coupling terms from the "coupling_terms_file_name"; of "number_of_r_points" size

real(kind=dp), public :: r_max = -1.0_dp

range of the propagation

real(kind=dp), public :: r_min = -1.0_dp

range of the propagation

real(kind=dp), public :: r_step = -1.0_dp

if >=0, r_step is used to determine number of steps on the \(R\) grid; otherwise, grid is determined from "steps"

real(kind=dp), public :: radial_term_distance_converter

converter for the units of length used during coupling terms read

real(kind=dp), public :: radial_term_energy_converter

converter for the units of energy used during coupling terms read

real(kind=dp), public :: reduced_mass = -1.0_dp

reduced mass of the scattering system

integer(kind=int32), public, allocatable :: reduced_rot_couplings(:)

arrays holding quantum numbers of the necessary radial coupling terms (based on levels provided in the basis): \(\eta = v, j\), and \(\eta' = v', j'\), of "minimal_number_of_coupling_terms" size; see Eq. 2 in the "Coupling Matrix" section

integer(kind=int32), public, allocatable :: reduced_rot_prime_couplings(:)

arrays holding quantum numbers of the necessary radial coupling terms (based on levels provided in the basis): \(\eta = v, j\), and \(\eta' = v', j'\), of "minimal_number_of_coupling_terms" size; see Eq. 2 in the "Coupling Matrix" section

integer(kind=int32), public, allocatable :: reduced_vib_couplings(:)

arrays holding quantum numbers of the necessary radial coupling terms (based on levels provided in the basis): \(\eta = v, j\), and \(\eta' = v', j'\), of "minimal_number_of_coupling_terms" size; see Eq. 2 in the "Coupling Matrix" section

integer(kind=int32), public, allocatable :: reduced_vib_prime_couplings(:)

arrays holding quantum numbers of the necessary radial coupling terms (based on levels provided in the basis): \(\eta = v, j\), and \(\eta' = v', j'\), of "minimal_number_of_coupling_terms" size; see Eq. 2 in the "Coupling Matrix" section

integer(kind=int32), public :: relative_energy_flag = 0

if set to 0, "energy" is interpreted as the total energy, if set to 1, "energy" is interpreted as kinetic energy calculated with respect to selected "initial" level

integer(kind=int32), public, allocatable :: rot_couplings(:)

arrays holding quantum numbers of radial coupling terms: \(\eta = v, j\), and \(\eta' = v', j'\), of "total_number_of_coupling_terms" size; see Eq. 2 in the "Coupling Matrix" section

integer(kind=int32), public, allocatable :: rot_levels(:)

array holding rotational quantum numbers, of number_of_basis_levels size,

integer(kind=int32), public, allocatable :: rot_prime_couplings(:)

arrays holding quantum numbers of radial coupling terms: \(\eta = v, j\), and \(\eta' = v', j'\), of "total_number_of_coupling_terms" size; see Eq. 2 in the "Coupling Matrix" section

character(len=80), public :: s_matrix_file_name = "s_matrix_file_name.dat"

name of the S-matrix file

integer(kind=int32), public, parameter :: s_matrix_unit = 11

unit number for writing S-matrix to an external file

integer(kind=int32), public :: steps = 10

number of steps per half-de Broglie wavelength of the scattering system; if provided on input, the number of \(R\)-grid points is determined as \(N = \frac{R_{max}-R_{min}}{\pi(k_{max}+k_{potential_depth})}\mathrm{steps}\), where \(k_{max}\) is the largest wavevector in a given block, and \(k_{potential_depth}\) is the correction due to the depth of the potential, see "potential_depth"

real(kind=dp), public, allocatable :: tabulated_coupling_terms(:,:,:)

array holding read radial coupling terms of the PES; the 3 dimensions correspond to \(R, \lambda, \eta \eta'\) grids and are of (number_of_r_points, number_of_legendre_indices, total_number_of_coupling_terms) size

integer(kind=int32), public :: total_number_of_coupling_terms = 1

total number of coupling terms provided in "coupling_terms_file_name"

real(kind=dp), public, parameter :: unitary_tolerance = 1e-4_dp

tolerance on the unitarity check, see Eq. (13) in "Solution of the coupled equations" section

logical, public :: units_converted = .false.

if .true. mass and energy units are converted

integer(kind=int32), public, allocatable :: vib_couplings(:)

arrays holding quantum numbers of radial coupling terms: \(\eta = v, j\), and \(\eta' = v', j'\), of "total_number_of_coupling_terms" size; see Eq. 2 in the "Coupling Matrix" section

integer(kind=int32), public, allocatable :: vib_levels(:)

array holding vibrational quantum numbers, of number_of_basis_levels size

integer(kind=int32), public, allocatable :: vib_prime_couplings(:)

arrays holding quantum numbers of radial coupling terms: \(\eta = v, j\), and \(\eta' = v', j'\), of "total_number_of_coupling_terms" size; see Eq. 2 in the "Coupling Matrix" section