LAB 6 - 2-D Fourier Transforms and Stolt Migration

**Reading:** To do this lab you should be familiar with Chapter 1 in the IEI text
(Claerbout, 1985). You may also want to look at Stolt, 1978 (see reference list), and

Claerbout, J. F., and Doherty, S. M., 1972, Downward continuation of
moveout-corrected seismograms: Geophysics, **50**, 2033-2060; or **37**,
741-768.

The exercises in light gray color are extra credit and are not required. Exercises marked with a ''*'' are key exercises.

Page numbers are given in the order
[*page in printed book, number appearing on the page in the PDF, consecutive page number in the PDF*].

**1.**
Claerbout, p. [14, 13, 26], exercise 2. Compute propagation angles for the hyperbola
flanks in figure 1.9 (p. [12, 11, 24], top). Compute two examples, one from the downgoing
plate and one from the structures at the bottom of the trench.

***2.**
Claerbout, p. [14, 13, 26], exercise 3. Using the result of the previous exercise,
deduce the plunge angle of the plate.
Just measure a few hyperbolae on the plate.

**3.**
Claerbout, p. [24, 45, 58], exercise 2.
Scan the textbook for hyperbolic arrivals on field data and measure the Fresnel
zone width. Where zero offset recordings are not made, a valid approximation
is to measure along a *tilted* line.
Give two examples.

***4.**
Claerbout, p. [24, 37, 50], exercise 6.
Explain the horizontal ``layering'' in figure [1.2-5, 2.1], p. [22, 34, 47] in the plot of
*P(,x)* on the lower left.
Here is a better version, scanned from the printed book.
What determines the ``layer'' separation?
What determines the ``layer'' slope?

**5.**
Claerbout, p. [25, 45, 58], exercise 3.
Evolution of a wavefield with time is described by

**6.**
Claerbout, p. [39, 63, 13], exercise 2.
The wave modeling program sketch (p. [32 bottom, 53, 3]) assumes that the exploding
reflectors are impulse functions of time.
Modify the program sketch for wave modeling to include a source waveform
*s(t)*.
Turn in a program sketch with your revisions and additions.

***7.**
Claerbout, p. [39, 63, 13], exercise 4.
Define the program sketch for the inverse to the Stolt algorithm -
that is, create synthetic data from a given model.
Put your sketch in the form of the ''single line sketch'' 3 lines
above eq. [6, 3.22] on p. [33, 54, 4] and turn in.

***8.**
Claerbout, p. [39, 63, 13], exercise 6.
Given seismic data that is cut off at four seconds, what is the deepest
travel time depth from which 80 degree dips can be observed?

**9.**
Claerbout, p. [53, 17, 30], exercise 1.
Soil is typically saturated with water below a certain depth, which is
known as the *water table*. Experience with hammer-seismograph systems
shows that seismic velocity typically jumps up to water velocity
( = 1500 m/s) at the water table.
Say that in a certain location, the ground roll is observed to be greater
than the reflected waves, so a decision has been made to bury geophones.
The troublesome ground roll is observed to travel at six-tenths the speed
of a water wave. How deep must the geophones be buried below the water table
to attenuate the ground roll by a factor of ten? Assume the data contain
all frequencies from 10 to 100 Hz.
(Hints: 10 ~ 2,
2 ~ 6, etc.)
What kind of exponential solution is this evanescent wave?

***10.**
Claerbout, p. [62, 70, 20], exercise 1.
Devise a mathematical expression for a plane wave that is an impulse function
of time with a propagation angle of 15 degrees from the vertical *z*-axis in the
plus *z* direction. Express the result in the domain of

(a)(t,x,z)

(b)(,x,z)

(c)(,,z)

(d)(,p,z)

**11.**
Claerbout, p. [74, 36, 49], exercise 2.
Most functions are real. Their imaginary part is zero.
Show that this means that *F(,k)* can be determined from
*F(- ,-k)*.
What happens to the odd and even parts of a
complex time function when it is transformed? You may only have
*F(- ,-k)*,
but you do have both the real and imaginary parts.

**12.**
Claerbout, p. [74, not in PDF], exercise 2.
Verify by compiling and running the application
``fttest.java'' that it produces
the plot at right, and in the text (p. [69-70, not in PDF]).
Use the File->Write PostScript function to get a .ps file you can
convert to a PDF, or figure out how to capture the screen image and print it on your machine.
Re-label your plot with the true frequency axes and their values -
account for the arrangement of the output of the FFT.

