pyPDAF.assim_offline_en3dvar_estkf_nondiagr

pyPDAF.assim_offline_en3dvar_estkf_nondiagr()

Offline 3DEnVar for a single DA step using non-diagnoal observation error covariance matrix.

See pyPDAF.PDAF3.assim_offline_3dvar_all() for diagonal observation error covariance matirx.

Here, the background error covariance matrix is estimated by an ensemble. The 3DEnVar only calculates the analysis of the ensemble mean. An ESTKF is used along with 3DEnVar to generate ensemble perturbations. This function should be called at each model time step.

User-supplied functions are executed in the following sequence:
  1. py__prepoststep_state_pdaf

  2. py__init_dim_obs_pdaf

  3. py__obs_op_pdaf

  4. the iterative optimisation:
    1. py__cvt_ens_pdaf

    2. py__obs_op_lin_pdaf

    3. py__prodRinvA_pdaf

    4. py__obs_op_adj_pdaf

    5. py__cvt_adj_ens_pdaf

    6. core 3DEnVar algorithm

  5. py__cvt_ens_pdaf

  6. ESTKF:
    1. py__init_dim_obs_pdaf

    2. py__obs_op_pdaf (for ensemble mean)

    3. py__obs_op_pdaf (for each ensemble member)

    4. py__prodRinvA_pdaf

    5. core ESTKF algorithm

  7. py__prepoststep_state_pdaf

Parameters:
  • py__collect_state_pdaf (Callable) – Routine to collect a state vector

  • py__distribute_state_pdaf (Callable) – Routine to distribute a state vector

  • py__init_dim_obs_pdaf (Callable) – Initialize dimension of full observation vector

  • py__obs_op_pdaf (Callable) – Full observation operator

  • py__prodrinva_pdaf (Callable) – Provide product R^-1 A

  • py__cvt_ens_pdaf (Callable) – Apply control vector transform matrix to control vector

  • py__cvt_adj_ens_pdaf (Callable) – Apply adjoint control vector transform matrix

  • py__obs_op_lin_pdaf (Callable) – Linearized observation operator

  • py__obs_op_adj_pdaf (Callable) – Adjoint observation operator

  • py__prepoststep_pdaf (Callable) – User supplied pre/poststep routine

  • py__next_observation_pdaf (Callable) – Provide information on next forecast

Returns:

outflag – Status flag

Return type:

int