cvt_pdaf
The page document the user-supplied call-back routine cvt_pdaf
.
The routine cvt_pdaf
(called U_cvt
inside the PDAF core routines) is a call-back routine that has to be provided by the user.
The routine is used with all 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 form of covariance operators.
The interface is the following:
SUBROUTINE cvt_pdaf(iter, dim_p, dim_cvec, cv_p, Vv_p) INTEGER, INTENT(in) :: iter ! Iteration of optimization INTEGER, INTENT(in) :: dim_p ! PE-local observation dimension INTEGER, INTENT(in) :: dim_cvec ! Dimension of control vector REAL, INTENT(in) :: cv_p(dim_cvec) ! PE-local control vector REAL, INTENT(inout) :: Vv_p(dim_p) ! PE-local result vector (state vector increment)
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 comminucation with MPI_Allreduce to obtain a global sun.