Changes between Version 26 and Version 27 of ModifyModelforEnsembleIntegration
- Timestamp:
- Sep 15, 2011, 2:22:46 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ModifyModelforEnsembleIntegration
v26 v27 61 61 The interface of `PDAF_get_state` is the following: 62 62 {{{ 63 SUBROUTINE PDAF_get_state(nsteps, timenow, doexit, U_next_obs , U_dist_state, &63 SUBROUTINE PDAF_get_state(nsteps, timenow, doexit, U_next_observation, U_distribute_state, & 64 64 U_prepoststep, status) 65 65 }}} … … 68 68 * `timenow`: A real specifying upon exit the current model time. 69 69 * `doexit`: An integer variable defining whether the assimilation process is completed and the program should exit the while loop. For compatibility 1 should be used for exit, 0 for continuing in the loop. 70 * [#U_next_observationnext_observation.F90 U_next_obs ]: The name of a user supplied routine that initializes the variables `nsteps`, `timenow`, and `doexit`71 * [#U_distribute_statedistribute_state.F90 U_dist _state]: The name of a user supplied routine that initializes the model fields from the array holding the ensemble of model state vectors70 * [#U_next_observationnext_observation.F90 U_next_observation]: The name of a user supplied routine that initializes the variables `nsteps`, `timenow`, and `doexit` 71 * [#U_distribute_statedistribute_state.F90 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 72 72 * [#U_prepoststepprepoststep_seik.F90 U_prepoststep]: The name of a user supplied routine that is called before and after the analysis step. Here the user has the possibility to access the state ensemble and can e.g. compute estimated variances or can write the ensemble states the state estimate into files. 73 73 * `status`: The integer status flag. It is zero, if `PDAF_get_state` is exited without errors. … … 79 79 For example, the interface when using the SEIK filter is the following: 80 80 {{{ 81 SUBROUTINE PDAF_put_state_seik(U_coll _state, U_init_dim_obs, U_obs_op, &81 SUBROUTINE PDAF_put_state_seik(U_collect_state, U_init_dim_obs, U_obs_op, & 82 82 U_init_obs, U_prepoststep, U_prodRinvA, U_init_obsvar, status) 83 83 }}} 84 84 At this state of the implementation only these arguments are relevant: 85 * [#U_collect_statecollect_state.F90 U_coll _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_dist_state` used in `PDAF_get_state`85 * [#U_collect_statecollect_state.F90 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_dist_state` used in `PDAF_get_state` 86 86 * `status`: The integer status flag. It is zero, if PDAF_get_state is exited without errors. 87 87 … … 93 93 Here, only the user-supplied routines are discussed that are required at this stage of the implementation (that is, the ensemble integration). For testing (see [#Compilationandtesting 'Compilation and testing']), all routines need to exist, but only those described here in detail need to be implemented with functionality. 94 94 95 To indicate user-supplied routines we use the prefix `U_`. In the template directory `templates/` these routines are provided in files with the routines name without this prefix. In the example implementation in `testsuite/src/dummymodel_1D` the routines exist without the prefix, but with the extension `_ dummy_D.F90`. In the section titles below we provide the name of the template file in parentheses.96 97 === `U_next_obs ` (next_observation_pdaf.F90) ===95 To indicate user-supplied routines we use the prefix `U_`. In the template directory `templates/` these routines are provided in files with the routines name without this prefix. In the example implementation in `testsuite/src/dummymodel_1D` the 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. 96 97 === `U_next_observation` (next_observation_pdaf.F90) === 98 98 99 99 The interface for this routine is … … 116 116 * At the first call to `U_next_obs` the variable `timenow` should be initialized with the current model time. At the next call a forecast phase has been completed. Thus, the new value of `timenow` follows from the timer interval for the previous forecast phase. 117 117 118 === `U_dist _state` (distribute_state_pdaf.F90) ===118 === `U_distribute_state` (distribute_state_pdaf.F90) === 119 119 120 120 The interface for this routine is … … 134 134 135 135 136 === `U_prepoststep` (prepoststep_ seik_pdaf.F90) ===136 === `U_prepoststep` (prepoststep_ens_pdaf.F90) === 137 137 138 138 The interface of the routine is identical for all filters. However, the particular operations that are performed in the routine can be specific for each filter algorithm. Here, we exemplify the interface on the example of the SEIK filter. … … 166 166 167 167 168 === `U_coll _state` (collect_state_pdaf.F90) ===168 === `U_collect_state` (collect_state_pdaf.F90) === 169 169 170 170 The interface for this routine is