NCL Home > Documentation > Functions > Interpolation, Regridding


Replaces all missing (_FillValue) values in a grid with values derived from solving Poisson's equation via relaxation.

Available in version 4.3.1 and later.


	procedure poisson_grid_fill (
		x              : float or double,  
		is_cyclic  [1] : logical,          
		guess_type [1] : integer,          
		nscan      [1] : integer,          
		epsx       [1] : numeric,          
		relc       [1] : numeric,          
		opt        [1] : integer           



An array of two or more dimensions. The two rightmost dimensions must of size nyi x nxi, and are the dimensions used in the interpolation. The missing value attribute x@_FillValue must be set appropriately.


An option to indicate whether the rightmost dimension of x is cyclic. Set to True if x should be treated as cyclic and doesn't already have the cyclic point added. Set to False otherwise.


Specifies the type of first guess grid. guess_type=0 means use 0.0 as an initial guess; guess_type=1 means that zonal averages (i.e, averages in the "x" direction) will be used. It is recommended that guess_type=1 be used.


Maximum number of iterations to be used by relaxation.


Tolerance for ending relaxation before nscan limit.


Relaxation constant. Usually, 0.45 <= relc <= 0.6.


Reserved for future use. Currently not used, but set it to 0.


poisson_grid_fill solves Poisson's equation over the input domain. The values at non-missing locations are used as boundary conditions and are returned unchanged.

The user may have to experiment with epsx amd nscan to get the desired effect.

On exit, the input array x will have all the _FillValue locations filled with interpolated/extrapolated values.

See Also

linint1, linint2_points, linmsg


Example 1 Interpolate the SST grid to all grid points that are missing (sst@_FillValue).

  f     = addfile ("foo.ncl" , "r")
  sst   = f->SST           ; (say) (time,lat,lon)

  guess     = 1                ; use zonal means
  is_cyclic = True             ; cyclic [global]
  nscan     = 1500             ; usually much less than this
  eps       = 1.e-2            ; variable dependent
  relc      = 0.6              ; relaxation coefficient
  opt       = 0                ; not used

  poisson_grid_fill( sst, is_cyclic, guess, nscan, eps, relc, opt)
 ;poisson_grid_fill( sst, True, 1, 1500, 1e-2, 0.6, 0)
The 'before and after' grids may be viewed here .

poisson_grid_fill will fill all missing values on any grid.

Additional Examples may be seen by clicking: Grid_filling