Changes between Version 1 and Version 2 of AddFilterAlgorithm


Ignore:
Timestamp:
Nov 11, 2011, 4:03:07 PM (13 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AddFilterAlgorithm

    v1 v2  
    11= Adding a Filter Algorithm to PDAF =
    22
     3This text describes the implementation strategy and internal structure of PDAF valid for version 1.7.0 and later. If you use an earlier version of PDAF, we recommend to update to the most recent version. In this text, we assume that the reader is already familiar with PDAF to the extend of experience with the implementation of a model with PDAF that is described in the [ImplementationGuide implementation guide].
    34
     5The internal structure of PDAF is organized into a generic part providing the infrastructure to perform ensemble forecasts and filter analysis steps. The generic part is independent of the particular filter algorithm and only distinguishes between ensemble based filters (all filters except SEEK) and mode based filters (currently only SEEK). The filter-specific routines are called through an internal interface.
    46
     7Each filter algorithm consists of a minimum of 6 routines. All routines are called trough the internal interface of PDAF, except for the "put state" routine (`PDAF_put_state_FILTERNAME` where FILTERNAME is the name of the selected filter).
    58
    69== Internal Interface of PDAF ==
    710
    8 `PDAF_init` calls
     11The internal interface of PDAF is scructured as follows:
    912
    10 `PDAF_init_filters` - interface to `PDAF_FILTERNAME_init`
    11 
    12 `PDAF_alloc_filters` - interface to `PDAF_FILTERNAME_alloc`
    13 
    14 `PDAF_options_filters` - interface to `PDAF_FILTERNAME_options`
     13The routine `PDAF_init` calls
     14 * `PDAF_init_filters` - interface routine to `PDAF_FILTERNAME_init`[[BR]]
     15   * `PDAF_FILTERNAME_init` performs the filter-specific initialization of parameters and calls the user-supplied routine that initializes the initial ensemble of model states.
     16 * `PDAF_alloc_filters` - interface routine to `PDAF_FILTERNAME_alloc`[[BR]]
     17   * `PDAF_FILTERNAME_alloc` allocates the filter-specific arrays.
     18 * `PDAF_options_filters` - interface routine to `PDAF_FILTERNAME_options`
     19   * `PDAF_FILTERNAME_options` is an optional routine. Its purpose is to display an overview of available options for the filter algorithm.
    1520
    1621
    17 `PDAF_get_state` call
    18 
    19 `PDAF_initinfo_filters` - interface to `PDAF_FILTERNAME_initinfo`
     22The routine `PDAF_get_state` calls
     23 * `PDAF_initinfo_filters` - interface routine to `PDAF_FILTERNAME_initinfo`
     24   * `PDAF_FILTERNAME_initinfo` displays information on the current configuration of the filter algorithm.
    2025
    2126
    22 `PDAF_print_info` - interface to `PDAF_FILTERNAME_memtime`
     27The routine `PDAF_print_info` only includes the interface to `PDAF_FILTERNAME_memtime`
     28 * `PDAF_FILTERNAME_memtime` displays information on the execution duration of the different parts of the assimilation process as well as information on the amount of allocated memory.
    2329
    2430
    25 `PDAF_put_state_FILTERNAME` - separate routine for each filter calls
    26 
    27 `PDAF_FILTERNAME_initinfo`
    28 
    29 `PDAF_FILTERNAME_update`
     31The routine `PDAF_put_state_FILTERNAME` is called directly from the model code. There is a separate routine for each filter. The standard implementation calls
     32 * `PDAF_FILTERNAME_initinfo`
     33   * This is the same routine that is called by `PDAF_get_state`. Here, it is only called, if the offline mode of PDAF is used.
     34 * `PDAF_FILTERNAME_update`
     35   * This routine contains the actual assimilation or analysis step of the filter algorithm.