Changes between Version 25 and Version 26 of ModifyModelforEnsembleIntegration


Ignore:
Timestamp:
Sep 15, 2011, 2:18:32 PM (13 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ModifyModelforEnsembleIntegration

    v25 v26  
    6161The interface of `PDAF_get_state` is the following:
    6262{{{
    63   SUBROUTINE PDAF_get_state(nsteps, timenow, doexit, U_next_observation, U_distribute_state, &
     63  SUBROUTINE PDAF_get_state(nsteps, timenow, doexit, U_next_obs, U_dist_state, &
    6464                            U_prepoststep, status)
    6565}}}
     
    6868 * `timenow`: A real specifying upon exit the current model time. 
    6969 * `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_observation]: The name of a user supplied routine that initializes the variables `nsteps`, `timenow`, and `doexit`
    71  * [#U_distribute_statedistribute_state.F90 U_distributed_state]: The name of a user supplied routine that initializes the model fields from the array holding the ensemble of model state vectors
     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 vectors
    7272 * [#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.
    7373 * `status`: The integer status flag. It is zero, if `PDAF_get_state` is exited without errors.
     
    7979For example, the interface when using the SEIK filter is the following:
    8080{{{
    81   SUBROUTINE PDAF_put_state_seik(U_collect_state, U_init_dim_obs, U_obs_op, &
     81  SUBROUTINE PDAF_put_state_seik(U_coll_state, U_init_dim_obs, U_obs_op, &
    8282                                 U_init_obs, U_prepoststep, U_prodRinvA, U_init_obsvar, status)
    8383}}}
    8484At this state of the implementation only these arguments are relevant:
    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_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`
    8686 * `status`: The integer status flag. It is zero, if PDAF_get_state is exited without errors.
    8787
     
    9595To 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.
    9696
    97 === `U_next_observation` (next_observation.F90) ===
     97=== `U_next_obs` (next_observation_pdaf.F90) ===
    9898
    9999The interface for this routine is
     
    116116 * 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.
    117117
    118 === `U_distribute_state` (distribute_state.F90) ===
     118=== `U_dist_state` (distribute_state_pdaf.F90) ===
    119119
    120120The interface for this routine is
     
    134134
    135135
    136 === `U_prepoststep` (prepoststep_seik.F90) ===
     136=== `U_prepoststep` (prepoststep_seik_pdaf.F90) ===
    137137
    138138The 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.
     
    166166
    167167
    168 === `U_collect_state` (collect_state.F90) ===
     168=== `U_coll_state` (collect_state_pdaf.F90) ===
    169169
    170170The interface for this routine is