| 1 | = U_obs_op = |
| 2 | |
| 3 | The page document the user-supplied call-back routine `U_obs_op`. |
| 4 | |
| 5 | The routine `U_obs_op` is a call-back routine that has to be provided by the user. In the simplified interface the predefined name of the routine is `obs_op_pdaf`, but in the full interface, the user can choose the name of the routine. |
| 6 | The routine is used with all global filters. The purpose of the routine is to apply the observation operator to the state vector provided by PDAF when the routine is called. The routine is called during the filter analysis step. |
| 7 | |
| 8 | The interface is the following: |
| 9 | {{{ |
| 10 | SUBROUTINE U_obs_op(step, dim_p, dim_obs_p, state_p, m_state_p) |
| 11 | }}} |
| 12 | with |
| 13 | * `step` : `integer, intent(in)`[[BR]] Current time step |
| 14 | * `dim_p` : `integer, intent(in)`[[BR]] Size of state vector (local part in case of parallel decomposed state) |
| 15 | * `dim_obs_p` : `integer, intent(in)`[[BR]] Size of observation vector |
| 16 | * `state_p` : `real, intent(in), dimension(dim_p)`[[BR]] Model state vector |
| 17 | * `m_state_p` : `real, intent(out), dimension(dim_obs_p)`[[BR]] Observed state vector (i.e. the result after applying the observation operator to `state_p`) |
| 18 | |
| 19 | Notes: |
| 20 | * 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. |
| 21 | |
| 22 | Hint: |
| 23 | * If domain-decomposition is used and the observation operator involves a global operation, e.g. some global integration, one has to gather the information from the other model domains using MPI communication. |