midas_obsImpact¶
Dependency Diagrams:
- program midas_obsimpact¶
- Purpose
Main program for computing the Forecast Sensitivity to Observation Impact (FSOI)
—
- Algorithm
FSOI partitions the forecast error reduction within the current system from assimilating the observations. The total forecast error reduction defined as:
\((e_{t}^{fa})^{T}*C*(e_{t}^{fa})-(e_{t}^{fb})^{T}*C*(e_{t}^{fb})\)
where \(e_{t}^{fa}=M(x_{0}^{a})-x_{t}^{a}\)
and \(e_{t}^{fb}=M(x_{0}^{b})-x_{t}^{a}\)
and C is the energy norm.
–
In this program, there are the hybrid FSOI approach (HFSOI) and the ensemble FSOI (EFSOI) approaches. The hybrid approach is appropriate for computing the impact of observations assimilated with 4D-EnVar. It combines the ensemble approach for propagating the sensitivities from forecast to analysis time and the variational approach for the adjoint of the assimilation procedure. The ensemble approach is appropriate for computing the impact of observations assimilated with the LETKF. It relies purely on analysis and forecast ensemble for the calculation.
More details on HFSOI can be found in the paper: HFSOI approach
More details on EFSOI can be found in the paper:EFSOI approach
–
- File I/O
The required input files and produced output files are listed as follows.
–
Input and Output Files
Description of file
flnml
In - Main namelist file with parameters user may modify
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
bgcov
In - Static (i.e. NMC) B matrix file for NWP fields
ensemble/$YYYYMMDDHH_006_$NNNN
In - Ensemble member files defining ensemble B matrix
ensemble/$YYYYMMDDHH_foradv
In - advection files
obsfiles_$FAM/obs$FAM_$NNNN_$NNNN
In - Observation file for each “family” and MPI task
obserr
In - Observation error statistics
forecasts/forecast_*
In - Global deterministic forecast from backgroud and analysis
forecasts/analysis
In - Verifying analysis
diafiles_$FAM.updated/obs$FAM_$NNNN_$NNNN
Out - Updated obs file for each “family” and MPI task in SQLite
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
rtcoef_$PLATFORM_$SENSOR.**
In - RTTOV coefficient files
rttov_h2o_limits.dat
In - Min/Max humidity limits
stats_tovs_symmetricObsErr
In - user-defined symmetric TOVS errors for all sky
Cmat_$PLATFORM_$SENSOR.dat
In - Inter-channel observation-error correlations
–
- Synopsis
Below is a summary of the
obsImpact
program calling sequence:
Initial setups:
Initialize FSOI module, read the namelist from
fso_setup
Setup horizontal and vertical grid objects for “analysis grid” from
analysisgrid
file and for “trial grid” from first trial file:trlm_01
.Setup
obsSpaceData
object and read observations from files:inn_setupObs
.Setup
columnData
andgridStateVector
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
.Setup the B matrices:
bmat_setup
.Setup the
gridVariableTransforms
.Computation:
incdatr
: Setup dateStamp(one extra timestamp: leadTime) for FSOI.
inn_computeInnovation
: Compute innovation
calcFcstError
: Read the forcasts from background and analysis, andthe verifying analysis as well, calculate the forecast error norm defined as: \((C*(e_{t}^{fa}+e_{t}^{fb}))\).
bmat_sqrtBT
: Compute the variable \(\hat{v}\) for minimization in HFSO mode.\(\hat{v}=B_{t}^{T/2}*C*(e_{t}^{fa}+e_{t}^{fb})\)
minimize
: Do the minimization to apply the adjoint of the 4D-EnVar assimilationto \(\hat{v}\) with the result being \(\hat{a}\).
bmat_sqrt
: Compute \(B^{1/2}*\hat{a}\) .
s2c_tl
,oop_Htl
: Apply the observation operators \(H*B^{1/2}*\hat{a}\) .
rmat_RsqrtInverseAllObs
: Multiply by the inverse of the observation error variances\(R^{-1}*H*B^{1/2}*\hat{a}\)
obs_bodySet_r
: Multiply the resulting sensitivity value by the innovation and putthe result in the
obsSpaceDate
columnOBS_FSO
so it can be stored in the observation files
sumFSO
: Print out the FSOI value, including total and the one from each obs family.Final steps:
obsf_writeFiles
: Write the final FSOI value in SQLite file.–
- Options
List of namelist blocks that can affect the
obsImpact
program.
The use of
obsImpact
program is controlled mainly by the namelist block&NAMFSO
read by thefso_mod
module.Some of the other relevant namelist blocks used to configure FSOI are listed in the following table:
Module
Namelist
Description of what is controlled
timeCoord_mod
NAMTIME
assimilation time window length, temporal resolution of the background state and increment
bMatrixEnsemble_mod
NAMBEN
weight and other parameters for ensemble-based B matrix component
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’)
columndata_mod
: MODULE columnData_mod (prefix=’col’ category=’6. High-level data objects’)
obsspacedata_mod
: MODULE obsSpaceData_mod (prefix=’obs’ 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’)
bmatrix_mod
: MODULE bMatrix_mod (prefix=’bmat’ category=’2. B and R matrices’)
innovation_mod
: MODULE innovation_mod (prefix=’inn’ category=’1. High-level functionality’)
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’)
gridvariabletransforms_mod
: MODULE gridVariableTransforms_mod (prefix=’gvt’ category=’4. Data Object transformations’)
fsoi_mod
: MODULE fsoi_mod (prefix=’fso’ category=’1. High-level functionality’)Routines called
ver_printnameandversion()
,mmpi_initialize()
,utl_tmg_start()
,utl_writestatus()
,ram_setup()
,tim_setup()
,obsf_setup()
,tim_getdatestamp()
,tim_setdatestamp()
,utl_abort()
,mpc_printconstants()
,pre_printprecisions()
,gsv_setup()
,hco_setupfromfile()
,fso_setup()
,vco_setupfromfile()
,col_setvco()
,inn_setupobs()
,col_setup()
,col_allocate()
,obs_numheader()
,oer_setobserrors()
,inn_gethcovcofromtrlmfile()
,gsv_allocate()
,gsv_zero()
,gio_readtrials()
,inn_setupcolumnsontrllev()
,bmat_setup()
,gvt_setup()
,gvt_setupreffromtrialfiles()
,inn_setupcolumnsonanlinclev()
,inn_computeinnovation()
,fso_ensemble()
,bmat_finalize()
,obsf_filessplit()
,obs_expandtompiglobal()
,obsf_writefiles()
,obs_mpiredistribute()
,obs_finalize()
,utl_tmg_stop()