Changes between Version 17 and Version 18 of PDAF3_interface


Ignore:
Timestamp:
Sep 1, 2025, 8:41:26 AM (23 hours ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PDAF3_interface

    v17 v18  
    1717
    1818The different parts of this page are
     19
    1920* [wiki:PDAF3_interface?AnalysisstepwithdiagonalRmatrix Analysis step with diagonal R matrix]
    2021* [wiki:PDAF3_interface?Analysisstepwithnon-diagonalRmatrix  Analysis step with non-diagonal R matrix]
    2122* [wiki:PDAF3_interface?PortingtothePDAF3interface Porting to the PDAF3 interface]
     23
     24== Initialization ==
     25
     26The PDAF3 interface separates the initialization of parallelization variables from the actual initialization of PDAF.
     27
     28=== Provided parallelization variables to PDAF ===
     29
     30In 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
     34Note: 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
     38The actual initialization of PDAF is done by calling the routine
     39
     40||= Universal routine =|| [wiki:PDAF3_init]||
     41
     42Compared 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
    2244
    2345== Analysis step with diagonal R matrix ==
     
    142164Overview of old and new routines (the relations hold analogously for 'put_state' routines):
    143165||= old PDAF2 =||= new PDAF3 =||= possible with changes =||
     166|| PDAF_init || PDAF3_set_parallel & PDAF3_init || ||
    144167|| PDAFlocalomi_assimilate || PDAF3_assimilate ||
    145168|| PDAFomi_assimilate_local || PDAF3_assimilate_local || PDAF3_assimilate ||
     
    149172
    150173Explanations:
     1741. 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`.
    1511751. 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.
    1521761. 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.
     
    163187Overview of old and new routines (the relations hold analogously for 'put_state' routines):
    164188||= old PDAF2 =||= new PDAF3 =||= possible with changes =||
     189|| PDAF_init || PDAF3_set_parallel & PDAF3_init || ||
    165190|| PDAFomi_assimilate_3dvar || PDAF3_assimilate_3dvar || PDAF3_assimilate_3dvar_all ||
    166191|| PDAFomi_assimilate_en3dvar_lestkf || PDAF3_assimilate_en3dvar_lestkf || PDAF3_assimilate_3dvar_all ||
     
    171196Explanations:
    172197
     1981. 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`.
    1731991. 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.
    1742001. 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_`.