midas_var1D¶
Dependency Diagrams:
- program midas_var1d¶
- Purpose
Main program for one dimensional variational minimization
—
- Algorithm
This program performs a similar data assimilation procedure as the var program, except without taking into account the horizontal or temporal dimensions. The assimilation is performed separately at each horizontal location and time where observations are present. The B matrix can be either an explicit representation of the covariances produced by the program extractBmatrixFor1Dvar or from an ensemble (controlled by the namelists). The resulting analysis and analysis increment at the observation locations/times are output in standard files on a “Y” grid.
–
- 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
Bmatrix_sea.bin
In - 1DVar Bmatrix file over sea (output from extractBmatrixFor1DVar)
Bmatrix_land.bin
In - 1DVar Bmatrix file over land (output from extractBmatrixFor1DVar)
obsfiles_$FAM/obs$FAM_$NNNN_$NNNN
In - Observation file for each “family” and MPI task
obserr
In - Observation error statistics
rttov_h2o_limits.dat
In - minimum and maximum humidity profile to clip analysis
pm1q
In/Out - Preconditioning file (Hessian of the cost function)
rebm_$MMMm
(e.g.rebm_180m
)Out - Analysis increment on Y grid
anlm_$MMMm
Out - Analysis on Y grid
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_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
var1D
program calling sequence:
Initial setups:
Initialize temporal grid
Initialize observation file names and set date stamp
Setup horizontal and vertical grid objects for “analysis grid” from
analysisgrid
fileSetup
obsSpaceData
object and read observations from files:inn_setupObs
Setup
columnData
moduleSetup the observation error statistics in
obsSpaceData
object:oer_setObsErrors
Setup the gridStateVector module (initialize list of analyzed variables)
Get horizontal and vertical grid descriptors from trial fields:
inn_getHcoVcoFromTrlmFile
, and allocate a gridStateVector objectsRead the trials:
gio_readTrials
Setup the 1DVar B matrix:
bmat1D_bsetup
Setup the
gridVariableTransforms
andminimization
modulesHorizontally interpolate high-resolution stateVectorUpdate to trial columns:
inn_setupColumnsOnTrlLev
Interpolate trial columns to analysis levels and setup for linearized H:
inn_setupColumnsOnAnlIncLev
Compute observation innovations and prepare obsSpaceData for minimization:
inn_computeInnovation
Minimization:
Do the minimization
min_minimize
to obtaincontrolVectorIncr
Get 1DVar increment from
controlVectorIncr
tocolumnAnlInc
:bmat1D_get1DvarIncrement
Transfer increment to
stateVectorIncr
:var1D_transferColumnToYGrid
Write increment to file:
inc_writeIncrement
Final step:
Release resources
Write hessian if requested to:
min_writeHessian
Write updated observation files:
obsf_writeFiles
–
- Options
List of namelist blocks that can affect the
var1D
program.
The B matrix used by the
var1D
program is controlled by the namelist block&nambmat1D
of module bmatrix1DVar_mod
scaleFactorHI scaling factors for HI variances
scaleFactorHIHumidity scaling factors for HI humidity variances
scaleFactorENs scaling factors for Ens variances
scaleFactorEnsHumidity scaling factors for Ens humidity variances
nEns number of ensemble members for the ensemble part of B matrix (negative means no ensemble)
vLocalize vertical localization length scale for the ensemble part of B matrix
includeAnlVar list of variable for the B matrix
numIncludeAnlVar number of variables in includeAnlVar (to be removed later)
–
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’)
controlvector_mod
: MODULE controlVector_mod (prefix=’cvm’ category=’6. High-level data objects’)
obsfiles_mod
: MODULE obsFiles_mod (prefix=’obsf’ category=’3. Observation input/output’)
minimization_mod
: MODULE minimization_mod (prefix=’min’ category=’1. High-level functionality’)
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’)
gridvariabletransforms_mod
: MODULE gridVariableTransforms_mod (prefix=’gvt’ category=’4. Data Object transformations’)
increment_mod
: MODULE increment_mod (prefix=’inc’ category=’1. High-level functionality’)
biascorrectionsat_mod
: MODULE biasCorrectionSat_mod (prefix=’bcs’ category=’1. High-level functionality’)
var1d_mod
: MODULE var1D_mod (prefix=’var1D’ category=’4. Data Object transformations’)
bmatrix1dvar_mod
: MODULE bMatrix1DVar_mod (prefix=’bmat1D’ category=’2. B and R matrices’)Routines called
ver_printnameandversion()
,mmpi_initialize()
,utl_tmg_start()
,ram_setup()
,tim_setup()
,obsf_setup()
,tim_getdatestamp()
,tim_setdatestamp()
,utl_abort()
,mpc_printconstants()
,hco_setupfromfile()
,vco_setupfromfile()
,col_setvco()
,inn_setupobs()
,col_setup()
,col_allocate()
,obs_numheader()
,oer_setobserrors()
,gsv_setup()
,inn_gethcovcofromtrlmfile()
,gsv_allocate()
,gsv_zero()
,gio_readtrials()
,bmat1d_bsetup()
,gvt_setup()
,min_setup()
,inn_setupcolumnsontrllev()
,inn_setupcolumnsonanlinclev()
,inn_computeinnovation()
,min_minimize()
,bcs_writebias()
,col_getvco()
,col_getnumcol()
,col_zero()
,bmat1d_get1dvarincrement()
,var1d_transfercolumntoygrid()
,inc_writeincrement()
,gsv_add()
,inc_writeanalysis()
,var1d_finalize()
,gsv_deallocate()
,min_writehessian()
,bcs_finalize()
,obsf_filessplit()
,obs_expandtompiglobal()
,obsf_writefiles()
,obs_mpiredistribute()
,obs_finalize()
,utl_tmg_stop()