Changes between Version 18 and Version 19 of ModifyModelforEnsembleIntegration


Ignore:
Timestamp:
Sep 3, 2010, 3:59:51 PM (14 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ModifyModelforEnsembleIntegration

    v18 v19  
    7070 * [#U_next_observationnext_observation.F90 U_next_observation]: The name of a user supplied routine that initializes the variables `nsteps`, `timenow`, and `doexit`
    7171 * [#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
    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.
     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.
    7373 * `status`: The integer status flag. It is zero, if `PDAF_get_state` is exited without errors.
    7474
    7575== PDAF_put_state_X ==
    7676
    77 There is a separate routine `PDAF_put_state_*` for each of the filter algorithms. The name of the routine includes the name of the filter at its end. The purpose of the `PDAF_put_state_*` routines is to write back the forecast model fields into the array holding the ensemble of model state vectors. In addition, the routine checks if the current forecast phase is completed. If not, the routine is exited and the next cycle of the ensemble loop is performed. If the current forecast phase is completed, the routine executes the analysis step of the chosen filter algorithm. The interface to each put-state routine is specific for each filter algorithm, because the names of several user-supplied routines have to be specified, which are specific for each filter algorithm. For example, the interface when using the SEIK filter is the following:
     77There is a separate routine `PDAF_put_state_*` for each of the filter algorithms. The name of the routine includes the name of the filter at its end. The purpose of the `PDAF_put_state_*` routines is to write back the forecast model fields into the array holding the ensemble of model state vectors. In addition, the routine checks if the current forecast phase is completed. If not, the routine is exited and the next cycle of the ensemble loop is performed. If the current forecast phase is completed, the routine executes the analysis step of the chosen filter algorithm. The interface to each put-state routine is specific for each filter algorithm, because the names of several user-supplied routines have to be specified, which are specific for each filter algorithm. However, at the stage of implementing the ensemble integration only the first and last arguments of the routines are relevant.
     78
     79For example, the interface when using the SEIK filter is the following:
    7880{{{
    7981  SUBROUTINE PDAF_put_state_seik(U_collect_state, U_init_dim_obs, U_obs_op, &
    8082                                 U_init_obs, U_prepoststep, U_prodRinvA, U_init_obsvar, status)
    8183}}}
    82 with the following arguments:
    83  * `U_collect_state`: The name of the user-supplied routine that initializes a state vector from the array holding the ensembel of model states from the model fields. This is basically the inverse operation to `U_distribute_state` used in `PDAF_get_state`
    84  * `U_init_dim_obs`: The name of the user-supplied routine that provides the size of observation vector
    85  * `U_obs_op`: The name of the user-supplied routine that acts as the observation operator on some state vector
    86  * `U_init_obs`: The name of the user-supplied routine that initializes the vector of observations
    87  * `U_prepoststep`: The name of the pre/poststep routine as in `PDAF_get_state`
    88  * `U_prodRinvA`: The name of the user-supplied routine that computes the product of the inverse of the observation error covariance matrix with some matrix provided to the routine by PDAF. This operation occurs during the analysis step of the SEIK filter.
    89  * `U_init_obsvar`: The name of the user-supplied routine that provides a mean observation error variance to PDAF (This routine will only be executed, if an adaptive forgetting factor is used)
     84At 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`
    9086 * `status`: The integer status flag. It is zero, if PDAF_get_state is exited without errors.
    9187
     88The other arguments are names of user-supplied subroutines that are only executed if the analysis step is executed. These routines are explained in the next section of the implementation guide ([ImplementationofAnalysisStep Implementation of the Analysis step]) separately for each available filter algorithm.
     89
     90
    9291== User-supplied routines ==
    9392
    94 Here, only the user-supplied routines are discussed that are required at this stage of the implementation (that is, the ensemble integration). The routines that are required to conduct the analysis step of some filter, are described in the main section about the implementation of the analysis step. 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.
     93Here, 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.
    9594
    9695To 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.