.atm File

RFM File Formats: Atmospheric Profiles

11MAR24

Type
Mandatory Input(s)

Description
Atmospheric profile data.

Filename(s)
Specified in *ATM section of Driver Table

Structure
Apart from comment records, the file starts with a single integer: the number of levels in the profiles.
This is followed by an arbitrary number of profiles but all of the same number of data points.
A record starting '*END' is used to indicate the end-of-file.
All numerical data are read 'free-format'.
File Structure
!CMNT Optional Comment record(s)
NLEV No. levels in profiles
Repeat until End Marker record
    !CMNT Optional comment record(s)
    *PRF_ID Profile label (separate record)
    PRF(1) PRF(2) ... Block of NLEV Profile values
    ... PRF(NLEV)
*END End Marker record

Fields
Field Type Description Range
!CMNT C80 Comment records, starting with '!' [1]
NLEV I No. levels in profiles [2] ≥ 1 [3]
*PRF_ID C20 Identifier for profile type [4] [5] (See table below)
PRF(:) R Data values of PRF_ID profile (See table below)
Type: I=Integer; R=Real; Cn=character string, length n.

Profile types
*PRF_ID Description Units Range
*HGT Altitude km Increase monotonically
*PRE Pressure hPa > 0, Decrease monotonically
*TEM Temperature K > 0
*AEROSOL Aerosol extinction km-1 [6]
*[gas] Molecule (eg *H2O) ppmv [7] ≥ 0
*[gas][iso] Isotopologue [8] [9] ppmv [7] ≥ 0
*[gas][iso][vib] Vib.Tem - Kin.Tem [10] K

Notes
  1. !CMNT Comment records may be inserted anywhere except between the *PRF_ID label and subsequent PRF data values

  2. NLEV is read from the first non-comment record, any subsequent text on the same record is ignored (so comments may be added)

  3. NLEV=1 indicates a homogeneous atmosphere (see HOM Flag), otherwise a minimum value 2 is expected.

  4. A profile label *PRF_ID (case-insensitive) is identified by the first character being '*' and the label extends as far as the first space or 20 characters, so comments may be added after a space. The same applies to the End Marker record *END.

  5. Any profile label that isn't *HGT, *PRE, *TEM or *AEROSOL is tested to see if it is recognised as a molecular species [gas] and, if not, then it is ignored. So the file may contain arbitrarily labelled profiles.

  6. *AEROSOL extinction is allowed to be negative but a warning message is printed to the RFM log file when this occurs.

  7. The RFM uses a definition of
    VMR=(no.molecules of species)/(total no.molecules)
    which is, pedantically, a mole fraction rather than a volume mixing ratio. Thus the sum of VMRs (in ppmv) of all should not be greater than 1E6 (there is a warning if this happens). [The strict definition of VMR uses either (total molecules of dry air), or (total molecules of other gases) as the denominator, which become infinite for paths of, say, pure H2O]

    Isotopologues (See RFM handling of Isotopologues)

  8. Isotopic profiles can be specified by adding an optional qualifier (in round brackets) immediately after the molecule name *[gas](ISO) (no spaces) where ISO is the 'local ID' in the HITRAN table eg '*H2O(4)' for HDO.

  9. Isotope abundances are implicity scaled to the total molecule number, not expressed in absolute terms. So, for example, an HDO concentration of 3ppmv with an H2O(1) concentration of 6ppmv means that HDO is half its nominal surface concentration relative to H2O(1) (which happens to be 3 x 10-4, so in this case HDO absolute concentration would be 3ppmv x 3 x 10-4 = 9 x 10 -4 ppmv)

    Vibrational Temperatures

  10. Vibrational temperature profiles (actually Vib-Kinetic Temp difference profiles), used for non-LTE calculations, are indicated using the molecule name with two additional qualifiers, identifying isotopologue and Vibrational Level (and the NTE Flag has to be enabled), eg '*CO2(1)(2)' for the '0 1 1 01' vibrational level (ID=2) of the major 622 isotopologue (ID=1) of CO2. If Vibrational temperature equals the Kinetic temperature, ie a profile value 0, this indicates local thermodynamic equilibrium at this profile level.

Example
See RFM Atmospheric Profiles

Python Reader
read_atm.py

Bugs
[none recent]