Changes between Version 334 and Version 335 of LnDevel


Ignore:
Timestamp:
Apr 16, 2026, 11:19:02 AM (15 hours ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • LnDevel

    v334 v335  
    4343
    4444
     45== Version 3.1 - April 16, 2026 ==
     46
     47This 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.
     48
     49
     50**Major changes and additions**
     51
     52- ''Performance improvements to PDAFomi_init_dim_obs_l'': We once more revisited the observation searcha and strongly revised it.
     53 - one can select different search types using the routine [wiki:PDAFomi_set_searchtype]).
     54 - The new default search type is in our experiments between 2 and 5 times faster than the old implementation.
     55 - 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.
     56 - 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.
     57- Added routines to control and assess random numbers seeds. The routines [wik:PDAF_set_seedvec], [wiki:PDAF_get_seedvec], [wiki:PDAF_get_rndcount] allow to store and reset the seed for random number generation in PDAF.
     58- Added routine to perturb a vector according to a chosen distribution: [wiki:PDAF_generate_rndvec]
     59- Added routine [wiki: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.
     60- New function [wiki:PDAF_assim_flag] as alternative to the subroutine [wiki:PDAF_get_assim_flag]. Using the function can simplify the code compared to using the subroutine.
     61- New subroutine [wiki: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.
     62- New routine [wiki:PDAF_abort] to abort the parallel program (replacement for the routine abort_parallel in the previous tutorial and template codes)
     63- New OMI routine [wiki:PDAFomi_diag_crps]: Compute the CRPS comparing the observations with the observed ensemble mean
     64- New diagnostics routine [wiki:PDAF_diag_diffstats] computing statistics for comparing two vectors (correlation, centered RMSD, bias, mean absolute error, variances) analogous to [wiki:PDAFomi_diag_diffstats] of PDAF-OMI.
     65
     66**Nameing Corrections**
     67- We noticed that the naming could be more consistent for some routines could be improved. This mostly holds for routines introduced with PDAF 3.0. (for all, the previous names are still usable)
     68 - [wiki:PDAF3_init_forecast] is the replacement for [wiki:PDAF_init_forecast],
     69 - [wiki:PDAF3_get_fcst_info] is the replacement for [wiki:PDAF_get_fcst_info]
     70 - [wiki:PDAFomi_diag_rmsd] is the replacement for [wiki:PDAFomi_diag_obs_rmsd] (PDAF-OMI handles observations, so 'obs' in the name was redundant)
     71 - [wiki:PDAFomi_diag_diffstats] is the replacement for [wiki:PDAFomi_diag_stats]
     72 - [wiki:PDAF_finalize] is the replacement for [wiki:PDAF_deallocate]. Because the routine does not only deallocate, but can also finalize the parallelization.
     73
     74
    4575 ''' New for PDAF V3.0 final'''
    4676