midas_genCoeff

link to source code

Dependency Diagrams:

midas_genCoeff.svg

Direct Dependency Diagram

program  midas_gencoeff
Purpose

Main program to compute radiance bias correction coefficients by linear regression.

Algorithm

O-A are computed from input analysis fields resulting from a stand alone 3DVar analysis assimilating only anchoring observations (considered as “trials”) and bgckalt files.

File I/O

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

Input and Output Files (NWP application)

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

Remainder are files related to radiance obs:

stats_tovs

In - Observation error file for radiances

stats_tovs_symmetricObsErr

In - user-defined symmetric TOVS errors for all sky

Cmat_$PLATFORM_$SENSOR.dat

In - Inter-channel observation-error correlations

rtcoef_$PLATFORM_$SENSOR.H5

In - RTTOV coefficient file HDF-5 format

rtcoef_$PLATFORM_$SENSOR.dat

In - RTTOV coefficient file ASCII format

ozoneclim98

In - ozone climatology standard file (Fortuin and Kelder)

Synopsis

Below is a summary of the genCoeff program calling sequence:

  • Initial setups:

    • Setup time grid using initial time from trlm_01

    • Setup horizontal and vertical grid objects for “analysis grid” from analysisgrid file.

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

    • Setup columnData and gridStateVector modules (read list of analysis variables from namelist) and allocate column object for storing trial on analysis levels.

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

    • Allocate a stateVector object on the trial grid and then read the trials: gio_readTrials.

  • Coefficients computation

    • Horizontally Interpolate “trial” fields to trial columns

    • if needed substract bias correction from ObsSpaceData to get raw O-F and obs.

    • Remove outliers

    • Compute innovation from “trial” fields

    • Refresh Bias Correction (probably useless)

    • Perform linear regression

    • write coefficients to output file.

    • if requested compute and output to file raw (.i.e without bias correction) O-F statistics

    • compute and apply bias coorection to obsSpace Data

    • if requested compute and output to file bias corrected O-F statistics

  • Final step

    • deallocate memory (radiance bias correction module and obsSpaceData)

Options

List of namelist blocks that can affect the genCoeff program.

Needed modules

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

  • codeprecision_mod: MODULE codePrecision_mod (prefix=’pre’ category=’8. Low-level utilities and constants’)

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

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

  • mathphysconstants_mod: MODULE mathPhysConstants_mod (prefix=’mpc’ category=’8. Low-level utilities and constants’)

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

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

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

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

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

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

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

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

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

Routines called

ver_printnameandversion(), mmpi_initialize(), utl_tmg_start(), ram_setup(), inn_gethcovcofromtrlmfile(), gsv_allocate(), tim_getdatestamp(), gsv_zero(), gio_readtrials(), inn_setupcolumnsontrllev(), bcs_removebiascorrection(), bcs_removeoutliers(), utl_tmg_stop(), inn_computeinnovation(), bcs_refreshbiascorrection(), bcs_do_regression(), bcs_writebias(), bcs_computeresidualsstatistics(), bcs_calcbias(), bcs_finalize(), obs_finalize(), tim_setup(), obsf_setup(), tim_getdatestampfromfile(), tim_setdatestamp(), utl_abort(), mpc_printconstants(), pre_printprecisions(), gsv_setup(), hco_setupfromfile(), vco_setupfromfile(), col_setvco(), inn_setupobs(), col_setup(), oer_setobserrors()