Version 166 (modified by lnerger, 10 months ago) (diff)


Development page

Please only use the pages that are directly linked from the start page and within the Implementation Guide

Pages linked here are under development

NEW for 1.20
























Signifcant changes influencing the compatibility with previous versions of PDAF

  • We modernized the MPI parallelization. With these changes the MPI stub library that we provided before, and which allowed to compile and run PDAF without an MPI library, is no longer usable. Thus, PDAF does not require an MPI library. This should not have an impact on most users given that today MPI is standard on all cluster computers and an MPI library is available and can by easily installed on virtually any Linux, MacOS or Windows system.
  • We renamed the PDAF library files with prefix PDAF-D_ to the prefix PDAF_ to ensure a consistent naming of the files. If you don't use the Makefile provided in the PDAF package, you likely need to adapt to this change.
  • The observation generation opention (GENOBS) was moved from filtertype=11 to filtertype=100

Version 2.0 - December XXXXX, 2021


  • Added 3D-Var methods
    • variants: 3D-Var with parameterized covariances, 3D ensemble var (ensemble covariances) and hybrid-var (combined parameterized and ensemble covariances); ensemble perturbations can be transformed using the global ESTKF or the local LESTKF
    • Added tutorials for 3D-Var methods (codes and slide set with explanations)
    • Added template files for 3D-Var methods
  • Added models from Lorenz (2005): model II (state with averaging), model III (two-scale); both with assimilation fully implemented
  • Added tutoral code showing a multivariate implementation with two model fields (/tutorial/online_2D_serialmodel_2fields). The tutorial demonstrates an efficient way to handle multiple model fields
  • Added possibility to reset the MPI world communicator in which PDAF operates (routine PDAF_set_comm_pdaf). This ensures compatibility with e.g. OI-servers that use processes separate from those used by the model integration.
  • Added possibility to let the user force that the analysis step is computed at the next call to PDAF_assimilate/PDAF_put_state (routine PDAF_force_analysis)
  • Added possibility to overwrite PDAF's ensemble member counting in the flexible parallelization variant and force execution of the analysis (PDAF_set_memberid)
  • Added routine to reset the value of the forgetting factor. Can be applied during the analysis step, e.g. to give each local analysis domain a different inflation value (PDAF_reset_forget)
  • Added diagnostic routine to compute the continuous ranked probability score, CRPS (PDAF_diag_crps)
  • Code revisions:
    • Renaming of routines: prefix PDAF-D_ replaced by PDAF_
    • modernized use of MPI: now we use 'USE MPI' instead of 'include mpif.h'. This solves the issue of gfortran 10, which claimed argument mismatches
    • modernized use of netCDF (with 'use netcdf' instead of 'include'). This also resolves the issue of gfortran 10
    • observation generation (GENOBS) moved to filtertype=100
    • PDAF_sampleens now works without prior call to PDAF_init (removed memory counting)
    • removed stub PDAF library since it is not compatible with 'USE mpi'. Thus, compiling PDAF now requires a MPI library to be installed
  • PDAF-OMI related
    • Calling deallocate_obs_pdafomi is no longer required
    • Model bindings for MITgcm and AWI-CM revised for using PDAF-OMI
    • all model implementations (Lorenz models) now implemented using PDAF-OMI
    • Added OMI adjoint observation operators for use with 3D-Var methods
  • Bug corrections:
    • Correction of initialization of gcoords in tutorial for obs_C_pdafomi (observations with linear interpolation)
    • For compatibility with the Cray compiler, all .mod files of the PDAF library are copied to /include
    • resolved issue of gfortran-10 complaining about argument mismatch by 'USE mpi'