Changes between Version 6 and Version 7 of PDAF3_interface


Ignore:
Timestamp:
Mar 30, 2025, 8:42:41 AM (3 days ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PDAF3_interface

    v6 v7  
    77
    88The PDAF3 interface was introduced with PDAF V3.0 to provide a consistent interface for all DA methods.
    9 The PDAF3 interfaces utilizes the functionality of PDAF-OMI (Obervation Module Interface) and PDAFlocal for easy state vector localization.
     9The PDAF3 interfaces utilizes the functionality of PDAF-OMI (Obervation Module Interface) and PDAFlocal for easy state vector localization. Using the PDAF3 interface is recommended for new implementations.
    1010
    11 == Routines to perform the analysis step ==
     11For existing implementations from PDAF V2.x, there are cases where the PDAF3 interface can be used without much changes. Generally the routines to be called for the analysis step are analogous to those present in PDAF2.3. Here PDAFomi_* routines used the functionality of PDAFomi and PDAFlocalomi_* routines used PDAF-OMI and PDAFlocal for local filter methods. We describe the necessary porting steps in the section on [wiki:PDAF3_interface?PortingtoPDAF3 Porting to the PDAF3 interface].
    1212
    13 Generally the routines to be called for the analysis step are analogous to those present in PDAF2.3. Here PDAFomi_* routines used the functionality of PDAFomi and PDAFlocalomi_* routines used PDAF-OMI and PDAFlocal for local filter methods. If one used such routines one an easilty port to the PDAF3 interface. For new implemenetation we recommend to use the PDAF3 interfaces right away.
     13Here we provide an overview of the routine names and the links to the interface descriptions. We distinguish the cases that the observation error covariance matrix **R** is diagonal from those that **R** is non-diagonal, i.e. the case of correlated observation errors.
    1414
    15 Here we provide an overview of the routine names and the links to the interface descriptions.
     15== Analysis step with diagonal R matrix ==
    1616
    17 === Ensemble filters ===
     17Assuming that the observation error covariance matrix **R** is diagonal is the more common case. The assumption is that observation errors are uncorrelated. In this case, only the observation error variances need to be considered.
    1818
    19 **For diagonal R matrix**
     19=== Ensemble filters and smoothers ===
    2020
    21 For the more typical assuming that the observation error covariance matrix **R** is diagonal there are only two routines.
    2221
    23 Generally there is only one routine that can execute all filter method:
    24 ||= Universal Routine [[BR]]for all filters =|| [wiki:PDAF3_assimilate] ||
    25 This routine can be used for both the fully parallel and flexible parallization variants.
     22For the more typical assuming that the observation error covariance matrix **R** is diagonal there is one universal routine for online-coupled programs and one for offline-coupled (file-based) programs:
    2623
    27 To enable an easier transition for existing PDAF2 implementations of the flexible parallelization mode to PDAF3, there is also the corresponding routine
     24||= =||= online coupled =||= offline coupled =||
     25||= Universal Routine [[BR]]for all filters =|| [wiki:PDAF3_assimilate] || [wiki:PDAF3_put_state] ||
     26For the online-coupled case, `PDAF3_assimilate` can be used for both the fully parallel and flexible parallization variants.
     27
     28**Routines for particular cases**
     29
     30To enable an easier transition for existing PDAF2 implementations of the flexible parallelization mode to the PDAF3interface, one can use the routine
    2831||= Universal Routine [[BR]]for flexible parallel[[BR]](backward compatibility) =|| [wiki:PDAF3_put_state] ||
    2932
    30 The 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
     33The universal routines include in their interface three routines related to localization. These are only executed for local filters. For the particualr case, that one only uses global filters or the LEnKF one can use one of the routines
    3134||= **Filter** =||= **fully parallel &[[BR]]flexible parallel** =||= **flexible parallel[[BR]](backward-compatibility)** =||
    3235||= global filters[[BR]]LEnKF =|| [wiki:PDAF3_assimilate_global] || [wiki:PDAF3_put_state_global] ||
     
    3437To enable an easier transition for existing PDAF2 implementations using the LEnKF to PDAF3, there is also the corresponding routine
    3538||= Specific LEnKF routine[[BR]](backward compatibility) =|| [wiki:PDAF3_assimilate_lenkf] ||
     39
    3640There is analogously the routine [wiki:PDAF3_put_state_lenkf]. However, using the new routine [wiki:PDAFomi_set_localize_covar] in `init_dim_obs_pdafomi` in each observation module one can switch to using the new universal routine.
    3741
    3842**Notes:**
    39  * 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.
    40  * 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`).
     43 * The 'put_state' routines exist for backward-compatibility of the flexible parallelization variant. Starting with PDAF V3.0, we recommend to use `PDAF3_assimilate` also for the  flexible parallelization variant. See the [wiki:ExternalModelLoop instructions for implementing the flexible parallelization variant] for the updated instructions.
     44 * 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`).
     45
     46=== 3D-Var ===
     47
     48Only En3DVar and hybrid 3D-Var use a local filter. The routines are the following.
     49
     50For 3D-Var we distinguish routines for parameterized 3D-Var, ensemble 3D-Var and hybrid 3D-Var.
     51
     52||= **Method** =||= online coupled =||= offline coupled =||
     53||= 3DVar =|| [wiki:PDAF3_assimilate_3dvar] || [wiki:PDAF3_put_state_3dvar] ||
     54||= En3DVar with ESTKF or LESTKF=|| [wiki:PDAF3_assimilate_en3dvar] || [wiki:PDAF3_put_state_en3dvar] ||
     55||= hyb3DVar with ESTKF or LESTKF =|| [wiki:PDAF3_assimilate_hyb3dvar] || [wiki:PDAF3_put_state_hyb3dvar] ||
     56
     57The routines for En3D-Var and hybrid 3D-Var are universal an can be used to with either the LESTKF or the global ESTKF depending on the chosen subtype.
     58
     59||= En3DVar with LESTKF=|| [wiki:PDAF3_assimilate_en3dvar_lestkf] || [wiki:PDAF3_put_state_en3dvar_lestkf] ||
     60||= Hyb3DVar with ESTKF =|| [wiki:PDAF3_assimilate_hyb3dvar_lestkf] || [wiki:PDAF3_put_state_hyb3dvar_lestkf] ||
     61
     62
     63
     64== Analysis step with non-diagonal R matrix ==
     65
     66=== Ensemble filters ===
    4167
    4268**For non-diagonal R matrix**
     
    5682 * There is no routine for the ENSRF/EAKF for nondiagonal **R**, because these filters assume that a diagonal **R** matrix exists.
    5783
     84
     85
     86
    5887=== 3D-Var ===
    59 
    60 Only En3DVar and hybrid 3D-Var use a local filter. The routines are the following.
    61 
    62 **for diagonal R matrix**
    63 
    64 ||= **Method** =||= **fully parallel &[[BR]]flexible parallel** =||= **flexible parallel[[BR]](backward-compatibility)** =||
    65 ||= 3DVar =|| [wiki:PDAF3_assimilate_3dvar] || [wiki:PDAF3_put_state_3dvar] ||
    66 ||= En3DVar with ESTKF=|| [wiki:PDAF3_assimilate_en3dvar_estkf] || [wiki:PDAF3_put_state_en3dvar_estkf] ||
    67 ||= Hyb3DVar with ESTKF =|| [wiki:PDAF3_assimilate_hyb3dvar_estkf] || [wiki:PDAF3_put_state_hyb3dvar_estkf] ||
    68 ||= En3DVar with LESTKF=|| [wiki:PDAF3_assimilate_en3dvar_lestkf] || [wiki:PDAF3_put_state_en3dvar_lestkf] ||
    69 ||= Hyb3DVar with ESTKF =|| [wiki:PDAF3_assimilate_hyb3dvar_lestkf] || [wiki:PDAF3_put_state_hyb3dvar_lestkf] ||
    7088
    7189