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


Features and Requirements

  • PDAF is implemented in Fortran90. However, the standard interface also supports models that are written in C or C++.
  • The parallelization uses the MPI (Message Passing Interface) standard.
  • The core routines are fully independent of the model code. They can be compiled seperately and can be used as a library.

Filter algorithms

PDAF provides the following filter algorithms for data assimilation. All filters are fully implemented, optimized and parallelized.

Local filters:

  • LSEIK (Nerger et al. (2006))
  • LETKF (Hunt et al. (2007))

Global filters:

  • SEIK (Pham et al. (1998a, 2001), the implemented variant is more detailed described by Nerger et al. (2005))
  • ETKF (The implementation follows Hunt et al. (2007) but without localization)
  • SEEK (The original formulation by Pham et al. (1998)
  • EnKF (The classical formulation with perturbed observations by Evensen (1994)

Simplifying the implementation

PDAF simplifies the implementation of data assimilation systems using existing model code by the following:

  1. PDAF provides fully implemented, parallelized, and optimized ensemble-based algorithms for data assimilation. Currently, these are ensemble-based Kalman filters like the LSEIK, LETKF, and EnKF methods.
  2. PDAF is attached to the model source code by minimal changes to the code. These changes only concern the general part of the code, but not the numerics of the model. In addition, a small set of routines is required that are specific to the model or the observations to be assimilated. These routines can be implemented like routines of the model.
  3. PDAF is called through a well-defined standard interface. This allows, for example, to switch between the LSEIK and LETKF methods without additional coding.
  4. PDAF provides parallelization support for the data assimilation system. If your numerical model is already parallelized, PDAF enables the data assimilation system to run several model tasks in parallel within a single executable. However, PDAF can also be used without parallelization, for example to test small systems.
  5. PDAF does not require that your model can be called as a subroutine. Rather PDAF is added to the model and the formed data assimilation system can be executed pretty much like the model-program would without data assimilation.


  • Compiler
    To compile PDAF a Fortran compiler is required. PDAF has been tested with a variety of compilers like gfortran, ifort, xlf, pgf90.
    The BLAS and LAPACK libraries are used by PDAF. For Linux there are usually packages with these libraries. With commercial compilers the functions are usually provided by optimized libraries (like MKL, ESSL).
  • MPI
    If the assimilation program should be executed with parallelization, an MPI library is required (e.g. OpenMPI). The assimilation program can also be compiler and run without parallelization. For this, PDAF provides functions that mimic MPI operations for a single process.
  • make
    PDAF provides Makefile configurations for different compilers and operating systems.

Test machines

PDAF has been tested on various machines with different compilers and MPI libraries like

  • IBM p575 with Power6 processors, AIX6.1, XLF compiler 12.1, ESSL library, POE parallel environment
  • IBM BladeCenter with Power6 processors, AIX5.3, XLF compiler 10.1, ESSL library, POE parallel environment
  • Linux Desktop machine, OpenSuse 11.1, ifort compiler 11.1
  • Linux Desktop machine, OpenSuse 11.1, gfortran
  • NEC SX8R
  • Notebook Apple MacBook, gfortran
  • SGI Altix ICE, SLES 10 operating system, ifort compiler 11.1, MVAPICH2
  • Cray XD1, PG Fortran compiler, MPICH