= Offline Mode: Implementation Guide = {{{ #!html

Offline Mode: Implementation Guide

  1. Main page
  2. Adaptation of the parallelization
  3. Initialization of PDAF
  4. Implementation of the analysis step
  5. Memory and timing information
  6. Ensemble Generation
  7. Ensemble Diagnostics
  8. Auxiliary routines
  9. Filter-specific options
}}} This page contains the implementation guide for the offline mode of PDAF. The [ImplementationGuide implementation guide for the online mode], which uses a direct coupling of the model and PDAF is provided on a separate page. The differences between the online and offline modes is described on the page on the [GeneralImplementationConcept Implementation concept of PDAF]. == The implementation of PDAF in offline mode == For the offline mode of data assimilation, the ensemble integrations by the numerical model are executed separately from the assimilation program, which computes the filter analysis step. Thus, the model code can remain unchanged in the offline mode. The calls to functions of PDAF are only contained in the assimilation program. The implementation of the assimilation program for PDAF in offline mode can be performed in several steps. A possible sequence is the following: 1. [OfflineAdaptParallelization Adaptation of the parallelization] 2. [OfflineInitPdaf Initialization of PDAF and the ensemble by PDAF_init] 3. [OfflineImplementationofAnalysisStep Implementation of the analysis step] 4. [OfflineAddingMemoryandTimingInformation Adding memory and timing information] The implementation steps are described on the pages linked above. An example of the implementation is given in the test suite provided with PDAF with the routines in `testsuite/main/` and `testsuite/offline_1D/`. It should be possible to base you own implementation on this example by adding reading and writing routines for model files as well as adding the user-supplied routines for the handling of observations. Several routines that contain model and observation specific operations are called by PDAF through its defined interface. These routines need to be implemented by the user. The operations in all these routines are rather elementary like filling the array of the ensemble of model states from model output files and the initialization of the vector of observations. The example mentioned above also includes examples for these routines. In addition, the directory `templates/` contains template implementations of the routines that can be used as a basis for new implementations. An overview of the available options for each filter that can be specified when PDAF is initialized is given on the [wiki:AvailableOptionsforInitPDAF overview page on options]. == Generating initial ensembles == To perform ensemble data assimilation one has to create an initial ensemble which is then used in the data assimilation process. There are various different ways to generate an ensemble (like random picking of model states, breeding, short-term integrations of perturbed model fields, second-order exact sampling from EOFs). PDAF provides routines to use snapshots from a model integration to first compute EOFs (empirical orthogonal functions) and then to use the EOFs to perform a constrained random transformation to obtain ensemble perturbations to which a central state (i.e. ensemble mean) is added. This second-order exact sampling (Pham, 2001) showed good performance in our own data assimilation applications. The ensemble generation is described on the separate page: 1. [EnsembleGeneration Ensemble Generation]