Version 2 (modified by 3 years ago) (diff) | ,
---|
cvt_adj_ens_pdaf
The page document the user-supplied call-back routine cvt_adj_ens_pdaf
.
The routine cvt_adj_ens_pdaf
(U_cvt_adj_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 parameterized 3D-Var and the hybrid 3D-Var methods.
The routine is called during the iterative optimization. It has to perform the adjoint of the control vector transform (preconditioning) which is usually a multiplication with the transponse square-root of the background covariance matrix B. The routine is provided with a state vector and has to return a vector in control space. The routine allows a user to implement the control vector transform in form of covariance operators.
The interface for this routine is:
SUBROUTINE cvt_adj_ens_pdaf(iter, dim_p, dim_ens, dim_cv_ens_p, ens_p, Vcv_p, cv_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 ! PE-local dimension of control vector REAL, INTENT(in) :: ens_p(dim_p, dim_ens) ! PE-local ensemble REAL, INTENT(in) :: Vcv_p(dim_p) ! PE-local input vector REAL, INTENT(inout) :: cv_p(dim_cv_ens_p) ! PE-local result vector
Hints:
- 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 communication with MPI_Allreduce to obtain a global sun.