This module defines global variables used throughout the code.
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 |