Changes between Version 7 and Version 8 of ImplementAnalysisLocal


Ignore:
Timestamp:
Nov 18, 2020, 4:16:26 PM (3 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ImplementAnalysisLocal

    v7 v8  
    2929With Version 1.16 of PDAF we introduced PDAF-OMI (observation module infrastructure). With OMI we provide generic routines for the analysis step, which only distinguish global and local filters. This page describes the implementation of the analysis step for domain-local filters (LESTKF, LETKF, LNETF, LSEIK).
    3030
    31 For the analysis step of the local filters, several operations related to the observations are needed. These operations are requested by PDAF by call-back routines supplied by the user and provided in the OMI structure.  The names of the required routines are specified in the call to the routine `PDAF_assimilate_local_omi` in the fully-parallel implementation (or `PDAF_put_state_local_omi` for the 'flexible' implementation) 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.
    32 
    33 For completeness we discuss here all user-supplied routines that are specified in the interface to `PDAF_assimilate_local_omi`. Many of the routines are identical to those used for the global filters. Hence, when the user-supplied routines for the global filters 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 
    35 
    36 == `PDAF_assimilate_local_omi` ==
     31For the analysis step of the local filters, several operations related to the observations are needed. These operations are requested by PDAF by call-back routines supplied by the user and provided in the OMI structure.  The names of the required routines are specified in the call to the routine `PDAFomi_assimilate_local` in the fully-parallel implementation (or `PDAFomi_put_state_local` for the 'flexible' implementation) 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.
     32
     33For completeness we discuss here all user-supplied routines that are specified in the interface to `PDAFomi_assimilate_local`. Many of the routines are identical to those used for the global filters. Hence, when the user-supplied routines for the global filters 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
     35
     36== `PDAFomi_assimilate_local` ==
    3737
    3838The 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.
    3939
    40 The interface for the routine `PDAF_assimilate_local_omi` contains two routine names for routines that operate on the local analysis domains (marked by `_l` at the end of the routine name). Further there are routines that convert between a local and a global model state vector (`U_g2l_state` and `U_l2g_state`).
     40The interface for the routine `PDAFomi_assimilate_local` contains two routine names for routines that operate on the local analysis domains (marked by `_l` at the end of the routine name). Further there are routines that convert between a local and a global model state vector (`U_g2l_state` and `U_l2g_state`).
    4141Here, we list the full interface of the routine. Subsequently, the user-supplied routines specified in the call is explained.
    4242
    4343The interface when using one of the local filters is the following:
    4444{{{
    45   SUBROUTINE PDAF_assimilate_local_omi(U_collect_state, U_distribute_state, &
     45  SUBROUTINE PDAFomi_assimilate_local(U_collect_state, U_distribute_state, &
    4646                                  U_init_dim_obs, U_obs_op, &
    4747                                  U_prepoststep, U_init_n_domains, U_init_dim_l, &
     
    6161 * [#U_l2g_statel2g_state_pdaf.F90 U_l2g_state]: The name of the routine that initializes the corresponding part of the global state vector from the provided local state vector
    6262 * [#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`.
    63  * `status`: The integer status flag. It is zero, if `PDAF_assimilate_local_omi` is exited without errors.
     63 * `status`: The integer status flag. It is zero, if `PDAFomi_assimilate_local` is exited without errors.
    6464
    6565Note:
     
    6868
    6969
    70 == `PDAF_put_state_local_omi` ==
    71 
    72 When the 'flexible' implementation variant is chosen for the assimilation system, the routine `PDAF_put_state_local_omi` has to be used instead of `PDAF_assimilate_local_omi`. The general aspects of the filter specific routines `PDAF_put_state_*` have been described on the page [ModifyModelforEnsembleIntegration Modification of the model code for the ensemble integration]. The interface of the routine is identical with that of `PDAF_assimilate_local_omi` with the exception the specification of the user-supplied routines `U_distribute_state` and `U_next_observation` are missing.
     70== `PDAFomi_put_state_local` ==
     71
     72When the 'flexible' implementation variant is chosen for the assimilation system, the routine `PDAFomi_put_state_local` has to be used instead of `PDAFomi_assimilate_local`. The general aspects of the filter specific routines `PDAF_put_state_*` have been described on the page [ModifyModelforEnsembleIntegration Modification of the model code for the ensemble integration]. The interface of the routine is identical with that of `PDAFomi_assimilate_local` with the exception the specification of the user-supplied routines `U_distribute_state` and `U_next_observation` are missing.
    7373
    7474The interface when using one of the local filters is the following:
    7575{{{
    76   SUBROUTINE PDAF_put_state_local_omi(U_collect_state, &
     76  SUBROUTINE PDAFomi_put_state_local(U_collect_state, &
    7777                                  U_init_dim_obs, U_obs_op, &
    7878                                  U_prepoststep, U_init_n_domains, U_init_dim_l, &
     
    8383== User-supplied routines ==
    8484
    85 Here, all user-supplied routines are described that are required in the call to `PDAF_assimilate_local_omi` or `PDAF_put_state_local_omi`. For some of the generic routines, we link to the page on [ModifyModelforEnsembleIntegration modifying the model code for the ensemble integration].
     85Here, all user-supplied routines are described that are required in the call to `PDAFomi_assimilate_local` or `PDAFomi_put_state_local`. For some of the generic routines, we link to the page on [ModifyModelforEnsembleIntegration modifying the model code for the ensemble integration].
    8686
    8787To 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.
     
    292292 1. [#U_prepoststepprepoststep_ens_pdaf.F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step)
    293293
    294 In case of the routine `PDAF_assimilate_local_omi`, the following routines are executed after the analysis step:
     294In case of the routine `PDAFomi_assimilate_local`, the following routines are executed after the analysis step:
    295295 1. [#U_distribute_statedistribute_state_pdaf.F90 U_distribute_state]
    296296 1. [#U_next_observationnext_observation_pdaf.F90 U_next_observation]