wiki:distribute_state_pdaf

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

--

distribute_state_pdaf

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

The routine distribute_state_pdaf (called U_distribute_state in the PDAF core routines) is a call-back routine that has to be provided by the user. distribute_state_pdaf is called by PDAF_get_state and PDAF_assimilate_X with 'X' being the name of a filter method. The routine is called at the beginning of a forecast phase 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 fill the model fields from the state information contained in the provided state vector.

The interface is the following:

SUBROUTINE distribute_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 initialize the model fields from this information.
  • 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.