midas_analysisErrorOI¶
Dependency Diagrams:
- program midas_analysiserroroi¶
- Purpose
Calculate analysis-error standard deviation given new assimilated observations. It only works for sea ice variables and uses a simple OI approach.
—
- Algorithm
The Optimal Interpolation (OI) is a data assimilation approach where both the state and its estimated error are computed using observations while taking into account the specified uncertainties for both the observations and the background state (i.e. the R and B covariance matrices, respectively). The computations are done independently at each analysis grid point with only local observations, those that have a significant influence on the analysis at the grid point location. Here the code only implements the calculation to update the diagonal of the B covariance matrix.
–
Input and Output Files
Description of file
flnml
In - Main namelist file with parameters user may modify
trlm_01
In - Background-error standard deviation
analysisgrid
In - File defining grid for computing the analysis error
sea_ice_obs-err
In - Observation error statistics
bgstddev
In - Static background-error statistics
bgSeaIceConc
In - Background sea ice concentration
obsfiles_$FAM/obs$FAM_0001_0001
In - Observation file for each “family” (only 1 MPI task)
anlm_000m
Out - Analysis-error on the analysis grid
obsfiles_$FAM.updated/obs$FAM_0001_0001
Out - Updated obs file for each “family” (only 1 MPI task)
–
- Synopsis
Below is a summary of the
analysisErrorOI
program calling sequence:
Initial setups:
Setup horizontal and vertical grid objects for “analysis grid” from
trlm_01
file.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
.Filter out observations from satellites not specified in the name list:
filt_iceConcentration
.Filter scatterometer backscatter anisotropy observations where wind speed is too small:
filt_backScatAnisIce
.Setup observation-error for scatterometer backscatter anisotropy observations:
oer_setErrBackScatAnisIce
.Main calculation:
Compute the analysis-error:
aer_analysisError
.Update the Days Since Last Obs:
aer_daysSinceLastObs
.Update the observation files:
obsf_writeFiles
.–
- Options
List of namelist blocks that can affect the
analysisErrorOI
program.
The relevant namelist blocks used to configure the analysis-error calculation 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
columndata_mod
NAMSTATE
name of the analysis variable (RPN nomvar, 4-character long), only sea ice concentration (GL) is allowed for now
gridstatevector_mod
“
“
obsspacedata_mod
NAMDIMO
specify the maximum number of header and body elements
obsfilter_mod
NAMFILT
list of varno to use and bit flags (13-bit#) for filtering
obsfilter_mod
namPlatformIce
list of observation platforms to assimilate
sqliteread_mod
NAMSQLgl
list of varno to read from SQLite files for sea ice
sqliteread_mod
namSQLUpdate
list of elements to update in SQLite files
sqliteread_mod
namSQLInsert
place holder, could be empty
analysisErrorOI_mod
NAMAER
set the maximum analysis-error std dev. allowed
Needed modules
version_mod
: MODULE version_mod (prefix=’ver’ 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’)
message_mod
: MODULE message_mod (prefix=’msg’ 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’)
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’)
obsfilter_mod
: MODULE obsFilter_mod (prefix=’filt’ category=’5. Observation operators’)
analysiserroroi_mod
: MODULE analysisErrorOI_mod (prefix=’aer’ category=’1. High-level functionality’)Routines called
ver_printnameandversion()
,mmpi_initialize()
,utl_tmg_start()
,ram_setup()
,tim_setup()
,utl_abort()
,obsf_setup()
,tim_getdatestamp()
,tim_setdatestamp()
,mpc_printconstants()
,gsv_setup()
,msg_memusage()
,msg()
,hco_setupfromfile()
,vco_setupfromfile()
,col_setvco()
,inn_setupobs()
,col_setup()
,col_allocate()
,obs_numheader()
,oer_setobserrors()
,obs_famexist()
,filt_iceconcentration()
,filt_backscatanisice()
,oer_seterrbackscatanisice()
,aer_analysiserror()
,obsf_filessplit()
,obs_expandtompiglobal()
,obsf_writefiles()
,obs_mpiredistribute()
,obs_finalize()
,utl_tmg_stop()