Changes between Version 5 and Version 6 of ImplementAnalysisseek
- Timestamp:
- Sep 15, 2011, 3:26:29 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ImplementAnalysisseek
v5 v6 46 46 }}} 47 47 with the following arguments: 48 * [#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`49 * [#U_init_dim_obsinit_dim_obs .F90 U_init_dim_obs]: The name of the user-supplied routine that provides the size of observation vector50 * [#U_obs_opobs_op .F90 U_obs_op]: The name of the user-supplied routine that acts as the observation operator on some state vector51 * [#U_init_obsinit_obs .F90 U_init_obs]: The name of the user-supplied routine that initializes the vector of observations52 * [#U_prepoststepprepoststep_seek .F90 U_prepoststep]: The name of the pre/poststep routine as in `PDAF_get_state`53 * [#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 SEEK filter.54 * [#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)48 * [#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` 49 * [#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 50 * [#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 51 * [#U_init_obsinit_obs_pdaf.F90 U_init_obs]: The name of the user-supplied routine that initializes the vector of observations 52 * [#U_prepoststepprepoststep_seek_pdaf.F90 U_prepoststep]: The name of the pre/poststep routine as in `PDAF_get_state` 53 * [#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 SEEK filter. 54 * [#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) 55 55 * `status`: The integer status flag. It is zero, if `PDAF_put_state_seek` is exited without errors. 56 56 … … 60 60 Here, all user-supplied routines are described that are required in the call to `PDAF_put_state_seek`. For some of the generic routines, we link to the page on [ModifyModelforEnsembleIntegration modifying the model code for the ensemble integration]. 61 61 62 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.62 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 `_pdaf.F90`. In the section titles below we provide the name of the template file in parentheses. 63 63 64 64 In 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. 65 65 66 66 67 === `U_collect_state` (collect_state .F90) ===67 === `U_collect_state` (collect_state_pdaf.F90) === 68 68 69 69 This routine is independent of the filter algorithm used. 70 See the page [ModifyModelforEnsembleIntegration#U_collect_statecollect_state .F90 modifying the model code for the ensemble integration] for the description of this routine.71 72 73 === `U_init_dim_obs` (init_dim_obs .F90) ===70 See the page [ModifyModelforEnsembleIntegration#U_collect_statecollect_state_pdaf.F90 modifying the model code for the ensemble integration] for the description of this routine. 71 72 73 === `U_init_dim_obs` (init_dim_obs_pdaf.F90) === 74 74 75 75 This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF). … … 89 89 90 90 91 === `U_obs_op` (obs_op .F90) ===91 === `U_obs_op` (obs_op_pdaf.F90) === 92 92 93 93 This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF). … … 112 112 113 113 114 === `U_init_obs` (init_obs .F90) ===114 === `U_init_obs` (init_obs_pdaf.F90) === 115 115 116 116 This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF). … … 131 131 132 132 133 === `U_prepoststep` (prepoststep_seek .F90) ===134 135 The routine has 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 the SEEK filter there are some differences, because of the fact that the covariance matrix is computed from the modes and eigenvalue matrix rather than from an ensemble of model states.133 === `U_prepoststep` (prepoststep_seek_pdaf.F90) === 134 135 The routine has already been described on the [ModifyModelforEnsembleIntegration#U_prepoststepprepoststep_seik_pdaf.F90 page on modifying the model code for the ensemble integration] for the SEIK filter. For the SEEK filter there are some differences, because of the fact that the covariance matrix is computed from the modes and eigenvalue matrix rather than from an ensemble of model states. 136 136 137 137 The interface of the routine is identical for all filters, but sizes can be different. In addition, the particular operations that are performed in the routine can be specific for each filter algorithm. … … 163 163 164 164 165 === `U_prodRinvA` (prodrinva .F90) ===165 === `U_prodRinvA` (prodrinva_pdaf.F90) === 166 166 167 167 This routine is used by all filter algorithms that use the inverse of the observation error covariance matrix (SEEK, SEIK, and ETKF). … … 193 193 194 194 Before the analysis step is called the following routine is executed: 195 1. [#U_collect_statecollect_state .F90 U_collect_state]195 1. [#U_collect_statecollect_state_pdaf.F90 U_collect_state] 196 196 197 197 The 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: 198 1. [#U_prepoststepprepoststep_seek .F90 U_prepoststep] (Call to act on the forecast ensemble, called with negative value of the time step)199 1. [#U_init_dim_obsinit_dim_obs .F90 U_init_dim_obs]200 1. [#U_obs_opobs_op .F90 U_obs_op] (A single call to operate on the ensemble mean state)201 1. [#U_init_obsinit_obs .F90 U_init_obs]202 1. [#U_obs_opobs_op .F90 U_obs_op] (`dim_eof` calls: one call for each ensemble member)203 1. [#U_prodRinvAprodrinva .F90 U_prodRinvA]204 1. [#U_prepoststepprepoststep_seek .F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step)198 1. [#U_prepoststepprepoststep_seek_pdaf.F90 U_prepoststep] (Call to act on the forecast ensemble, called with negative value of the time step) 199 1. [#U_init_dim_obsinit_dim_obs_pdaf.F90 U_init_dim_obs] 200 1. [#U_obs_opobs_op_pdaf.F90 U_obs_op] (A single call to operate on the ensemble mean state) 201 1. [#U_init_obsinit_obs_pdaf.F90 U_init_obs] 202 1. [#U_obs_opobs_op_pdaf.F90 U_obs_op] (`dim_eof` calls: one call for each ensemble member) 203 1. [#U_prodRinvAprodrinva_pdaf.F90 U_prodRinvA] 204 1. [#U_prepoststepprepoststep_seek_pdaf.F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step)