midas_ensembleH¶
Dependency Diagrams:
- program midas_ensembleh¶
- Purpose
Main program for applying the observation operator to an ensemble of states to compute the innovations and store them in eob*_HX binary files. The
LETKF
program can read these binary files instead of computing the innovations.—
- Algorithm
The background (a.k.a trial) ensemble members are read and the non-linear observation operators are applied to each ensemble member: \(H(xb_{i})\), the innovations are computed: \(y-H(xb_{i})\), and stored in unformatted binary files.
ensembleH
has the ability to compute innovations for a batch of ensemble members when the member indices are sequential.–
Input and Output Files
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
ensemble/$YYYYMMDDHH_006_$NNNN
In - Background ensemble member files
obsfiles_$FAM/obs$FAM_$NNNN_$NNNN
In - Observation file for each “family” and MPI task
obserr
In - Observation error statistics
$YYYYMMDDHH_000_$NNNN
Out - Analysis ensemble member files
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
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
ensembleH
program calling sequence:
Initial setups:
Read the NAMENSEMBLEH namelist and check/modify some values.
Various modules are setup:
obsFiles_mod
,gridStateVector_mod
,timeCoord_mod
(and set up dates anddateStampList
variables for both trials and increments/analyses).Setup horizontal and vertical grid objects from first ensemble member file.
Setup
obsSpaceData
object and read observations from files:inn_setupObs
.Setup the observation error statistics in
obsSpaceData
object:oer_setObsErrors
.Allocate objects for
column_mod
.Allocate and some setup of objects for
ensembleObservations_mod
.Allocate some objects for
gridStateVector_mod
.Allocate ensemble object and read background ensemble members:
ens_readEnsemble
.Computation
Option to read ensemble mean from file (
gio_readFromFile
) or compute ensemble mean (ens_computeMean
)Loop over background ensemble members, computing innovation for each, with resulting
H(xb)
being stored inensObs
objects both for original ensemble and, optionally, for the modulated ensemble members.store the local
ensObs
object to binary file.–
- Options
List of namelist blocks that can affect the
ensembleH
program.
The use of
ensembleH
program is controlled by the namelist block
&NAMENSEMBLEH
read by theensembleH
program.
Some of the other relevant namelist blocks used to configure the
ensembleH
are listed in the following table:
Program/Module
Namelist
Description of what is controlled
midas_ensembleh
NAMENSEMBLEH
number of ensemble members, additional parameters to control generating modulated members from original ensembles, the member number the current batch starts with, number of members in the batch, option to read ensemble mean from file.
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’)
midasmpi_mod
: MODULE midasMpi_mod (prefix=’mmpi’ category=’8. Low-level utilities and constants’)
filenames_mod
: MODULE fileNames_mod (prefix=’fln’ 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’)
columndata_mod
: MODULE columnData_mod (prefix=’col’ category=’6. High-level data objects’)
verticalcoord_mod
: MODULE verticalCoord_mod (prefix=’vco’ category=’7. Low-level data objects’)
horizontalcoord_mod
: MODULE horizontalCoord_mod (prefix=’hco’ category=’7. Low-level data objects’)
timecoord_mod
: MODULE timeCoord_mod (prefix=’tim’ category=’7. Low-level data objects’)
utilities_mod
: MODULE utilities_mod (prefix=’utl’ category=’8. Low-level utilities and constants’)
ramdisk_mod
: MODULE ramDisk_mod (prefix=’ram’ category=’8. Low-level utilities and constants’)
statetocolumn_mod
: MODULE stateToColumn_mod (prefix=’s2c’ category=’4. Data Object transformations’)
obsfiles_mod
: MODULE obsFiles_mod (prefix=’obsf’ category=’3. Observation input/output’)
obsspacedata_mod
: MODULE obsSpaceData_mod (prefix=’obs’ category=’6. High-level data objects’)
obserrors_mod
: MODULE obsErrors_mod (prefix=’oer’ category=’2. B and R matrices’)
innovation_mod
: MODULE innovation_mod (prefix=’inn’ category=’1. High-level functionality’)
ensembleobservations_mod
: MODULE ensembleObservations_mod (prefix=’eob’ category=’6. High-level data objects’)
ensemblestatevector_mod
: MODULE ensembleStateVector_mod (prefix=’ens’ category=’6. High-level data objects’)
enkf_mod
: MODULE enkf_mod (prefix=’enkf’ category=’1. High-level functionality’)Routines called
ver_printnameandversion()
,mmpi_initialize()
,utl_tmg_start()
,ram_setup()
,utl_abort()
,obsf_setup()
,fln_ensfilename()
,tim_setup()
,tim_getstamplist()
,tim_getdatestamp()
,gsv_setup()
,hco_setupfromfile()
,vco_setupfromfile()
,inn_setupobs()
,oer_setobserrors()
,col_setup()
,col_setvco()
,col_allocate()
,obs_numheader()
,eob_allocate()
,obs_numbody()
,eob_zero()
,eob_setlatlonobs()
,gsv_allocate()
,gio_readfromfile()
,gsv_zero()
,ens_allocate()
,ens_readensemble()
,utl_tmg_stop()
,fln_enstrlfilename()
,ens_copytoensmean()
,ens_computemean()
,ens_copyensmean()
,ens_copymember()
,gsv_copy()
,gsv_copyheightsfc()
,s2c_nl()
,inn_computeinnovation()
,eob_setyb()
,enkf_getmodulatedstate()
,gsv_deallocate()
,gsv_isallocated()
,eob_writetofiles()