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



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

The routine U_cvt_adj is a call-back routine that has to be provided by the user. In the simplified interface the predefined name of the routine is cvt_adj_pdaf, but in the full interface, the user can choose the name of the routine.

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 hos 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 is the following:

SUBROUTINE cvt_adj_pdaf(iter, dim_p, dim_cvec, Vcv_p, cv_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)    :: Vcv_p(dim_p)    ! PE-local result vector (state vector increment)
  REAL, INTENT(inout) :: cv_p(dim_cvec) ! PE-local control vector


  • 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.