dsgrid3s, dsgrid3d

Functions for gridding 3-d data. These routines are part of the Dsgrid package which implements a simple inverse distance weighted interpolation algorithm.


Synopsis

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

    function dsgrid3d(
        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 input data points
y
1D array of length npts containing the Y coordinates of the input data points
z
1D array of length npts containing the Z coordinates of the input data points
u
1D array of length npts containing 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 any length (numxout) containing the X coordinates of the output data grid. The values in xo must be increasing, but need not be equally spaced.
yo
1D array of any length (numyout) containing the Y coordinates of the output data grid. The values in yo must be increasing, but need not be equally spaced.
zo
1D array of any length (numzout) containing the Z coordinates of the output data grid. The values in zo must be increasing, but need not be equally spaced.

Description

The dsgrid3s and dsgrid3d functions do interpolation from 3D random data to a 3D gridded array dimensioned numxout x numyout x numzout.

dsgrid3s returns an array of float values and dsgrid3d returns an array of double values. Both dsgrid3s and dsgrid3d are called after all of the desired values for control parameters have been set using the procedure dssetp.

dsgrid3s is the single precision version and dsgrid3d 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)

  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)

;
; Interpolate.
;
  output = dsgrid3s(xi, yi, zi, u, xo, yo, zo)

end

Reference Manual Control Panel

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


$Revision: 1.9 $ $Date: 1999/03/12 20:57:35 $