Version 4 (modified by 2 months ago) (diff) | ,
---|
Using non-diagonal R matrices with OMI
Contents of this page
This feature was introduced with PDAF V2.3.
The default mode of PDAF-OMI is to use a diagonal observation error covariance matrix R and specifying the observation error variances, i.e. the diagonalof R only. This is in line with the common choice in data assimilation to assume that observation errors are uncorrelated.
However, there are also observation types with significant observation error correlations, which should be represented by a non-diagonal observation error covariance matrix. With PDAF V2.3 support for such nondiagonal R matrices was added to OMI.
PDAF-OMI's support for nondiagonal R-matrices consists in given the user access to the routines that perform operations involve R. This differs with the filter type, e.g. in LESTKF and LETKF a produce of some matrix with the inverse of R ha sto be computed, while in the traditional, perturbed observations, EnKF the matrix R has to be added to some other matrix. For the particle filter and the NETF the computation of the likelihood involves R.
Routines to perform the analysis step
For using a nondiagonal R there is a modified variant of the PDAF-OMI routines PDAFomi_assimilate_*
or PDAFomi_put_state_*
. Compared to the case of a diagonal R, the routines are slightly less generic. Below we provide an overview of the routines including the links to the interface description of each. The last column gives the name of the additional routine(s) provided in the interface to implement the non-diagonal R-matrix.
Global Filter | diagonal R | non-diagonal R | additional routine(s) |
---|---|---|---|
EnKF | PDAFomi_assimilate_global PDAFomi_put_state_global | PDAFomi_assimilate_enkf_nondiagR PDAFomi_put_state_enkf_nondiagR | add_obs_err_pdafomi init_obscovar_pdafomi |
ESTKF | PDAFomi_assimilate_global PDAFomi_put_state_global | PDAFomi_assimilate_global_nondiagR PDAFomi_put_state_global_nondiagR | prodRinvA_pdafomi |
ETKF | PDAFomi_assimilate_global PDAFomi_put_state_global | PDAFomi_assimilate_global_nondiagR PDAFomi_put_state_global_nondiagR | prodRinvA_pdafomi |
PF | PDAFomi_assimilate_global PDAFomi_put_state_global | PDAFomi_assimilate_nonlin_nondiagR PDAFomi_put_state_nonlin_nondiagR | likelihood_pdafomi |
NETF | PDAFomi_assimilate_global PDAFomi_put_state_global | PDAFomi_assimilate_nonlin_nondiagR PDAFomi_put_state_nonlin_nondiagR | likelihood_pdafomi |
SEIK | PDAFomi_assimilate_global PDAFomi_put_state_global | PDAFomi_assimilate_global_nondiagR PDAFomi_put_state_global_nondiagR | prodRinvA_pdafomi |
Local Filter | diagonal R | non-diagonal R | additional routine(s) |
---|---|---|---|
LEnKF | PDAFomi_assimilate_lenkf PDAFomi_put_state_lenkf | PDAFomi_assimilate_lenkf_nondiagR PDAFomi_put_state_lenkf_nondiagR | add_obs_err_pdafomi init_obscovar_pdafomi |
LESTKF | PDAFomi_assimilate_local PDAFomi_put_state_local | PDAFomi_assimilate_local_nondiagR PDAFomi_put_state_local_nondiagR | prodRinvA_l_pdafomi |
LETKF | PDAFomi_assimilate_local PDAFomi_put_state_local | PDAFomi_assimilate_local_nondiagR PDAFomi_put_state_local_nondiagR | prodRinvA_l_pdafomi |
LSEIK | PDAFomi_assimilate_local PDAFomi_put_state_local | PDAFomi_assimilate_local_nondiagR PDAFomi_put_state_local_nondiagR | prodRinvA_l_pdafomi |
LNETF | PDAFomi_assimilate_local PDAFomi_put_state_local | PDAFomi_assimilate_lnetf_nondiagR PDAFomi_put_state_lnetf_nondiagR | likelihood_l_pdafomi |
LKNETF | PDAFomi_assimilate_local PDAFomi_put_state_local | PDAFomi_assimilate_lknetf_nondiagR PDAFomi_put_state_lknetf_nondiagR | likelihood_l_pdafomi likelihood_hyb_l_pdafomi prodRinvA_l_pdafomi prodRinvA_hyb_l_pdafomi |
3D-Var | diagonal R | non-diagonal R | additional routine(s) |
---|---|---|---|
3DVar | PDAFomi_assimilate_3dvar PDAFomi_assimilate_3dvar | PDAFomi_put_state_3dvar_nondiagR PDAFomi_put_state_3dvar_nondiagR | prodRinvA_pdafomi |
En3DVar ESTKF | PDAFomi_assimilate_en3dvar_estkf PDAFomi_assimilate_en3dvar_estkf | PDAFomi_put_state_en3dvar_estkf_nondiagR PDAFomi_put_state_en3dvar_estkf_nondiagR | prodRinvA_pdafomi |
En3DVar LESTKF | PDAFomi_assimilate_en3dvar_lestkf PDAFomi_assimilate_en3dvar_lestkf | PDAFomi_put_state_en3dvar_lestkf_nondiagR PDAFomi_put_state_en3dvar_lestkf_nondiagR | prodRinvA_l_pdafomi |
hyb3DVar ESTKF | PDAFomi_assimilate_hyb3dvar_estkf PDAFomi_assimilate_hyb3dvar_estkf | PDAFomi_put_state_hyb3dvar_estkf_nondiagR PDAFomi_put_state_hyb3dvar_estkf_nondiagR | prodRinvA_pdafomi |
hyb3DVar LESTKF | PDAFomi_assimilate_hyb3dvar_lestkf PDAFomi_assimilate_hyb3dvar_lestkf | PDAFomi_put_state_hyb3dvar_lestkf_nondiagR PDAFomi_put_state_hyb3dvar_lestkf_nondiagR | prodRinvA_l_pdafomi |
Call-back routines handling observations
For the different filters and 3D-Var variants,