Changes between Version 12 and Version 13 of OMI_observation_operators

Dec 18, 2021, 1:05:16 PM (9 months ago)



  • 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.
    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.
    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:
     172  SUBROUTINE PDAFomi_gather_obsstate(thisobs, obsstate_p, obsstate_f)
     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
    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.