CDMS_readline Module Subroutine

public impure module subroutine CDMS_readline(funit, freq, err, EinstA, DR, ELO, GUP, TAG, qnfmt, qn, mol, io, skip, comment_char_in)

Read "cat" file from the CDMS contents into appropriate arrays, with the capability to skip lines that are well-commented or blank the comment character defaults to "#", but can be set to anything not in the character NUMERIC also not whitespace

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: funit
real(kind=dp), intent(out) :: freq

Frequency of the line

real(kind=dp), intent(out) :: err

Estimated or experimental error (999.9999 indicates error is larger)

real(kind=dp), intent(out) :: EinstA

The Einstein A coefficient

integer, intent(out) :: DR

Degrees of freedom in the rotational partition function (0 for atoms, 2 for linear molecules, and 3 for nonlinear molecules)

real(kind=dp), intent(out) :: ELO

Lower state energy in cm–1

integer, intent(out) :: GUP

Upper state degeneracy

integer, intent(out) :: TAG

Species tag or molecular identifier. A negative value flags that the line frequency has been measured in the laboratory. The absolute value of TAG is then the species tag (as given in line 2 of file.int above) and ERR is the reported experimental error.

integer, intent(out) :: qnfmt

Identifies the format of the quantum numbers given in the field QN.

integer, intent(out) :: qn(12)

Twice the quantum numbers numbers. These are integers but are converted from their coding format according to QNFMT. Upper state quanta start in character 1. Lower state quanta start in character 14 (element 7). Unused quanta are blank, quanta whose magnitude is larger than 99 or smaller than –9 are shown with alphabetic characters or **. Quanta between –10 and –19 are shown as a0 through a9. Similarly, –20 is b0, etc., up to –259, which is shown as z9. Quanta between 100 and 109 are shown as A0 through A9. Similarly, 110 is B0, etc., up to 359, which is shown as Z9.

character(len=:), intent(out), allocatable :: mol
integer, intent(out) :: io
logical, intent(out) :: skip
character(len=1), intent(in), optional :: comment_char_in