Changes between Version 3 and Version 4 of ImplementGenerateObs


Ignore:
Timestamp:
Feb 9, 2019, 1:45:23 PM (6 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ImplementGenerateObs

    v3 v4  
    1616The implementation of the initialization of PDAF is explained on the [wikiInitPdaf page on `init_pdaf` and `PDAF_init`].
    1717
    18 For the observation generation one just has to set [[BR]]
    19 `filtertype = 11`.
     18For the observation generation one just has to set `filtertype = 11`.
    2019
     20There are no particular options for the observation generation functionality. So for `filter_param_i` one just has to specify the mandatory values of the state dimension and the ensemble size. For `filter_param_r` one has to specify the mandatory values of the forgetting factor (even though, this value is ignored for the observation generation)
     21
     22== Observation Generation Step ==
     23
     24This step replaces the analysis step. However, the implementation is analogous to implementing the analysis step as described on the [wiki:ImplementationofAnalysisStep page on implementing the analysis step].
     25
     26== `PDAF_generate_obs` ==
     27
     28This routine is used in the same way as the filter specific routines `PDAF_assimilate_*`. Thus the general aspect 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 `PDAF_generate_obs` 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_generate_obs' is used as described further below. Here, we list once more the full interface. Subsequently, the full set of user-supplied routines specified in the call to `PDAF_generate_obs` is explained.
     29
     30{{{
     31  SUBROUTINE PDAF_generate_obs(U_collect_state, U_distribute_state, &
     32                                  U_init_dim_obs_f, U_obs_op_f, U_get_obs_f, U_init_obserr_f, &
     33                                  U_prepoststep, U_next_observation, status_pdaf)
     34}}}
     35with the following arguments:
     36 * `U_collect_state`: The name of the user-supplied routine that initializes a state vector from the array holding the ensemble of model states from the model fields. This is basically the inverse operation to `U_distribute_state` used in [ModifyModelforEnsembleIntegration#PDAF_get_state PDAF_get_state]
     37 * `U_distribute_state`:  The name of a user supplied routine that initializes the model fields from the array holding the ensemble of model state vectors.
     38 * `U_init_dim_obs_f`: The name of the user-supplied routine that provides the size of the full observation vector
     39 * `U_obs_op_f`: The name of the user-supplied routine that acts as the full observation operator on some state vector
     40 * `U_get_obs_f`: The name of the user-supplied routine that receives the full vector of generated synthetic observations from PDAF
     41 * `U_init_obserr_f`: The name of the user-supplied routine that initializes the vector of observations error standard deviations for for full observation vector
     42 * `U_prepoststep`: The name of the pre/poststep routine as in `PDAF_get_state`
     43 * `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`.
     44 * `status_pdaf`: The integer status flag. It is zero, if `PDAF_assimilate_lestkf` is exited without errors.
     45
     46
     47== `PDAF_put_state_generate_obs` ==
     48
     49When the 'flexible' implementation variant is chosen for the assimilation system, the routine `PDAF_put_state_generate_obs` has to be used instead of `PDAF_generate_obs`. 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_generate_obs` with the exception the specification of the user-supplied routines `U_distribute_state` and `U_next_observation` are missing.
     50
     51The interface is the following:
     52{{{
     53  SUBROUTINE PDAF_put_state_generate_obs(U_collect_state, U_init_dim_obs_f, U_obs_op_f, U_get_obs_f, &
     54                                  U_init_obserr_f, U_prepoststep, status_pdaf)
     55}}}
     56
     57
     58