wiki:U_g2l_obs

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

--

U_g2l_obs

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

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. The routine is used with all filter algorithms using domain-localization (LSEIK, LETKF, LESTKF) and is independent of the particular algorithm. 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.

The interface is the following:

SUBROUTINE U_g2l_obs(domain_p, step, dim_obs_f, dim_obs_l, mstate_f, mstate_l)

with

  • domain_p : integer, intent(in)
    Index of current local analysis domain
  • step : integer, intent(in)
    Current time step
  • dim_obs_f : integer, intent(in)
    Size of full observation vector for model sub-domain
  • dim_obs_l : integer, intent(in)
    Size of observation vector for local analysis domain
  • mstate_f : integer, intent(in), dimension(dim_p)
    Full observation vector for model sub-domain
  • mstate_l : integer, intent(out), dimension(dim_l)
    Observation vector for local analysis domain

Hints:

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