midas_ensembleH

link to source code

Dependency Diagrams:

midas_ensembleH.svg

Direct Dependency Diagram

program  midas_ensembleh
Purpose

Main program for applying the observation operator to an ensemble of states to compute the innovations and store them in eob*_HX binary files. The LETKF program can read these binary files instead of computing the innovations.

Algorithm

The background (a.k.a trial) ensemble members are read and the non-linear observation operators are applied to each ensemble member: \(H(xb_{i})\), the innovations are computed: \(y-H(xb_{i})\), and stored in unformatted binary files. ensembleH has the ability to compute innovations for a batch of ensemble members when the member indices are sequential.

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

trlm_$NN (e.g. trlm_01)

In - Background state (a.k.a. trial) files for each timestep

ensemble/$YYYYMMDDHH_006_$NNNN

In - Background ensemble member files

obsfiles_$FAM/obs$FAM_$NNNN_$NNNN

In - Observation file for each “family” and MPI task

obserr

In - Observation error statistics

$YYYYMMDDHH_000_$NNNN

Out - Analysis ensemble member files

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

Out - Updated obs file for each “family” and MPI task

Remainder are files related to radiance obs:

stats_$SENSOR_assim

In - Satellite radiance observation errors of difference sensors

stats_tovs

In - Satellite radiance observation errors

stats_tovs_symmetricObsErr

In - User-defined symmetric TOVS errors for all sky

Cmat_$PLATFORM_$SENSOR.dat

In - Inter-channel observation-error correlations

ceres_global.std

In - High-res surface type and water fraction for radiance obs

rtcoef_$PLATFORM_$SENSOR.dat

In - RTTOV coefficient files

rttov_h2o_limits.dat

In - Min/max humidity limits applied to analysis

ozoneclim98

In - Ozone climatology

Synopsis

Below is a summary of the ensembleH program calling sequence:

  • Initial setups:

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

    • Various modules are setup: obsFiles_mod, gridStateVector_mod, timeCoord_mod (and set up dates and dateStampList variables for both trials and increments/analyses).

    • Setup horizontal and vertical grid objects from first ensemble member file.

    • Setup obsSpaceData object and read observations from files: inn_setupObs.

    • Setup the observation error statistics in obsSpaceData object: oer_setObsErrors.

    • Allocate objects for column_mod.

    • Allocate and some setup of objects for ensembleObservations_mod.

    • Allocate some objects for gridStateVector_mod.

    • Allocate ensemble object and read background ensemble members: ens_readEnsemble.

  • Computation

    • Option to read ensemble mean from file (gio_readFromFile) or compute ensemble mean (ens_computeMean)

    • Loop over background ensemble members, computing innovation for each, with resulting H(xb) being stored in ensObs objects both for original ensemble and, optionally, for the modulated ensemble members.

    • store the local ensObs object to binary file.

Options

List of namelist blocks that can affect the ensembleH program.

  • The use of ensembleH program is controlled by the namelist block

&NAMENSEMBLEH read by the ensembleH program.

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

Program/Module

Namelist

Description of what is controlled

midas_ensembleh

NAMENSEMBLEH

number of ensemble members, additional parameters to control generating modulated members from original ensembles, the member number the current batch starts with, number of members in the batch, option to read ensemble mean from file.

timeCoord_mod

NAMTIME

assimilation time window length, temporal resolution of the background state.

Needed modules

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

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

  • filenames_mod: MODULE fileNames_mod (prefix=’fln’ category=’7. Low-level data objects’)

  • gridstatevector_mod: MODULE gridStateVector_mod (prefix=’gsv’ category=’6. High-level data objects’)

  • gridstatevectorfileio_mod: MODULE gridStateVectorFileIO_mod (prefix=’gio’ category=’4. Data Object transformations’)

  • columndata_mod: MODULE columnData_mod (prefix=’col’ category=’6. High-level data objects’)

  • verticalcoord_mod: MODULE verticalCoord_mod (prefix=’vco’ category=’7. Low-level data objects’)

  • horizontalcoord_mod: MODULE horizontalCoord_mod (prefix=’hco’ category=’7. Low-level data objects’)

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

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

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

  • statetocolumn_mod: MODULE stateToColumn_mod (prefix=’s2c’ category=’4. Data Object transformations’)

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

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

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

  • innovation_mod: MODULE innovation_mod (prefix=’inn’ category=’1. High-level functionality’)

  • ensembleobservations_mod: MODULE ensembleObservations_mod (prefix=’eob’ category=’6. High-level data objects’)

  • ensemblestatevector_mod: MODULE ensembleStateVector_mod (prefix=’ens’ category=’6. High-level data objects’)

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

Routines called

ver_printnameandversion(), mmpi_initialize(), utl_tmg_start(), ram_setup(), utl_abort(), obsf_setup(), fln_ensfilename(), tim_setup(), tim_getstamplist(), tim_getdatestamp(), gsv_setup(), hco_setupfromfile(), vco_setupfromfile(), inn_setupobs(), oer_setobserrors(), col_setup(), col_setvco(), col_allocate(), obs_numheader(), eob_allocate(), obs_numbody(), eob_zero(), eob_setlatlonobs(), gsv_allocate(), gio_readfromfile(), gsv_zero(), ens_allocate(), ens_readensemble(), utl_tmg_stop(), fln_enstrlfilename(), ens_copytoensmean(), ens_computemean(), ens_copyensmean(), ens_copymember(), gsv_copy(), gsv_copyheightsfc(), s2c_nl(), inn_computeinnovation(), eob_setyb(), enkf_getmodulatedstate(), gsv_deallocate(), gsv_isallocated(), eob_writetofiles()