Changes between Version 10 and Version 11 of PDAF_OMI_Overview
 Timestamp:
 Nov 18, 2020, 4:31:22 PM (7 days ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

PDAF_OMI_Overview
v10 v11 49 49 Since the actual opernations are done in the obsmodules obs_*_pdafomi, the remaining three callback routines (init_dim_obs, obs_op, init_dim_obs_l) are reduced to passthrough routines. Thus, each of these routines contains only calls to one observationspecific routine from each obsmodule. There is, in addition, one routine for deallocating the observationrelated arrays which calls a generic PDAFOMI routine for each observation type. As the callback routines become very compact by this change, they are collected into the file callback_obs_pdafomi.F90. This is mainly for convenience, because all these routines are now ‘in one place’. This simplifies the addition of a new data type by adding a subroutine call to each of the routines in this file. (Note, that callback_obs_pdafomi.F90 does not define a Fortran module. This is because the callback routines of PDAF are not contained in a module as this would require to compile the module together with the PDAF core so that the PDAF core would no longer be generic.) When adding a new observation type only a new subroutine call has to be added to each of the routines in callback_obs_pdafomi.F90. 50 50 51 Each obsmodule contains threeroutines:51 Each obsmodule contains four routines: 52 52 1. `init_dim_obs` initializes all variables holding the information about one observation type. The information about the observation type is stored in a data structure (Fortran type). 53 53 1. `obs_op` applies the observation operator to a state vector. For the latter routine one can select an observation operator from the list of operators provided by OMI, or one can to implement a new operator. 54 1. `init_dim_obs_l` calls a PDAFOMI routine to initialize the observation information corresponding to a local analysis domain. Here for can set a different localization radius for each observation type. 54 1. `init_dim_obs_l` calls a PDAFOMI routine to initialize the observation information corresponding to a local analysis domain. Here for can set a different localization radius for each observation type. 55 1. `localize_covar` calls a PDAFOMI routine to apply covariance localization. 55 56 56 For each observation type, PDAFOMI uses a data structure that was initialized in the obsmodule. The set of routines in `callback_obs_pdafomi.F90` provide the observation handling for all filters and smoothers provided by PDAF. Thus once, `init_dim_obs` and `obs_op` are implemented for a particular observation and the subroutine calls in `callback_obs_pdafomi.F90` for this observation type are inserted, one can use each of the provided assimilation methods. (An exception is the local EnKF, which needs one additional routine to localize the covariance matrix. The actual operation is, however, also performed by a routine provided by PDAFOMI).57 For each observation type, PDAFOMI uses a data structure that was initialized in the obsmodule. The set of routines in `callback_obs_pdafomi.F90` provide the observation handling for all filters and smoothers provided by PDAF. Thus once, the routines are implemented for a particular observation and the subroutine calls in `callback_obs_pdafomi.F90` for this observation type are inserted, one can use each of the provided assimilation methods. Here `init_dim_obs_l` is only required if one plans to use domainlocalized filters like LESTKF, LETKF or LNETF. Likewise, `localize_covar` is only required if on likes to use the loalized EnKF (LEnKF). 57 58 58 59 == Further documentation of PDAFOMI == … … 61 62 62 63  [wiki:OMI_Callback_obs_pdafomi The file callback_obs_pdafomi.F90] 64  OMI routines to call the analysis step: 65  [wiki:ImplementAnalysislLocal Implementation for Local Filters] 66  [wiki:ImplementAnalysislGlocal Implementation for Global Filters] 67  [wiki:ImplementAnalysislenkfOmi Implementation for localized EnKF] 63 68 64 69 == Implementation examples ==