Changes between Version 6 and Version 7 of Implement3DVarAnalysisPDAF3Universal
- Timestamp:
- May 27, 2025, 2:02:56 PM (7 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Implement3DVarAnalysisPDAF3Universal
v6 v7 49 49 == Analysis Routines == 50 50 51 The general aspects of the filter (or solver) specific routines `PDAF_assimilate_*` have been described on the page [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3 Modification of the model code for the ensemble integration]. The routine is used in the fully-parallel implementation variant of the data assimilation system. When the 'flexible' implementation variant is used, the routines `PDAF_put_state_*` is used as described further below. Here, we list the full interface of the routine. Subsequently, the user-supplied routines specified in the call is explained. 52 51 The general aspects of the filter (or solver) specific routines for the 3D-Var analysis step have been described on the page [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3 Modification of the model code for the ensemble integration]. Here, we list the full interface of the routine. Subsequently, the user-supplied routines specified in the call is explained. 53 52 54 53 … … 99 98 prepoststep_pdaf, outflag) 100 99 }}} 101 100 where all arguments, except the last one, are the names of call-back routines. See the description of the arguments for `PDAF3_assimilate_3dvar_all`. 102 101 103 102 … … 105 104 106 105 This routine exists for backward-compatibility. In implementations that were done before the release of PDAF V3.0, a 'put_state' routine was used for the ''flexible'' parallelization variant and for the offline mode. 107 When the ''flexible'' implementation variant is chosen for the assimilation system, th e routine. This routine allows to port such implementations to the PDAF3 interface with minimal changes.106 When the ''flexible'' implementation variant is chosen for the assimilation system, this routine allows to port such implementations to the PDAF3 interface with minimal changes. 108 107 The interface of the routine is identical with that of `PDAF3_assimilate_3dvar_all`, except that the user-supplied routines `distribute_state_pdaf` and `next_observation_padf` are missing. 109 108 110 109 The interface is: 111 110 {{{ 112 SUBROUTINE PDAF3_ assimilate_3dvar_all(collect_state_pdaf, &111 SUBROUTINE PDAF3_put_state_3dvar_all(collect_state_pdaf, & 113 112 init_dim_obs_pdafomi, obs_op_pdafomi, & 114 113 cvt_ens_pdaf, cvt_adj_ens_pdaf, cvt_pdaf, cvt_adj_pdaf, & … … 117 116 prepoststep_pdaf, outflag) 118 117 }}} 119 118 where all arguments, except the last one, are the names of call-back routines. See the description of the arguments for `PDAF3_assimilate_3dvar_all`. 120 119 121 120 … … 123 122 == User-supplied routines == 124 123 125 Here all user-supplied routines are described that are required in the call to the assimilation routines for hybrid 3D-Var. For some of the generic routines, we link to the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3 modifying the model code for the ensemble integration].124 Here, all user-supplied routines are described that are required in the call to the assimilation routines for hybrid 3D-Var. For some of the generic routines, we link to the page on [wiki:OnlineModifyModelforEnsembleIntegration_PDAF3 modifying the model code for the ensemble integration]. 126 125 127 126 The names of the user-suppled routines routines ending on `_pdaf` relate to operations on the model state, while those ensing on `_pdafomi` handle observations using the structured appraoch guided by [wiki:PDAF_OMI_Overview PDAF-OMI]. The user-routines relating to PDAF-OMI are collected in the file `callback_obs_pdafomi.F90`. In the section titles below we provide the name of the template file in parentheses. 128 127 129 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. 128 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. Further, the suffix `_l` indices variables that are specific for a local analysis domain in the LESTKF. 130 129 131 130 … … 238 237 It has to apply the adjoint control vector transformation to a state vector and return the control vector. Usually this transformation is the multiplication with transposed of the square-root of the background error covariance matrix '''B''' in its parameterized form. 239 238 240 If the state vector is decomposed in case of parallelization one needs to take care that the application of the trasformation is complete. This usually requries a comminucation with MPI_Allreduce to obtain a global su n.239 If the state vector is decomposed in case of parallelization one needs to take care that the application of the trasformation is complete. This usually requries a comminucation with MPI_Allreduce to obtain a global sum. 241 240 242 241 … … 356 355 1. [#obs_op_lin_pdafomicallback_obs_pdafomi.F90 obs_op_lin_pdafomi] 357 356 1. [#obs_op_adj_pdafomicallback_obs_pdafomi.F90 obs_op_adj_pdafomi] 357 1. [#cvt_adj_ens_pdafcvt_adj_ens_pdaf.F90 cvt_adj_ens_pdaf] 358 358 1. [#cvt_adj_pdafcvt_adj_pdaf.F90 cvt_adj_pdaf] 359 1. [#cvt_adj_ens_pdafcvt_adj_ens_pdaf.F90 cvt_adj_ens_pdaf]360 359 361 360 After the iterative optimization the following routines are executes to complte the analysis step: 362 1. [#cvt_ ens_pdafcvt_pdaf.F90 cvt_pdaf] (Call to the parameterized part of the control vector transform to compute the final state vector increment)361 1. [#cvt_pdafcvt_pdaf.F90 cvt_pdaf] (Call to the parameterized part of the control vector transform to compute the final state vector increment) 363 362 1. [#cvt_ens_pdafcvt_ens_pdaf.F90 cvt_ens_pdaf] (Call to the eensemble-part of the control vector transform to compute the final state vector increment) 364 363 1. [#prepoststep_pdafprepoststep_ens_pdaf.F90 prepoststep_pdaf] (Call to act on the analysis ensemble, called with (positive) value of the time step) 365 364 366 The iterative optimization abov ve 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:ImplementAnalysisPDAF3Universal page on implementing the local filter analysis step] .365 The 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:ImplementAnalysisPDAF3Universal page on implementing the local filter analysis step] . 367 366 368 367 In case of the routine `PDAF3_assimilate_3dvar_all`, the following routines are executed after the analysis step: