Changes between Version 25 and Version 26 of ModifyModelforEnsembleIntegration
- Timestamp:
- Sep 15, 2011, 2:18:32 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ModifyModelforEnsembleIntegration
v25 v26 61 61 The interface of `PDAF_get_state` is the following: 62 62 {{{ 63 SUBROUTINE PDAF_get_state(nsteps, timenow, doexit, U_next_obs ervation, U_distribute_state, &63 SUBROUTINE PDAF_get_state(nsteps, timenow, doexit, U_next_obs, U_dist_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 ervation]: The name of a user supplied routine that initializes the variables `nsteps`, `timenow`, and `doexit`71 * [#U_distribute_statedistribute_state.F90 U_dist ributed_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_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 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 ect_state, U_init_dim_obs, U_obs_op, &81 SUBROUTINE PDAF_put_state_seik(U_coll_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 ect_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 `PDAF_get_state`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` 86 86 * `status`: The integer status flag. It is zero, if PDAF_get_state is exited without errors. 87 87 … … 95 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 96 97 === `U_next_obs ervation` (next_observation.F90) ===97 === `U_next_obs` (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 ribute_state` (distribute_state.F90) ===118 === `U_dist_state` (distribute_state_pdaf.F90) === 119 119 120 120 The interface for this routine is … … 134 134 135 135 136 === `U_prepoststep` (prepoststep_seik .F90) ===136 === `U_prepoststep` (prepoststep_seik_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 ect_state` (collect_state.F90) ===168 === `U_coll_state` (collect_state_pdaf.F90) === 169 169 170 170 The interface for this routine is