= PDAF_local_weight =
This page documents the routine `PDAF_local_weight` of PDAF.
The routine is used for localization in the analysis step of a filter and computes a weight according to the specified distance and the settings for the localizing function. Typically the routine is called in [wiki:prodRinvA_l_pdaf prodRinvA_l_pdaf] in the filters LESTKF, LETKF, and LSEIK. Also, the routine is typically called for the LEnKF in the routine [localize_l_pdaf localize_l_pdaf].
The interface is the following:
{{{
SUBROUTINE PDAF_local_weight(wtype, rtype, cradius, sradius, distance, &
nrows, ncols, A, var_obs, weight, verbose)
}}}
with the following arguments:
* `wtype` : `integer, intent(in)`[[BR]] Type of weight function:[[BR]] (0) unit weight (=1 up to radius `cradius`) [[BR]] (1) exponential decrease (1/e at distance=sradius; 0 for distance>cradius)[[BR]] (2) 5th order polynomial with support radius sradius (Gaspari&Cohn 1999; 0 for distance>sradius)
* `rtype` : `integer, intent(in)`[[BR]] Type of regulated weighting:[[BR]] (0) no regulation[[BR]] (1) regulation using mean variances[[BR]]
* `cradius` : `real, intent(in)`[[BR]] Cut-off radius (weight is always =0 for distance>cradius)
* `sradius` : `real, intent(in)`[[BR]] Support radius
* `distance` : `real, intent(in)`[[BR]] Distance to observation
* `nrows` : `integer, intent(in)`[[BR]] Number of rows in matrix A
* `ncols` : `integer, intent(in)`[[BR]] Number of columns in matrix A
* `A` : `real, intent(in), dimension(nrows,ncols)`[[BR]] Input matrix (only used for regulated localization)
* `var_obs` : `real, intent(in)`[[BR]] Observation variance (only used for regulated localization)
* `weight` : `real, intent(out)`[[BR]] computed localization weight
* `verbose` : `integer, intent(in)`[[BR]] Verbosity flag
Notes:
* the regulated localization computes an alternative localization function based on the ration of state error variances to observation error variances. the regulated localization method is described in the paper Nerger et al. (Quarterly Journal of the Royal Meteorological Society, 138 (2012) 802-812; see [wiki:PublicationsandPresentations publications].
* `PDAF_local_weight` is called with a single distance and return a single weight. In some cases the alternative routine [wiki:PDAF_local_weights] can be used which computes the weights for a vector of distances.
* for `rtype=1` the mean variance is computed as the square-root of the sum of squared entries in the array `A`.
* Array `A` is usually the array `A_l` that is an input argument to the routine [wiki:prodRinvA_l_pdaf prodRinvA_l_pdaf].
Examples of using `PDAF_local_weight` can be found in the files `prodrinva_l_pdaf.F90` in the tutorial cases. Another example is, e.g. provided in the Lorenz-96 test case (see /testsuite/src/lorenz96/prodrinva_local.F90).