
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?