Changes between Version 12 and Version 13 of ImplementAnalysis_3DEnVar_classical


Ignore:
Timestamp:
Jun 4, 2025, 12:05:24 PM (2 days ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ImplementAnalysis_3DEnVar_classical

    v12 v13  
    4242== Overview ==
    4343
    44 With Version 2.0 with introduced 3D variational assimilation methods to PDAF. There are genenerally three different variants: parameterized 3D-Var, 3D Ensemble Var, and hybrid (parameterized + ensemble) 3D-Var.
    45 
    46 This page describes the implementation of the analysis step for the 3D Ensemble Var in the classical way (without using PDAF-OMI).
     44PDAF provides genenerally three different variants: parameterized 3D-Var, 3D Ensemble Var, and hybrid (parameterized + ensemble) 3D-Var. These methods were introduced with PDAF V2.0.
     45
     46This page describes the implementation of the analysis step for the 3D Ensemble Var using PDAF's full interface (without using PDAF-OMI).
    4747
    4848For the analysis step of 3D-Var we need different operations related to the observations. These operations are requested by PDAF by calling user-supplied routines. Intentionally, the operations are split into separate routines in order to keep the operations rather elementary as this procedure should simplify the implementation. The names of the required routines are specified in the call to the routine `PDAF_assimilate_3dvar` in the fully-parallel implementation (or `PDAF_put_state_3dvar` for the 'flexible' implementation) described below. With regard to the parallelization, all these routines (except `U_collect_state`) are executed by the filter processes (`filterpe=.true.`) only.
     
    132132
    133133
     134=== `PDAF_assim_offline_en3dvar_lestkf` ===
     135
     136This routine is used to perform the analysis step for the offline mode of PDAF.
     137The interface of the routine is identical with that of the 'assimilate'-routine, except that the user-supplied routines `U_distribute_state`, `U_collect_state` and `U_next_observation` are missing.
     138
     139The 'assim_offline' routines were introduced with PDAF V3.0 to simplify the [wiki:OfflineImplementationGuide_PDAF3 implementation of the offline mode].
     140
     141The interface is:
     142{{{
     143  SUBROUTINE PDAF_assim_offline_en3dvar_lestkf( &
     144                                 U_init_dim_obs, U_obs_op, U_init_obs, U_prodRinvA, &
     145                                 U_cvt_ens, U_cvt_adj_ens, U_obs_op_lin, U_obs_op_adj, &
     146                                 U_init_dim_obs_f, U_obs_op_f, U_init_obs_f, U_init_obs_l, U_prodRinvA_l, &
     147                                 U_init_n_domains_p, U_init_dim_l, U_init_dim_obs_l, U_g2l_state, U_l2g_state, &
     148                                 U_g2l_obs, U_init_obsvar, U_init_obsvar_l, &
     149                                 U_prepoststep, outflag)
     150}}}
     151
     152=== `PDAF_assim_offline_en3dvar_estkf` ===
     153
     154The interface of this routine is analogous to that of `PDAF_assimilate_en3dvar_estkf'. Thus it is identical to this routine with the exception the specification of the user-supplied routines `U_distribute_state`, `U_collect_state` and `U_next_observation` are missing.
     155
     156The interface when using one of the global filters is the following:
     157{{{
     158  SUBROUTINE PDAF_assim_offline_en3dvar_estkf( &
     159                                 U_init_dim_obs, U_obs_op, U_init_obs, U_prodRinvA, &
     160                                 U_cvt_ens, U_cvt_adj_ens, U_obs_op_lin, U_obs_op_adj, &
     161                                 U_init_obsvar, U_prepoststep, outflag)
     162}}}
     163
     164
    134165=== `PDAF_put_state_en3dvar_lestkf` ===
    135166
    136 When the 'flexible' implementation variant is chosen for the assimilation system, the routine `PDAF_put_state_*` has to be used instead of `PDAF_assimilate_*`. The general aspects of the filter specific routines `PDAF_put_state_*` have been described on the page [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3 Modification of the model code for the ensemble integration]. The interface of the routine is identical with that of `PDAF_assimilate_*` with the exception the specification of the user-supplied routines `U_distribute_state` and `U_next_observation` are missing.
    137 
    138 The interface when using one of the global filters is the following:
     167This routine exists for backward-compatibility. In implementations that were done for PDAF V2.3.1 and before, a 'put_state' routine was used for the [wiki:OnlineFlexible_PDAF3 'flexible' parallelization variant] and for the [wiki:OfflineImplementationGuide_PDAF3 offline mode].  This routine allows to continue using the previous implementation structure.
     168The interface of the routine is identical with that of the 'assimilate'-routine, except that the user-supplied routines `U_distribute_state` and `U_next_observation` are missing.
     169
     170The interface is:
    139171{{{
    140172  SUBROUTINE PDAF_put_state_en3dvar_lestkf(U_collect_state, &
     
    161193== User-supplied routines ==
    162194
    163 Here all user-supplied routines are described that are required in the calls to `PDAF_assimilate_en3dvar_*` and `PDAF_put_state_en3dvar_*`. For some of the generic routines, we link to the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3 modifying the model code for the ensemble integration].
     195Here, all user-supplied routines are described that are required in the calls to the analysis routines. For some of the generic routines, we link to the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3 modifying the model code for the ensemble integration].
    164196
    165197To indicate user-supplied routines we use the prefix `U_`. In the tutorials in `tutorial/` and in the template directory `templates/` these routines exist without the prefix, but with the extension `_pdaf`. The files are named correspondingly. In the section titles below we provide the name of the template file in parentheses.
    166198
    167 In the subroutine interfaces some variables appear with the suffix `_p`. This suffix indicates that the variable is particular to a model sub-domain, if a domain decomposed model is used. Thus, the value(s) in the variable will be different for different model sub-domains.
     199In the subroutine interfaces some variables appear with the suffix `_p` (short for 'process'). This suffix indicates that the variable is particular to a model sub-domain, if a domain decomposed model is used. Thus, the value(s) in the variable will be different for different model sub-domains. In addition, there will be variables with the suffix `_f` (for 'full') and with the suffix `_l` (for 'local').
     200
     201For more informstion on the localization and the meaning of the 'full' observation vector see the [wiki:ImplementAnalysislestkf Page on the analysis step of the LESTKF].
     202
     203
    168204
    169205
    170206=== `U_collect_state` (collect_state_pdaf.F90) ===
    171207
    172 This routine is independent of the filter algorithm used.
    173 
    174 See the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3#U_collect_statecollect_state_pdaf.F90 inserting the analysis step] for the description of this routine.
     208This routine is independent of the DA method used.
     209See the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3#collect_state_pdafcollect_state_pdaf.F90 modifying the model code for the ensemble integration] for the description of this routine.
    175210
    176211
    177212=== `U_distribute_state` (distribute_state_pdaf.F90) ===
    178213
    179 This routine is independent of the filter algorithm used.
    180 
    181 See the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3#U_distribute_statedistribute_state_pdaf.F90 inserting the analysis step] for the description of this routine.
     214This routine is independent of the DA method used.
     215See the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3#distribute_state_pdafdistribute_state_pdaf.F90 modifying the model code for the ensemble integration] for the description of this routine.
    182216
    183217
     
    655689=== `U_next_observation` (next_observation_pdaf.F90) ===
    656690
    657 This routine is independent of the filter algorithm used.
    658 
    659 See the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3#U_next_observationnext_observation_pdaf.F90 inserting the analysis step] for the description of this routine.
    660 
     691This routine is independent of the DA method used.
     692
     693See the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3#next_observation_pdafnext_observation_pdaf.F90 modifying the model code for the ensemble integration] for the description of this routine.
    661694
    662695== Execution order of user-supplied routines ==
     
    684717 1. [#U_prepoststepprepoststep_ens_pdaf.F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step)
    685718
    686 The iterative optimization abovve computes an updated ensemble mean state. Subsequently, the ensemble perturbations are updated using the LESTKF or ESTKF. The execution of the routines for these filters is described on the [wiki:ImplementAnalysislestkf page on implementing the analysis step of the LESTKF] and on the [wiki:ImplementAnalysisestkf page on implementing the analysis step of the ESTKF].
     719The iterative optimization above computes an updated ensemble mean state. Subsequently, the ensemble perturbations are updated using the LESTKF or ESTKF. The execution of the routines for these filters is described on the [wiki:ImplementAnalysislestkf page on implementing the analysis step of the LESTKF] and on the [wiki:ImplementAnalysisestkf page on implementing the analysis step of the ESTKF].
    687720
    688721In case of the routines `PDAF_assimilate_*`, the following routines are executed after the analysis step: