Changes between Version 4 and Version 5 of PDAF3_interface


Ignore:
Timestamp:
Mar 28, 2025, 7:27:15 PM (4 days ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PDAF3_interface

    v4 v5  
    2121For the more typical assuming that the observation error covariance matrix **R** is diagonal there are only two routines.
    2222
    23 Depending on the fully parallel are flexible implementation choose the routine
     23Generally there is only one routine that can execute all filter method:
     24||= Universal Routine [[BR]]for all filters =|| [wiki:PDAF3_assimilate] ||
     25This routine can be used for both the fully parallel and flexible parallization variants.
     26
     27To enable an easier transition for existing PDAF2 implementations of the flexible parallelization mode there is also the corresponding routine
     28||= Universal Routine [[BR]]for flexible parallel[[BR]](backward compatibility) =|| [wiki:PDAF3_put_state] ||
     29
     30The universal routines include in their interface 3 routines that are only used for local filters. For the particualr case, that one only uses global filters or the LEnKF one can use oe of the routines
    2431||= **Filter** =||= **fully parallel &[[BR]]flexible parallel** =||= **flexible parallel[[BR]](backward-compatibility)** =||
    25 ||= domain local filters[[BR]]ENSRF/EAKF =|| [wiki:PDAF3_assimilate_local] || [wiki:PDAF3_put_state_local] ||
    2632||= global filters[[BR]]LEnKF =|| [wiki:PDAF3_assimilate_global] || [wiki:PDAF3_put_state_global] ||
    2733
    2834**Notes:**
    29  * The routines [wiki:PDAF3_put_state_local] and [wiki:PDAF3_put_state_global] exist for backward-compatibility of the flexible parallelization variant. Starting with PDAF V3.0, we recommend to use [wiki:PDAF3_assimilate_local]  and [wiki:PDAF3_assimilate_global]. See the [wiki:ExternalModelLoop instructions for implementing the flexible parallelization variant] for the updated instructions.
    30  * One can let PDAF select which of the routines to call. The function [wiki:PDAF_localfilter] allows to switch between the routines as is shown in the tutorial implementations and templates.
     35 * The routines `PDAF3_put_state` and `PDAF3_put_state_global` exist for backward-compatibility of the flexible parallelization variant. Starting with PDAF V3.0, we recommend to use `PDAF3_assimilate`. See the [wiki:ExternalModelLoop instructions for implementing the flexible parallelization variant] for the updated instructions.
     36 * One can let PDAF select which of the routines to call. The function [wiki:PDAF_localfilter] allows to select PDAF3_assimilate_global for global filters (`PDAF_localfilter()=0`).
    3137
    3238**For non-diagonal R matrix**
    3339
    34 If the observation error covariance matrix **R** is non-diagonal, one needs to sue different interface routines. These provide direct access to the routines that involved operations with the matrix **R** so that the user can implement these as efficiently as possible given the particular characteristics of **R** in they particular application.
     40If the observation error covariance matrix **R** is non-diagonal, one needs to use different interface routines. These provide direct access to the routines that involve operations with the matrix **R** so that the user can implement these as efficiently as possible given the particular characteristics of **R** in they particular application.
    3541
    3642See the [wiki:OMI_nondiagonal_observation_error_covariance_matrices] for information on using non-diagonal **R**-matrices with OMI. The routines are only partly generic depending on the needed observation-specific routine:
     
    7581
    7682If you like to port your existing code to using PDAF3, the required changes depend on which interface calls you used bfore:
    77 1. If you used global filters with `PDAFomi_assimilate_global` or `PDAFomi_put_state_global`: Just change the call of the analysis routine from `PDAFomi_` to `PDAF3_`.
    78 1. If you used local filters with `PDAFlocalomi_assimilate` or `PDAFlocalomi_put_state`: Change the call of the analysis routine for `PDAFlocalomi_` to `PDAF3_`. In addition move the argument `prepoststep_pdaf` to the correct position
    79 1. If you used the LEnKF with `PDAFomi_assimilate_lenkf` or `PDAFomi_put_state_lenkf`: Change the call of the analysis routine for `PDAFlocalomi_` to `PDAF3_`. In addition move the argument `prepoststep_pdaf` to the correct position. (There is also the new routine `PDAF_set_localize_covar` which allows user to use `PDAF3_assimilate_global` which makes implementing the additional routine `localize_covar_pdafomi` obsolete)
    80 1. If you used local filter with `PDAFomi_assimilate_local` or `PDAFomi_put_state_local`: Change the call of the analysis routine from `PDAFomi_` to `PDAF3_` and follow the [wiki:https://pdaf.awi.de/trac/wiki/PDAFlocal_overview implementation instructions to for implementing the state location with PDAFlocal].
     831. If you only used global filters with `PDAFomi_assimilate_global` or `PDAFomi_put_state_global`: Just change the call of the analysis routine from `PDAFomi_` to `PDAF3_`.
     841. If you used local filters with `PDAFlocalomi_assimilate` or `PDAFlocalomi_put_state`: Change the call of the analysis routine to `PDAF3_assimilate`. In addition move the argument `prepoststep_pdaf` to the correct position.
     851. If you used both `PDAFomi_assimilate_global` and `PDAFlocalomi_assimilate` you can merge the calls to using only `PDAF3_assimilate` by adapting the call to `PDAFlocalomi_assimilate` as described above and then calling this routine for all filters.
     861. If you used the LEnKF with `PDAFomi_assimilate_lenkf` or `PDAFomi_put_state_lenkf`: Change the call of the analysis routine for `PDAFlocalomi_` to `PDAF3_`. In addition move the argument `prepoststep_pdaf` to the correct position. (There is also the new routine `PDAF_set_localize_covar` which allows user to use `PDAF3_assimilate` (or `PDAF3_assimilate_global` which makes implementing the additional routine `localize_covar_pdafomi` obsolete)
     871. If you used local filter with `PDAFomi_assimilate_local` or `PDAFomi_put_state_local`: Change the call of the analysis routine from `PDAFomi_` to `PDAF3_` and follow the [wiki:PDAFlocal_overview implementation instructions to for implementing the state location with PDAFlocal].
    81881. If you used the `PDAF_assimilate_*` or `PDAF_put_state_*` routines of PDAF-1, thus the routines with the full interface you need to follow the genral implementation instructions for PDAF3. The changes will be to use the functionality of PDAF-OMI and, for local filter, of PDAFlocal.