**Note:**
You have to use Control-C or Command-Q to actually quit the fttest
application.

***13.**
Claerbout, p. [74, not in PDF], exercise 3.
The real part of the FT plotted in the previous exercise is somewhat difficult
to interpret because of the awkward placement of the negative frequencies and
wavenumbers.
Modify the program so that *F(,k)*
has its origin at the center (33,33) of the plotted grid.
The correctly positioned plot will look like the right side of fig. 2.2 on
p. [not in printed book, 36, 49].
Hint: a simple modification of *f(t,x)* before Fourier transforming is sufficient;
recall the ``shift theorem.''
Plot *f(t,x)* (like the left side of fig. 2.2 on p. [not in printed book, 36, 49]),
as well as the new, more easily interpretable
*F(,k)*. Label axes.
Turn in your altered program lines, along with
your plots labeled with axes. What is FT[f(x-a)] in terms of FT[f(x)]? Can
you plot *f(t,x)* by moving some lines around in
``fttest.java''?

**14.**
Claerbout, p. [74, 37, 50], exercise 4.
A point explosion on the earth's surface at time *t=0* and location *x=32*
provides synthetic observations in the *(t,x)*-plane shown on the top
left side of p. [75, 37, 50]. One the right side is the magnitude of the
two-dimensional Fourier transform, *(,)*-plane. The origin
is in the upper left corner of the plot on the left, and in the center of the plot
on the right. What would these plots look like
on an earth of half the velocity? Ignore how the book describes it as an ''air wave.''
Just describe what such plots would look like.

**15.**
Examine ``stolttest.java''.
Compile it, and run the application and
turn in the plot. Does it look like the figure at right and on p. [35, 55, 5]?
Alter ``stolttest.java''
to use twice the migration velocity and turn in the resultant plot.
Explain the vertical axis and the shape of the curves.

This program uses Fabio Rocca's column-wise FFT method, and a more
efficient in-place row FFT as well. These modifications to
``fttest.java''
are coded in
``fttestc.java''.
It could be used equivalently for all the exercises.

**16.**
Alter ``stolttest.java''
to yield a plot like the left-hand one on p. [35, 55, 5], and turn
in the plot and the program alterations.

***17.**
Claerbout, p. [75, 56, 6], exercise 5 [suggested at the bottom of the page in the PDF].
Insert the appropriate cosine obliquity function into the Stolt migration
program. Test, and verify little difference but some angle-dependent scaling.
Turn in your program alterations and plot.

**Note:**
The comment ``Omit weighting'' in stolttest.java has nothing to do with the obliquity.

***18.**
Claerbout, p. [75, not in PDF], exercise 6.
Write a program for diffraction by the Stolt method. That is, given point
scatterers inside the earth, generate the appropriate hyperbolas.
Turn in your alterations to ``stolttest.java'' and the
plot of diffractions from the same points that were previously migrated.
Note that the
names of variables can change in the algorithm without your having to change
their names in the program. Without reversing the coding, you can make
a few simple changes that effect inversion. Do not include the obliquity factor.

**19.**
Suppose the 2-d FT done in ``fttest.java''
took N operations. How many would it
take if instead of cp[64][64] we had cp[128][128]?

- Design and implement a 2-d or 3-d FFT routine that will work efficiently for
arrays too large for the memory. 32,762x32,762 is too big for most machines.
Test by filtering or migrating some data,
and keep track of its efficiency for arrays of different sizes.
- Design and implement a dip-filtering routine that windows in the F-K
domain to pass arrivals of one slope and attenuate arrivals of a different
slope. Test this routine on real data, and develop
remedies for the artifacts that appear.
- Implement a phase-shift migration for v(z), and a Stolt migration for
v(z) using a time-stretching trick. Code as a fully-integrated JRG class and/or
OpendTect module. Compare the results for a real or synthetic dataset.
- Implement parallelized 2-d FFT routines that will run simultaneously on several UNIX machines (or on a GPU) to do Stolt migration in real time -- < 1 second to migrate and display a 4000x4000 section. Include velocity as a tunable parameter. Investigate the efficiency of estimating velocity by repeated migration.