wiki:collect_state_pdaf

Version 1 (modified by lnerger, 10 years ago) (diff)

--

collect_state_pdaf

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

The routine collect_state_pdaf (called U_collect_state in the PDAF core routines) is a call-back routine that has to be provided by the user. collect_state_pdaf is called by PDAF_put_state_X or PDAF_assimilate_X with 'X' being the name of a filter method. The routine is called at the end of a forecast once for each ensemble member and as many times as there are states to be integrated by a model task. The purpose of the routine is to write the information from the model fields into the state vector that is used by PDAF to compute the analysis step.

The interface is the following:

SUBROUTINE collect_state_pdaf(dim_p, state_p)

with

  • dim_p : integer, intent(in)
    Size of the provided state vector
  • state_p: real, intent(inout), dimension(dim_p)
    State vector for process-local model sub-domain

Notes:

  • When the routine is called a state vector state_p and its size dim_p are provided. As the user has defined how the model fields are stored in the state vector, one can fill state vector from the model fields.
  • If the model is not parallelized, state_p will contain a full state vector. If the model is parallelized using domain decomposition, state_p will contain the part of the state vector that corresponds to the model sub-domain for the calling process.
  • The operations performed in distribute_state_pdaf and collect_state_pdaf are the inverse operations of each other.
  • The routine is executed by all processes that belong to model tasks.

Some hints:

  • If the state vector does not include all model fields, it can be useful to keep a separate array to store those additional fields. This array has to be kept separate from PDAF, but can be defined using a module like mod_assimilation.