Changes between Version 3 and Version 4 of ImplementAnalysisenkf


Ignore:
Timestamp:
Sep 15, 2011, 3:29:21 PM (8 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ImplementAnalysisenkf

    v3 v4  
    4545}}}
    4646with the following arguments:
    47  * [#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`
    48  * [#U_init_dim_obsinit_dim_obs.F90 U_init_dim_obs]: The name of the user-supplied routine that provides the size of observation vector
    49  * [#U_obs_opobs_op.F90 U_obs_op]: The name of the user-supplied routine that acts as the observation operator on some state vector
    50  * [#U_init_obsinit_obs.F90 U_init_obs]: The name of the user-supplied routine that initializes the vector of observations
    51  * [#U_prepoststepprepoststep_seik.F90 U_prepoststep]: The name of the pre/poststep routine as in `PDAF_get_state`
    52  * [#U_add_obs_erradd_obs_err.F90 U_add_obs_err]: The name of the user-supplied routine that adds the observation error covariance matrix to the ensemble covariance matrix projected onto the observation space.
    53  * [#U_init_obscovarinit_obscovar.F90 U_init_obscovar]: The name of the user-supplied routine that initializes the observation error covariance matrix.
     47 * [#U_collect_statecollect_state_pdaf.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`
     48 * [#U_init_dim_obsinit_dim_obs_pdaf.F90 U_init_dim_obs]: The name of the user-supplied routine that provides the size of observation vector
     49 * [#U_obs_opobs_op_pdaf.F90 U_obs_op]: The name of the user-supplied routine that acts as the observation operator on some state vector
     50 * [#U_init_obsinit_obs_pdaf.F90 U_init_obs]: The name of the user-supplied routine that initializes the vector of observations
     51 * [#U_prepoststepprepoststep_seik_pdaf.F90 U_prepoststep]: The name of the pre/poststep routine as in `PDAF_get_state`
     52 * [#U_add_obs_erradd_obs_err_pdaf.F90 U_add_obs_err]: The name of the user-supplied routine that adds the observation error covariance matrix to the ensemble covariance matrix projected onto the observation space.
     53 * [#U_init_obscovarinit_obscovar_pdaf.F90 U_init_obscovar]: The name of the user-supplied routine that initializes the observation error covariance matrix.
    5454 * `status`: The integer status flag. It is zero, if `PDAF_put_state_enkf` is exited without errors.
    5555
     
    5959Here all user-supplied routines are described that are required in the call to `PDAF_put_state_enkf`. For some of the generic routines, we link to the page on [ModifyModelforEnsembleIntegration modifying the model code for the ensemble integration].
    6060
    61 To indicate user-supplied routines we use the prefix `U_`. In the template directory `templates/` these routines are provided in files with the routine's 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.
     61To indicate user-supplied routines we use the prefix `U_`. In the template directory `templates/` these routines are provided in files with the routine's 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.
    6262
    6363In the subroutine interfaces some variables appear with the suffix `_p`. This suffix indicates that the variable is particular to a model sub-domain, if a domain decomposed model is used. Thus, the value(s) in the variable will be different for different model sub-domains.
    6464
    6565
    66 === `U_collect_state` (collect_state.F90) ===
     66=== `U_collect_state` (collect_state_pdaf.F90) ===
    6767
    6868This routine is independent of the filter algorithm used.
    69 See the page [ModifyModelforEnsembleIntegration#U_collect_statecollect_state.F90 modifying the model code for the ensemble integration] for the description of this routine.
    70 
    71 
    72 === `U_init_dim_obs` (init_dim_obs.F90) ===
     69See the page [ModifyModelforEnsembleIntegration#U_collect_statecollect_state_pdaf.F90 modifying the model code for the ensemble integration] for the description of this routine.
     70
     71
     72=== `U_init_dim_obs` (init_dim_obs_pdaf.F90) ===
    7373
    7474This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF).
     
    8888
    8989
    90 === `U_obs_op` (obs_op.F90) ===
     90=== `U_obs_op` (obs_op_pdaf.F90) ===
    9191
    9292This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF).
     
    111111
    112112
    113 === `U_init_obs` (init_obs.F90) ===
     113=== `U_init_obs` (init_obs_pdaf.F90) ===
    114114
    115115This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF).
     
    130130
    131131
    132 === `U_prepoststep` (prepoststep_enkf.F90) ===
     132=== `U_prepoststep` (prepoststep_enkf_pdaf.F90) ===
    133133
    134134The general aspects of this routines have already been described on the [ModifyModelforEnsembleIntegration#U_prepoststepprepoststep_seik.F90 page on modifying the model code for the ensemble integration] for the SEIK filter. For completeness, the description is repeated specifically for the EnKF:
     
    166166
    167167
    168 === `U_add_obs_err` (add_obs_err.F90) ===
     168=== `U_add_obs_err` (add_obs_err_pdaf.F90) ===
    169169
    170170This routine is only used for the EnKF.
     
    189189
    190190
    191 === `U_init_obscovar` (init_obscovar.F90) ===
     191=== `U_init_obscovar` (init_obscovar_pdaf.F90) ===
    192192
    193193This routine is only used for the EnKF.
     
    219219
    220220Before the analysis step is called the following routine is executed:
    221  1. [#U_collect_statecollect_state.F90 U_collect_state]
     221 1. [#U_collect_statecollect_state_pdaf.F90 U_collect_state]
    222222
    223223The analysis step is executed when the ensemble integration of the forecast is completed. During the analysis step the following routines are executed in the given order:
    224  1. [#U_prepoststepprepoststep_seik.F90 U_prepoststep] (Call to act on the forecast ensemble, called with negative value of the time step)
    225  1. [#U_init_dim_obsinit_dim_obs.F90 U_init_dim_obs]
    226  1. [#U_obs_opobs_op.F90 U_obs_op] (`dim_ens` calls: one call for each ensemble member)
    227  1. [#U_add_obs_erradd_obs_err.F90 U_add_obs_err]
    228  1. [#U_init_obsinit_obs.F90 U_init_obs]
    229  1. [#U_init_obscovarinit_obscovar.F90 U_init_obscovar]
    230  1. [#U_obs_opobs_op.F90 U_obs_op] (`dim_ens` calls: one call for each ensemble member, repeated to reduce storage)
    231  1. [#U_prepoststepprepoststep_seik.F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step)
    232 
     224 1. [#U_prepoststepprepoststep_seik_pdaf.F90 U_prepoststep] (Call to act on the forecast ensemble, called with negative value of the time step)
     225 1. [#U_init_dim_obsinit_dim_obs_pdaf.F90 U_init_dim_obs]
     226 1. [#U_obs_opobs_op_pdaf.F90 U_obs_op] (`dim_ens` calls: one call for each ensemble member)
     227 1. [#U_add_obs_erradd_obs_err_pdaf.F90 U_add_obs_err]
     228 1. [#U_init_obsinit_obs_pdaf.F90 U_init_obs]
     229 1. [#U_init_obscovarinit_obscovar_pdaf.F90 U_init_obscovar]
     230 1. [#U_obs_opobs_op_pdaf.F90 U_obs_op] (`dim_ens` calls: one call for each ensemble member, repeated to reduce storage)
     231 1. [#U_prepoststepprepoststep_seik_pdaf.F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step)
     232