Changes between Version 9 and Version 10 of ImplementAnalysisletkf
- Timestamp:
- Jan 22, 2012, 11:01:13 AM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ImplementAnalysisletkf
v9 v10 28 28 == Overview == 29 29 30 For the analysis step of the LETKF algorithm, 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_letkf` described below. With regard to the parallelization, all these routines (except `U_collect_state`) are executed by the filter processes (`filterpe= 1`) only.30 For the analysis step of the LETKF algorithm, 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_letkf` described below. With regard to the parallelization, all these routines (except `U_collect_state`) are executed by the filter processes (`filterpe=.true.`) only. 31 31 32 32 For completeness we discuss here all user-supplied routines that are specified in the interface to `PDAF_put_state_letkf`. Many of the routines are localized versions of those that are needed for the global ETKF method. Hence, if the user-supplied routines for the global ETKF method 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. … … 57 57 * [#U_init_obs_finit_obs_f_pdaf.F90 U_init_obs_f]: The name of the user-supplied routine that initializes the full vector of observations 58 58 * [#U_init_obs_linit_obs_l_pdaf.F90 U_init_obs_l]: The name of the user-supplied routine that initializes the vector of observations for a local analysis domain 59 * [#U_prepoststepprepoststep_ seik_pdaf.F90 U_prepoststep]: The name of the pre/poststep routine as in `PDAF_get_state`59 * [#U_prepoststepprepoststep_ens_pdaf.F90 U_prepoststep]: The name of the pre/poststep routine as in `PDAF_get_state` 60 60 * [#U_prodRinvA_lprodrinva_l_pdaf.F90 U_prodRinvA_l]: The name of the user-supplied routine that computes the product of the inverse of the observation error covariance matrix with some matrix provided to the routine by PDAF. 61 61 * [#U_init_n_domainsinit_n_domains_pdaf.F90 U_init_n_domains]: The name of the routine that provides the number of local analysis domains … … 167 167 168 168 169 === `U_prepoststep` (prepoststep_ seik_pdaf.F90) ===170 171 This routine can generally be identical to that used for the global SEIK filter, which has already been described on the [ModifyModelforEnsembleIntegration#U_prepoststepprepoststep_ seik.F90 page on modifying the model code for the ensemble integration]. For completeness, the description is repeated:169 === `U_prepoststep` (prepoststep_ens_pdaf.F90) === 170 171 This routine can generally be identical to that used for the global SEIK filter, which has already been described on the [ModifyModelforEnsembleIntegration#U_prepoststepprepoststep_ens_pdaf.F90 page on modifying the model code for the ensemble integration]. For completeness, the description is repeated: 172 172 173 173 The interface of the routine is identical for all filters. However, the particular operations that are performed in the routine can be specific for each filter algorithm. Here, we exemplify the interface on the example of the ETKF. … … 412 412 413 413 When the ensemble integration of the forecast is completed, the analysis step is executed. Before the loop over all local analysis domains, the following routines are executed: 414 1. [#U_prepoststepprepoststep_ seik_pdaf.F90 U_prepoststep] (Call to act on the forecast ensemble, called with negative value of the time step)414 1. [#U_prepoststepprepoststep_ens_pdaf.F90 U_prepoststep] (Call to act on the forecast ensemble, called with negative value of the time step) 415 415 1. [#U_init_n_domainsinit_n_domains_pdaf.F90 U_init_n_domains] 416 416 1. [#U_init_dim_obs_finit_dim_obs_f_pdaf.F90 U_init_dim_obs_f] … … 431 431 432 432 After the loop over all local analysis domains, it is executed: 433 1. [#U_prepoststepprepoststep_ seik_pdaf.F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step)434 435 436 433 1. [#U_prepoststepprepoststep_ens_pdaf.F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step) 434 435 436