Version 1 (modified by 10 years ago) (diff) | ,
---|
prepoststep_pdaf
The page document the user-supplied call-back routine prepoststep_pdaf
.
The routine prepoststep_pdaf
(called U_prepoststep
in the PDAF core routines) is a call-back routine that has to be provided by the user.
prepoststep_pdaf
is called by PDAF_get_state
, PDAF_put_state_X
, and PDAF_assimilate_X
with 'X' being the name of a filter method. The routine is called at the initial time and after a forecast (directly before computing the filter analysis step) and after the analysis step. The purpose of the routine is to give the user access to the forecast and the analysis ensembles. Typically operations that are performed in prepoststep_pdaf
are to compute the estimated RMS errors form the ensemble and to write e.g. the state estimate (i.e. the ensemble mean state). In case of the offline mode, one will also write the model restart files in prepoststep_pdaf
.
The interface is the following:
SUBROUTINE prepoststep_pdaf(step, dim_p, dim_ens, dim_ens_p, dim_obs_p, & state_p, Uinv, ens_p, flag)
with
- INTEGER, INTENT(in)
- step ! Current time step ! (When the routine is called before the analysis -step is provided.)
- INTEGER, INTENT(in)
- dim_p ! PE-local state dimension
- INTEGER, INTENT(in)
- dim_ens ! Size of state ensemble
- INTEGER, INTENT(in)
- dim_ens_p ! PE-local size of ensemble
- INTEGER, INTENT(in)
- dim_obs_p ! PE-local dimension of observation vector
- REAL, INTENT(inout)
- state_p(dim_p) ! PE-local forecast/analysis state ! The array 'state_p' is not generally not initialized in the case of SEIK/EnKF/ETKF. ! It can be used freely in this routine.
- REAL, INTENT(inout)
- Uinv(dim_ens-1, dim_ens-1) ! Inverse of matrix U
- REAL, INTENT(inout)
- ens_p(dim_p, dim_ens) ! PE-local state ensemble
- INTEGER, INTENT(in)
- flag ! PDAF status flag
The routine U_prepoststep
is called once at the beginning of the assimilation process. In addition, it is called during the assimilation cycles before the analysis step and after the ensemble transformation. The routine is called by all filter processes (that is filterpe=1
).
The routine provides for the user the full access to the ensemble of model states. Thus, user-controlled pre- and post-step operations can be performed. For example the forecast and the analysis states and ensemble covariance matrix can be analyzed, e.g. by computing the estimated variances. If the smoother is used, also the smoothed ensembles can be analyzed. In addition, the estimates can be written to disk.
Hint:
- If a user considers to perform adjustments to the estimates (e.g. for balances), this routine is the right place for it.
- Only for the SEEK filter the state vector (
state_p
) is initialized. For all other filters, the array is allocated, but it can be used freely during the execution ofU_prepoststep
. - The interface through which
U_prepoststep
is called does not include the array of smoothed ensembles. In order to access the smoother ensemble array one has to set a pointer to it using a call to the routinePDAF_get_smootherens
(see page on auxiliary routines)