midas_obsSelection¶
Dependency Diagrams:
- program midas_obsselection¶
- Purpose
Main program for background check, and thinning of all observation types.
—
- Algorithm
For background check of each observation type, several quality control tests specific to that observation type are performed on each available observation to determine if the observation meets the standard to be assimilated later. Observation flags are modified for rejected observations as well as for the assimilated observations of inferior quality.The thinning is performed afterwards to reduce the number of observation data for assimilation. This is to reduce the 1) computational cost, and 2) observation error correlation during assimilation stage. The background-checked thinned observations are written to new files, ready for assimilation.
–
The computed bias correction values are applied to the observation before the background check step for certain observation types (e.g. radiances). One of quality control tests during background check is the
rogue check
which is the allowed distance of the observation from the background state. Innovation vectory-H(xb)
is required to measure this distance. The innovations are computed at the beginning of the program before the background check starts.–
Input and Output Files
Description of file
flnml
In - Main namelist file with parameters that 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 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
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
obsSelection
program calling sequence:
Initial setups:
Read the NAMOBSSELECTION namelist and check/modify some values.
Various modules are setup:
obsFiles_mod
,timeCoord_mod
.Setup horizontal and vertical grid objects for “analysis grid” from
analysisgrid
file.Setup
obsSpaceData
object and read observations from files:inn_setupObs
.Compute and update the stored surface type for some satellite radiance instruments.
Setup
columnData
module (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
Setup
gridStateVector
module to initialize the gridstatevector objects.Applying optional bias corrections to some observation types.
Setup horizontal and vertical grid objects for “trial grid” from first trial file:
trlm_01
.Allocate a stateVector object on the trial grid and then read the trials:
gio_readTrials
.Computation
Compute
columnTrlOnTrlLev
andcolumnTrlOnAnlIncLev
from background state:inn_setupColumnsOnTrlLev
,inn_setupColumnsOnAnlIncLev
.Compute innovation from background state:
inn_computeInnovation
.Do background check for conventional observation:
bgck_bgCheck_conv
.Update radiance bias correction in
obsSpaceData
and apply the bias corrections to the observations and innovations for radiances:bcs_calcBias
,bcs_applyBiasCorrection
.Perform background check for multiple observation types.
If thinning was requested:
add some cloud parameters and set missing observation flags in observation files (specific for radiances) and
perform thinning for different observation types.
Write the final background-checked bias corrected results (either thinned or not thinned) into the observation file.
If thinning was requested, remove observations which were flagged not to be assimilated from the observation file.
–
- Options
List of namelist blocks that can affect the
obsSelection
program.
The use of
obsSelection
program is controlled by the namelist block
&NAMOBSSELECTION
read by theobsSelection
program.
Some of the other relevant namelist blocks used to configure the
obsSelection
are listed in the following table:
Module
Namelist
Description of what is controlled
midas_obsSelection
NAMOBSSELECTION
whether thinning is performed or not.
biasCorrectionConv_mod
NAMBIASCONV
variables to perform bias correction for conventional observations.
biasCorrectionConv_mod
NAMSONDETYPES
additional variables to perform bias correction for radiosondes conventional observations.
backgroundCheck_mod
NAMBGCKCONV
variables to perform background check for conventional observations.
SSTbias_mod
NAMSSTBIASESTIMATE
variables to perform bias estimation and bias correction for satellite SST.
biasCorrectionSat_mod
NAMBIASSAT
variables to perform bias correction for satellite radiances.
multi_ir_bgck_mod
NAMBGCKIR
Variables to perform background check for hyperspectral infrared radiances.
bgckmicrowave_mod
NAMBGCK
Variables to perform background check for microwave radiances.
bgckcsr_mod
NAMCSR
Variables To perform background check for CSR radiances.
bgckssmis_mod
NAMBGCK
Variables to perform background check for SSMIS radiances.
bgckOcean_mod
NAMOCEANBGCHECK
Variables to perform background check for ocean data.
bgckOcean_mod
NAMICEBGCHECK
Variables to perform background check for SST data.
burpread_mod
NAMADDTOBURP
element IDs to add to the BURP file
thinning_mod
THIN_HYPER
variables to perform thinning on hyperspectral infrared radiances.
thinning_mod
THIN_TOVS
variables to perform thinning on microwave radiances.
thinning_mod
thin_csr
variables to perform thinning on CSR radiances.
thinning_mod
thin_raobs
variables to perform thinning on radiosonde observations.
thinning_mod
thin_scat
variables to perform thinning on scatterometer wind observations.
thinning_mod
thin_aircraft
variables to perform thinning on aircraft observations.
thinning_mod
thin_surface
variables to perform thinning on surface observations.
thinning_mod
thin_gbgps
variables to perform thinning on ground-based GPS observations.
thinning_mod
thin_gpsro
variables to perform thinning on GPS radio-occultation observations.
thinning_mod
thin_aladin
variables to perform thinning on aladin wind observations.
thinning_mod
thin_aladin
variables to perform thinning on aladin wind observations.
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’)
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’)
midasmpi_mod
: MODULE midasMpi_mod (prefix=’mmpi’ category=’8. Low-level utilities and constants’)
utilities_mod
: MODULE utilities_mod (prefix=’utl’ 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’)
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’)
backgroundcheck_mod
: MODULE backgroundCheck_mod (prefix=’bgck’ category=’1. High-level functionality’)
multiirbgck_mod
: MODULE multiIRbgck_mod (prefix=’irbg’ category=’1. High-level functionality’)
innovation_mod
: MODULE innovation_mod (prefix=’inn’ 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’)
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’)
biascorrectionconv_mod
: MODULE biasCorrectionConv_mod (prefix=’bcc’ category=’1. High-level functionality’)
thinning_mod
: MODULE thinning_mod (prefix=’thn’ category=’1. High-level functionality’)
bgckmicrowave_mod
: MODULE bgckMicrowave_mod (prefix=’mwbg’ category=’1. High-level functionality’)
bgckssmis_mod
: MODULE bgckSSMIS_mod (prefix=’ssbg’ category=’1. High-level functionality’)
bgckcsr_mod
: MODULE bgckCSR_mod (prefix=’csrbg’ category=’1. High-level functionality’)
bgckocean_mod
: MODULE bgckOcean_mod (prefix=’ocebg’ category=’1. High-level functionality’)
sstbias_mod
: MODULE sstBias_mod (prefix=’sstb’ category=’1. High-level functionality’)Routines called
ver_printnameandversion()
,mmpi_initialize()
,utl_tmg_start()
,utl_isnamelistpresent()
,utl_abort()
,ram_setup()
,obsf_setup()
,tim_setup()
,mpc_printconstants()
,pre_printprecisions()
,hco_setupfromfile()
,vco_setupfromfile()
,col_setvco()
,inn_setupobs()
,ssbg_computessmissurfacetype()
,obs_famexist()
,mwbg_computemwhs2surfacetype()
,col_setup()
,col_allocate()
,obs_numheader()
,oer_setobserrors()
,gsv_setup()
,sstb_applysatellitesstbiascorrection()
,bcc_applyaibcor()
,bcc_applygpbcor()
,bcc_applyuabcor()
,inn_gethcovcofromtrlmfile()
,gsv_allocate()
,tim_getdatestamp()
,gsv_zero()
,gio_readtrials()
,inn_setupcolumnsontrllev()
,inn_setupcolumnsonanlinclev()
,inn_computeinnovation()
,bgck_bgcheck_conv()
,bcs_calcbias()
,bcs_applybiascorrection()
,irbg_bgcheckir()
,mwbg_bgcheckmw()
,csrbg_bgcheckcsr()
,ssbg_bgcheckssmis()
,ocebg_bgchecksst()
,ocebg_bgcheckseaice()
,obsf_copyobsdirectory()
,obsf_writefiles()
,obsf_updatemissingobsflags()
,obsf_addcloudparametersandemissivity()
,thn_thinhyper()
,thn_thintovs()
,thn_thincsr()
,thn_thinraobs()
,thn_thinscat()
,thn_thinsatwinds()
,thn_thinaircraft()
,thn_thinsurface()
,thn_thingbgps()
,thn_thingpsro()
,thn_thinaladin()
,bcs_dumpbiastosqliteafterthinning()
,obs_prnthdr()
,obs_prntbdy()
,obsf_cleanobsfiles()
,obs_finalize()
,utl_tmg_stop()