midas_prepcma

link to source code

Dependency Diagrams:

midas_prepcma.svg

Direct Dependency Diagram

program  midas_prepcma
Purpose

Read the observation files (usually after output by the background check) and apply further quality control and thinning for use by the LETKF program

Algorithm

After reading the observation files that have been processed by the background check, the prepcma program rejects more observations based on the various flags and conditions. It also performs further thinnings on the data types of aircraft (AI), scatterometer (SC), satellite winds (SW) and some radiance (TO). The rejection and thinning are controlled by the options in the namelist of NAMPREPCMA.

File I/O

The required input files and produced output files are listed as follows.

Input and Output Files

Description of file

flnml

In - Main namelist file with parameters user may modify

flnml_static

In - The “static” namelist that should not be modified

obserr

In - Observation error statistics

obsfiles_$FAM/obs$FAM_$NNNN_$NNNN

In - Observation file for each “family”

stats_tovs

In - Satellite radiance observation errors

rtcoef_$PLATFORM_$SENSOR.dat

In - RTTOV coefficient files

obsfiles_$FAM.updated/obs$FAM_$NNNN_$NNNN

Out - final observation file for each family

Synopsis

Below is a summary of the prepcma program calling sequence:

  • Initial setups:

    • Read the NAMPREPCMA namelist and check/modify some values.

    • filt_setup: set up list of elements to be assimilated and flags for rejection

    • obsf_setup: get observation file names and datestamp

  • Computation:

    • obsf_readFiles: get the observations

    • filt_suprep: select the elements to assimilate and apply rejection flags

    • oer_setObsErrors: initialize obs error covariances and set flag

    • oti_setup: reject any observations outside the data assimilation window

    • enkf_rejectHighLatIR: reject all IR radiance observation in arctic and antarctic

    • enkf_modifyAmsubObsError: modify the obs error stddev for AMSUB in the tropics

    • thinning_fam: perform thinning for aircraft (AI), scatterometer (SC),

      satellite winds (SW) and some radiance (TO)

  • Final steps:

    • obsf_writeFiles: write to burp/sqlite files

    • obsf_printFiles: print to ascci file and to unformatted files

Options

List of namelist blocks that can affect the prepcma program.

  • Some of the relevant namelist blocks used to configure the prepcma are listed in the following table:

Program/Module

Namelist

Description of what is controlled

midas_prepcma

NAMPREPCMA

parameters for CMA format and others to modify, reject and thinning some observation data

timeCoord_mod

NAMTIME

assimilation time window length, temporal resolution of the background state and the analysis

tovs_nl_mod

NAMTOV

The list of satellite and instrument

Needed modules

  • version_mod: MODULE version_mod (prefix=’ver’ category=’8. Low-level utilities and constants’)

  • obsspacedata_mod: MODULE obsSpaceData_mod (prefix=’obs’ category=’6. High-level data objects’)

  • obsfiles_mod: MODULE obsFiles_mod (prefix=’obsf’ category=’3. Observation input/output’)

  • obsfilter_mod: MODULE obsFilter_mod (prefix=’filt’ category=’5. Observation operators’)

  • obstimeinterp_mod: MODULE obsTimeInterp_mod (prefix=’oti’ category=’4. Data Object transformations’)

  • obserrors_mod: MODULE obsErrors_mod (prefix=’oer’ category=’2. B and R matrices’)

  • tovsnl_mod: MODULE tovsNL_mod (prefix=’tvs’ category=’5. Observation operators’)

  • timecoord_mod: MODULE timeCoord_mod (prefix=’tim’ category=’7. Low-level data objects’)

  • enkf_mod: MODULE enkf_mod (prefix=’enkf’ category=’1. High-level functionality’)

  • utilities_mod: MODULE utilities_mod (prefix=’utl’ category=’8. Low-level utilities and constants’)

  • midasmpi_mod: MODULE midasMpi_mod (prefix=’mmpi’ category=’8. Low-level utilities and constants’)

  • ramdisk_mod: MODULE ramDisk_mod (prefix=’ram’ category=’8. Low-level utilities and constants’)

  • regions_mod: MODULE regions_mod (prefix=’reg’ category=’7. Low-level data objects’)

  • burpread_mod: MODULE burpRead_mod (prefix=’brpr’ category=’3. Observation input/output’)

Routines called

ver_printnameandversion(), mmpi_initialize(), utl_tmg_start(), utl_writestatus(), utl_abort(), ram_setup(), filt_setup(), obsf_setup(), obs_class_initialize(), obs_initialize(), obsf_filessplit(), obsf_readfiles(), utl_tmg_stop(), obs_numheader(), obs_numbody(), brpr_gettyperesume(), tvs_setup(), obs_famexist(), filt_suprep(), tvs_setupalloc(), oer_setobserrors(), tim_setup(), tim_getdatestamp(), tim_setdatestamp(), oti_setup(), enkf_rejecthighlatir(), enkf_modifyamsubobserror(), obsf_writefiles(), obsf_cleanobsfiles(), obs_clean(), obs_expandtompiglobal(), obs_print(), obs_write(), obs_finalize(), reg_init_struct(), reg_getlatitude(), reg_getblock(), obs_headelem_i(), tvs_isidburptovs(), obs_bodyelem_i(), obs_headelem_r(), reg_locatestn(), obs_bodyelem_r(), obs_bodyset_i()