Changes between Version 2 and Version 3 of AddFilterAlgorithm_PDAF3
- Timestamp:
- Jun 4, 2025, 8:20:06 PM (6 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AddFilterAlgorithm_PDAF3
v2 v3 40 40 When `PDAF_init` is called, the DA method is chosen by its ID number or its name parameter (see [wiki:AvailableOptionsforInitPDAF page on specific options of DA method]). Internally to PDAF, each DA method is identified by a string that is defined in the module `PDAF_DA` in `PDAF_da.F90`. The interface routines have a very simple structure. In general, they select the method-specific routine based on the string identifying the filters. 41 41 42 || When a DA method is added, a line for the corresponding method-specific routine has to be inserted to each of the interface routines. One can also remove a DA method from PDAF by deleting the corresponding lines form the internal interface routines. || 43 44 == Modules of a DA method == 45 46 47 48 === Calls by `PDAFomi_assimilate_local` or `PDAFomi_assimilate_global` === 42 || When adding a DA method, a line for the corresponding method-specific routine has to be inserted to each of the interface routines in `PDAF_utils_filters.F90`. Further, one has to add to `PDAF_da.F90` a line for the DA method declaring its name in the form `PDAF_DA_X` and a correspondig index. || 43 44 == Internal structure of a DA method's code == 45 46 === Modules of a DA method === 47 48 Each DA method in PDAF consist of 5 standard modules. These are 49 50 51 52 53 === Calls structure for analysis step === 49 54 50 55 The routine `PDAFomi_assimilate_local`, for local ensemble filters and smoothers, or analogously the other available `PDAF_omi_assimilate` routines, like for global ensemble filters and smoothers (`PDAFomi_assimilate_global`) or the different variants of 3D-Var (`PDAFomi_assimilate_*3dvar*`) are called directly from the model code. These are used for the fully-parallel implementation variant. For the flexible-parallelization variant the analogous routines `PDAFomi_put_state_*` are provided. These are generic routines which internally call the method-specific routine (PDAF_assimilate_X or PDAF_put_state_X) according to the chosen filter which then calls the actual update routine (PDAF_X_update). This call structure is explained in Figure 2.