MORSE Common File Format

04SEP25

Many MORSE output files have a common file structure, so readable with the same software.
Common File Structure
File_Header
For iPix = 1, nPix
   Pixel_Header
   For iSet = 1, nSet
      Set_Header
      Profile_Data
A 'pixel' is defined as a particular geographical location for the output so includes, for example, profiles retrieved from a complete limb scan.

A 'set' is an optional subdivision of outputs at various stages of the retrieval. Normally there is just one set corresponding to the final product but MORSE can also output the a priori profiles (APR flag) — always the first set — and retrieval products after each microwindow (MWO flag), culminating in the final product.

File Header

Structure
File Header
! FILTYP generated by MORSE v.VERSID
! HDRREC Header record set in driver file
FMT File format version
IGEOM Viewing geometry (eg 1=limb-viewing)
INST_ID SAT_ID Instrument, Satellite
YYYYMMDD JDAY Nominal date, Day# since 1Jan2000
ORBIT ORBSTA      ORBEND Orbit#, Start HHMMSS, End HHMMSS
NPIX NSET No. pixels or limb scans, No. sets/scan
NLEV NPRF (Max) No. Levels/Profile, No. Profiles/Set
*GRD Vertical grid coordinate
  GRD(1) GRD(2) ... Vertical grid levels
  ... GRD(NLEV)
For j=1, NPRF List of types of data profile
    PRF(j) NLVPRF(j) Profile type, No. levels in profile
    If NLVPRF(j) ≠ NLEV the following record is added
    LEV_FLG(1,j) LEV_FLG(2,j) ... LEV_FLG(NLEV,j)
*END End of Header marker record
Fields
FieldFormat Description Units Range
FILTYP C* Type of file, eg Retrieval State Vector
VERSID C11 MORSE version identifier eg 27APR23
HDRREC C79 Copied from *HDR section of the driver table
FMT F10.2 MORSE output file format identifier 2.00
IGEOM I10 Viewing geometry 1, 2 or 3
INST_ID C10 Instrument identification eg IASI-A
SAT_ID C10 Satellite identification eg MetOp-A
YYYYMMDD I10 Year, Month, Day of data yyyymmdd
JDAY I10 Day# since 1 Jan 2000 (JDAY=0) ≥ 0
ORBIT I10 Orbit number since launch ≥ 0
ORBSTA I10 Orbit start time hhmmss
ORBEND I10 Orbit end time hhmmss
NPIX I10 No. of pixels or profile locations ≥1
NSET I10 No. sets of retrievals per pixel [1] ≥1
NLEV I10 Max. No. levels in each profile ≥1
NPRF I10 No. different profiles (or scalars) listed per pixel ≥1
*GRD C Profile grid [2] ∈ {*PRE, *HGT, *HGT_NOM }
GRD(NLEV) * Profile grid values, lowest alt to highest km or hPa
PRF(NPRF) C7 Profile type #j [3]
NLVPRF(NPRF) I5 No. levels on which profile#j is represented[4] ≥0
LEV_FLG(NLEV,NPRF) I2 1 if Profile#j is retrieved on Level#i, else 0 [5] ∈ { 0, 1 }

Notes
  1. NSET is normally 1, but increased by 1 if the APR flag is set, and/or increased by the number of microwindows/bands −1 if the MWO flag is set
    APR MWO NSET
    F F 1
    T F 2
    F T NMIC
    T T NMIC+1

  2. *GRD is determined by the grid set in the section#4 of the morse.drv file
    Driver File *GRD in output File Grid type
    *PRE *PRE [hPa] Pressure levels
    *ALT *HGT [km] Altitude levels
    *TAN *HGT_NOM [km] Nominal tangent point altitudes

  3. PRF: Apart from the retrieved species this includes diagnostic and supplementary information, including scalar quantities. See descriptions of individual file types for possible values.

  4. NLVPRF: A value 0 is used for column or scalar retrievals, to distinguish these from profiles where a single retrieval level is specified with upper and/or lower bounds.

  5. LEV_FLG: It is possible to specify individual retrievals on subsets of the full grid, in which case NLVPRF(j) < NLEV, and then the PRF record in the header section is immediately followed by a records containing NLEV LEV_FLG values to indicate the particular retrieval levels (1=used, 0=skipped).

Pixel Header

Structure
3 records, different for limb and nadir-viewing geometries.
Pixel Header (Nadir-Viewing)
IPIX       = Pixel# Pixel counter
!YYYYMMDD HHMMSS MILLISEC STP FOV LAT LON ZEN SZA %CLD %LND Header record
      YMD           HMS           MSC      STP  FOV  LAT  LON  ZEN  SZA    CLD    LND Data record
Pixel Header (Limb-Viewing)
IPIX       = Pixel# Profile location counter
!YYYYMMDD HHMMSS MILLISEC LAT LON LST SZA Header record
      YMD           HMS           MSC      LAT  LON  LST  SZA Data record

Fields
Field Format Description Units Range
IPIX I10 Pixel/location number 1 : NPIX
YMD I9.8 Date of the scan eg ' 20020724' yyyymmdd
HMS I7.6 Time (UT) of the scan[1] eg ' 113640' hhmmss 000000 : 235959
MSC I9 Milliseconds into day[1] ms 0 : 86 400 000
STP I4 (Nadir) IASI Mirror step# 1 : 30
FOV I4 (Nadir) IASI Pixel/FOV# 1 : 4
LAT F7.2 Latitude deg N ±90
LON F8.2 Longitude deg E ±180
ZEN F7.2 (Nadir) Satellite Zenith Angle (0=overhead) deg 0 – 90
LST F7.4 (Limb) Local Solar Time (12=noon) hr 0 – 24
SZA F7.2 Solar Zenith Angle (>0 ≡ daytime) deg ±90
CLD F7.1 (Nadir) Cloud fraction in FOV % 0 – 100
LND F7.1 (Nadir) Land fraction in FOV % 0 – 100

Notes
  1. While all the information in HMS is also contained in MSC, it is a more 'human' readable representation of time of day.

  2. The time and location information for a limb scan of multiple sweeps is based on that of the central sweep in the scan

Set Header

Structure
A single record which can be read as a comment record but, in the case of multiple sets created by the MWO Flag (i.e., output after each microwindow is processed), the Set Header is a Microwindow Header containing formatted microwindow details.
Fields
Field Type Description Range
SET_HEADER C* Retrieval step of data within set:
if iSet=NSET: '! Final Result'
if APR Flag and iSet=1: '! A Priori'
if MWO Flag and iSet<NSET: Microwindow_Header

Microwindow Header
! IMIC   MICLAB   WNOMIN   WNOMAX   [ALTMIN   ALTMAX]  
Field Type Description Units Range
IMIC I2 Microwindow# in list > 0
MICLAB A8 Microwindow label, e.g. 'MIC_001 '
WNOMIN F10.4 Lower wavenumber limit cm-1 0 < : < WNOMAX
WNOMAX F10.4 Upper wavenumber limit cm-1 > WNOMIN
Optional (both or neither)
ALTMIN F5.1 Lower tangent height limit km < ALTMAX
ALTMAX F5.1 Upper tangent height limit km > ALTMIN
Notes
  1. The microwindow header record is composed in subroutine addmic_sub.f90

Profile Data

Structure
Profile Data
For j = 1, NPRF
    *PRF
    DAT(1) DAT(2) ... DAT(NLVPRF)
Fields
Field Type Description Range
*PRF Profile type ∈{PRF)
DAT(NLVPRF) R Profile Data