wiki:LnDevel

Version 335 (modified by lnerger, 12 hours 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 PDAF V3.1

PDAFomi_set_searchtype

PDAF_set_seedvec

PDAF_get_seedvec

PDAF_get_rndcount

PDAF_assim_flag

PDAF_generate_rndvec

PDAF_generate_rndmat (not new, but yet not documented)

PDAF3_init_forecast (clarification for PDAF_init_forecast)

PDAF3_get_fcst_info

PDAFomi_diag_rmsd (alias for PDAFomi_diag_obs_rmsd)

PDAFomi_diag_crps

PDAF_diag_diffstats

PDAFomi_diag_diffstats

PDAF_parse

PDAF3_init_parallel

PDAF_finalize

PDAF_abort

Version 3.1 - April 16, 2026

This is a feature release with performance improvements and new functionality. All changes are backward compatible. Thus, one can use PDAF 3.1 without any changes to codes existing for PDAF 3.0.

Major changes and additions

  • Performance improvements to PDAFomi_init_dim_obs_l: We once more revisited the observation searcha and strongly revised it.
    • one can select different search types using the routine PDAFomi_set_searchtype).
    • The new default search type is in our experiments between 2 and 5 times faster than the old implementation.
    • We obtan the best performance with a search type using an ordering of the observation along a coordinate direction and subsequent bisection search were we obtain a speedup up to a factor of 30. Since the observations are reordered the assimilation result can be slightly different.
    • if you see in your appplication that the observation search in PDAFomi_init_dim_obs_l takes significiant time, we recommend to test the different search types.
  • Added routines to control and assess random numbers seeds. The routines [wik:PDAF_set_seedvec], PDAF_get_seedvec, PDAF_get_rndcount allow to store and reset the seed for random number generation in PDAF.
  • Added routine to perturb a vector according to a chosen distribution: PDAF_generate_rndvec
  • Added routine PDAF3_init_parallel to let PDAF configure the ensemble parallelization. This moves the communicator splitting from init_parallel_pdaf into PDAF and simplifies the code. This also allows user codes for the offline case and for online coupling for models without parallelization to avoid MPI_init in the user code. Instead, PDAF handles the initialization and finalization of MPI which simplifies the implementation.
  • New function PDAF_assim_flag as alternative to the subroutine PDAF_get_assim_flag. Using the function can simplify the code compared to using the subroutine.
  • New subroutine PDAF_parse. The command line parser is now provided as a PDAF library routine, so that it is no longer required to be a file in the user code.
  • New routine PDAF_abort to abort the parallel program (replacement for the routine abort_parallel in the previous tutorial and template codes)
  • New OMI routine PDAFomi_diag_crps: Compute the CRPS comparing the observations with the observed ensemble mean
  • New diagnostics routine PDAF_diag_diffstats computing statistics for comparing two vectors (correlation, centered RMSD, bias, mean absolute error, variances) analogous to PDAFomi_diag_diffstats of PDAF-OMI.

Nameing Corrections

New for PDAF V3.0 final

PDAFomi_obs_op_extern

PDAFomi_set_name

PDAF3_set_parallel

PDAF3_init

PDAF_iau_set_state_pointer

PDAF_iau_set_ens_pointer

Note: See TracWiki for help on using the wiki.