Functions for gridding 3-d data. These routines are part of the Dsgrid package which implements a simple inverse distance weighted interpolation algorithm.
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 )
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.
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
NG4.1 Home, Index, Examples, Glossary, Feedback, Ref Contents, Ref WhereAmI?