Changes between Initial Version and Version 1 of U_obs_op_f


Ignore:
Timestamp:
Jan 21, 2016, 2:05:05 PM (9 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • U_obs_op_f

    v1 v1  
     1= U_obs_op_f =
     2
     3The page document the user-supplied call-back routine `U_obs_op_f`.
     4
     5The routine `U_obs_op_f` 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_f_pdaf`, but in the full interface, the user can choose the name of the routine.
     6The routine is used with all filter algorithms using domain-localization (LSEIK, LETKF, LESTKF) and is independent of the particular algorithm.
     7The routine is called during the analysis step, before the loop over the local analysis domain is entered. It purpose is to perform the operation of the observation operator acting on a state vector, which is provided as input argument. The observed state corresponding to the 'full' observation vector has to be returned.
     8
     9The interface is the following:
     10{{{
     11SUBROUTINE U_obs_op_f(step, dim_p, dim_obs_f, state_p, m_state_f)
     12}}}
     13with
     14 * `step` : `integer, intent(in)`[[BR]] Current time step
     15 * `dim_p` : `integer, intent(in)`[[BR]] Size of state vector (local part in case of parallel decomposed state)
     16 * `dim_obs_f` : `integer, intent(in)`[[BR]] Size of full observation vector
     17 * `state_p` : `real, intent(in), dimension(dim_p)`[[BR]] Model state vector
     18 * `m_state_f` : `real, intent(out), dimension(dim_obs_f)`[[BR]] Full observed state (i.e. the result after applying the observation operator to `state_p`)
     19
     20Hint:
     21 * The routine is similar to `init_dim_obs` used for the global filters. However, with a domain-decomposed model `m_state_f` will contain parts of the state vector from neighboring model sub-domains. To make these parts accessible, some parallel communication will be necessary (The state information for a neighboring model sub-domain will be in the memory of the process that handles that sub-domain). The example implementation in `testsuite/dummymodel_1d` uses the function `MPI_AllGatherV` for this communication.