| | 20 | There 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 | |
| | 24 | This 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 | |
| | 28 | This 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 | }}} |
| | 35 | with 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 | |
| | 49 | When 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 | |
| | 51 | The 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 | |