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.
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 )
dspnt3s is the single precision version and dspnt3d 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) 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
NG4.1 Home, Index, Examples, Glossary, Feedback, Ref Contents, Ref WhereAmI?