midas_ensPostProcess¶
Dependency Diagrams:
- program midas_enspostprocess¶
- Purpose
Post-processing program for the local ensemble transform Kalman filter (LETKF). Many aspects of this program are controlled throught the namelist block namEnsPostProc defined in epp_postProcess.
—
- Algorithm
The
ensPostProcess
program performs several post-processing tasks of LETK ensemble analyses and the ensemble trials. The following tasks are performed based on the namelist options.
Mean and std: Ensemble mean and standard deviation are computed upon reading the ensemble members and after the processes which may alter the mean or the standard deviation.
RTPP: Relaxation to the prior perturbation will relax the analysis perturbation to the trial perturbation with a given amount (\(\alpha\)) in the namelist. It can be formulated as: \(x^a_i \leftarrow \overline{x^a} + (1-\alpha)(\overline{x^a}-x^a_i)+\alpha(\overline{x^b}-x^b_i)\)
More details for the RTPP can be found in paper: Impacts of Initial Estimate and Observation Availability on Convective-Scale Data Assimilation with an Ensemble Kalman Filter
RTPS: Relaxation to the prior spread will relax the analysis ensemble spread (i.e. standard deviation) to the trial ensemble spread with a given amount (\(\alpha\)) in the namelist. With the ensemble spread of analysis (\(\sigma^a\)) and trial (\(\sigma^b\)), it can be formulated as: \(x^a_i \leftarrow \overline{x^a} + (\overline{x^a}-x^a_i)(1+\alpha(\sigma^b-\sigma^a)/\sigma^a)\)
More details for the RTPS can be found in paper: Evaluating Methods to Account for System Errors in Ensemble Data Assimilation
Humidity limits: Impose the saturation limits and RTTOV limits on the humidity for each member.
Recenter: The ensemble analyses from the LETKF are recentered around the EnVar analysis based on the input coefficent. It is also called hybrid gain algorithm and more details can be found in paper: Using the hybrid gain algorithm to sample data assimilation uncertainty
Subsample: Select 20 ensemble members for the medium range forecasts.
Random perturbation: Generate homogeneous and isotropic random perturbations and add them to the ensemble analyses.
Analysis increments: After all the processes above, the analysis incrememnts are computed at the central time for all the members including the control member and the subsampled 20 members.
Mask analysis increments: For LAM grid, the analysis increments in the blending area are masked out.
–
Input and Output Files
Description of file
flnml
In - Main namelist file with parameters user may modify
ensemble_trial/$YYYYMMDDHH_006_$NNNN
In - Background ensemble member files
ensemble_anal/$YYYYMMDDHH_000_$NNNN
In - Analysis ensemble member files
bgcov
In - Bnmc matrix for the random perturbations
analysis_grid
In - Horizontal grid file on which the random perturbations are generated
$YYYYMMDDHH_recentering_analysis
In - Analysis from EnVar for recentering the ensemble analyses
analinc_mask
In - Mask file for masking the analysis increments for LAM grid
$YYYYMMDDHH_000_inc_$NNNN
Out - Ensemble analysis increments for trials
$YYYYMMDDHH_000_$NNNN
Out - Ensemble analyses recentered and perturbed
$YYYYMMDDHH_000_$NNNN_raw
Out - Ensemble analyses from LETKF
$YYYYMMDDHH_000_analmean
Out - Mean ensemble analysis without perturbation
$YYYYMMDDHH_000_analrms
Out - Analysis ensemble spread (i.e. standard deviation) without perturbation
$YYYYMMDDHH_000_analrms_ascii
Out - Global average of
$YYYYMMDDHH_000_analrms
$YYYYMMDDHH_000_analpertmean
Out - Mean ensemble analysis with perturbation and recentering
$YYYYMMDDHH_000_analpertrms
Out - Analysis ensemble spread with perturbation and recentering
$YYYYMMDDHH_000_analpertrms_ascii
Out - Global average of
$YYYYMMDDHH_000_analpertrms
$YYYYMMDDHH_006_trialmean
Out - Mean ensemble trial for all time levels
$YYYYMMDDHH_006_trialrms
Out - Trial ensemble spread at 6H
$YYYYMMDDHH_006_trialrms_ascii
Out - Global average of
$YYYYMMDDHH_006_trialrms
subspace/$YYYYMMDDHH_000_inc_$NNNN
Out - Subsampled ensemble analysis increments for progs
subspace/$YYYYMMDDHH_000_$NNNN
Out - Subsampled ensemble analyses recentered and perturbed
subspace_unpert/$YYYYMMDDHH_000_$NNNN
Out - Unperturbed subsampled ensemble analyses recentered
–
- Synopsis
Below is a summary of the
ensPostProcess
program calling sequence:
Initial setups:
Read the NAMLETKF namelist and check/modify some values.
Various modules are setup:
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.
Allocate varaibles and read ensemble analyses and trials
Ensemble postprocess:
Compute ensemble mean and spread (i.e. standard deviation) for analysis and trial
Perform RTPP and RTPS and recompute analysis spread
Recenter ensemble mean and recompute analysis mean and spread
Apply humidity saturation limit and RTTOV HU limit and recompute analysis mean
Subsample ensemble analysis
Add random perturbation to the analyses and compute perturbed analysis spread
Add random perturbation to the subsampled analyses and recenter subsampled mean to the global mean.
Compute analysis increments for all analyses and subsampled analyses including the ensemble mean
Mask LAM analysis increments are recompute the ensemble analyses by adding the increments to the trials
Writing the outputs.
- Options
List of namelist blocks that can affect the
ensPostProcess
program.
Program/Module
Namelist
Description of what is controlled
midas_ensPostProcess
NAMENSPOSTPROC
Number of ensemble members and read, write control of trials and analyses and horizontal interpolation degree
enspostprocess_mod
NAMENSPOSTPROCMODULE
Control the postprocess algorithms
timeCoord_mod
NAMTIME
Temporal resolution of the background state and the analysis
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’)
ensemblestatevector_mod
: MODULE ensembleStateVector_mod (prefix=’ens’ 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’)
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’)
enspostprocess_mod
: MODULE ensPostProcess_mod (prefix=’epp’ category=’1. High-level functionality’)Routines called
ver_printnameandversion()
,mmpi_initialize()
,utl_tmg_start()
,ram_setup()
,utl_abort()
,fln_ensfilename()
,tim_setup()
,tim_getstamplist()
,tim_getdatestamp()
,gsv_setup()
,hco_setupfromfile()
,vco_setupfromfile()
,vco_getnumlev()
,gsv_allocate()
,gio_readfromfile()
,ens_allocate()
,ens_readensemble()
,utl_tmg_stop()
,epp_postprocess()