Changes between Version 12 and Version 13 of OMI_observation_operators


Ignore:
Timestamp:
Dec 18, 2021, 1:05:16 PM (3 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OMI_observation_operators

    v12 v13  
    163163The 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.
    164164
    165 The observation operators in /src/PDAFomi_obs_op.F90 can be used as examples.
     165The 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.
    166166
    167167Each observation operator include the following functionality:
    168168 1. Check whether `thisobs%doassim==1`, which indicates that the observation is assimilated
    169169 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}}}
    171178
    172179Generally 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.