Changes between Version 2 and Version 3 of PDAF_OMI_Overview_PDAF23


Ignore:
Timestamp:
Jun 3, 2025, 2:31:19 PM (3 days ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PDAF_OMI_Overview_PDAF23

    v2 v3  
    66<h4>PDAF-OMI Guide</h4>
    77<ol><li>Overview</li>
    8 <li><a href="OMI_Callback_obs_pdafomi">callback_obs_pdafomi.F90</a></li>
    9 <li><a href="OMI_observation_modules">Observation Modules</a></li>
    10 <li><a href="OMI_observation_operators">Observation operators</a></li>
    11 <li><a href="OMI_error_checking">Checking error status</a></li>
    12 <li><a href="OMI_debugging">Debugging functionality</a></li>
    13 <li><a href="OMI_ImplementationofAnalysisStep">Implementing the analysis step with OMI</a></li>
    14 <li><a href="OMI_nondiagonal_observation_error_covariance_matrices">Using nondiagonal R-matrices</a></li>
    15 <li><a href="Porting_to_OMI">Porting an existing implemention to OMI</a></li>
    16 <li><a href="PDAFomi_additional_functionality">Additional OMI Functionality</a></li>
     8<li><a href="OMI_Callback_obs_pdafomi_PDAF23">callback_obs_pdafomi.F90</a></li>
     9<li><a href="OMI_observation_modules_PDAF23">Observation Modules</a></li>
     10<li><a href="OMI_observation_operators_PDAF23">Observation operators</a></li>
     11<li><a href="OMI_error_checking_PDAF23">Checking error status</a></li>
     12<li><a href="OMI_debugging_PDAF23">Debugging functionality</a></li>
     13<li><a href="OMI_ImplementationofAnalysisStep_PDAF23">Implementing the analysis step with OMI</a></li>
     14<li><a href="OMI_nondiagonal_observation_error_covariance_matrices_PDAF23">Using nondiagonal R-matrices</a></li>
     15<li><a href="Porting_to_OMI_PDAF23">Porting an existing implemention to OMI</a></li>
     16<li><a href="PDAFomi_additional_functionality_PDAF23">Additional OMI Functionality</a></li>
    1717</ol>
    1818</div>
     
    6767With OMI, the functionality to handle observations is included in generic routines and observation-specific modules (obs_*_pdafomi in the third column in Fig. 1, denoted obs-module below). Based on the information initialized in the call-back routines, PDAF can perform further observation handling internally. Only the routines mentioned above that perform observation-specific operations (initialization, observation operator, localization) need to be implemented. There is one obs-module per observation type with contains these routines. For example, one can have one obs-module for the satellite sea surface temperature from one data provider and another one for sea level anomaly data. Important is that each of these obs-modules, which are further described below, is independent from the others. This allows us to switch between different combinations of observations ensuring that their implementations don’t interfere.
    6868
    69 Since the actual operations are performed in the obs-modules `obs_*_pdafomi`, the generic call-back routines (init_dim_obs_pdafomi, obs_op_pdafomi, init_dim_obs_l_pdafomi, localize_covar_pdafomi) are reduced to pass-through routines. Thus, each of these routines contains only calls to one observation-specific routine from each obs-module.
     69Since the actual operations are performed in the obs-modules `obs_OBSTYPE_pdafomi`, the generic call-back routines (init_dim_obs_pdafomi, obs_op_pdafomi, init_dim_obs_l_pdafomi, localize_covar_pdafomi) are reduced to pass-through routines. Thus, each of these routines contains only calls to one observation-specific routine from each obs-module.
    7070Because the generic call-back routines are very compact, they are collected into the file `callback_obs_pdafomi.F90`. This is mainly for convenience, because all these routines are now ‘in one place’. Thus, when adding a new observation type only a new subroutine call has to be added to each of the routines in this file. (Note, that callback_obs_pdafomi.F90 does not define a Fortran module. This is because the call-back 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.)
    7171
     
    111111
    112112The current version of PDAF-OMI has a few limitations
    113  - PDAF V2.3 added support for non-diagonal observation error covariance matrices **R** while previous versions only supported diagonal observation error covariance matrices  (though, the observation variances can vary). Using nondiagonal **R**-matrices, requires a user-supplied code for operations relating to **R** (see the documentation on the implemenetation for [wiki:OMI_nondiagonal_observation_error_covariance_matrices using non-diagonal R-matrices with OMI])
     113 - PDAF V2.3 added support for non-diagonal observation error covariance matrices **R** while previous versions only supported diagonal observation error covariance matrices  (though, the observation variances can vary). Using nondiagonal **R**-matrices, requires a user-supplied code for operations relating to **R** (see the documentation on the implemenetation for [wiki:OMI_nondiagonal_observation_error_covariance_matrices_PDAF23 using non-diagonal R-matrices with OMI])
    114114 - OMI currently only includes observation operators with linear interpolation and for observation located at grid points.
    115115 - We have not tested interoperability with other programming languages. Generally Fortran derived data types and C structs should be compatible. Obviously, taking the Fortran routines and calling C functions to perform the actual initializations will work.