warping space

hi all,

i'm working on a soil science application, wherein the data are in a
time series of Gridded3DSets.  the Z dimension is depth below the
surface.  so far, so good.

unfortunately, the surface isn't flat, and i want to display the data
with regard to absolute depth, not depth measured from the surface.  i
have the elevation data, of course.  conceptually speaking, what i want
to do is shove data values deeper down in Z where there's a hollow on
the surface, and pull them higher up where there's a hill.

i can use the brute-force approach, of course: extract the samples into
arrays, and move the values up or down in each Z column depending on the
elevation at that point.  but that's ugly, and probably inaccurate to
boot,  since the set isn't uniformly sampled (there are fewer samples as
you go deeper).

there's probably a spiffy way to resample my Gridded3DSets to accomplish
this, but i'm danged if i know what it is.  does anything obvious leap
out at y'all?

thanks (again) in advance,