Changes between Version 12 and Version 13 of OMI_observation_operators
- Timestamp:
- Dec 18, 2021, 1:05:16 PM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
OMI_observation_operators
v12 v13 163 163 The current set of observation operators provided by PDAF-OMI is rather fundamental. However, there are also observation types which are not variables of state vector, but functions of several values. Likewise one might want to use a more sophisticated interpolation than the linear one or some interpolation that treats the horizontal and vertical directions separately. For these cases you can implement you own operators. 164 164 165 The observation operators in /src/PDAFomi_obs_op.F90 can be used as examples.165 The template observation operator in /template/omi/ob_op_pdafomi_TEMPLATE.F90 can be used as the basis for the implementation. It describes the steps needs in the implementation. 166 166 167 167 Each observation operator include the following functionality: 168 168 1. Check whether `thisobs%doassim==1`, which indicates that the observation is assimilated 169 169 2. initialize the observation vector `ostate_p` for the observation type for which the routine is called. For a parallel model this is done for for the process-local domain (for a model without parallelization this is the global domain) 170 3. Call `PDAFomi_gather_obsstate` to gather the full observation vector `obs_f_all`. This call is mandatory even if the model is not parallelized. 170 3. Call `PDAFomi_gather_obsstate` to gather the full observation vector `obs_f_all`. This call is mandatory even if the model is not parallelized. The interface is: 171 {{{ 172 SUBROUTINE PDAFomi_gather_obsstate(thisobs, obsstate_p, obsstate_f) 173 174 TYPE(obs_f), INTENT(inout) :: thisobs ! Data type with full observation 175 REAL, INTENT(in) :: ostate_p(:) ! Vector of process-local observed state 176 REAL, INTENT(inout) :: obs_f_all(:) ! Full observed vector for all types 177 }}} 171 178 172 179 Generally one can implement any function that computes an observation from the elements of the state vector that is provided to the routine as `state_p`. The coordinate information is provided in `thisobs`. One can also modify the interface to the obsration operator routine if, e.g., additional information is required.