Version 2 (modified by lnerger, 2 years ago) (diff)



The page document the user-supplied call-back routine cvt_ens_pdaf.

The routine cvt_ens_pdaf (U_cvt_ens inside the PDAF library routines) is a call-back routine that has to be provided by the user.

The routine is used with the 3D Ensemble Var and hybrid 3D-Var methods.

The routine is called during the iterative optimization. It has to perform the control vector transform (preconditioning) which is usually a multiplication with the square-root of the background covariance matrix B. The routine is provided with a control vector and has to return a state vector. The routine allows a user to implement the control vector transform in oeprational form and it gives the user access to the state ensemble.

The interface is the following:

SUBROUTINE cvt_ens_pdaf(iter, dim_p, dim_ens, dim_cv_ens_p, ens_p, cv_p, Vcv_p)

  INTEGER, INTENT(in) :: iter               ! Iteration of optimization
  INTEGER, INTENT(in) :: dim_p              ! PE-local observation dimension
  INTEGER, INTENT(in) :: dim_ens            ! Ensemble size
  INTEGER, INTENT(in) :: dim_cv_ens_p       ! Dimension of control vector
  REAL, INTENT(in) :: ens_p(dim_p, dim_ens) ! PE-local ensemble
  REAL, INTENT(in) :: cv_p(dim_cv_ens_p)    ! PE-local control vector
  REAL, INTENT(inout) :: Vcv_p(dim_p)       ! PE-local state increment


  • If the state vector is decomposed in case of parallelization one needs to take care that the application of the trasformation is complete. This usually requries a comminucation with MPI_Allreduce to obtain a global sun.