CDMSreader__types Module

Contains type definitions and procedures for those types



Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: sp = real32
integer, public, parameter :: dp = real64

Interfaces

public interface add_to

  • private module subroutine add_state_to_hfs(state, states)

    Add state "state" to the array of states "states"

    Arguments

    Type IntentOptional Attributes Name
    type(asymtop_state_hfs), intent(in) :: state
    class(asymtop_state), intent(inout), allocatable :: states(:)
  • private module subroutine add_state_to_nohfs(state, states)

    Add state "state" to the array of states "states"

    Arguments

    Type IntentOptional Attributes Name
    type(asymtop_state_nohfs), intent(in) :: state
    class(asymtop_state), intent(inout), allocatable :: states(:)
  • private pure module subroutine add_transition_to(transition, transitions)

    Add transition "transition" to the array of transitions "transitions"

    Arguments

    Type IntentOptional Attributes Name
    type(asymtop_transition), intent(in) :: transition
    type(asymtop_transition), intent(inout), allocatable :: transitions(:)

public interface make_asymtop_state

  • private pure elemental module function make_asymtop_state_hfs(dN, dKa, dKc, dJ, dItot, dF, E, EinstA) result(state)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: dN
    integer, intent(in) :: dKa
    integer, intent(in) :: dKc
    integer, intent(in) :: dJ
    integer, intent(in) :: dItot
    integer, intent(in) :: dF
    real(kind=dp), intent(in) :: E
    real(kind=dp), intent(in) :: EinstA

    Return Value type(asymtop_state_hfs)

  • private pure elemental module function make_asymtop_state_nohfs(dN, dKa, dKc, E, EinstA, degen) result(state)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: dN
    integer, intent(in) :: dKa
    integer, intent(in) :: dKc
    real(kind=dp), intent(in) :: E
    real(kind=dp), intent(in) :: EinstA
    integer, intent(in), optional :: degen

    Return Value type(asymtop_state_nohfs)


Derived Types

type, public, abstract ::  asymtop_state

Corresponds to an asymmetric top molecule defined by Q = 23 without the hyperfine splitting, essentially averaged over F

Components

Type Visibility Attributes Name Initial
integer, public :: dN

Twice the rotational quantum number of the molecule as a rigid rotor

integer, public :: dKa

Twice the approximate projection of N on the A axis

integer, public :: dKc

Twice the approximate projection of N on the C axis

real(kind=dp), public :: E

The state energy

real(kind=dp), public :: EinstA

The total Einstein coefficient from this state

type, public, extends(asymtop_state) ::  asymtop_state_nohfs

Already defined by asymtop state !

Components

Type Visibility Attributes Name Initial
integer, public :: dN

Twice the rotational quantum number of the molecule as a rigid rotor

integer, public :: dKa

Twice the approximate projection of N on the A axis

integer, public :: dKc

Twice the approximate projection of N on the C axis

real(kind=dp), public :: E

The state energy

real(kind=dp), public :: EinstA

The total Einstein coefficient from this state

integer, public :: degen

The total hyperfine degeneracy of the state Σ(2F+1)

type, public, extends(asymtop_state) ::  asymtop_state_hfs

Corresponds to an asymmetric top molecule defined by Q = 23 with the hyperfine splitting

Components

Type Visibility Attributes Name Initial
integer, public :: dN

Twice the rotational quantum number of the molecule as a rigid rotor

integer, public :: dKa

Twice the approximate projection of N on the A axis

integer, public :: dKc

Twice the approximate projection of N on the C axis

real(kind=dp), public :: E

The state energy

real(kind=dp), public :: EinstA

The total Einstein coefficient from this state

integer, public :: dJ

Twice the total angular momentum of the rotation (N) and the electron spin (S).

integer, public :: dItot

Twice the nuclear spin quantum number

integer, public :: dF

Twice the angular momentum from the rotation and electrons (J) and the nuclear spin (I).

type, public ::  asymtop_transition

Corresponds to a transition

Components

Type Visibility Attributes Name Initial
type(asymtop_state_hfs), public :: up

Upper state

type(asymtop_state_hfs), public :: lo

Lower stat

real(kind=dp), public :: freq

The frequency of the transition

real(kind=dp), public :: EinstA

The Einstein coefficient A

real(kind=dp), public :: err

The error

integer, public :: dr

Degrees of freedom

integer, public :: gup

Upper level degeneracy


Subroutines

public subroutine find_state_number(state, states, i)

Check if the state "state" is in the array of states "states"

Arguments

Type IntentOptional Attributes Name
class(asymtop_state), intent(in) :: state
class(asymtop_state), intent(in), allocatable :: states(:)
integer, intent(out) :: i

public impure subroutine sort_last_transition(transitions)

Sort the last element in the array to where it should go, assuming the rest of the array is sorted

Arguments

Type IntentOptional Attributes Name
type(asymtop_transition), intent(inout) :: transitions(:)

The array of transitions

public impure subroutine sort_last_state(states, iout)

Sort the last element in the array to where it should go, assuming the rest of the array is sorted

Arguments

Type IntentOptional Attributes Name
class(asymtop_state), intent(inout), allocatable, target :: states(:)

The array of states

integer, intent(out), optional :: iout

The array to which the last state was sorted

public impure subroutine sort_states(states)

Insertion sort the array states, without assuming that it is sorted

Arguments

Type IntentOptional Attributes Name
class(asymtop_state), intent(inout), allocatable, target :: states(:)

The array of states