= PDAFomi_set_localize_covar = This page documents the routine `PDAFomi_set_localize_covar` of PDAF-OMI, which was introduced with PDAF V3.0. The routine has to be called in `init_dim_obs_OBSTYPE` in each observation module if the localized EnKF or the ENSRF/EAKF with localization are used. It initializes the information for covariance localization. ||See the [wiki:OMI_observation_modules page describing PDAF-OMI observation modules] for the full documentation of OMI observation modules and the [wiki:ImplementAnalysislenkfOmi page on implementing the analysis step of the LEnKF] or the [wiki:ImplementAnalysisENSRFOmi page on implementing the analysis step of the ENSRF/EAKF] . || The interface is for isotropic localization: {{{ SUBROUTINE PDAFomi_set_localize_covar(thisobs, dim, ncoords, coords, & locweight, cradius, sradius) TYPE(obs_f), INTENT(inout) :: thisobs ! Data type with full observation INTEGER, INTENT(in) :: dim ! State dimension INTEGER, INTENT(in) :: ncoords ! Number of coordinate directions REAL, INTENT(in) :: coords(dim,ncoords) ! Coordinates of state vector elements INTEGER, INTENT(in) :: locweight ! Localization weight type REAL, INTENT(in) :: cradius ! localization radius REAL, INTENT(in) :: sradius ! Support radius for weight functions }}} '''Notes:''' * The routine allows to specify the localization radius and support radius (`lradius`, `sradius`) and localization function (`locweight`) individually for each observation type. * The coordinate array `coords` specifies the coordinates of each element in the state vector. The coordinate units have to be consistent with those used to specify the coordinates of observations. * The routine only supports a fixed localization radius throughout the domain. * One can also directly call the routine `PDAFomi_set_localize_covar_iso`, e.g. when calling from a program coded in C. == `PDAFomi_set_localize_covar` for non-isotropic localization == There is an alternative interface for non-isotropic localization. In this variant `cradius` and `sradius` are specified as vectors holding a value of the localization radius for each coordinate direction. This permits for non-isotropic localization. {{{ SUBROUTINE PDAFomi_set_localize_covar(thisobs, dim, ncoords, coords, & locweight, cradius, sradius) TYPE(obs_f), INTENT(inout) :: thisobs ! Data type with full observation INTEGER, INTENT(in) :: dim ! State dimension INTEGER, INTENT(in) :: ncoords ! Number of coordinate directions REAL, INTENT(in) :: coords(dim,ncoords) ! Coordinates of state vector elements INTEGER, INTENT(in) :: locweight ! Localization weight type REAL, INTENT(in) :: cradius(ncoords) ! directional localization radii REAL, INTENT(in) :: sradius(ncoords) ! directional support radii for weight functions }}} **Note:** * One can also directly call the routine `PDAFomi_set_localize_covar_noniso`, e.g. when calling from a program coded in C. == `PDAFomi_set_localize_covar` for non-isotropic localization with different weight functions == There is also an alternative interface for non-isotropic localization which further allows to specify different weight functions for each direction. This allows, for example, to use a constant weight in the vertical direction, but smooth decaying weight in the horizontal directions. In this variant of the interface `cradius` and `sradius` are specified as vectors holding a value of localization radius for each coordinate direction. In addition `locweight` is specified as a vector holding the localization function index for each coordinate direction. {{{ SUBROUTINE PDAFomi_set_localize_covar(thisobs, dim, ncoords, coords, & locweight, cradius, sradius) TYPE(obs_f), INTENT(inout) :: thisobs ! Data type with full observation INTEGER, INTENT(in) :: dim ! State dimension INTEGER, INTENT(in) :: ncoords ! Number of coordinate directions REAL, INTENT(in) :: coords(dim,ncoords) ! Coordinates of state vector elements INTEGER, INTENT(in) :: locweight(ncoords) ! directional localization weight types REAL, INTENT(in) :: cradius(ncoords) ! directional localization radii REAL, INTENT(in) :: sradius(ncoords) ! directional support radii for weight functions }}} **Note:** * One can also directly call the routine `PDAFomi_set_localize_covar_noniso_locweights`, e.g. when calling from a program coded in C.