| 1 | = U_g2l_obs = |

| 2 | |

| 3 | The page document the user-supplied call-back routine `U_g2l_obs`. |

| 4 | |

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

| 6 | The routine is used with all filter algorithms using domain-localization (LSEIK, LETKF, LESTKF) and is independent of the particular algorithm. |

| 7 | The routine is called during the loop over the local analysis domains in the analysis step. It has to provide a local observation vector `mstate_l` for the observation domain that corresponds to the local analysis domain with index `domain_p`. Provided to the routine is the full observation vector `mstate_f` from which the local part has to be extracted. |

| 8 | |

| 9 | The interface is the following: |

| 10 | {{{ |

| 11 | SUBROUTINE g2l_obs(domain_p, step, dim_obs_f, dim_obs_l, mstate_f, mstate_l) |

| 12 | }}} |

| 13 | with |

| 14 | * `domain_p` : `integer, intent(in)`[[BR]] Index of current local analysis domain |

| 15 | * `step` : `integer, intent(in)`[[BR]] Current time step |

| 16 | * `dim_obs_f` : `integer, intent(in)`[[BR]] Size of full observation vector for model sub-domain |

| 17 | * `dim_obs_l` : `integer, intent(in)`[[BR]] Size of observation vector for local analysis domain |

| 18 | * `mstate_f` : `integer, intent(in), dimension(dim_p)`[[BR]] Full observation vector for model sub-domain |

| 19 | * `mstate_l` : `integer, intent(out), dimension(dim_l)`[[BR]] Observation vector for local analysis domain |

| 20 | |

| 21 | Hints: |

| 22 | * The vector `mstate_f` that is provided to the routine is one of the observed state vectors that are produced by `U_obs_op_f`. |

| 23 | * Some operations performed here are analogous to those required to initialize a local vector of observations in `U_init_obs_l`. If that routine reads first a full vector of observations (e.g. in `U_init_dim_obs_f`), this vector has to be restricted to the relevant observations for the current local analysis domain. For this operation, one can for example initialize an index array when `U_init_dim_obs_l` is executed. (Which happens before `U_g2l_obs`) |