wiki:OMI_nondiagonal_observation_error_covariance_matrices

Version 4 (modified by lnerger, 2 months ago) (diff)

--

Using non-diagonal R matrices with OMI

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,