Changes between Version 17 and Version 18 of PDAF3_interface
- Timestamp:
- Sep 1, 2025, 8:41:26 AM (23 hours ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
PDAF3_interface
v17 v18 17 17 18 18 The different parts of this page are 19 19 20 * [wiki:PDAF3_interface?AnalysisstepwithdiagonalRmatrix Analysis step with diagonal R matrix] 20 21 * [wiki:PDAF3_interface?Analysisstepwithnon-diagonalRmatrix Analysis step with non-diagonal R matrix] 21 22 * [wiki:PDAF3_interface?PortingtothePDAF3interface Porting to the PDAF3 interface] 23 24 == Initialization == 25 26 The PDAF3 interface separates the initialization of parallelization variables from the actual initialization of PDAF. 27 28 === Provided parallelization variables to PDAF === 29 30 In the usual code structure of an assimilation program, the routine `init_parallel_pdaf` initializes the parallelization as part of the user code. With the PDAF3 interface one provides these variables to PDAF by calling at the end of `init_parallel_pdaf` the routine 31 32 ||= Universal routine =|| [wiki:PDAF3_set_parallel]|| 33 34 Note: If the assimilation program is only used with OpenMP parallelization, but not the MPI parallelization, one can omit calling `init_parallel_pdaf`and `PDAF3_set_parallel`. 35 36 === Initializing PDAF === 37 38 The actual initialization of PDAF is done by calling the routine 39 40 ||= Universal routine =|| [wiki:PDAF3_init]|| 41 42 Compared to the routine [wiki:PDAF_init] from previous PDAF versions, `PDAF3_init` has a smaller number of arguments becaus e it does not include the parallelization variables. 43 22 44 23 45 == Analysis step with diagonal R matrix == … … 142 164 Overview of old and new routines (the relations hold analogously for 'put_state' routines): 143 165 ||= old PDAF2 =||= new PDAF3 =||= possible with changes =|| 166 || PDAF_init || PDAF3_set_parallel & PDAF3_init || || 144 167 || PDAFlocalomi_assimilate || PDAF3_assimilate || 145 168 || PDAFomi_assimilate_local || PDAF3_assimilate_local || PDAF3_assimilate || … … 149 172 150 173 Explanations: 174 1. For the initialization: insert `PDAF3_set_parallel` into `init_parallel_pdaf`. Replace `PDAF_init` by `PDAF3_init` and adapt argument list. Clean up code by removing variables that are no longer needed from 'only' list of 'use mod_parallel_pdaf' in `init_pdaf`. 151 175 1. If you used local filters with `PDAFlocalomi_assimilate` or `PDAFlocalomi_put_state`:[[BR]] Change the call of the analysis routine to `PDAF3_assimilate`. In addition move the argument `prepoststep_pdaf` to the correct position. 152 176 1. If you used local filters with `PDAFomi_assimilate_local` or `PDAFomi_put_state_local`:[[BR]] Change the call of the analysis routine from `PDAFomi_` to `PDAF3_`. In addition move the argument `prepoststep_pdaf` to the correct position. … … 163 187 Overview of old and new routines (the relations hold analogously for 'put_state' routines): 164 188 ||= old PDAF2 =||= new PDAF3 =||= possible with changes =|| 189 || PDAF_init || PDAF3_set_parallel & PDAF3_init || || 165 190 || PDAFomi_assimilate_3dvar || PDAF3_assimilate_3dvar || PDAF3_assimilate_3dvar_all || 166 191 || PDAFomi_assimilate_en3dvar_lestkf || PDAF3_assimilate_en3dvar_lestkf || PDAF3_assimilate_3dvar_all || … … 171 196 Explanations: 172 197 198 1. For the initialization: insert `PDAF3_set_parallel` into `init_parallel_pdaf`. Replace `PDAF_init` by `PDAF3_init` and adapt argument list. Clean up code by removing variables that are no longer needed from 'only' list of 'use mod_parallel_pdaf' in `init_pdaf`. 173 199 1. If you used the parameterized 3D-Var and also either or both of the ensemble 3D-Var and hybrid 3D-Var with PDAFlocalomi routines:[[BR]] Change the call `PDAFlocalomi_assimilate_hy3dvar_lestkf` to `PDAF3_assimilate_3dvar_all` and call this routine for all 3D-Var methods. 174 200 1. If you used only the parameterized 3D-Var using `PDAFomi_assimilate_3dvar` or `PDAFomi_put_state_3dvar`:[[BR]] Just change the call of the analysis routine from `PDAFomi_` to `PDAF3_`.