| | 1 | = U_cvt_adj_ens = |
| | 2 | |
| | 3 | The page document the user-supplied call-back routine `U_cvt_adj_ens`. |
| | 4 | |
| | 5 | The routine `U_cvt_adj_ens` 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_ens_pdaf`, but in the full interface, the user can choose the name of the routine. |
| | 6 | |
| | 7 | The routine is used with the parameterized 3D-Var and the hybrid 3D-Var methods. |
| | 8 | |
| | 9 | 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. |
| | 10 | |
| | 11 | The interface for this routine is: |
| | 12 | {{{ |
| | 13 | SUBROUTINE U_cvt_adj_ens(iter, dim_p, dim_ens, dim_cv_ens_p, ens_p, Vcv_p, cv_p) |
| | 14 | |
| | 15 | INTEGER, INTENT(in) :: iter ! Iteration of optimization |
| | 16 | INTEGER, INTENT(in) :: dim_p ! PE-local observation dimension |
| | 17 | INTEGER, INTENT(in) :: dim_ens ! Ensemble size |
| | 18 | INTEGER, INTENT(in) :: dim_cv_ens_p ! PE-local dimension of control vector |
| | 19 | REAL, INTENT(in) :: ens_p(dim_p, dim_ens) ! PE-local ensemble |
| | 20 | REAL, INTENT(in) :: Vcv_p(dim_p) ! PE-local input vector |
| | 21 | REAL, INTENT(inout) :: cv_p(dim_cv_ens_p) ! PE-local result vector |
| | 22 | }}} |
| | 23 | |
| | 24 | Hints: |
| | 25 | * 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. |