Changes between Version 4 and Version 5 of ImplementAnalysislestkf


Ignore:
Timestamp:
May 5, 2014, 12:29:43 PM (10 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ImplementAnalysislestkf

    v4 v5  
    3232With 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.
    3333
    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.
     34For 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
     36For 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.
    3737
    3838The 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.
     
    4141== `PDAF_assimilate_lestkf` ==
    4242
    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.
     43The 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.
    4444The 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.
    4545
     
    5050The interface when using the LESTKF algorithm is the following:
    5151{{{
    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, &
    5353                                  U_init_obs_f, U_init_obs_l, U_prepoststep, U_prodRinvA_l,  &
    5454                                  U_init_n_domains,U_init_dim_l, U_init_dim_obs_l, &
     
    7474 * [#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)
    7575 * [#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.
    7777
    7878Note:
     
    9696== User-supplied routines ==
    9797
    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].
     98Here, 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].
    9999
    100100To 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.