wiki:PDAFomi_store_obs_l_index

Version 1 (modified by lnerger, 2 months ago) (diff)

--

PDAFomi_store_obs_l_index

This page documents the routine PDAFomi_set_dim_obs_l of PDAF-OMI.

This routine is used for the case that a user implements a user-provided alternative for the routine PDAFomi_init_dim_obs_l, which initializes the local observation information for PDAF-OMI in thisobs_l for a single local analysis domain.

The routine can to be called in init_dim_obs_l_OBSTYPE in each observation module if a domain-localized filter (LESTKF/LETKF/LNETF/LSEIK/LKNETF)is used.

See the page on user-provided initialization of local observations for the full description of a user-provided routine to intialize local observations.

The interface is:

  SUBROUTINE PDAFomi_store_obs_l_index(thisobs_l, idx, id_obs_l, distance, &
       cradius_l, sradius_l)

    TYPE(obs_l), INTENT(inout) :: thisobs_l  ! Data type with local observation
    INTEGER, INTENT(in) :: idx               ! Element of local observation array to be filled
    INTEGER, INTENT(in) :: id_obs_l          ! Index of local observation in full observation array
    REAL, INTENT(in) :: distance             ! Distance between local analysis domain and observation
    REAL, INTENT(in) :: cradius_l            ! cut-off radius for this local observation 
                                             !  (directional radius in case of non-isotropic localization)
    REAL, INTENT(in) :: sradius_l            ! support radius for this local observation
                                             !  (directional radius in case of non-isotropic localization)

Notes:

  • idx is usually the counte over the valid local observation of the observation type in the observation module
  • cradius_l and sradius_l are usually the same for all local obsevations of a single type if the localization is isotropic
  • While using this routine can be more convenient than doing the initialization of the variables in thisobs_l in the user code, in our tests the code ran faster when we did not use this routine, but did this initialization in the user code.