dspnt3s, dspnt3d

Routines that interpolate 3-d data at specified points. These routines are part of the Dsgrid package which implements a simple inverse distance weighted interpolation algorithm.


Synopsis

    function dspnt3s(
        x[*]  : float,
        y[*]  : float,
        z[*]  : float,
        u[*]  : float,
        xo[*] : float,
        yo[*] : float,
        zo[*] : float
    )

    function dspnt3d(
        x[*] :  double,
        y[*] :  double,
        z[*] :  double,
        u[*] :  double,
        xo[*] : double,
        yo[*] : double,
        zo[*] : double
    )

Arguments

x
1D array of any length (npts) containing the X coordinates of the points where interpolation is desired
y
1D array of length npts containing the Y coordinates of the points where interpolation is desired
z
1D array of length npts containing the Z coordinates of the points where interpolation is desired
u
1D array of length nptscontaining the functional values of the input data points. u(i) is the value of the input function at coordinate (x(i), y(i), z(i)) for i=1,npts.
xo
1D array of length m containing the X coordinates of the output data grid. The values in xo may be in any order and m can be equal to one.
yo
1D array of length m containing the Y coordinates of the output data grid. The values in yo may be in any order and m can be equal to one.
zo
1D array of length m containing the Z coordinates of the output data grid. The values in zo may be in any order and m can be equal to one.

Description

Both the dspnt3s and dspnt3d functions interpolate 3D data at a list of specified points and return the results as a 1D float array dimensioned m.

dspnt3s is the single precision version and dspnt3d is the double precision version.


Example

begin

  NUM = 1000
  NX = 21
  NY = 21
  NZ = 21
  RAND_MAX = 32767.0

  xi = new((/NUM/),float)
  yi = new((/NUM/),float)
  zi = new((/NUM/),float)
  u = new((/NUM/),float)

  xo = new((/NX/),float)
  yo = new((/NY/),float)
  zo = new((/NZ/),float)
  output = new((/NX,NY,NZ/),float)

  xmin = -2.0
  ymin = -2.0
  zmin = -2.0
  xmax =  2.0
  ymax =  2.0
  zmax =  2.0

;
; Create random data in three space and define a function.
;
  rand1 = new((/NUM/),float)
  rand2 = new((/NUM/),float)
  rand3 = new((/NUM/),float)
  srand(1)
  do i=0,NUM-1
    rand1(i) = rand
    rand2(i) = rand
    rand3(i) = rand
  end do
  xi = xmin+(xmax-xmin)*(rand1 / RAND_MAX)
  yi = ymin+(ymax-ymin)*(rand2 / RAND_MAX)
  zi = zmin+(zmax-zmin)*(rand3 / RAND_MAX)

  u = xi*xi + yi*yi + zi*zi
;
; Create the output grid.
;
  ii = fspan(0,20.,21)
  xo = xmin + (ii/(NX-1)) * (xmax-xmin)
  yo = ymin + (ii/(NY-1)) * (ymax-ymin)
  zo = zmin + (ii/(NZ-1)) * (zmax-zmin)

  do i=0,NX-1
    do j=0,NY-1
      do k=0,NZ-1
        dspnt3s(xi, yi, zi, u, xo(i), yo(j), zo(k),output(i,j,k))
      end do
    end do
  end do
end

Reference Manual Control Panel

NG4.1 Home, Index, Examples, Glossary, Feedback, Ref Contents, Ref WhereAmI?


$Revision: 1.6 $ $Date: 1998/11/11 23:32:16 $