physics_utilities_mod Module

This module provides helper functions: "units_conversion", "total_energy" "wavevector_squared_from_energy", and functions that count and save open levels in the rovibrational basis.


Uses

  • module~~physics_utilities_mod~~UsesGraph module~physics_utilities_mod physics_utilities_mod module~array_operations_mod array_operations_mod module~physics_utilities_mod->module~array_operations_mod module~utility_functions_mod utility_functions_mod module~physics_utilities_mod->module~utility_functions_mod module~global_variables_mod global_variables_mod module~physics_utilities_mod->module~global_variables_mod iso_fortran_env iso_fortran_env module~physics_utilities_mod->iso_fortran_env module~array_operations_mod->iso_fortran_env module~utility_functions_mod->iso_fortran_env module~global_variables_mod->iso_fortran_env

Used by

  • module~~physics_utilities_mod~~UsedByGraph module~physics_utilities_mod physics_utilities_mod module~pes_matrix_mod pes_matrix_mod module~pes_matrix_mod->module~physics_utilities_mod module~propagator_mod propagator_mod module~propagator_mod->module~physics_utilities_mod module~propagator_mod->module~pes_matrix_mod module~channels_mod channels_mod module~channels_mod->module~physics_utilities_mod module~input_reader_mod input_reader_mod module~input_reader_mod->module~physics_utilities_mod module~boundary_conditions_mod boundary_conditions_mod module~boundary_conditions_mod->module~physics_utilities_mod module~state_to_state_cross_sections_mod state_to_state_cross_sections_mod module~state_to_state_cross_sections_mod->module~physics_utilities_mod program~scattering SCATTERING program~scattering->module~physics_utilities_mod program~scattering->module~pes_matrix_mod program~scattering->module~propagator_mod program~scattering->module~channels_mod program~scattering->module~input_reader_mod program~scattering->module~boundary_conditions_mod program~scattering->module~state_to_state_cross_sections_mod

Contents


Functions

public function count_open_basis_levels() result(open_)

counts the energetically accessible levels in the basis

Arguments

None

Return Value integer(kind=int32)

public function is_open(energy_) result(is_open_)

checks if a channel/level is energetically accessible (open) by comparing energy with total_energy

Arguments

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

level/channel energy

Return Value logical

public function total_energy() result(etot_)

returns the total energy

Arguments

None

Return Value real(kind=dp)

public function wavevector_squared_from_energy(energy_) result(k_)

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

Arguments

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

energy of a given state, \( E_{a} \), in a.u.

Return Value real(kind=dp)

wavevector, \(k_{a}\), in a.u.


Subroutines

public subroutine save_open_basis_levels(number_of_open_basis_levels, open_basis_levels, basis_wavevectors)

saves indices to open levels in the basis and corresponding wavevectors (in A^2)

Arguments

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

number of energetically accessible levels in the basis

integer(kind=int32), intent(inout), allocatable :: open_basis_levels(:)

array holding indices to energetically accessible levels in the basis

real(kind=dp), intent(inout), allocatable :: basis_wavevectors(:)

array holding wavevectors calculated w.r.t energetically accessible levels in the basis

public subroutine units_conversion()

converts all physical quantities to atomic units

Arguments

None