Changes between Version 1 and Version 2 of PdafSimplifiedInterface

Sep 26, 2011, 4:56:47 PM (8 years ago)



  • PdafSimplifiedInterface

    v1 v2  
    1919[[PageOutline(2-3,Contents of this page)]]
     21== Overview ==
     23With version 1.7 of PDAF as simplified (or shortened) interface has been introduced. It can be used as an alternative to the full interface, which remains to exist. In the full interface, the names of all required user-supplied subroutines (e.g. the implementation of the observation operator) need to be specified. This scheme allows the user to choose the names of these routines. In contrast, the simplified interface uses pre-defined routine names and does not require to define the name in the call to PDAF. Thus, the interfaces are shorted. On the other hand, the simplified interface restricts the names of the user-supplied to the pre-defined ones. We leave it to the user to decide, which variant he or she prefers.
     25The implementation of PDAF with the simplified interface is analogous to the case when the full interface is used. Below, we described the differences in the interfaces. For the general implementation guide, please see the pages describing the implementation with the full interface. (The subroutine names listed there are the pre-defined names required when the simplified interface is used)
     28== Required arguments for `PDAF_init_si` ==
     30The call to `PDAF_init_si` has the following structure:
     32CALL PDAF_init_si(filtertype, subtype, step_null, &
     33               filter_param_i, length_filter_param_i, &
     34               filter_param_r, length_filter_param_r, &
     35               COMM_model, COMM_filter, COMM_couple, &
     36               task_id, n_modeltasks, filterpe, &
     37               screen, status_pdaf)
     40The required variables are the following:
     42 * `filtertype`: An integer defining the type of filter algorithm. Available are
     43  * 0: SEEK
     44  * 1: SEIK
     45  * 2: EnKF
     46  * 3: LSEIK
     47  * 4: ETKF
     48  * 5: LETKF
     49 * `subtype`: An integer defining the sub-type of the filter algorithm (see the example code in `testsuite/src/dummymodel_1D` for choices)
     50 * `step_null`: An integer defining the initial time step. For some cases it can use useful to set `step_null` larger to 0.
     51 * `filter_param_i`: Integer array collecting several variables for PDAF. The first two variables are mandatory and equal for all filters. Further variables are optional (see example code). The mandatory variables are in the following order:
     52  * The size of the local state vector for the current process.
     53  * The ensemble size for all ensemble-based filters (or the rank of the state covariance matrix for mode-based filters like SEEK)
     54 * `length_filter_param_i`: An Integer defining the length of the array `filter_param_i`. The entries in the array are parsed up to this index.
     55 * `filter_param_r`: Array of reals collecting floating point variables for PDAF. The first variable is mandatory and equal for all filters.  Further variables are optional (see example code in `testsuite/src/dummymodel_1D`). The mandatory variable is:
     56  * The value of the forgetting factor (required to be larger than zero)
     57 * `length_filter_param_r`: An Integer defining the length of the array `filter_param_r`. The entries in the array are parsed up to this index.
     58 * `COMM_model`: The communicator variable `COMM_model` as initialized by `init_parallel_pdaf`. If the model-communicator is named differently in the actual program, the name has to be adapted
     59 * `COMM_filter`: The communicator variable `COMM_filter` as initialized by `init_parallel_pdaf`.
     60 * `COMM_couple`: The communicator variable `COMM_couple` as initialized by `init_parallel_pdaf`.
     61 * `task_id`: The index of the model tasks  as initialized by `init_parallel_pdaf`.
     62 * `n_modeltasks`: The number of model tasks as defined before the call to `init_parallel_pdaf`.
     63 * `filterpe`: The flag showing if a process belongs to `COMM_filter` as initialized by `init_parallel_pdaf`.
     64 * `screen`: An integer defining whether information output is written to the screen (i.e. standard output). The following choices are available:
     65  * 0: quite mode - no information is displayed.
     66  * 1: Display standard information (recommended)
     67  * 2: as 1 plus display of timing information during the assimilation process
     68  * 3: Display detailed information for debugging
     69 * `status_pdaf`: An integer used as status flag of PDAF. If `status_pdaf` is zero upon exit from `PDAF_init` the initialization was successful. An error occurred for non-zero values. (The error codes are documented in the routine PDAF_init.)
     71It is recommended that the value of `status_pdaf` is checked in the program after PDAF_init is executed. Only if its value is 0 the initialization was successful.
     73The routine `PDAF_init` call the user-supplied routine `init_ens_pdaf`. The interface of `init_ens_pdaf` is described on the [InitPdaf#User-suppliedroutineU_init_ens_pdaf page on PDAF_init with full interface].