wiki:PDAFomi_init_dim_obs_l

Version 4 (modified by lnerger, 8 months ago) (diff)

--

PDAFomi_init_dim_obs_l

This page documents the routine PDAFomi_init_dim_obs_l` of PDAF-OMI.

The routine has to be called in init_dim_obs_l_OBTYPE in each observation module if a domain-localized filter (LESTKF/LETKF/LNETF/LSEIK)is used. It initializes the local observation information for PDAF-OMI for a single local analysis domain

See the page describing PDAF-OMI observation modules for the full documentation of OMI observation modules.

The interface is:

  SUBROUTINE PDAFomi_init_dim_obs_l(thisobs_l, thisobs, coords_l, locweight, lradius, &
       sradius, dim_obs_l)

    TYPE(obs_f), INTENT(inout) :: thisobs    ! Data type with full observation
    TYPE(obs_l), INTENT(inout) :: thisobs_l  ! Data type with local observation
    REAL, INTENT(in) :: coords_l(:)          ! Coordinates of current local analysis domain
    INTEGER, INTENT(in) :: locweight         ! Type of localization function [scalar or vector, see below]
    REAL, INTENT(in) :: cradius              ! Localization cut-off radius [scalar or vector, see below]
    REAL, INTENT(in) :: sradius              ! Support radius of localization function [scalar or vector, see below]
    INTEGER, INTENT(inout) :: dim_obs_l      ! Local dimension of current observation vector

Notes:

  • The output value dim_obs_l of the routine is the number of local observations for the local analysis domain for which the routine is called.
  • The coordinate vector coords_l has be set consistently with the observation coordinates specified in init_dim_obs_OBSTYPE.
  • a convenient place to initialize coords_l is in init_dim_l. The templates and tutorial codes show this approach. (see the page on implementing the local analysis step)
  • locweight, cradius and sradius can be set to the same values for all local analysis domains. However, the interface allows the user to specify different localization radii and weight functions for each single local analysis domain depending on the index domain_p or the coordinates coords_l.

Settings for non-isotropic localization

Introduced with PDAF V2.2 a non-isotropic localization is possible for this use vectors for cradius and lradius. This in the interface of PDAFomi_init_dim_obs_l one can use

    REAL, INTENT(in) :: cradius(:)              ! Localization radius
    REAL, INTENT(in) :: sradius(:)              ! Support radius of localization function

Here, the size cradius and sradius has to be equal to thisobs%ncoords.

Setting different weight functs for horizontal and vertical directions

In case of the non-isotropic localization and can specify different weight functions for the vertical and horizontal directions. This should be particularly useful when using the 2D+1D factorized localization (see exaplanation of possible choices of thisobs%disttype >). The interface accepting separate weight functions is

    INTEGER, INTENT(in) :: locweight(2)         ! Type of localization function [scalar or vector, see below]
    REAL, INTENT(in) :: cradius(:)              ! Localization radius
    REAL, INTENT(in) :: sradius(:)              ! Support radius of localization function

Now, locweight(1) specifies the localization function in the horizontal direction, while locweight(2) specifies the localization function in the vertical direction (see the the table of choices of localization functions).