Changes between Version 12 and Version 13 of ImplementAnalysisetkf


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

--

Legend:

Unmodified
Added
Removed
Modified
  • ImplementAnalysisetkf

    v12 v13  
    4343}}}
    4444with the following arguments:
    45  * [#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`
    46  * [#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
    47  * [#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
    48  * [#U_init_obsinit_obs.F90 U_init_obs]: The name of the user-supplied routine that initializes the vector of observations
    49  * [#U_prepoststepprepoststep_seik.F90 U_prepoststep]: The name of the pre/poststep routine as in `PDAF_get_state`
    50  * [#U_prodRinvAprodrinva.F90 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 ETKF.
    51  * [#U_init_obsvarinit_obsvar.F90 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)
     45 * [#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`
     46 * [#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
     47 * [#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
     48 * [#U_init_obsinit_obs_pdaf.F90 U_init_obs]: The name of the user-supplied routine that initializes the vector of observations
     49 * [#U_prepoststepprepoststep_seik_pdaf.F90 U_prepoststep]: The name of the pre/poststep routine as in `PDAF_get_state`
     50 * [#U_prodRinvAprodrinva_pdaf.F90 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 ETKF.
     51 * [#U_init_obsvarinit_obsvar_pdaf.F90 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)
    5252 * `status`: The integer status flag. It is zero, if `PDAF_put_state_etkf` is exited without errors.
    5353
     
    5757Here, all user-supplied routines are described that are required in the call to `PDAF_put_state_etkf`. For some of the generic routines, we link to the page on [ModifyModelforEnsembleIntegration modifying the model code for the ensemble integration].
    5858
    59 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.
     59To 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.
    6060
    6161In 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.
    6262
    6363
    64 === `U_collect_state` (collect_state.F90) ===
     64=== `U_collect_state` (collect_state_pdaf.F90) ===
    6565
    6666This routine is independent of the filter algorithm used.
     
    6868
    6969
    70 === `U_init_dim_obs` (init_dim_obs.F90) ===
     70=== `U_init_dim_obs` (init_dim_obs_pdaf.F90) ===
    7171
    7272This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF).
     
    8686
    8787
    88 === `U_obs_op` (obs_op.F90) ===
     88=== `U_obs_op` (obs_op_pdaf.F90) ===
    8989
    9090This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF).
     
    109109
    110110
    111 === `U_init_obs` (init_obs.F90) ===
     111=== `U_init_obs` (init_obs_pdaf.F90) ===
    112112
    113113This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF).
     
    128128
    129129
    130 === `U_prepoststep` (prepoststep_etkf.F90) ===
     130=== `U_prepoststep` (prepoststep_etkf_pdaf.F90) ===
    131131 
    132132The routine has been described on the [ModifyModelforEnsembleIntegration#U_prepoststepprepoststep_seik.F90 page on modifying the model code for the ensemble integration] for the SEIK filter. For the ETKF, the interface is generally identical. For completeness, we repeat the description here.
     
    161161
    162162
    163 === `U_prodRinvA` (prodrinva.F90) ===
     163=== `U_prodRinvA` (prodrinva_pdaf.F90) ===
    164164
    165165This routine is used by all filter algorithms that use the inverse of the observation error covariance matrix (SEEK, SEIK, and ETKF).
     
    187187
    188188
    189 === `U_init_obsvar` (init_obsvar.F90) ===
     189=== `U_init_obsvar` (init_obsvar_pdaf.F90) ===
    190190
    191191This routine is used by the global filter algorithms SEIK and  ETKF as well as the local filters LSEIK and LETKF. The routine is only called if the adaptive forgetting factor is used (`type_forget=1` in the example implementation).
     
    216216
    217217Before the analysis step is called, the following routine is executed:
    218  1. [#U_collect_statecollect_state.F90 U_collect_state]
     218 1. [#U_collect_statecollect_state_pdaf.F90 U_collect_state]
    219219
    220220The 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:
    221  1. [#U_prepoststepprepoststep_etkf.F90 U_prepoststep] (Call to act on the forecast ensemble, called with negative value of the time step)
    222  1. [#U_init_dim_obsinit_dim_obs.F90 U_init_dim_obs]
    223  1. [#U_obs_opobs_op.F90 U_obs_op] (A single call to operate on the ensemble mean state)
    224  1. [#U_init_obsinit_obs.F90 U_init_obs]
    225  1. [#U_obs_opobs_op.F90 U_obs_op] (`dim_ens` calls; one call for each ensemble member)
    226  1. [#U_init_obsvarinit_obsvar.F90 U_init_obsvar] (Only executed, if the adaptive forgetting factor is used (`type_forget=1` in the example implemention))
    227  1. [#U_prodRinvAprodrinva.F90 U_prodRinvA]
    228  1. [#U_prepoststepprepoststep_etkf.F90 U_prepoststep] (call to act on the analysis ensemble, called with (positive) value of the time step)
    229 
     221 1. [#U_prepoststepprepoststep_etkf_pdaf.F90 U_prepoststep] (Call to act on the forecast ensemble, called with negative value of the time step)
     222 1. [#U_init_dim_obsinit_dim_obs_pdaf.F90 U_init_dim_obs]
     223 1. [#U_obs_opobs_op_pdaf.F90 U_obs_op] (A single call to operate on the ensemble mean state)
     224 1. [#U_init_obsinit_obs_pdaf.F90 U_init_obs]
     225 1. [#U_obs_opobs_op_pdaf.F90 U_obs_op] (`dim_ens` calls; one call for each ensemble member)
     226 1. [#U_init_obsvarinit_obsvar_pdaf.F90 U_init_obsvar] (Only executed, if the adaptive forgetting factor is used (`type_forget=1` in the example implemention))
     227 1. [#U_prodRinvAprodrinva_pdaf.F90 U_prodRinvA]
     228 1. [#U_prepoststepprepoststep_etkf_pdaf.F90 U_prepoststep] (call to act on the analysis ensemble, called with (positive) value of the time step)
     229