
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?