Changes between Version 55 and Version 56 of ReleaseNotes


Ignore:
Timestamp:
Apr 16, 2026, 3:43:49 PM (12 hours ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ReleaseNotes

    v55 v56  
    11= Release notes for PDAF =
    22
    3 == Version 3.0 - September 1, 2025 ==
     3== Version 3.1 - April 16, 2026 ==
     4
     5This is a feature release with performance improvements and new functionality. All changes are backward compatible within PDAF3. Thus, one can use PDAF 3.1 without any changes to codes existing for PDAF 3.0.
     6
     7
     8**Major changes and additions**
     9
     10- ''Performance improvements to PDAFomi_init_dim_obs_l'': We once more revisited the observation search and strongly revised it adding improved search types.
     11 - one can now select different search types using the routine [wiki:PDAFomi_set_searchtype].
     12 - The new default search type is in our experiments between 2 and 5 times faster than the old implementation. However, the performance improvements is case specific.
     13 - In tests we obtain the best performance with a search type in which PDAF first sorts the observations along a coordinate direction and subsequently performs a 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. Due to this we did not make this the default.
     14 - Recommendation: If you see in your application that the observation search in PDAFomi_init_dim_obs_l takes significant time, we recommend use [wiki:PDAFomi_set_searchtype] and test the different search types to find the optimal one for your application.
     15- Added OMI routine [wiki:PDAFomi_diag_crps]: Compute the CRPS comparing the observations with the observed ensemble mean
     16- Added diagnostics routine [wiki:PDAF_diag_diffstats] to compute statistics for comparing two vectors (correlation, centered RMSD, bias, mean absolute error, variances) analogous to [wiki:PDAFomi_diag_diffstats] of PDAF-OMI.
     17- Added routines to control and assess random numbers seeds. The routines [wiki:PDAF_set_seedvec], [wiki:PDAF_get_seedvec], [wiki:PDAF_get_rndcount] allow one to store and reset the seed for random number generation in PDAF.
     18- Added routine [wiki:PDAF_generate_rndvec] to perturb a vector according to a chosen distribution. This can be used, e.g. to generate perturbed model parameters.
     19- Make routine [wiki:PDAF_generate_rndmat] accessible to user. This routine was previsouly only used internally. It is used to generate matrices representing random rotations, which, when mutiplying with it, preserve the mean state and variances of an ensemble. This can be used to generate perturbed fields, e.g., for an ensemble of perturbed forcings. 
     20- Added routine [wiki:PDAF3_init_parallel] to let PDAF configure the ensemble parallelization. It is used in the routine ''init_parallel_pdaf'' and moves the communicator splitting from this routine into PDAF, which simplifies the code. This also allows PDAF to handle the initialization and finalization of MPI which simplifies the implementation. For the offline coupling and for online coupling for models without parallelization, one does not need to call MPI_init in the user code any more.
     21- 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.
     22- 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.
     23- New routine [wiki:PDAF_abort] to abort the parallel program (replaces the routine abort_parallel in the previous tutorial and template codes)
     24
     25**Improving consistency of subroutine names**
     26- We noticed that the naming could be more consistent for some routines could be improved. (for all, the previous names are still usable)
     27 - [wiki:PDAF3_init_forecast] is the replacement for [wiki:PDAF_init_forecast]
     28 - [wiki:PDAF3_get_fcst_info] is the replacement for [wiki:PDAF_get_fcst_info]
     29 - [wiki:PDAFomi_diag_rmsd] is the replacement for [wiki:PDAFomi_diag_obs_rmsd] (PDAF-OMI handles observations, so 'obs' in the name was redundant)
     30 - [wiki:PDAFomi_diag_diffstats] is the replacement for [wiki:PDAFomi_diag_stats]
     31 - [wiki:PDAF_finalize] is the replacement for [wiki:PDAF_deallocate]. The routine does not only deallocate, but can also finalize the parallelization.
     32
     33The tutorial implementations and templates have been revised to use the new routines. We further included the use of an interface module ''mod_model_pdaf'', which is intended to be the only place to directly include modules of the model. Thus, all user routines include only ''mod_model_pdaf'' instead of different model modules. This leads to a cleaner source code and allows us to use in many cases identical source files for online and offline coupling.
     34----
     35
     36== Previous versions ==
     37
     38=== Version 3.0 - September 1, 2025 ===
    439
    540This is a major release and completes Version 3.0 based on the pre-release 3.0beta. This includes all changes of V3.0beta, which are listed further below.
     
    2863PDAF V3.0 includes the large set of changes from the pre-release PDAF V3.0beta as described below.
    2964
    30 ----
    31 
    32 == Previous versions ==
    3365
    3466=== Version 3.0beta - May 30, 2025 ===