This module provides all functions that handle radial coupling terms of the PES. It covers:
(1) reading radial coupling terms from external file ("read_radial_coupling_terms", "skip_header_lines", "read_and_validate_lambda", "read_potential_data", "validate_r_range")
(2) reducing the number of read coupling terms to retain only necessary couplings ("reduce_radial_coupling_terms", "print_pes_quantum_numbers", "reduce_coupling_terms", "find_reduced_term")
(3) interpolation of radial coupling terms ("interpolate_radial_coupling_terms")
(4) providing value of the interpolated radial coupling term ("get_radial_coupling_term_value") --------------------------------------------------------------------------!
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | v_ |
pre-collisional vibrational quantum number |
||
integer(kind=int32), | intent(in) | :: | j_ |
pre-collisional rotational quantum number |
||
integer(kind=int32), | intent(in) | :: | v_prime_ |
post-collisional vibrational quantum number |
||
integer(kind=int32), | intent(in) | :: | j_prime_ |
post-collisional rotational quantum number |
Index pointing to \(v, j, v^{\prime}, j^{\prime}\) in reduced_* arrays
Locates given \(\lambda\) value in legendre_indices.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | lambda_ |
Legendre expansion index, \(\lambda\) |
Index pointing to \(\lambda\) in legendre_indices
Finds and returns the reduced term for the given indices.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | r_index_ |
index interating over intermolecular grid |
||
integer(kind=int32), | intent(in) | :: | lambda_index_ |
index interating over Legendre expansion terms |
||
integer(kind=int32), | intent(in) | :: | coupling_index_ |
index interating over necessary couplings |
(output) sought value of the coupling term
Returns the interpolated value of a specific radial coupling term at a given distance.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | intermolecular_distance |
Intermolecular distance, \(R\) |
||
integer(kind=int32), | intent(in) | :: | lambda_ |
Legendre expansion index |
||
integer(kind=int32), | intent(in) | :: | v_ |
pre-collisional vibrational quantum number |
||
integer(kind=int32), | intent(in) | :: | j_ |
pre-collisional rotational quantum number |
||
integer(kind=int32), | intent(in) | :: | v_prime_ |
post-collisional vibrational quantum number |
||
integer(kind=int32), | intent(in) | :: | j_prime_ |
post-collisional rotational quantum number |
||
real(kind=dp), | intent(out) | :: | radial_term_value_ |
Value of the radial coupling coefficient |
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.
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"
Reduces the tabulated_coupling_terms matrix to retain only the necessary coupling terms.
Handles error when the appropriate coupling term is not found.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | v_ |
pre-collisional vibrational quantum number |
||
integer(kind=int32), | intent(in) | :: | j_ |
pre-collisional rotational quantum number |
||
integer(kind=int32), | intent(in) | :: | v_prime_ |
post-collisional vibrational quantum number |
||
integer(kind=int32), | intent(in) | :: | j_prime_ |
post-collisional rotational quantum number |
Handles error when \(\lambda\) is not found in legendre_indices.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | lambda_ |
Legendre expansion index, \(\lambda\) |
Prints quantum numbers describing radial coupling terms of the PES based on the provided set type and column count.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | set_type |
"Original" or "reduced" - describes the set of quantum numbers |
||
integer(kind=int32), | intent(in) | :: | col_count |
number of coupling terms |
Reads the value of lambda and compares with expected value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | lambda_index_ |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(in) | :: | lambda_index_ |
Reduces the coupling terms based on the existence of couplings.
Skips the first n_skip_lines (read on input) lines in the coupling_terms_file
Checks if read R values are consistent with r_min and r_max.