| | 1 | = obs_op_lin_pdaf = |
| | 2 | |
| | 3 | The page document the user-supplied call-back routine `obs_op_lin_pdaf`. |
| | 4 | |
| | 5 | The routine `obs_op_lin_pdaf` (`U_obs_op_lin` inside PDAF) is a call-back routine that has to be provided by the user. |
| | 6 | |
| | 7 | The routine is used with the all 3D-Var methods. It has to perform the operation of the linearized observation operator acting on a state vector increment that is provided as `state_p`. The observed state has to be returned in `m_state_p`. |
| | 8 | |
| | 9 | The interface is the following: |
| | 10 | {{{ |
| | 11 | SUBROUTINE obs_op_lin_pdaf(step, dim_p, dim_obs_p, state_p, m_state_p) |
| | 12 | |
| | 13 | INTEGER, INTENT(in) :: step ! Current time step |
| | 14 | INTEGER, INTENT(in) :: dim_p ! PE-local dimension of state |
| | 15 | INTEGER, INTENT(in) :: dim_obs_p ! Dimension of observed state |
| | 16 | REAL, INTENT(in) :: state_p(dim_p) ! PE-local model state |
| | 17 | REAL, INTENT(out) :: m_state_p(dim_obs_p) ! PE-local observed state |
| | 18 | }}} |
| | 19 | |
| | 20 | The routine is called during the analysis step. It has to perform the operation of the linearized observation operator acting on a state vector increment that is provided as `state_p`. The observed state has to be returned in `m_state_p`. |
| | 21 | |
| | 22 | Hints: |
| | 23 | * For a model using domain decomposition, the operation is on the PE-local sub-domain of the model and has to provide the observed sub-state for the PE-local domain. |
| | 24 | * If the observation operator involves a global operation, e.g. some global integration, while using domain-decomposition one has to gather the information from the other model domains using MPI communication. |