wiki:GeneralImplementationConcept

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

--

General Implementation Concept of PDAF

Logical separation of the assimilation system

PDAF bases on the localization separation of the assimilation system in 3 parts. These are depicted in figure 1. They are

  • Model:
    The numerical model provides the initialization and integration of all model fields. It defines the dynamics of the system that is simulated.
  • Observations:
    The observations of the system provide additional information.
  • Filter:
    The filter algorithms combine the model and observational information.

Generally,a ll three components are independent. In particular, the filters are implemented in the core part of PDAF. To combine the model and observational information one has to define the relation of the observations to the models fields (For example, model fields might be directly observed or the observed quantities are more complex functions of the model fields? In addition, the observations might be available on grid points. If not, interpolation is required.) In addition one has to define the relation of the state vector that is considered in the filter algorithms to the model fields. These relations are defined in separate routines that are supplied to the assimilation system by the user. These routines are called through a well-defined standard interface. To ease the implementation complexity, these user-defined routines can be implemented like routines of the model code. Thus, if a user has experience with the model, it should be rather easy to extend it by the routines required for the assimilation system.

Attaching PDAF to a model

The assimilation system is built by adding call to PDAF-routines to the general part of the model code. As only minimal changes to the model code are required, we refer to this as "attaching" PDAF to the model.

The general concept is depicted in figure 2. The left hand side shows a typical abstract structure of a numerical model. When the program is executed, the following steps are performed:

  1. The model is initialized. Thus arrays for the model fields are allocated and filled with initial fields. Thus, the model grid is build up virtually in the program.
  2. After the initialization the time stepping loop is performed. Here the model fields are propagated through time.
  3. When the integration of the model fields is completed after a defined number of time steps, various post-processing operations are performed. Then the program stops.

The right hand side of Figure 2 shows the extensions required for the assimilation system (marked yellow):

  • Close to the start of the model code the routine init_parallel_pdaf as added to the code. If the model itself is parallelized the correct location is directly after the initialization of the parallelization in the model code. init_parallel_pdaf creates the parallel environment that allows to perform several time stepping loops at the same time.
  • After the initialization part of the model,

the core routines of PDAF remain unchanged. The data assimilation system is controlled by the user-supplied routines. Accordingly, the driver functionality remains in the model part of the program. In addition, the user-supplied routines can be implemented analogously to the model code, i.e. by using Fortran common blocks or modules of the model code. This simplifies the implementation of the user-supplied routines knowing about the particularities of their model.