Version 3 (modified by lnerger, 4 years ago) (diff)



This page documents the routine PDAF_local_weights of PDAF.

The routine is used for localization in the analysis step of a filter and computes weights according to the specified distances and the settings for the localizing function. The routine can be called in prodRinvA_l_pdaf in the filters LESTKF, LETKF, and LSEIK. Also, the routine can be used for the LEnKF in the routine [localize_l_pdaf localize_l_pdaf].

The interface is the following:

  SUBROUTINE PDAF_local_weights(wtype, cradius, sradius, distance, &
     weights, verbose)

with the following arguments:

  • wtype : integer, intent(in)
    Type of weight function:
    (0) unit weight (=1 up to radius cradius)
    (1) exponential decrease (1/e at distance=sradius; 0 for distance>cradius)
    (2) 5th order polynomial with support radius sradius (Gaspari&Cohn 1999; 0 for distance>sradius)
  • cradius : real, intent(in)
    Cut-off radius (weight is always =0 for distance>cradius)
  • sradius : real, intent(in)
    Support radius
  • dim : integer, intent(in)
    Size of arrays distance and `weights'
  • distance : real, intent(in)
    Distance to observation
  • weights : real, intent(out)
    computed localization weight
  • verbose : integer, intent(in)
    Verbosity flag


  • PDAF_local_weights does not support the regulated localization method (Nerger et al. ,Quarterly Journal of the Royal Meteorological Society, 138 (2012) 802-812; see Publications). To use the regulated localization one has to use the alternative routine PDAF_local_weight.

There are currently only examples of using PDAF_local_weight, but not PDAF_local_weights. The examples for 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).