| | 1 | = PDAF-OMI Observation Modules = |
| | 2 | |
| | 3 | [[PageOutline(2-3,Contents of this page)]] |
| | 4 | |
| | 5 | The implementation of the observations with OMI is done in observation modules (obs-modules). For each observation type a separate module should be created. |
| | 6 | |
| | 7 | Each obs-module contains four routines: |
| | 8 | |
| | 9 | - 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 derived type). |
| | 10 | - obs_op applies the observation operator to a state vector. One can call an observation operator routine provided by PDAF, or one can to implement a new operator. |
| | 11 | - init_dim_obs_l calls a PDAF-OMI routine to initialize the observation information corresponding to a local analysis domain. One can set localization parameters, liek the localization radius, for each observation type. |
| | 12 | - localize_covar calls a PDAF-OMI routine to apply covariance localization. One can set localization parameters, liek the localization radius, for each observation type. |
| | 13 | |
| | 14 | == obs_f data type == |
| | 15 | |
| | 16 | To ensure the functionality within each obs-module, we rely on a derived data type called `obs_f` that describes the observation. One instance of this data type is allocated in each obs-module as the variable `thisobs`. a few of the elements of `obs_f` are initialized by the user when the observation information is initialized on `init_dim_obs_f`. Further information is set in a call to the routine `PDAFomi_gather_obs`. This information is then used by all other routines in the obs-module. The template file obs_TYPE_pdafomi_TEMPLATE.F90 shows the different steps needed to initialize thisobs. |
| | 17 | |
| | 18 | {{{ |
| | 19 | ! ---- Mandatory variables to be set in init_dim_obs_f ---- |
| | 20 | INTEGER :: doassim ! Whether to assimilate this observation type |
| | 21 | INTEGER :: disttype ! Type of distance computation to use for localization |
| | 22 | ! (0) Cartesian, (1) Cartesian periodic |
| | 23 | ! (2) simplified geographic, (3) geographic haversine function |
| | 24 | INTEGER :: ncoord ! Number of coordinates use for distance computation |
| | 25 | INTEGER, ALLOCATABLE :: id_obs_p(:,:) ! Indices of observed field in state vector (process-local) |
| | 26 | }}} |
| | 27 | |
| | 28 | |