Changes between Version 4 and Version 5 of ImplementAnalysislestkf
- Timestamp:
- May 5, 2014, 12:29:43 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ImplementAnalysislestkf
v4 v5 32 32 With Version 1.8 of PDAF, the LESTKF [Local Error Subspace Transform Kalman Filter] algorithm has been introduced. The user-supplied routines required for the LESTKF are identical to those required for the LSEIK filter. 33 33 34 For the analysis step of the LESTKF, several operations related to the observations are needed. 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_ put_state_lestkf` described below. With regard to the parallelization, all these routines (except `U_collect_state`) are executed by the filter processes (`filterpe=.true.`) only.35 36 For completeness we discuss here all user-supplied routines that are specified in the interface to `PDAF_ put_state_lestkf`. Many of the routines are localized versions of those that are needed for the global ESTKF method. Hence, if the user-supplied routines for the global ESTKF have been already implemented, one can base on these routines to speed up the implementation. Due to this, it can also be reasonable to first fully implement a global filter version and subsequently implement the corresponding localized filter by modifying and extending the global routines.34 For the analysis step of the LESTKF, several operations related to the observations are needed. 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_lestkf` (or `PDAF_put_state_lestkf`) described below. With regard to the parallelization, all these routines (except `U_collect_state`, `U_distribute_state`, and `U_next_observation`) are executed by the filter processes (`filterpe=.true.`) only. 35 36 For completeness we discuss here all user-supplied routines that are specified in the interface to `PDAF_assimilate_lestkf`. Many of the routines are localized versions of those that are needed for the global ESTKF method. Hence, if the user-supplied routines for the global ESTKF have been already implemented, one can base on these routines to speed up the implementation. Due to this, it can also be reasonable to first fully implement a global filter version and subsequently implement the corresponding localized filter by modifying and extending the global routines. 37 37 38 38 The LESTKF and the LETKF (Local Ensemble Transform Kalman Filter) are very similar. For this reason, the interface to the user-supplied routines is almost identical. Depending on the implementation it can be possible to use identical routines for the LESTKF and the LETKF. Differences are marked in the text below. … … 41 41 == `PDAF_assimilate_lestkf` == 42 42 43 The general aspects of the filter-specific routines `PDAF_assimilate_*` have been described on the page [ModifyModelforEnsembleIntegration 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.43 The general aspects of the filter-specific routines `PDAF_assimilate_*` have been described on the page [ModifyModelforEnsembleIntegration Modification of the model code for the ensemble integration] and its sub-page on [InsertAnalysisStep inserting the analysis step]. 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. 44 44 The interface for the routine `PDAF_assimilate_lestkf` contains several routine names for routines that operate on the local analysis domains (marked by `_l` at the end of the routine name). In addition, there are names for routines that consider all available observations required to perform local analyses with LESTKF within some sub-domain of a domain-decomposed model (marked by `_f` at the end of the routine name). In case of a serial execution of the assimilation program, these will be all globally available observations. However, if the program is executed with parallelization, this might be a smaller set of observations. 45 45 … … 50 50 The interface when using the LESTKF algorithm is the following: 51 51 {{{ 52 SUBROUTINE PDAF_ put_state_lestkf(U_collect_state, U_distribute_state, U_init_dim_obs_f, U_obs_op_f, &52 SUBROUTINE PDAF_assimilate_lestkf(U_collect_state, U_distribute_state, U_init_dim_obs_f, U_obs_op_f, & 53 53 U_init_obs_f, U_init_obs_l, U_prepoststep, U_prodRinvA_l, & 54 54 U_init_n_domains,U_init_dim_l, U_init_dim_obs_l, & … … 74 74 * [#U_init_obsvar_linit_obsvar_l_pdaf.F90 U_init_obsvar_l]: The name of the user-supplied routine that provides a mean observation error variance for the local analysis domain (This routine will only be executed, if a local adaptive forgetting factor is used) 75 75 * [#U_next_observationnext_observation.F90 U_next_observation]: The name of a user supplied routine that initializes the variables `nsteps`, `timenow`, and `doexit`. The same routine is also used in `PDAF_get_state`. 76 * `status`: The integer status flag. It is zero, if `PDAF_ put_state_lestkf` is exited without errors.76 * `status`: The integer status flag. It is zero, if `PDAF_assimilate_lestkf` is exited without errors. 77 77 78 78 Note: … … 96 96 == User-supplied routines == 97 97 98 Here, all user-supplied routines are described that are required in the call to `PDAF_ put_state_lestkf`. For some of the generic routines, we link to the page on [ModifyModelforEnsembleIntegration modifying the model code for the ensemble integration].98 Here, all user-supplied routines are described that are required in the call to `PDAF_assimilate_lestkf` or `PDAF_put_state_lestkf`. For some of the generic routines, we link to the page on [ModifyModelforEnsembleIntegration modifying the model code for the ensemble integration]. 99 99 100 100 To indicate user-supplied routines we use the prefix `U_`. In the template directory `templates/` as well as in the example implementation in `testsuite/src/dummymodel_1D` these routines exist without the prefix, but with the extension `_pdaf.F90`. In the section titles below we provide the name of the template file in parentheses.