midas_oMinusF

link to source code

Dependency Diagrams:

midas_oMinusF.svg

Direct Dependency Diagram

program  midas_ominusf
Purpose

Main program for Observation minus Forecast (O-F) computation.

Algorithm

The non-linear observation operators map a gridded state vector into the observation space to compute the difference between the observations and that state in observation space. The gridded state vector can be background state or the analysis. In case of background state, the difference is the innovation vector: y-H(xb). If asked by the user, the diagonal of the background errors standard deviation in observation space, \({diag(H B H^{T})}^{1/2}\), are also computed. The bias corrections are applied for satellite radiances before writing the observation files.

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

analysisgrid

In - File defining grid for computing the analysis increment

obsfiles_$FAM/obs$FAM_$NNNN_$NNNN

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

obserr

In - Observation error statistics

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 different 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

dynbcor.coeffs.$SENSOR.*.coeffs_$SENSOR

In - Dynamic bias correction file

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 oMinusF program calling sequence:

  • Initial setups:

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

    • Various modules are setup: obsFiles_mod, timeCoord_mod.

    • Setup gridStateVector module.

    • Setup horizontal and vertical grid objects from either analysisgrid or first trial file: trlm_01.

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

    • Applying optional bias corrections to some observation types.

    • Setup columnData module (read list of analysis variables from namelist) and allocate column object.

    • Allocate a stateVector object and then read the state (either trials or analysis): gio_readTrials.

  • Computation

    • Compute interpolated column on trial level columnTrlOnTrlLev from the state: inn_setupColumnsOnTrlLev.

    • Compute innovation from background state: inn_computeInnovation.

    • For computing background errors in observation space, columnTrlOnTrlLev are interpolated from background to analysis levels, columnTrlOnAnlIncLev, and the linearize operators are initialized: inn_setupColumnsOnAnlIncLev.

    • Update radiance bias correction in obsSpaceData and apply the bias corrections to the observations and innovations for radiances: bcs_calcBias, bcs_applyBiasCorrection.

    • Write the final bias corrected results into the observation file.

Options

List of namelist blocks that can affect the oMinusF program.

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

&NAMOMF read by the oMinusF program.

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

Module

Namelist

Description of what is controlled

biasCorrectionConv_mod

NAMBIASCONV

variables to perform bias correction for conventional observations.

biasCorrectionConv_mod

NAMSONDETYPES

additional variables to perform bias correction for radiosondes conventional observations.

biasCorrectionSat_mod

NAMBIASSAT

variables to perform bias correction for satellite radiances.

burpread_mod

NAMADDTOBURP

element IDs to add to the BURP file

Needed modules

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

  • ominusf_mod: MODULE oMinusF_mod (prefix=’omf’ category=’1. High-level functionality’)

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

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

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

  • 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’)

  • biascorrectionsat_mod: MODULE biasCorrectionSat_mod (prefix=’bcs’ category=’1. High-level functionality’)

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

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

Routines called

ver_printnameandversion(), mmpi_initialize(), utl_tmg_start(), utl_writestatus(), utl_abort(), fln_ensfilename(), omf_ominusf(), bcs_calcbias(), bcs_applybiascorrection(), obs_numheader(), obs_prnthdr(), obs_prntbdy(), obsf_writefiles(), omf_ominusfens(), obs_finalize(), utl_tmg_stop()