pyPDAF.assim_offline_3dvar_all

pyPDAF.assim_offline_3dvar_all()

Offline assimilation for all types of 3DVar DA for a single DA step using diagonal observation error covariance matrix.

See pyPDAF.PDAF3.put_state_3dvar_nondiagR(), pyPDAF.PDAF3.put_state_en3dvar_lestkf_nondiagR(), pyPDAF.PDAF3.put_state_en3dvar_estkf_nondiagR(), pyPDAF.PDAF3.put_state_hyb3dvar_lestkf_nondiagR(), pyPDAF.PDAF3.put_state_hyb3dvar_estkf_nondiagR() for non-diagonal observation error covariance matrix.

When 3DVar is used, the background error covariance matrix has to be modelled for cotrol variable transformation. This is a deterministic filtering scheme so no ensemble and parallelisation is needed. This function should be called at each model time step.

For parametrised 3DVar, 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. Iterative optimisation:
    1. py__cvt_pdaf

    2. py__obs_op_lin_pdaf

    3. py__obs_op_adj_pdaf

    4. py__cvt_adj_pdaf

    5. core DA algorithm

  5. py__cvt_pdaf

  6. py__prepoststep_state_pdaf

For 3DEnVar, 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. Starting the iterative optimisation:
    1. py__cvt_ens_pdaf

    2. py__obs_op_lin_pdaf

    3. py__obs_op_adj_pdaf

    4. py__cvt_adj_ens_pdaf

    5. core DA algorithm

  5. py__cvt_ens_pdaf

  6. Perform LESTKF:
    1. py__init_n_domains_p_pdaf

    2. py__init_dim_obs_pdaf

    3. py__obs_op_pdaf (for each ensemble member)

    4. loop over each local domain:
      1. py__init_dim_l_pdaf

      2. py__init_dim_obs_l_pdaf

      3. core DA algorithm

  7. py__prepoststep_state_pdaf

For hybrid 3DVar, 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_pdaf

    2. py__cvt_ens_pdaf

    3. py__obs_op_lin_pdaf

    4. py__obs_op_adj_pdaf

    5. py__cvt_adj_pdaf

    6. py__cvt_adj_ens_pdaf

    7. core DA algorithm

  5. py__cvt_pdaf

  6. py__cvt_ens_pdaf

  7. Perform LESTKF:
    1. py__init_n_domains_p_pdaf

    2. py__init_dim_obs_pdaf

    3. py__obs_op_pdaf (for each ensemble member)

    4. loop over each local domain:
      1. py__init_dim_l_pdaf

      2. py__init_dim_obs_l_pdaf

      3. core DA algorithm

  8. py__prepoststep_state_pdaf

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

  • py__obs_op_pdaf (Callable) – Full observation operator

  • 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__cvt_pdaf (Callable) – Apply control vector transform matrix to control vector

  • py__cvt_adj_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__init_n_domains_p_pdaf (Callable) – Provide number of local analysis domains

  • py__init_dim_l_pdaf (Callable) – Init state dimension for local ana. domain

  • py__init_dim_obs_l_pdaf (Callable) – Initialize local dimimension of obs. vector

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

Returns:

outflag – Status flag

Return type:

int