of
Exploration Seismology
with algorithms in MATLAB
Gary F. Margrave
Department of Geology and Geophysics
The University of Calgary
July 11, 2003
Preface
The most important thing to know about this draft is that it is unﬁnished. This means that it
must be expected to have rough passages, incomplete sections, missing references, and references
to nonexistent material. Despite these shortcomings, I hope this document will be welcomed for
its description of the CREWES MATLAB software and its discussion of velocity, raytracing and
migration algorithms. I only ask that the reader be tolerant of the rough state of these notes.
Suggestions for the improvement of the present material or for the inclusion of other subjects are
most welcome.
Exploration seismology is a complex technology that blends advanced physics, mathematics
and computation. Often, the computational aspect is neglected in teaching because, traditionally,
seismic processing software is part of an expensive and complex system. In contrast, this book is
structured around a set of computer algorithms that run eﬀectively on a small personal computer.
These algorithms are written in MATLAB code and so the reader should ﬁnd access to a MATLAB
installation. This is not the roadblock that it might seem because MATLAB is rapidly gaining
popularity and the student version costs little more than a typical textbook.
The algorithms are grouped into a small number of toolboxes that eﬀectively extend the function
ality of MATLAB. This allows the student to experiment with the algorithms as part of the process
of study. For those who only wish to gain a conceptual overview of the subject, this may not be an
advantage and they should probably seek a more appropriate book. On the other hand, those who
wish to master the subject and perhaps extend it through the development of new methods, are my
intended audience. The study of these algorithms, including running them on actual data, greatly
enriches learning.
The writing of this book has been on my mind for many years though it has only become physical
relatively recently. The material is the accumulation of many years of experience in both the hydro
carbon exploration industry and the academic world. The subject matter encompasses the breadth
of exploration seismology but, in detail, reﬂects my personal biases. In this preliminary edition,
the subject matter includes raytracing, elementary migration, some aspects of waveequation mod
elling, and velocity manipulation. Eventually, it will also include theoretical seismograms, wavelets,
amplitude adjustment, deconvolution, ﬁltering (1D and 2D), statics adjustment, normal moveout
removal, stacking and more. Most of the codes for these purposes already exists and have been used
in research and teaching at the University of Calgary since 1995.
During the past year, Larry Lines and Sven Treitel have been a constant source of encouragement
and assistance. Pat Daley’s guidance with the raytracing algorithms has been most helpful. Pat,
Larry, Sven, Dave Henley, and Peter Manning have graciously served as editors and test readers.
Many students and staﬀ with CREWES have stresstested the MATLAB codes. Henry Bland’s
technical computer support has been essential. Rob Stewart and Don Lawton have been there with
moral support on many occasions.
I thank you for taking the time to examine this document and I hope that you ﬁnd it rewarding.
ii
Contents
Preface ii
1 Introduction 1
1.1 Scope and Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Why MATLAB? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 Legal matters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 MATLAB conventions used in this book . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Dynamic range and seismic data display . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Single trace plotting and dynamic range . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Multichannel seismic display . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.3 The plotimage picking facility . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.4 Drawing on top of seismic data . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 Programming tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.2 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
The structure of a function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.3 Coping with errors and the MATLAB debugger . . . . . . . . . . . . . . . . . 21
1.5 Programming for eﬃciency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5.1 Vector addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5.2 Vector programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.5.3 The COLON symbol in MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 26
1.5.4 Special values: NaN, Inf, and eps . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.6 Chapter summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2 Signal Theory 29
2.1 Convolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.1 Convolution as ﬁltering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.2 Convolution by polynomial multiplication  the Z transform . . . . . . . . . . 32
2.1.3 Convolution as a matrix multiplication . . . . . . . . . . . . . . . . . . . . . . 33
2.1.4 Convolution as a weighted average . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2 The Fourier Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.1 The temporal Fourier transform and its inverse . . . . . . . . . . . . . . . . . 35
2.2.2 Real and imaginary spectra, even and odd functions . . . . . . . . . . . . . . 37
2.2.3 The convolution theorem and the diﬀerentiation theorem . . . . . . . . . . . 38
2.2.4 The phaseshift theorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2.5 The spectrum of a realvalued signal . . . . . . . . . . . . . . . . . . . . . . . 41
iii
iv CONTENTS
2.2.6 The spectrum of a causal signal . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2.7 Minimum phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3 Wave propagation 46
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2 The wave equation derived from physics . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.2.1 A vibrating string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.2 An inhomogeneous ﬂuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3 Finite diﬀerence modelling with the acoustic wave equation . . . . . . . . . . . . . . 52
3.4 The onedimensional synthetic seismogram . . . . . . . . . . . . . . . . . . . . . . . . 57
3.4.1 Normal incidence reﬂection coeﬃcients . . . . . . . . . . . . . . . . . . . . . . 57
3.4.2 A ”primariesonly” impulse response . . . . . . . . . . . . . . . . . . . . . . . 59
3.4.3 Inclusion of multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.5 MATLAB tools for 1D synthetic seismograms . . . . . . . . . . . . . . . . . . . . . 64
3.5.1 Wavelet utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.5.2 Seismograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Convolutional seismograms with random reﬂectivity . . . . . . . . . . . . . . 70
Synthetic seismograms with multiples . . . . . . . . . . . . . . . . . . . . . . 75
4 Velocity 76
4.1 Instantaneous velocity: ·
ins
or just · . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.2 Vertical traveltime: τ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.3 ·
ins
as a function of vertical traveltime: ·
ins
(τ) . . . . . . . . . . . . . . . . . . . . . 78
4.4 Average velocity: ·
ave
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.5 Mean velocity: ·
mean
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.6 RMS velocity: ·
rms
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.7 Interval velocity: ·
int
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.8 MATLAB velocity tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.9 Apparent velocity: ·
x
, ·
y
, ·
z
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.10 Snell’s Law . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.11 Raytracing in a ·(.) medium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.11.1 Measurement of the ray parameter . . . . . . . . . . . . . . . . . . . . . . . . 94
4.11.2 Raypaths when · = ·
0
+ c. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.11.3 MATLAB tools for general ·(.) raytracing . . . . . . . . . . . . . . . . . . . 98
4.12 Raytracing for inhomogeneous media . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.12.1 The ray equation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.12.2 A MATLAB raytracer for ·(r, .) . . . . . . . . . . . . . . . . . . . . . . . . . 109
5 Elementary Migration Methods 112
5.1 Stacked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.1.1 Bandlimited reﬂectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.1.2 The zero oﬀset section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.1.3 The spectral content of the stack . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.1.4 The Fresnel zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.2 Fundamental migration concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2.1 One dimensional timedepth conversions . . . . . . . . . . . . . . . . . . . . . 121
5.2.2 Raytrace migration of normalincidence seismograms . . . . . . . . . . . . . . 121
5.2.3 Time and depth migration via raytracing . . . . . . . . . . . . . . . . . . . . 124
CONTENTS v
5.2.4 Elementary wavefront techniques . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.2.5 Huygens’ principle and point diﬀractors . . . . . . . . . . . . . . . . . . . . . 129
5.2.6 The exploding reﬂector model . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.3 MATLAB facilities for simple modelling and raytrace migration . . . . . . . . . . . . 135
5.3.1 Modelling by hyperbolic superposition . . . . . . . . . . . . . . . . . . . . . . 136
5.3.2 Finite diﬀerence modelling for exploding reﬂectors . . . . . . . . . . . . . . . 141
5.3.3 Migration and modelling with normal raytracing . . . . . . . . . . . . . . . . 145
5.4 Fourier methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
5.4.1 )/ migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
5.4.2 A MATLAB implementation of )/ migration . . . . . . . . . . . . . . . . . . 152
5.4.3 )/ waveﬁeld extrapolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Waveﬁeld extrapolation in the spacetime domain . . . . . . . . . . . . . . . . 160
5.4.4 Time and depth migration by phase shift . . . . . . . . . . . . . . . . . . . . 162
5.5 Kirchhoﬀ methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.5.1 Gauss’ theorem and Green’s identities . . . . . . . . . . . . . . . . . . . . . . 165
5.5.2 The Kirchhoﬀ diﬀraction integral . . . . . . . . . . . . . . . . . . . . . . . . . 167
5.5.3 The Kirchhoﬀ migration integral . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.6 Finite diﬀerence methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
5.6.1 Finite diﬀerence extrapolation by Taylor series . . . . . . . . . . . . . . . . . 172
5.6.2 Other ﬁnite diﬀerence operators . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.6.3 Finite diﬀerence migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
5.7 Practical considerations of ﬁnite datasets . . . . . . . . . . . . . . . . . . . . . . . . 177
5.7.1 Finite dataset theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.7.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
6 Appendix A 189
Index 214
vi CONTENTS
Chapter 1
Introduction
1.1 Scope and Prerequisites
This is a book about a complex and diverse subject: the numerical algorithms used to process
exploration seismic data to produce images of the earth’s crust. The techniques involved range from
simple and graphical to complex and numerical. More often than not, they tend towards the latter.
The methods frequently use advanced concepts from physics, mathematics, numerical analysis, and
computation. This requires the reader to have a background in these subjects at approximately the
level of an advanced undergraduate or beginning graduate student in geophysics or physics. This
need not include experience in exploration seismology but such would be helpful.
Seismic datasets are often very large and have historically strained computer storage capacities.
This, along with the complexity of the underlying physics, has also strongly challenged computation
throughput. These diﬃculties have been a signiﬁcant stimulus to the development of computing
technology. In 1980, a 3D migration
1
was only possible in the advanced computing centers of
the largest oil companies. At that time, a 50,000 trace 3D dataset would take weeks to migrate
on a dedicated, multimillion dollar, computer system. Today, much larger datasets are routinely
migrated by companies and individuals around the world, often on computers costing less than
$5000. The eﬀective use of this book, including working the computer exercises, requires access to
a signiﬁcant machine (at least a latemodel PC or Macintosh) with MATLAB installed and having
more than 64 mb of RAM and 10 gb of disk.
Though numerical algorithms, coded in MATLAB, will be found throughout this book, this is
not a book primarily about MATLAB. It is quite feasible for the reader to plan to learn MATLAB
concurrently with working through this book, but a separate reference work on MATLAB is highly
recommended. In addition to the reference works published by The MathWorks (the makers of
MATLAB), there are many excellent, independent guides in print such as Etter (1996), Hanselman
and Littleﬁeld (1998), Redfern and Campbell (1998) and the very recent Higham and Higham (2000).
In addition, the student edition of MATLAB is a bargain and comes with a very good reference
manual. If you already own a MATLAB reference, then stick with it until it proves inadequate. The
website of The MathWorks is worth a visit because it contains an extensive database of books about
MATLAB.
Though this book does not teach MATLAB at an introductory level, it illustrates a variety
of advanced techniques designed to maximize the eﬃciency of working with large datasets. As
1
Migration refers to the fundamental step in creating an earth image from scattered data.
1
2 CHAPTER 1. INTRODUCTION
with many MATLAB applications, it helps greatly if the reader has had some experience with
linear algebra. Hopefully, the concepts of matrix, row vector, column vector, and systems of linear
equations will be familiar.
1.1.1 Why MATLAB?
A few remarks are appropriate concerning the choice of the MATLAB language as a vehicle for
presenting numerical algorithms. Why not choose a more traditional language like C or Fortran, or
an object oriented language like C++ or Java?
MATLAB was not available until the latter part of the 1980’s, and prior to that, Fortran was the
language of choice for scientiﬁc computations. Though C was also a possibility, its lack of a builtin
facility for complex numbers was a considerable drawback. On the other hand, Fortran lacked some
of C’s advantages such as structures, pointers, and dynamic memory allocation.
The appearance of MATLAB changed the face of scientiﬁc computing for many practitioners,
this author included. MATLAB evolved from the Linpack package that was familiar to Fortran
programmers as a robust collection of tools for linear algebra. However, MATLAB also introduced a
new vectororiented programming language, an interactive environment, and builtin graphics. These
features oﬀered suﬃcient advantages that users found their productivity was signiﬁcantly increased
over the more traditional environments. Since then, MATLAB has evolved to have a large array
of numerical tools, both commercial and shareware, excellent 2D and 3D graphics, objectoriented
extensions, and a builtin interactive debugger.
Of course, C and Fortran have evolved as well. C has led to C++ and Fortran to Fortran90.
Though both of these languages have their adherents, neither seems to oﬀer as complete a package
as does MATLAB. For example, the inclusion of a graphics facility in the language itself is a major
boon. It means that MATLAB programs that use graphics are standard throughout the world and
run the same on all supported platforms. It also leads to the ability to graphically display data arrays
at a breakpoint in the debugger. These are useful practical advantages especially when working with
large datasets.
The vector syntax of MATLAB once mastered, leads to more concise code than most other
languages. Setting one matrix equal to the transpose of another through a statement like A=B’; is
much more transparent than something like
do i=1,n
do j=1,m
A(i,j)=B(j,i)
enddo
enddo
Also, for the beginner, it is actually easier to learn the vector approach that does not require so
many explicit loops. For someone wellversed in Fortran, it can be diﬃcult to unlearn this habit,
but it is well worth the eﬀort.
It is often argued that C and Fortran are more eﬃcient than MATLAB and therefore more
suitable for computationally intensive tasks. However, this view misses the big picture. What really
matters is the eﬃciency of the entire scientiﬁc process, from the genesis of the idea, through its rough
implementation and testing, to its ﬁnal polished form. Arguably, MATLAB is much more eﬃcient
for this entire process. The builtin graphics, interactive environment, large tool set, and strict run
time error checking lead to very rapid prototyping of new algorithms. Even in the more narrow view,
wellwritten MATLAB code can approach the eﬃciency of C and Fortran. This is partly because
of the vector language but also because most of MATLAB’s number crunching actually happens in
compiled library routines written in C.
1.2. MATLAB CONVENTIONS USED IN THIS BOOK 3
Traditional languages like C and Fortran originated in an era when computers were roomsized
behemoths and resources were scarce. As a result, these languages are oriented towards simplifying
the task of the computer at the expense of the human programmer. Their cryptic syntax leads to
eﬃciencies in memory allocation and computation speed that were essential at the time. However,
times have changed and computers are relatively plentiful, powerful, and cheap. It now makes sense
to shift more of the burden to the computer to free the human to work at a higher level. Spending
an extra $100 to buy more RAM may be more sensible than developing a complex data handling
scheme to ﬁt a problem into less space. In this sense, MATLAB is a higherlevel language that frees
the programmer from technical details to allow time to concentrate on the real problem.
Of course, there are always people who see these choices diﬀerently. Those in disagreement with
the reasons cited here for MATLAB can perhaps take some comfort in the fact that MATLAB syntax
is fairly similar to C or Fortran and translation is not diﬃcult. Also, The MathWorks markets a
MATLAB ”compiler” that emits C code that can be run through a C compiler.
1.1.2 Legal matters
It will not take long to discover that the MATLAB source code ﬁles supplied with this book all have
a legal contract within them. Please take time to read it at least once. The essence of the contract is
that you are free to use this code for nonproﬁt education or research but otherwise must purchase a
commercial license from the author. Explicitly, if you are a student at a University (or other school)
or work for a University or other nonproﬁt organization, then don’t worry just have fun. If you
work for a commercial company and wish to use this code in any work that has the potential of
proﬁt, then you must purchase a license. If you are employed by a commercial company, then you
may use this code on your own time for selfeducation, but any use of it on company time requires
a license. If your company is a corporate sponsor of CREWES (The Consortium for Research in
Elastic Wave Exploration Seismology at the University of Calgary) then you automatically have a
license. Under no circumstances may you resell this code or any part of it. By using the code, you
are agreeing to these terms.
1.2 MATLAB conventions used in this book
There are literally hundreds of MATLAB functions that accompany this book (and hundreds more
that come with MATLAB). Since this is not a book about MATLAB, most of these functions will not
be examined in any detail. However, all have full online documentation, and their code is liberally
sprinkled with comments. It is hoped that this book will provide the foundation necessary to enable
the user to use and understand all of these commands at whatever level necessary.
Typographic style variations are employed here to convey additional information about MATLAB
functions. A function name presented like plot refers to a MATLAB function supplied by The
MathWorks as part of the standard MATLAB package. A function name presented like dbspec
refers to a function provided with this book. Moreover, the name NumMethToolbox refers to the
entire collection of software provided in this book.
MATLAB code will be presented in small numbered packages titled Code Snippets. An example
is the code required to convert an amplitude spectrum from linear to decibel scale:
Code Snippet 1.2.1. This code computes a wavelet and its amplitude spectrum on both linear and
decibel scales. It makes Figure 1.1.
1 [wavem,t]=wavemin(.002,20,.2);
2 [Wavem,f]=fftrl(wavem,t);
4 CHAPTER 1. INTRODUCTION
0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2
−0.1
−0.05
0
0.05
0.1
time (sec)
0 50 100 150 200 250
0
0.5
1
Hz
l
i
n
e
a
r
s
c
a
l
e
0 50 100 150 200 250
−60
−40
−20
0
Hz
d
d
d
o
w
n
Figure 1.1: A minimum phase wavelet (top), its amplitude spec
trum plotted on a linear scale (middle), and its amplitude spectrum
plotted with a decibel scale (bottom).
3 Amp=abs(Wavem);
4 dbAmp=20*log10(Amp/max(Amp));
5 subplot(3,1,1);plot(t,wavem);xlabel(’time (sec)’)
6 subplot(3,1,2);plot(f,abs(Amp));xlabel(’Hz’);ylabel(’linear scale’)
7 subplot(3,1,3);plot(f,dbAmp);xlabel(’Hz’);ylabel(’db down’)
End Code
The actual MATLAB code is displayed in an upright typewriter font while introductory remarks
are emphasized like this. The Code Snippet does not employ typographic variations to indicate
which functions are contained in the NumMethToolbox as is done in the text proper.
It has proven impractical to discuss all of the input parameters for all of the programs shown
in Code Snippets. Those germane to the current topic are discussed, but the remainder are left for
the reader to explore using MATLAB ’s interactive help facility. For example, in Code Snippet 1.1
wavemin creates a minimum phase wavelet sampled at .002 seconds, with a dominant frequency of
20 Hz, and a length of .2 seconds. Then fftrl computes the Fourier spectrum of the wavelet and
abs constructs the amplitude spectrum from the complex Fourier spectrum. Finally, the amplitude
spectrum is converted to decibels (db) using the formula
¹:j
decibels
()) = 20 log
_
¹:j())
max(¹:j()))
_
. (1.1)
To ﬁnd out more about any of these functions and their inputs and outputs, type, for example, “help
ﬀtrl” at the MATLAB prompt.
1.2. MATLAB CONVENTIONS USED IN THIS BOOK 5
This example illustrates several additional conventions. Seismic traces
2
are discrete time series
but the textbook convention of assuming a sample interval of unity in arbitrary units is not appro
priate for practical problems. Instead, two vectors will be used to describe a trace, one to give its
amplitude and the other to give the temporal coordinates for the ﬁrst. Thus wavemin returns two
vectors (that they are vectors is not obvious from the Code Snippet) with wavem being the wavelet
amplitudes and t being the time coordinate vector for wavem. Thus the upper part of Figure 1.1 is
created by simply cross plotting these two vectors: plot(t,wavem). Similarly, the Fourier spectrum,
Wavem, has a frequency coordinate vector f. Temporal values must always be speciﬁed in seconds
and will be returned in seconds and frequency values must always be in Hz. (One Hz is one cycle per
second). Milliseconds or radians/second speciﬁcations will never occur in code though both cyclical
frequency ) and angular frequency ω may appear in formulae (ω = 2π)).
Seismic traces will always be represented by column vectors whether in the time or Fourier
domains. This allows an easy transition to 2D trace gathers, such as source records and stacked
sections, where each trace occupies one column of a matrix. This column vector preference for signals
can lead to a class of simple MATLAB errors for the unwary user. For example, suppose a seismic
trace s is to be windowed to emphasize its behavior in one zone and deemphasize it elsewhere.
The simplest way to do this is to create a window vector win that is the same length as s and use
MATLAB’s .* (dotstar) operator to multiply each sample on the trace by the corresponding sample
of the window. The temptation is to write a code something like this:
Code Snippet 1.2.2. This code creates a synthetic seismogram using the convolutional model but
then generates an error while trying to apply a (triangular) window.
1 [r,t]=reflec(1,.002,.2); %make a synthetic reflectivity
2 [w,tw]=wavemin(.002,20,.2); %make a wavelet
3 s=convm(r,w); % make a synthetic seismic trace
4 n2=round(length(s)/2);
5 win=[linspace(0,1,n2) linspace(1,0,length(s)n2)]; % a triangular window
6 swin=s.*win; % apply the window to the trace
End Code
MATLAB’s response to this code is the error message:
??? Error using ==> .* Matrix dimensions must agree.
On line 6 ==> swin=s.*win;
The error occurs because the linspace function generates row vectors and so win is of size 1x501
while s is 501x1. The .* operator requires both operands to be have exactly the same geometry.
The simplest ﬁx is to write swin=s.*win(:); which exploits the MATLAB feature that a(:) is
reorganized into a column vector (see page 26 for a discussion) regardless of the actual size of a .
As mentioned previously, two dimensional seismic data gathers will be stored in ordinary matri
ces. Each column is a single trace, and so each row is a time slice. A complete speciﬁcation of such
a gather requires both a time coordinate vector, t, and a space coordinate vector, x.
Rarely will the entire code from a function such as wavemin or reflec be presented. This is
because the code listings of these functions can span many pages and contain much material that
is outside the scope of this book. For example, there are often many lines of code that check input
parameters and assign defaults. These tasks have nothing to do with numerical algorithms and so
will not be presented or discussed. Of course, the reader is always free to examine the entire codes
at leisure.
2
A seismic trace is the recording of a single component geophone or hydrophone. For a multicomponent geophone,
it is the recording of one component.
6 CHAPTER 1. INTRODUCTION
1.3 Dynamic range and seismic data display
Seismic data tends to be a challenge to computer graphics as well as to computer capacity. A single
seismic record can have a tremendous amplitude range. In speaking of this, the term dynamic range
is used which refers to a span of real numbers. The range of numerical voltages that a seismic
recording system can faithfully handle is called its dynamic range. For example, current digital
recording systems use ﬁxed instrument gain and represent amplitudes as a 24 bit integer computer
word
3
. The ﬁrst bit is used to record sign while the last bit tends to ﬂuctuate randomly so eﬀectively
22 bits are available. This means that the amplitude range can be as large as 2
22
≈ 10
6.6
. Using
the deﬁnition of a decibel given in equation (1.1), this corresponds to about 132db, an enormous
spread of possible values. This 132db range is usually never fully realized when recording signals for
a variety of reasons, the most important being the ambient noise levels at the recording site and the
instrument gain settings.
In a ﬁxedgain system, the instrument gain settings are determined to minimize clipping by
the analogtodigital converter while still preserving the smallest possible signal amplitudes. This
usually means that some clipping will occur on events nearest the seismic source. A very strong
signal should saturate 2223 bits while a weak signal may only eﬀect the lowest several bits. Thus the
precision, which refers to the number of signiﬁcant digits used to represent a ﬂoating point number,
steadily declines from the largest to smallest number in the dynamic range.
1.3.1 Single trace plotting and dynamic range
Figure 1.2 was produced with Code Snippet 1.3.1 and shows two real seismic traces recorded in 1997
by CREWES
4
. This type of plot is called a wiggle trace display. The upper trace, called tracefar,
was recorded on the vertical component of a three component geophone placed about 1000 m from
the surface location of a dynamite shot. The lower trace, called tracenear, was similar except
that it was recorded only 10 m from the shot. (Both traces come from the shot record shown in
Figures 1.12 and 1.13.) The dynamite explosion was produced with 4 kg of explosives placed at 18
m depth. Such an explosive charge is about 2 m long so the distance from the top of the charge
to the closest geophone was about
√
16
2
+ 10
2
≈ 19 m while to the farthest geophone was about
√
16
2
+ 1000
2
≈ 1000 m. The vertical axes for the two traces indicate the very large amplitude
diﬀerence between them. If they were plotted on the same axes, tracefar would appear as a ﬂat
horizontal line next to tracenear.
Figure 1.3 (also produced with Code Snippet 1.3.1) shows a more deﬁnitive comparison of the
amplitudes of the two traces. Here the trace envelopes are compared using a decibel scale. A trace
envelope is a mathematical estimate of a bounding curve for the signal (this will be investigated
more fully later in this book) and is computed using hilbert, that computes the complex, analytic
trace ((Taner et al., 1979) and (Cohen, 1995)), and then takes the absolute value. The conversion
to decibels is done with the convenience function todb (for which there is an inverse fromdb ).
Function todb implements equation (1.1) for both real and complex signals. (In the latter case,
todb returns a complex signal whose real part is the amplitude in decibels and whose imaginary part
is the phase.) By default, the maximum amplitude for the decibel scale is the maximum absolute
value of the signal; but, this may also be speciﬁed as the second input to todb . Function fromdb
reconstructs the original signal given the output of todb .
3
Previous systems used a 16 bit word and variable gain. A fourbit gain word, an 11 bit mantissa, and a sign bit
determined the recorded value.
4
CREWES is an acronym for Consortium for Research in Elastic Wave Exploration Seismology at the University
of Calgary.
1.3. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 7
0 0.5 1 1.5 2 2.5 3
−0.02
−0.01
0
0.01
0.02
1000 m offset
seconds
0 0.5 1 1.5 2 2.5 3
−1
−0.5
0
0.5
1
10 m offset
seconds
Figure 1.2: (Top) A real seismic trace recorded about 1000 m from a dynamite
shot. (Bottom) A similar trace recorded only 10 m from the same shot. See Code
Snippet 1.3.1
The close proximity of tracenear to a large explosion produces a very strong ﬁrst arrival while
later information (at 3 seconds) has decayed by ∼72 decibels. (To gain familiarity with decibel
scales, it is useful to note that 6 db corresponds to a factor of 2. Thus 72 db represents about 72/6
∼ 12 doublings or a factor of 2
12
= 4096.) Alternatively, tracefar shows peak amplitudes that are
40db (a factor of 2
6.7
∼ 100) weaker than tracenear.
Code Snippet 1.3.1. This code loads near and far oﬀset test traces, computes the Hilbert envelopes
of the traces (with a decibel scale), and produces Figures 1.2 and 1.3.
1 clear; load testtrace.mat
2 subplot(2,1,1);plot(t,tracefar);
3 title(’1000 m offset’);xlabel(’seconds’)
4 subplot(2,1,2);plot(t,tracenear);
5 title(’10 m offset’);xlabel(’seconds’)
6 envfar = abs(hilbert(tracefar)); %compute Hilbert envelope
7 envnear = abs(hilbert(tracenear)); %compute Hilbert envelope
8 envdbfar=todb(envfar,max(envnear)); %decibel conversion
9 envdbnear=todb(envnear); %decibel conversion
10 figure
11 plot(t,[envdbfar envdbnear],’b’);xlabel(’seconds’);ylabel(’decibels’);
12 grid;axis([0 3 140 0])
End Code
The ﬁrst break time is the best estimate of the arrival time of the ﬁrst seismic energy. For
tracefar this is about .380 seconds while for tracenear it is about .02 seconds. On each trace,
energy before this time cannot have originated from the source detonation and is usually taken as
8 CHAPTER 1. INTRODUCTION
0 0.5 1 1.5 2 2.5 3
−140
−120
−100
−80
−60
−40
−20
0
seconds
d
e
c
i
b
e
l
s
Figure 1.3: The envelopes of the two traces of Figure 1.2 plotted on a decibel scale.
The far oﬀset trace is about 40 db weaker than the near oﬀset and the total dynamic
range is about 120 db. See Code Snippet 1.3.1
an indication of ambient noise conditions. That is, it is due to seismic noise caused by wind, traﬃc,
and other eﬀects outside the seismic experiment. Only for tracefar is the ﬁrst arrival late enough
to allow a reasonable sampling of the ambient noise conditions. In this case, the average background
noise level is about 120 to 130 db below the peak signals on tracenear. This is very near the
expected instrument performance. It is interesting to note that the largest peaks on tracenear
appear to have square tops, indicating clipping, at an amplitude level of 1.0. This occurs because
the recording system gain settings were set to just clip the strongest arrivals and therefore distribute
the available dynamic range over an amplitude band just beneath these strong arrivals.
Dynamic range is an issue in seismic display as well as recording. It is apparent from Figure 1.2
that either signal fades below visual thresholds at about 1.6 seconds. Checking with the envelopes
on Figure 1.3, this suggests that the dynamic range of this display is about 4050 db. This limitation
is controlled by two factors: the total width allotted for the trace plot and the minimum perceivable
trace deﬂection. In Figure 1.2 this width is about 1 inch and the minimum discernible wiggle is
about .01 inches. Thus the dynamic range is about 10−2 ∼ 40db, in agreement with the earlier
visual assessment.
It is very important to realize that seismic displays have limited dynamic range. This means
that whatyousee is not always whatyou’vegot. For example if a particular seismic display being
interpreted for exploration has a dynamic range of say 20 db, then any spectral components (i.e.
frequencies in the Fourier spectrum) that are more than 20 db down will not aﬀect the display.
If these weak spectral components are signal rather than noise, then the display does not allow
the optimal use of the data. This is an especially important concern for wiggle trace displays of
multichannel data where each trace gets about 1/10 of an inch of display space.
1.3. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 9
0.2 0.3 0.4 0.5 0.6 0.7 0.8
−0.02
−0.01
0
0.01
0.02
0.03
0.04
Figure 1.4: A portion of the seismic trace in Figure 1.2 is plotted in WTVA format
(top) and WT format (bottom). See Code Snippet 1.3.2
More popular than the wiggletrace display is the wiggletrace, variablearea (WTVA) display.
Function wtva (Code Snippet 1.3.2) was be used to create Figure 1.4 where the two display types
are contrasted using tracefar. The WTVA display ﬁllsin the peaks of the seismic trace (or troughs
if polarity is reversed) with solid color. Doing this requires determining the zero crossings of the
trace which can be expensive if precision is necessary. Function wtva just picks the sample closest
to each zero crossing. For more precision, the ﬁnal argument of wtva is a resampling factor which
causes the trace to be resampled and then plotted. Also, wtva works like MATLAB ’s lowlevel
line in that it does not clear the ﬁgure before plotting. This allows wtva to be called repeatedly in
a loop to plot a seismic section. The return values of wtva are MATLAB graphics handles for the
“wiggle” and the “variable area” that can be used to further manipulate their graphic properties.
(For more information consult your MATLAB reference.) The horizontal line at zero amplitude on
the WTVA plot is not usually present in such displays and seems to be a MATLAB graphic artifact.
Code Snippet 1.3.2. The same trace is plotted with wtva and plot. Figure 1.4 is the result.
1 clear;load testtrace.mat
2 plot(t,tracefar)
3 [h,hva]=wtva(tracefar+.02,t,’k’,.02,1,1,1);
4 axis([.2 .8 .02 .04])
End Code
Clipping was mentioned previously in conjunction with recording but also plays a role in display.
Clipping refers to the process of setting all values on a trace that are greater than a clip level equal
to that level. This can have the eﬀect of moving the dynamic range of a plot display into the lower
amplitude levels. Figure 1.5 results from Code Snippet 1.3.3 and shows the eﬀect of plotting the
10 CHAPTER 1. INTRODUCTION
−0.05 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4
0
0.5
1
1.5
2
2.5
3
6db 12db 18db 24db 30db 36db 42db 48db 54db 60db
s
e
c
o
n
d
s
Figure 1.5: The seismic trace in Figure 1.2 is plotted repeatedly with diﬀerent clip
levels. The clip levels are annotated on each trace. See Code Snippet 1.3.3
same trace (tracefar at progressively higher clip levels. Function clip produces the clipped trace
that is subsequently rescaled so that the clip level has the same numerical value as the maximum
absolute value of the original trace. The eﬀect of clipping is to make the weaker amplitudes more
evident at the price of completely distorting the stronger amplitudes. Clipping does not increase the
dynamic range, it just shifts the available range to a diﬀerent amplitude band.
Code Snippet 1.3.3. This code makes Figure 1.5. The test trace is plotted repeatedly with pro
gressively higher clip levels.
1 clear;load testtrace.mat
2 amax=max(abs(tracefar));
3 for k=1:10
4 trace_clipped=clip(tracefar,amax*(.5)ˆ(k1))/((.5)ˆ(k1));
5 wtva(trace_clipped+(k1)*2*amax,t,’k’,(k1)*2*amax,1,1,1);
6 text((k1)*2*amax,.1,[int2str(k*6) ’db’]);
7 end
8 flipy;ylabel(’seconds’);
End Code
Exercise 1.3.1. Use MATLAB to load the test traces shown in Figure 1.2 and display them. By
appropriately zooming your plot, estimate the ﬁrst break times as accurately as you can. What is the
approximate velocity of the material between the shot and the geophone? (You may ﬁnd the function
simplezoom useful. After creating your graph, type simplezoom at the MATLAB prompt and then
use the left mouse mutton to draw a zoom box. A doubleclick will unzoom.)
Exercise 1.3.2. Use MATLAB to load the test traces shown in Figure 1.2 and compute the envelopes
as shown in Code Snippet 1.3.1. For either trace, plot both the wiggle trace and its envelope and
show that the trace is contained within the bounds deﬁned by ±envelope.
1.3. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 11
0 100 200 300 400 500 600 700 800 900 1000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
s
e
c
o
n
d
s
Figure 1.6: A synthetic seismic section plotted
in WTVA mode with clipping. See Code Snippet
1.3.4
0 50 100 150 200 250 300 350 400 450 500
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
s
e
c
o
n
d
s
Figure 1.7: A zoom (enlargement of a portion)
of Figure 1.6. Note the clipping indicated by
squarebottomed troughs
Exercise 1.3.3. What is the dynamic range of a seismic wiggle trace display plotted at 10 traces/inch?
What about 30 traces/inch?
1.3.2 Multichannel seismic display
Figure 1.5 illustrates the basic idea of a multichannel WTVA display. Assuming nt: traces, the plot
width is divided into nt: equal segments to display each trace. A trace is plotted in a given plot
segment by adding an appropriate constant to its amplitude. In the general case, these segments
may overlap, allowing traces to overplot one another. After a clip level is chosen, the traces are
plotted such that an amplitude equal to the clip level gets a trace excursion to the edges of the trace
plot segment. For hardcopy displays, the traces are usually plotted at a speciﬁed number per inch.
Figure 1.6 is a synthetic seismic section made by creating a single synthetic seismic trace and
then replicating it along a sinusoidal (with r) trajectory. Figure 1.7 is a zoomed portion of the same
synthetic seismic section. Function plotseis made the plot (see Code Snippet 1.3.3), and clipping
was intentionally introduced. The square troughs on several events (e.g. near .4 seconds) are the
signature of clipping. Function plotseis provides facilities to control clipping, produce either WT
or WTVA displays, change polarity, and more.
Code Snippet 1.3.4. Here we create a simple synthetic seismic section and plot it as a WTVA
plot with clipping. Figure 1.6 is the result .
1 global NOSIG;NOSIG=1;
2 [r,t]=reflec(1,.002,.2);%make reflectivity
3 nt=length(t);
4 [w,tw]=wavemin(.002,20,.2);%make wavelet
5 s=convm(r,w);%make convolutional seismogram
6 ntr=100;%number of traces
7 seis=zeros(length(s),ntr);%preallocate seismic matrix
8 shift=round(20*(sin([1:ntr]*2*pi/ntr)+1))+1; %a time shift for each trace
9 %load the seismic matrix
10 for k=1:ntr
11 seis(1:ntshift(k)+1,k)=s(shift(k):nt);
12 CHAPTER 1. INTRODUCTION
0 100 200 300 400 500 600 700 800 900
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figure 1.8: A synthetic seismic section plotted
as an image using plotimage . Compare with
Figure 1.6
0 50 100 150 200 250 300 350 400 450 500
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
Figure 1.9: A zoom (enlargement of a portion)
of Figure 1.8. Compare with Figure 1.7
12 end
13 x=(0:99)*10; %make an x coordinate vector
14 plotseis(seis,t,x,1,5,1,1,’k’);ylabel(’seconds’)
End Code
Code Snippet 1.3.4 illustrates the use of global variables to control plotting behavior. The global
NOSIG controls the appearance of a signature at the bottom of a ﬁgure created by plotseis . If
NOSIG is set to zero, then plotseis will annotate the date, time, and user’s name in the bottom
right corner of the plot. This is useful in classroom settings when many people are sending nearly
identical displays to a shared printer. The user’s name is deﬁned as the value of another global
variable, NAME_ (the capitalization and the underscore are important). Display control through
global variables is also used in other utilities in the NumMethToolbox (see page 14). An easy way
to ensure that these variables are always set as you prefer is to include their deﬁnitions in your
startup.m ﬁle (see your MATLAB reference for further information).
The popularity of the WTVA display has resulted partly because it allows an assessment of the
seismic waveform (if unclipped) as it varies along an event of interest. However, because its dynamic
range varies inversely with trace spacing it is less suitable for small displays of densely spaced data
such as on a computer screen. It also falls short for display of multichannel Fourier spectra where
the wiggle shape is not usually desired. For these purposes, image displays are more suitable. In
this technique, the display area is divided equally into small rectangles (pixels) and these rectangles
are assigned a color (or graylevel) according to the amplitude of the samples within them. On
the computer screen, if the number of samples is greater than the number of available pixels, then
each pixel represents the average of many samples. Conversely, if the number of pixels exceeds the
number of samples, then a single sample can determine the color of many pixels, leading to a blocky
appearance.
Figures 1.8 and 1.9 display the same data as Figures 1.6 and 1.7 but used the function plotimage
in place of plotseis in Code Snippet 1.3.4. The syntax to invoke plotimage is plotimage(seis,t,x).
It may also be called like plotimage(seis) in which case it creates x and t coordinate vectors as
simply column and row numbers. Unlike plotseis , plotimage adorns its ﬁgure window with con
trols to allow the user to interactively change the polarity, brightness, color map, and data scaling
1.3. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 13
0 10 20 30 40 50 60 70
0
0.2
0.4
0.6
0.8
1
white
black
level number
g
r
a
y
l e
v
e
l
Figure 1.10: A 50% gray curve from seisclrs
(center) and its brightened(top) and darkened
(bottom) versions.
0 10 20 30 40 50 60 70
0
0.2
0.4
0.6
0.8
1
100
80
60
40
20
white
black
level number
g
r
a
y
l e
v
e
l
Figure 1.11: Various gray level curves from
seisclrs for diﬀerent gray pct values.
scheme (though these controls are shown in these ﬁgures, in most cases in this book they will be
suppressed). The latter item refers to the system by which amplitudes are mapped to gray levels
(or colors).
Code Snippet 1.3.5. This example illustrates the behavior of the seisclrs color map. Figures
1.10 and 1.11 are created.
1 figure;
2 global NOBRIGHTEN
3
4 NOBRIGHTEN=1;
5 s=seisclrs(64,50); %make a 50% linear gray ramp
6 sb=brighten(s,.5); %brighten it
7 sd=brighten(s,.5); %darken it
8 plot(1:64,[s(:,1) sb(:,1) sd(:,1)],’k’)
9 axis([0 70 .1 1.1])
10 text(1,1.02,’white’);text(50,.02,’black’)
11 xlabel(’level number’);ylabel(’gray_level’);
12 figure; NOBRIGHTEN=0;
13 for k=1:5
14 pct=max([100(k1)*20,1]);
15 s=seisclrs(64,pct);
16 line(1:64,s(:,1),’color’,’k’);
17 if(rem(k,2))tt=.1;else;tt=.2;end
18 xt=near(s(:,1),tt);
19 text(xt(1),tt,int2str(pct))
20 end
21 axis([0 70 .1 1.1])
22 text(1,1.02,’white’);text(50,.02,’black’)
23 xlabel(’level number’);ylabel(’gray_level’);
End Code
By default, plotimage uses a gray level scheme, deﬁned by seisclrs , which is quite nonlinear.
Normally, 64 separate gray levels are deﬁned and a linear scheme would ramp linearly from 1 (white)
14 CHAPTER 1. INTRODUCTION
meters
s
e
c
o
n
d
s
0 100 200 300 400 500 600 700 800 900 1000
0
0.5
1
1.5
2
2.5
3
Figure 1.12: A raw shot record displayed using
plotimage and maximum scaling
meters
s
e
c
o
n
d
s
0 100 200 300 400 500 600 700 800 900 1000
0
0.5
1
1.5
2
2.5
3
Figure 1.13: The same raw shot record as Figure
1.12 but displayed using mean scaling with a clip
level (parameter CLIP) of 4.
at level 1 to 0 (black) at level 64. However, this was found to produce overly dark images with little
event standout. Instead, seisclrs assigns a certain percentage, called gray pct, of the 64 levels
to the transition from white to black and splits the remaining levels between solid black and solid
white. For example, by default this percentage is 50 which means that levels 1 through 16 are solid
white, 17 through 48 transition from white to black, and 49 through 64 are solid black. The central
curve in Figure 1.10 illustrates this. As a ﬁnal step, seisclrs brightens the curve using brighten
to produce the upper curve in Figure 1.10. Figure 1.11 shows the gray scales that result from varying
the value of gray pct.
Given a gray level or color scheme, function plotimage has two diﬀerent schemes for determining
how seismic amplitudes are mapped to the color bins. The simplest method, called maximum scaling
determines the maximum absolute value in the seismic matrix, assigns this the color black, and the
negative of this number is white. All other values map linearly into bins in between. This works
well for synthetics, or wellbalanced real data, but often disappoints for noisy or raw data because of
the data’s very large dynamic range. The alternative, called mean scaling, measures both the mean,
¯ : and standard deviation σ
s
of the data and assigns the mean to the center of the gray scale. The
ends of the scale are assigned to the values ¯ : ±CLIPσ
s
where CLIP is a userchosen constant. Data
values outside this range are assigned to the ﬁrst or last graylevel bin thereby clipping them. Thus,
mean scaling centers the gray scale on the data mean and the extremes of the scale are assigned
to a ﬁxed number of standard deviations from the mean. In both of these schemes, neutral gray
corresponds to zero (if the seisclrs color map is used).
Figure 1.12 displays a raw shot record using the maximum scaling method with plotimage .
(The shot record is contained in the ﬁle smallshot.mat, and the traces used in Figure 1.2 are the ﬁrst
and last trace of this record.) The strong energy near the shot sets the scaling levels and is so much
stronger than anything else that most other samples fall into neutral gray in the middle of the scale.
On the other hand, ﬁgure 1.13 uses mean scaling (and very strong clipping) to show much more of
the data character.
In addition to the user interface controls on its window, the behavior of plotimage can be con
trolled through global variables. Most variables deﬁned in MATLAB are local and have a scope that
1.3. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 15
s
e
c
o
n
d
s
0 100 200 300 400 500 600 700 800 900
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figure 1.14: A synthetic created to have a
6db decrease with each event displayed by
plotimage . See Code Snippet 1.3.7.
0 100 200 300 400 500 600 700 800 900 1000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
s
e
c
o
n
d
s
Figure 1.15: The same synthetic as Figure 1.14
displayed with plotseis .
is limited to the setting in which they are deﬁned. For example, a variable called x deﬁned in the
base workspace (i.e. at the MATLAB prompt ) can only be referenced by a command issued in the
base workspace. Thus, a function like plotimage can have its own variable x that can be changed
arbitrarily without aﬀecting the x in the base workspace. In addition, the variables deﬁned in a
function are transient, meaning that they are erased after the function ends. Global variables are
an exception to these rules. Once declared (either in the base workspace or a function) they remain
in existence until explicitly cleared. If, in the base workspace, x is declared to be global, then the
x in plotimage is still independent unless plotimage also declares x global. Then, both the base
workspace and plotimage address the same memory locations for x and changes in one aﬀect the
other.
Code Snippet 1.3.6 illustrates the assignment of global variables for plotimage as done in the
author’s startup.m ﬁle. These variables only determine the state of a plotimage window at the
time it is launched. The user can always manipulate the image as desired using the user interface
controls. Any such manipulations will not aﬀect the global variables so that the next plotimage
window will launch in exactly the same way.
Code Snippet 1.3.6. This is a portion of the author’s startup.m ﬁle that illustrates the setting of
global variables to control plotimage.
1 global SCALE_OPT GRAY_PCT NUMBER_OF_COLORS
2 global CLIP COLOR_MAP NOBRIGHTEN NOSIG
3 SCALE_OPT=2;
4 GRAY_PCT=20;
5 NUMBER_OF_COLORS=64;
6 CLIP=4;
7 COLOR_MAP=’seisclrs’;
8 NOBRIGHTEN=1;
9 NOSIG=1;
End Code
16 CHAPTER 1. INTRODUCTION
Code Snippet 1.3.7. This code creates a synthetic with a 6db decrease for each event and displays
it without clipping with both plotimage and plotseis. See Figures 1.14 and 1.15.
1 % put an event every 100 ms. Each event decreases in amplitude by 6 db.
2 r=zeros(501,1);dt=.002;ntr=100;
3 t=(0:length(r)1)*dt;
4 amp=1;
5 for tk=.1:.1:1;
6 k=round(tk/dt)+1;
7 r(k)=(1)ˆ(round(tk/.1))*amp;
8 amp=amp/2;
9 end
10 w=ricker(.002,60,.1);
11 s=convz(r,w);
12 seis=s*ones(1,ntr);
13 x=10*(0:ntr1);
14 global SCALE_OPT GRAY_PCT
15 SCALE_OPT=2;GRAY_PCT=100;;
16 plotimage(seis,t,x);ylabel(’seconds’)
17 plotseis(seis,t,x,1,1,1,1,’k’);ylabel(’seconds’)
End Code
The dynamic range of image and WTVA displays is generally diﬀerent. When both are displayed
without clipping using a moderate trace spacing (Figures 1.14 and 1.15), the dynamic range of
plotimage (≈30db) tends to be slightly greater than that of plotseis (≈20db). However, the
behavior of plotimage is nearly independent of the trace density while plotseis becomes useless
at high densities.
Exercise 1.3.4. Load the ﬁle smallshot.mat into your base workspace using the command load
and display the shot record with plotimage. Study the online help for plotimage and deﬁne the six
global variables that control its behavior. Practice changing their values and observe the results. In
particular, examine some of the color maps: hsv, hot, cool, gray, bone, copper, pink, white, ﬂag, jet,
winter, spring, summer, and autumn. (Be sure to specify the name of the color map inside single
quotes.)
Exercise 1.3.5. Recreate Figures 1.14 and 1.15 using Code Snippet 1.3.7 as a guide. Experiment
with diﬀerent number of traces (ntr) and diﬀerent program settings to see how dynamic range is
aﬀected.
1.3.3 The plotimage picking facility
The function plotimage , in addition to displaying seismic data, provides a rudimentary seismic
picking facility. This is similar in concept to using MATLAB’s ginput (described in the next
section) but is somewhat simpler to use. In concept, this facility simply allows the user to draw any
number of straightline segments (picks) on top the the data display and aﬀords easy access to the
coordinates of these picks. The picks can then be used in any subsequent calculation or analysis.
The picking mechanism is activated by the popup menu in the lower left corner of the plotimage
window. Initially in the zoom setting, this menu has two picking settings: Pick(N) and Pick(O). The
‘N’ and ‘O’ stand for New and Old indicating whether the picks about to be made are a new list or
should be added to the existing list. The pick list is stored as the global variable PICKS that can be
accessed from the base workspace, or within any function, by declaring it there. There is only one
pick list regardless of how many plotimage windows are open. This means that if one plotimage
window has been used for picking and a second is then activated with the Pick(N) option, the picks
1.3. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 17
0 100 200 300 400 500 600 700 800 900 1000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figure 1.16: This ﬁgure is displayed by Code
Snippet 1.3.8 before allowing the user to select
points.
0 100 200 300 400 500 600 700 800 900 1000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figure 1.17: After the user picks the ﬁrst breaks
in Figure 1.16, the picks are drawn on top of the
seismic data. See Code Snippet 1.3.8.
for the ﬁrst window will be lost. If desired, this can be avoided by copying the pick list into another
variable prior to activating the second picking process.
A pick is made by clicking the left mouse button down at the ﬁrst point of the pick, holding the
button down while dragging to the second point, and releasing the button. The pick will be drawn
on the screen in a temporary color and then drawn in a permanent color when the mouse is released.
The permanent color is controlled by the global variable PICKCOLOR. If this variable has not been
set, picks are drawn in red. A single mouse click, made without dragging the mouse and within the
bounds of the axes, will delete the most recent pick.
This picking facility is rudimentary in the sense that the picks are established without any
numerical calculation involving the data. Furthermore, there is no facility to name a set of picks
or to retain their values. Nevertheless, a number of very useful calculations, most notably raytrace
migration (see sections 5.2.2 and 5.3.3) are enabled by this. It is also quite feasible to implement a
more complete picking facility on this base.
1.3.4 Drawing on top of seismic data
Often it is useful to draw lines or even ﬁlled polygons on top of a seismic data display. This is quite
easily done using MATLAB’s line and patchcommands. Only line is discussed here.
Code Snippet 1.3.8 loads the small sample shot record and displays it. The command ginput
halts execution of the script and transfers focus to the current ﬁgure. There, the cursor will be
changed to a crosshairs and the user is expected to enter a sequence of mouse clicks to deﬁne a series
of points. In the example shown in Figures 1.16 and 1.17, six points were entered along the ﬁrst
breaks. ginput expects the points to be selected by simple mouse clicks and then the “enter” key
is hit to signal completion. The six points are returned as a vector of r coordinates, xpick, and a
vector of t coordinates, tpick. Though it is a useful tool, ginput does note provide a picking facility
such as that described previously. However, ginput works with any MATLAB graphics display while
the picking facility is only available with plotimage .
The call to line plots the points on top of the seismic image. The return value from line is
the graphics handle of the line. The function line will accept vectors of the r, j, and possibly .
18 CHAPTER 1. INTRODUCTION
coordinates of the nodes of the line to be drawn. If no . coordinates are given, they are assumed
zero which causes them to be drawn in the same . plane as the seismic (MATLAB graphics are
always 3D even when they appear to be only 2D). Plotting the line at . = 0 usually works but if
more mouse clicks are done on the ﬁgure, such as for zooming, then it can happen that the line may
get redrawn ﬁrst with the seismic on top of it. This causes the line to “disappear”. Instead, it is
more robust to give the line a vector of z coordinates of unity so that it is guaranteed to always be
in front of the seismic.
In addition to (r, j, .) coordinates, line accepts an arbitrary length list of (attribute, property)
pairs that deﬁne various features of the line. In this case, its color is set to red, its line thickness is
set to twice normal, and markers are added to each point. There are many other possible attributes
that can be set in this way. To see a list of them, issue the command get(h) where h is the handle
of a line and MATLAB will display a complete property list. Once the line has been drawn, you can
alter any of its properties with the set command. For example, set(h,’color’,’c’) changes the
line color to cyan and set(h,’ydata’,get(h,’ydata’)+.1) shifts the line down .1 seconds.
Code Snippet 1.3.8. This example displays the small sample shot record using plotimage and
then uses ginput to allow the user to enter points. These points are plotted on top of the seismic
data using line. The results are in Figures 1.16 and 1.17.
1 load smallshot
2 global SCALE_OPT CLIP
3 SCALE_OPT=1;CLIP=1;
4 plotimage(seis,t,x)
5 axis([0 1000 0 1])
6 [xpick,tpick]=ginput;
7 h=line(xpick,tpick,ones(size(xpick)),’color’,’r’,...
8 ’linewidth’,2,’marker’,’*’);
End Code
1.4 Programming tools
It is recommended that a study course based on this book involve a considerable amount of pro
gramming. Programming in MATLAB has similarities to other languages but it also has its unique
quirks. This section discusses some strategies for using MATLAB eﬀectively to explore and manip
ulate seismic datasets. MATLAB has two basic programming constructs, scripts and functions, and
program will be used to refer to both.
1.4.1 Scripts
MATLAB is designed to provide a highly interactive environment that allows very rapid testing
of ideas. However, unless some care is taken, it is very easy to create results that are nearly
irreproducible. This is especially true if a long sequence of complex commands has been entered
directly at the MATLAB prompt. A much better approach is to type the commands into a text ﬁle
and execute them as a script. This has the virtue that a permanent record is maintained so that
the results can be reproduced at any time by simply reexecuting the script.
A script is the simplest possible MATLAB programming structure. It is nothing more than a
sequence of syntactically correct commands that have been typed into a ﬁle. The ﬁle name must
end in .m and it must appear in the MATLAB search path. When you type the ﬁle name (without
the .m) at the MATLAB prompt, MATLAB searches its path for the ﬁrst .m ﬁle with that name
and executes the commands contained therein. If you are in doubt about whether your script is the
1.4. PROGRAMMING TOOLS 19
ﬁrst sonamed ﬁle in the path, use the which command. Typing which foo causes MATLAB to
display the complete path to the ﬁle that it will execute when foo is typed.
A good practice is to maintain a folder in MATLAB’s search path that contains the scripts
associated with each logically distinct project. These script directories can be managed by creating
a further set of control scripts that appropriately manipulate MATLAB’s search path. For example,
suppose that most of your MATLAB tools are contained in the directory
C:\Matlab\toolbox\local\mytools
and that you have project scripts stored in
C:\My Documents\project1\scripts
and
C:\My Documents\project2\scripts.
Then, a simple management scheme is to include something like
1 global MYPATH
2 if(isempty(MYPATH))
3 p=path;
4 path([p ’;C:\MatlabR11\toolbox\local\mytools’]);
5 MYPATH=path;
6 else
7 path(MYPATH);
8 end
in your startup.m ﬁle and then create a script called project1.m that contains
1 p=path;
2 path([p ’;C:\My Documents\project1\scripts’])
and a similar script for project2. When you launch MATLAB your startup.m establishes your base
search path and assigns it to a global variable called MYPATH. Whenever you want to work on
project1, you simply type project1 and your base path is altered to include the project1 scripts.
Typing startup again restores the base path and typing project2 sets the path for that project.
Of course you could just add all of your projects to your base path but then you cannot have scripts
with the same name in each project.
Exercise 1.4.1. Write a script that plots wiggle traces on top of an image plot. Test your script
with the synthetic section of Code Snippet 1.3.4. (Hint: plotseis allows its plot to be directed to an
existing set of axes instead of creating a new one. The “current” axes can be referred to with gca.)
1.4.2 Functions
The MATLAB function provides a more advanced programming construct than the script. The
latter is simply a list of MATLAB commands that execute in the base workspace. Functions execute
in their own independent workspace that communicates with the base workspace through input and
output variables.
The structure of a function
A simple function that clips a seismic trace is given in Code Snippet 1.4.1. This shows more detail
than will be shown in other examples in this book in order to illustrate function documentation. The
ﬁrst line of clip gives the basic syntax for a function declaration. Since both scripts and functions
are in .m ﬁles, it is this line that alerts MATLAB to the fact that clip is not a script. The function
is declared with the basic syntax
20 CHAPTER 1. INTRODUCTION
[output_variable_list]=function_name(input_variable_list).
Rectangular brackets [ . . . ] enclose the list of output variables, while regular parentheses enclose the
input variables. Either list can be of any length, and entries are separated by commas. For clip ,
there is only one output variable and the [ . . . ] are not required. When the function is invoked,
either at the command line or in a program, a choice may be made to supply only the ﬁrst n input
variables or to accept only the ﬁrst : output variables. For example, given a function deﬁnition like
[x1,x2]=foo(y1,y2), it may be legally invoked with any of
[a,b]=foo(c,d);
[a,b]=foo(c);
a=foo(c,d);
a=foo(c);
The variable names in the function declaration have no relation to those actually used when the
function is invoked. For example, when a=foo(c) is issued the variable c becomes the variable (y1)
within foo’s workspace and similarly, foo’s x1 is returned to become the variable a in the calling
workspace. Though it is possible to call foo without specifying y2 there is no simple way to call it
and specify y2 while omitting y1. Therefore, it is advisable to structure the list of input variables
such that the most important ones appear ﬁrst. If an input variable is not supplied, then it must be
assigned a default value by the function.
Code Snippet 1.4.1. A simple MATLAB function to clip a signal.
1 function trout=clip(trin,amp);
2 % CLIP performs amplitude clipping on a seismic trace
3 %
4 % trout=clip(trin,amp)
5 %
6 % CLIP adjusts only those samples on trin which are greater
7 % in absolute value than ’amp’. These are set equal to amp but
8 % with the sign of the original sample.
9 %
10 % trin= input trace
11 % amp= clipping amplitude
12 % trout= output trace
13 %
14 % by G.F. Margrave, May 1991
15 %
16 if(nargin˜=2)
17 error(’incorrect number of input variables’);
18 end
19 % find the samples to be clipped
20 indices=find(abs(trin)>amp);
21 % clip them
22 trout=trin;
23 trout(indices)=sign(trin(indices))*amp;
End Code
In the example of the function clip there are two input variables, both mandatory, and one out
put variable. The next few lines after the function deﬁnition are all comments (i.e. nonexecutable)
as is indicated by the % sign that precedes each line. The ﬁrst contiguous block of comments follow
ing the function deﬁnition constitutes the online help. Typing help clip at the MATLAB prompt
will cause these comment lines to be echoed to your MATLAB window.
The documentation for clip follows a simple but eﬀective style. The ﬁrst line gives the function
name and a simple synopsis. Typing help directory name, where directory name is the name of a
1.4. PROGRAMMING TOOLS 21
directory containing many .m ﬁles, causes the ﬁrst line of each ﬁle to be echoed giving a summary of
the directory. Next appears one or more function prototypes that give examples of correct function
calls. After viewing a function’s help ﬁle, a prototype can be copied to the command line and edited
for the task at hand. The next block of comments gives a longer description of the tasks performed
by the function. Then comes a description of each input and output parameter and their defaults,
if any. Finally, it is good form to put your name and date at the bottom. If your code is to be
used by anyone other than you, this is valuable because it establishes who owns the code and who
is responsible for ﬁxes and upgrades.
Following the online help is the body of the code. Lines 1618 illustrate the use of the auto
matically deﬁned variable nargin that is equal to the number of input variables supplied at calling.
clip requires both input variables so it aborts if nargin is not two by calling the function error.
The assignment of default values for input variables can also be done using nargin. For example,
suppose the amp parameter were to be allowed to default to 1.0. This can be accomplished quite
simply with
if(nargin<2) amp=1; end
Lines 20, 22, and 23 actually accomplish the clipping. They illustrate the use of vector addressing
and will be discussed more thoroughly in Section 1.5.1.
1.4.3 Coping with errors and the MATLAB debugger
No matter how carefully you work, eventually you will produce code with in it. The simplest errors
are usually due to mangled syntax and are relatively easy to ﬁx. A MATLAB language guide is
essential for the beginner to decipher the syntax errors.
More subtle errors only become apparent at runtime after correcting all of the syntax errors.
Very often, runtime errors are related to incorrect matrix sizes. For example, suppose we wish to
pad a seismic matrix with nzs zero samples on the end of each trace and nzt zero traces on the end
of the matrix. The correct way to do this is show in Code Snippet 1.4.2.
Code Snippet 1.4.2. Assume that a matrix seis already exists and that nzs and nzt are already
deﬁned as the sizes of zero pads in samples and traces respectively. Then a padded seismic matrix
is computed as:
1 %pad with zero samples
2 [nsamp,ntr]=size(seis);
3 seis=[seis;zeros(nzs,ntr)];
4 %pad with zero traces
5 seis=[seis zeros(nsamp+nzs,nzt)];
End Code
The use of [ . . . ] on lines 3 and 5 is key here. Unless they are being used to group the return
variables from a function, [ . . . ] generally indicate that a new matrix is being formed from the
concatenation of existing matrices. On line 3, seis is concatenated with a matrix of zeros that
has the same number of traces as seis but nzs samples. The semicolon between the two matrices
is crucial here as it is the row separator while a space or comma is the column separator. If the
elements in [ ] on line 3 were separated by a space instead of a semicolon, MATLAB would emit
the error message:
??? All matrices on a row in the bracketed expression must have the same
number of rows.
22 CHAPTER 1. INTRODUCTION
This occurs because the use of the column separator tells MATLAB to put seis and zeros(nxs,ntr)
sidebyside in a new matrix; but, this is only possible if the two items have the same number of
rows. Similarly, if a row separator is used on line 5, MATLAB will complain about “All matrices
on a row in the bracketed expression must have the same number of columns”.
Another common error is an assignment statement in which the matrices on either side of the
equals sign do not evaluate to the same size matrix. This is a fundamental requirement and calls
attention to the basic MATLAB syntax: MatrixA = MatrixB. That is, the entities on both sides of
the equals sign must evaluate to matrices of exactly the same size. The only exception to this is
that the assignment of a constant to a matrix is allowed.
One rather insidious error deserves special mention. MATLAB allows variables to be “declared”
by simply using them in context in a valid expression. Though convenient, this can cause problems.
For example, if a variable called plot is deﬁned, then it will mask the command plot. All further
commands to plot data (e.g. plot(x,y)) will be interpreted as indexing operations into the matrix
plot. More subtle, if the letter i is used as the index of a loop, then it can no longer serve its
predeﬁned task as
√
−1 in complex arithmetic. Therefore some caution is called for in choosing
variable names, and especially, the common Fortran practice of choosing i as a loop index is to be
discouraged.
The most subtle errors are those which never generate an overt error message but still cause
incorrect results. These logical errors can be very diﬃcult to eliminate. Once a program executes
successfully, it must still be veriﬁed that it has produced the expected results. Usually this means
running it on several test cases whose expected behavior is well known, or comparing it with other
codes whose functionality overlaps with the new program.
The MATLAB debugger is a very helpful facility for resolving runtime errors, and it is simple
to use. There are just a few essential debugger commands such as: dbstop, dbstep, dbcont,
dbquit, dbup, dbdown. A debugging session is typically initiated by issuing the dbstop command
to tell MATLAB to pause execution at a certain line number, called a breakpoint. For example
dbstop at 200 in plotimage will cause execution to pause at the executable line nearest line 200
in plotimage . At this point, you may choose to issue another debug command, such as dbstep
which steps execution a line at a time, or you may issue any other valid MATLAB command. This
means that the entire power of MATLAB is available to help discover the problem. Especially
when dealing with large datasets, it is often very helpful to issue plotting commands to graph the
intermediate variables.
As an example of the debugging facility, consider the problem of extracting a slice from a matrix.
That is, given a 2D matrix, and a trajectory through it, extract a submatrix consisting of those
samples within a certain halfwidth of the trajectory. The trajectory is deﬁned as a vector of row
numbers, onepercolumn, that cannot double back on itself. A ﬁrst attempt at creating a function
for this task might be like that in Code Snippet 1.4.3.
Code Snippet 1.4.3. Here is some code for slicing through a matrix along a trajectory. Beware,
this code generates an error.
1 function s=slicem(a,traj,hwid)
2
3 [m,n]=size(a);
4 for k=1:n %loop over columns
5 i1=max(1,traj(k)hwid); %start of slice
6 i2=min(m,traj(k)+hwid); %end of slice
7 ind=(i1:i2)traj(k)+hwid; %output indices
8 s(ind,k) = a(i1:i2,k); %extract the slice
9 end
End Code
1.4. PROGRAMMING TOOLS 23
First, prepare some simple data like this:
a=((5:1:1)’)*(ones(1,10))
a =
5 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4
3 3 3 3 3 3 3 3 3 3
2 2 2 2 2 2 2 2 2 2
1 1 1 1 1 1 1 1 1 1
traj=[1:5 5:1:1]
traj =
1 2 3 4 5 5 4 3 2 1
The samples of a that lie on the trajectory are 5 4 3 2 1 1 2 3 4 5. Executing slicem with
the command s=slicem(a,traj,1) generates the following error:
??? Index into matrix is negative or zero.
Error in ==> slicem.m On line 8 ==> s(ind,k) = a(i1:i2,k);
This error message suggests that there is a problem with indexing on line 8; however, this could
be occurring either in indexing into a or s. To investigate, issue the command “dbstop at 8 in
slicem” and rerun the program. Then MATLAB stops at line 8 and prints
8 s(ind,k) = a(i1:i2,k);
K
Now, suspecting that the index vector ind is at fault we list it to see that it contains the values
1 2 and so does the vector i1:i2. These are legal indices. Noting that line 8 is in a loop, it seems
possible that the error occurs on some further iteration of the loop (we are at k=1). So, execution
is resumed with the command dbcont. At k=2, we discover that ind contains the values 0 1 2
while i1:i2 is 1 2 3. Thus it is apparent that the vector ind is generating an illegal index of 0. A
moments reﬂection reveals that line 7 should be coded as ind=(i1:i2)traj(k)+hwid+1; which
includes an extra +1. Therefore, we exit from the debugger with dbquit, make the change, and
rerun slicem to get the correct result:
s =
0 5 4 3 2 2 3 4 5 0
5 4 3 2 1 1 2 3 4 5
4 3 2 1 0 0 1 2 3 4
The samples on the trajectory appear on the central row while the other rows contain neighboring
values unless such values exceed the bounds of the matrix a, in which case a zero is returned. A more
polished version of this code is found as slicemat in the NumMethToolbox . Note that a simpler
debugger procedure (rather than stopping at line 8) would be to issue the command “dbstop if
error” but the process illustrated here shows more debugging features.
24 CHAPTER 1. INTRODUCTION
1.5 Programming for eﬃciency
1.5.1 Vector addressing
The actual trace clipping in Code Snippet 1.4.1 is accomplished by three deceptively simple lines.
These lines employ an important MATLAB technique called vector addressing that allows arrays to
be processed without explicit loop structures. This is a key technique to master in order to write
eﬃcient MATLAB code. Vector addressing means that MATLAB allows an index into an array to
be a vector (or more generally a matrix) while languages like C and Fortran only allow scalar indices.
So, for example, if a is a vector of length 10, then the statement a([3 5 7])=[pi 2*pi sqrt(pi)]
sets the third, ﬁfth, and seventh entries to π, 2 ∗ π, and
√
π respectively. In clip the function find
performs a logical test and returns a vector of indices pointing to samples that satisfy the test. The
next line creates the output trace as a copy of the input. Finally, the last line uses vector addressing
to clip those samples identiﬁed by find.
Code Snippet 1.5.1. A Fortran programmer new to MATLAB would probably code clip in this
way.
1 function trout=fortclip(trin,amp)
2
3 for k=1:length(trin)
4 if(abs(trin(k)>amp))
5 trin(k)=sign(trin(k))*amp;
6 end
7 end
8
9 trout=trin;
End Code
Code Snippet 1.5.2. This script compares the execution time of clip and fortclip
1 [r,t]=reflec(1,.002,.2);
2
3 tic
4 for k=1:100
5 r2=clip(t,.05);
6 end
7 toc
8
9 tic
10 for k=1:100
11 r2=fortclip(t,.05);
12 end
13 toc
End Code
In contrast to the vector coding style just described Code Snippet 1.5.1 shows how clip might be
coded by someone stuckintherut of scalar addressing (a C or Fortran programmer). This code is
logically equivalent to clip but executes much slower. This is easily demonstrated using MATLAB’s
built in timing facility. Code Snippet 1.5.2 is a simple script that uses the tic and toc commands
for this purpose. tic sets an internal timer and toc writes out the elapsed time since the previous
tic. The loops are executed 100 times to allow minor ﬂuctuations to average out. On the second
execution of this script, MATLAB responds with
1.5. PROGRAMMING FOR EFFICIENCY 25
elapsed_time = 0.0500
elapsed_time = 1.6000
which shows that clip is 30 times faster than fortclip . (On the ﬁrst execution, clip is only
about 15 times faster because MATLAB spends some time doing internal compiling. Run time tests
should always be done a number of times to allow for eﬀects like this.)
A simple blunder that can slow down fortclip even more is to write it like
Code Snippet 1.5.3. An even slower version of fortclip
1 function trout=fortclip(trin,amp)
2
3 for k=1:length(trin)
4 if(abs(trin(k)>amp))
5 trout(k)=sign(trin(k))*amp;
6 end
7 end
End Code
This version of fortclip , still produces correct results, but is almost 50 times slower than clip .
The reason is that the output trace, trout, is being addressed samplebysample but it has not been
preallocated. This forces MATLAB to resize the vector each time through the loop. Such resizing
is slow and may require MATLAB to make repeated requests to the operating system to grow its
memory.
Exercise 1.5.1. Create a version of fortclip and verify the run time comparisons quoted here.
Your computer may give diﬀerent results. Show that the version of fortclip in Code Snippet 1.5.3
can be made to run as fast as that in Code Snippet 1.5.1 by using the zeros function to preallocate
trout.
1.5.2 Vector programming
It is this author’s experience that MATLAB code written using vector addressing and linear algebra
constructs can be quite eﬃcient. In fact run times can approach that of compiled C or Fortran. On
the other hand, coding in the scalar style can produce very slow programs that give correct results
but lead to the false impression that MATLAB is a slow environment. MATLAB is designed to
eliminate many of the loop structures found in other languages. Vector addressing helps in this
regard but even more important is the use of MATLAB’s linear algebra constructs. Programming
eﬃciently in this way is called vector programming.
As an example, suppose seis is a seismic data matrix and it is desired to scale each trace (i.e.
column) by a constant scale factor. Let scales be a vector of such factors whose length is equal to
the number of columns in seis. Using scalar programming, a seasoned Fortran programmer might
produce something like Code Snippet 1.5.4.
Code Snippet 1.5.4. A Fortran programmer might write this code to scale each trace in the matrix
seis by a factor from the vector scales
1 [nsamp,ntr]=size(seis);
2
3 for col=1:ntr
4 for row=1:nsamp
5 seis(row,col)=scales(col)*seis(row,col);
6 end
7 end
26 CHAPTER 1. INTRODUCTION
End Code
This works correctly but is needlessly slow. An experienced MATLAB programmer would know that
the operation of ‘matrix times diagonal matrix’ results in a new matrix whose columns are scaled by
the corresponding element of the diagonal matrix. You can check this out for yourself by a simple
MATLAB exercise:
a=ones(4,3); b=diag([1 2 3]); a*b
to which MATLAB’s response is
ans =
1 2 3
1 2 3
1 2 3
1 2 3
Thus the MATLAB programmer would write Code Snippet 1.5.4 with the very simple single line
in Code Snippet 1.5.5.
Code Snippet 1.5.5. A MATLAB programmer would write the example of Code Snippet 1.5.4 in
this way:
1 seis=seis*diag(scales);
End Code
Tests indicate that Code Snippet 1.5.5 is about ten times as fast as Code Snippet 1.5.4.
Vector programming is also facilitated by the fact that MATLAB’s mathematical functions are
automatically set up to operate on arrays. This includes functions like sin, cos, tan, atan,
atan2, exp, log, log10, sqrt and others. For example, if t is a time coordinate vector then
sin(2*pi*10*t) is a vector of the same size as t whose entries are a 10 Hz. sine wave evaluated
at the times in t. These functions all perform elementbyelement operations on matrices of any
size. Code written in this way is actually more visually similar to the corresponding mathematical
formulae than scalar code with its many explicit loops.
Some of MATLAB’s vectorized functions operate on matrices but return matrices of one di
mension smaller. The functions sum, cumsum, mean, main, max, std all behave in this manner.
For example, if trace is a vector and seis is a matrix, then mean(trace) results in a scalar that
is the mean value of the vector while mean(seis) results in a row vector containing the mean
value of each column of seis. The mean value of the entire matrix, seis, can be calculated with
mean(mean(seis)).
1.5.3 The COLON symbol in MATLAB
Vector programming is also facilitated by a thorough understanding of the multiple uses of the colon
(:) in MATLAB. In its most elementary form the colon is used to generate vectors. For example, the
time coordinate vector for a trace with ntr samples and a sample interval of dt can be generated
with the command t=(0:ntr1)*dt. This results in a row vector whose entries are [0 dt 2*dt
3*dt ... (ntr1)*dt].
More subtle is the use of the colon in indexing into a matrix. Let seis be a two dimensional
seismic matrix, then some sample indexing operations are:
1.5. PROGRAMMING FOR EFFICIENCY 27
seis(:,10) refers to the 10
th
trace. The colon indicates that all rows (samples) are desired.
seis(:,50:60) refers to traces 50 through 60.
seis(100:500,50:60) selects samples 100 through 500 on traces 50 through 60.
seis(520:2:720,:) grabs very other sample between sample number 520 and number 720 on all
traces.
seis(:,90:1:50) selects traces 50 through 90 but in reverse order.
seis(:) refers to the entire seismic matrix as a giant column vector.
Of course, the indices need not be entered as explicit numbers but could be a variable instead as in
the case of the return from find in Code Snippet 1.4.1.
The last item needs more explanation. Regardless of the dimensions of a matrix, it can always
be referred to as a single column vector using a single index. For example, the two dimensional
matrix, seis, can be indexed like seis(irow,icol) and as seis(ipos). This is possible because
computer memory is actually a onedimensional space and MATLAB stores a matrix in this space
in column order. This means that the actual storage pattern of seis is [seis(1,1) seis(2,1)
...seis(nrows,1) seis(1,2) seis(2,2) ... ...seis(nrows,ncols)]. Thus the last sample of
column one and the ﬁrst sample of column two are contiguous in memory. This means that the ﬁrst
sample of column two can be addressed either by seis(1,2) or by seis(nrows+1). In accordance
with this formulation, MATLAB allows any matrix to be entered into a formula as a equivalent
column vector using the notation seis(:).
1.5.4 Special values: NaN, Inf, and eps
MATLAB supports the IEEE representations of NaN (NotaNumber) and Inf (Inﬁnity). Certain
mathematical operations can cause these to arise and they then behave in deﬁned ways. For exam
ple 0/0, Inf*0, Inf±Inf, and Inf/Inf all result in NaN. Furthermore, any arithmetic operator
involving a NaN is required to produce NaN as an output. This can cause unexpected results. For
example, max([1 2 3 NaN 4 5 6]) results in NaN and the functions min, mean, std and many
others will also return NaN on this vector. Even worse, running fft on data with only a single
NaN in it will produce a NaN for the entire output spectrum. Despite these apparent complications,
NaN’s have enough uses that they are well worth having around. The occurrence of a NaN in your
output data signals you that an unexpected arithmetic exception has taken place in your code. This
must be found and corrected. NaN’s can also be used as convenient placeholders to mark some
special point in a matrix because they can easily be found. Also, when a NaN occurs in graphics,
the action is to blank that part of the display. Thus NaN’s can be used to temporarily turn oﬀ parts
of a graphic, something that is especially useful in 3D.
When used in logical comparisons, such as NaN==5, the result is almost always False. This means
that an expression such as find(v==NaN) will not correctly identify any NaN’s in the vector v. (Of
course, it works just ﬁne if you want to ﬁnd a number such as find(v==5).) So, NaN’s must be
located using find(isnan(v)) that returns a vector of indices of any NaN’s in v. (The function
isnan returns a logical vector of 1’s and 0’s indicating vector elements are NaN’s.)
Inﬁnity is handled similarly to NaN’s in that certain operations generate inﬁnity that subse
quently behaves in a deﬁned way. For example x/0 generates an Inf and x/Inf always returns zero
(unless x is Inf when NaN results). Inf also must be handled specially in logical comparisons. The
functions isinf and isfinite can be used by themselves or as input to find as discussed above
28 CHAPTER 1. INTRODUCTION
with isnan. Also, the debug command dbstop if naninf is helpful to stop execution at the point
that NaN or Inf occurs in any function.
MATLAB uses double precision ﬂoating point arithmetic for its calculations. This is actually
a higher standard of precision than has traditionally been used in seismic data processing. Most
processing systems have been written in Fortran or C and use single precision arithmetic. MATLAB
supplies the internal constant eps whose value is the smallest positive ﬂoating point number available
on your machine. In a loose sense, eps represents the machine “noise level” and is about 2.2204x10
−16
on the author’s computer. (How many decibels down from unity is eps?) As a general rule, tests for
the equality of two ﬂoating point variables should be avoided. Instead of a test like if(x==y) consider
something like if(abs(xy)<10*eps). eps can also be useful in computing certain limits that
involve a division by zero. For example, computing a sinc function with x=0:.1:pi;y=sin(x)./x;
generates a zero divide and y(1) is NaN. However, x=0:.1:pi;y=sin(x+eps)./(x+eps); avoids
the zero divide and results in y(1) of 1.
1.6 Chapter summary
The scope of this book was deﬁned as a survey of the fundamental numerical methodologies used in
seismic exploration, and their physical basis. Reasons for the choice of the MATLAB language for
the presentation of algorithms were given. MATLAB was suggested as a superior environment due
to its vector language, extensive numerical toolbox, interactive environment, and builtin graphics.
MATLAB conventions for naming functions were explained and the use of numbered Code Snippets
in a theoremlike environment code presentation was discussed.
Considerable time was spent discussing the display of seismic data. It was argued that the
numerical range (dynamic range) of modern data is very large, and this leads to the likelihood of
clipping in display. Wiggle trace, WTVA, and image plots were discussed as display tools, and their
relative merits were contrasted.
Finally, a brief survey of MATLAB programming was presented, with an emphasis on topics of
importance when dealing with large datasets. Scripts and functions were discussed and their struc
ture outlined. Common programming blunders that lead to reduced performance were discussed.
Vector addressing, vector programming, and the colon operator were discussed with an emphasis on
how they relate to the creation of eﬃcient code.
Chapter 2
Signal Theory
The theory of digital signal processing is a vast subject and its complete description would require
much more space than the signal chapter available here. However, an acquaintance with the essential
elements of the theory is so essential that this chapter is included as an introduction. The scope of
the present discussion is limited to fundamentals that have direct relevance to later chapters. Those
requiring a more thorough exposition should consult a textbook such as Karl (1989).
As a general theme, concepts will be developed here for both continuous and sampled signals.
The continuous viewpoint arises naturally when developing models for physical eﬀects where the
solutions to the relevant partial diﬀerential equations may be regarded as continuous signals. Alter
natively, when solving such equations in complex situations or in processing real seismic data, digital
computations in a computer are the only practical approach. Therefore, both approaches will be
explored where appropriate and the transformation of a continuous expression into a discrete one,
and the reverse, will be demonstrated.
2.1 Convolution
The process of convolution is so fundamental to all of signal theory that its description is an excellent
starting point. A variety of descriptions of convolution are given in this section. They are all useful
in diﬀerent contexts and some will appeal more to the intuition than others. Fundamentally however,
these are all merely diﬀerent perspectives on the same mathematical expression that is stated as
equation (2.3) below.
2.1.1 Convolution as ﬁltering
Convolution is the name given to the process of applying a stationary linear ﬁlter to a signal. By
stationary, it is meant that the ﬁlter response to an input impulse is independent of the time of
the impulse. Another name for this property of stationarity is translation invariance. The ﬁlter is
linear because the response to an input o(t) +/(t) is the sum of the responses to o(t) and /(t) taken
separately. Such a linear, stationary ﬁlter is completely speciﬁed by its impulse response, )(t). This
is deﬁned as the output of the ﬁlter when the input is a unit impulse at t = 0. Often the phrase the
ﬁlter will be used as a synonym for the impulse response of the ﬁlter. Suppose the input to the ﬁlter
is an impulse of magnitude o
0
at time t
0
and a second impulse of magnitude o
1
at time t
1
. Then
the ﬁlter output is
p(t) = o
0
)(t −t
0
) + o
1
)(t −t
1
). (2.1)
29
30 CHAPTER 2. SIGNAL THEORY
The property of linearity has been used to form the scaled sum of two timeshifted copies of the
impulse response. These appear in the equation as )(t − t
k
) where / = 0 or / = 1. Thus )(t = 0)
appears at both t = t
0
and t = t
1
. Filters that represent physical systems have the causality property
that )(t) = 0 for t < 0. If )(t) is causal, then equation (2.1) places the ﬁrst value that is possibly
nonzero at the times of the input impulses. The property of stationarity has been used in that the
response to the input impulse at t = t
1
is the same function )(t) as for the impulse at t = t
0
.
Suppose the input to the ﬁlter is an arbitrary sequence of impulses deﬁned by the magnitudes
¦o
k
¦, / = 1, 2, . . . · and the corresponding times ¦t
k
¦. Then equation (2.1) generalizes to the
onedimensional convolution integral
p(t) =
n
k=1
o
k
)(t −t
k
). (2.2)
Both this equation and equation (2.1) are examples of convolution equations though even equation
(2.2) assumes too much about the nature of the input to be considered general. The deﬁning feature
is the formation of a superposition of scaledanddelayed copies of a single function, )(t). If a
completely general expression is desired, then it must accommodate an input that is a continuous
function of time rather than a sequence of impulses. In a limiting procedure, as the sequence of
input impulses approaches the continuous function o(t), equation (2.2) approaches
p(t) =
_
∞
−∞
o(τ))(t −τ)dτ. (2.3)
Here, in comparison with equation (2.2), an integration has replaced the summation, the integration
variable τ has taken the place of the summation index /, and the sequence of impulses ¦o
k
¦ has
become the continuous function o(τ). The presence of the dt time diﬀerential in equation (2.3)
means that it is superﬁcially dimensionally inconsistent with equation (2.2). This may be remedied
either by assuming that ¦o
k
¦ and o(t) have diﬀerent units or, more commonly, by multiplying the
righthandside of equation (2.2) by a constant with temporal dimensions. The limits of integration
are formally written from −∞ to ∞ to accommodate all possible input signals. If o(τ) is causal,
then the lower limit may be altered to zero. If o(τ) vanishes for τ τ
max
then the upper limit may
be set to τ
max
. In other words, the integration extends over all relevant values of τ.
Convolution arises in many parts of physical theory other than the application of linear, sta
tionary ﬁlters. In all cases, the interpretation given here of forming a superposition of scaled and
timeshifted copies of a physical response (or impulse response) is appropriate. However, the choice
of which function, o or ), to interpret as the impulse response is arbitrary. If the integral operation
of equation (2.3) is symbolized abstractly as p = o•), then it is elementary to show that o•) = ) •o.
This is accomplished by the change of variables τ
= t −τ that gives
p(t) =
_
∞
−∞
o(τ))(t −τ)dτ =
_
−∞
∞
o(t −τ
))(τ
)d(−τ
) =
_
∞
−∞
o(t −τ
))(τ
)dτ
. (2.4)
Thus convolution is said to be commutative and either function can be interpreted as the impulse
response with the other being the input signal that provides the weighting.
Now consider the digital sampling of all three of the functions involved in equation (2.3). Let
∆t be the temporal sample interval and let each of o(t), )(t), and p(t) be represented by sequences
of discrete samples ¦o
k
¦, ¦)
k
¦, and ¦p
k
¦ with / = 0, 1, . . . · − 1 so that t = /∆t ranges from 0 to
(·−1)∆t . The diﬀerence between these sequences and that deﬁned previously for equation (2.2) is
2.1. CONVOLUTION 31
that these new sequences are all sampled at a regular interval. In the previous instance, a sequence
of ﬁve impulses required only ﬁve samples regardless of the intervals between the samples. Now, if
any of the ﬁve impulses are separated by an interval greater than ∆t then more than ﬁve samples
will be needed though the additional samples will be zero. At this expense of possibly including
many zero samples, a discrete version of equation (2.3) can be written as
p
j
= ∆t
N−1
k=0
o
k
)
j−k
(2.5)
where the constant ∆t has been taken outside the summation. In most implementations of digital
signal theory, ∆t is a constant throughout the application and it is customary to write equations
like (2.5) with ∆t set to unity. Thus, more commonly discrete convolution will be written
p
j
=
N−1
k=0
o
k
)
j−k
. (2.6)
Exercise 2.1.1. Show that convolution is distributive. That is o • (/ +c) = o • / +o • c. Is it better
to stack (sum) a series of traces and then ﬁlter the stacked trace or to ﬁlter each one and stack the
ﬁltered traces? Why?
Exercise 2.1.2. Let n(t) = exp(iωt). For an arbitrary function ·(t) show that the convolution
n • · = o(ω)n where o(ω) is a function of frequency and of ·. Determine the precise form of o to
show how it depends on ·.
Exercise 2.1.3. Study the example below and then compute the convolution of : = [1, −.3, 0, −.5, .8, −.8]
with n = [.1, .3, .1]. Make a sketch of the process of reversing n and sliding it past :. Redraw this
sketch for each output sample.
Example 2.1.1. A simple model of a seismic trace, :
k
is that it represents a reﬂectivity series,
:
k
convolved with a wavelet, n
k
. That is :
j
=
k
:
k
n
j−k
. Let : = [1, .2, −.1, −.5, .5, 0, −1] and
n = [1, −.5, .2, ] and compute :
j
. Assuming that both ¦:¦ and ¦n¦ begin with sample number 0, :
0
is given by :
0
=
k
:
k
n
0−k
. The only nonzero contribution to this sum is for / = 0 with the result
:
0
= :
0
n
0
= 1. Below, each element of ¦:¦ is worked out. In each case, the limits on the summation
are adjusted to include only the terms that involve nonzero contributions from ¦n¦. This means that
a maximum of three elements occur in each sum. The entire process can be visualized by reversing
32 CHAPTER 2. SIGNAL THEORY
¦n¦ and sliding it past ¦:¦. At each position, the samples that align are multiplied and summed.
:
0
=
0
k=0
:
k
n
0−k
= :
0
n
0
= 1
:
1
=
1
k=0
:
k
n
1−k
= :
0
n
1
+ :
1
n
0
= −.5 + .2 = −.3
:
2
=
2
k=0
:
k
n
2−k
= :
0
n
2
+ :
1
n
1
+ :
2
n
0
= .2 −.1 −.1 = 0
:
3
=
3
k=1
:
k
n
3−k
= :
1
n
2
+ :
2
n
1
+ :
3
n
0
= .04 + .05 −.5 = −.41
:
4
=
4
k=2
:
k
n
4−k
= :
2
n
2
+ :
3
n
1
+ :
4
n
0
= −.02 + .25 + .5 = .73
:
5
=
5
k=3
:
k
n
5−k
= :
3
n
2
+ :
4
n
1
+ :
5
n
0
= −.1 −.25 + 0 = −.35
:
6
=
6
k=4
:
k
n
6−k
= :
4
n
2
+ :
5
n
1
+ :
6
n
0
= .1 + 0 −1 = −.9
:
7
=
6
k=5
:
k
n
7−k
= :
5
n
2
+ :
6
n
1
= 0 + .5 = .5
:
8
=
6
k=6
:
k
n
8−k
= :
6
n
2
= −.2
2.1.2 Convolution by polynomial multiplication  the Z transform
There is a convenient representation of discretely sampled signals that allows convolution to be done
through a simple process of multiplication. Suppose that an Nlength sequence ¦o¦ = [o
0
, o
1
, o
2
, . . . o
N−1
]
is identiﬁed with a polynomial in a variable z by the relation
o(.) = o
0
+ o
1
. + o
2
.
2
+ . . . o
N−1
.
N−1
=
N−1
k=0
o
k
.
k
. (2.7)
The resulting function, o(.) is called the z transform of the sequence ¦o¦. Now, recall the rule for
the multiplication of two polynomials, for example, let N=3 and multiply
o(.))(.) =
_
o
0
+ o
1
. + o
2
.
2
¸ _
)
0
+ )
1
. + )
2
.
2
¸
= o
0
)
0
+ o
0
)
1
. + o
0
)
2
.
2
+ o
1
.)
0
+ o
1
.)
1
. + o
1
.)
2
.
2
+ o
2
.
2
)
0
+ o
2
.
2
)
1
. + o
2
.
2
)
2
.
2
; (2.8)
then, collecting terms of like powers of z gives
o(.))(.) = o
0
)
0
+ [o
0
)
1
+ o
1
)
0
] . + [o
0
)
2
+ o
1
)
1
+ o
2
)
0
] .
2
+ [o
1
)
2
+ o
2
)
1
] .
3
+ [o
2
)
2
] .
4
. (2.9)
2.1. CONVOLUTION 33
Examination of this result shows that the coeﬃcient of each power of z is composed of all combi
nations of the coeﬃcients of o(.) and )(.) whose subscripts sum to the value of the exponent of
z. In fact, the general pattern for the coeﬃcient of .
j
is
k
o
k
)
j−k
where the sum extends over
all relevant values. Comparison with equation (2.6) allows the conclusion: the product of the z
transforms of two signals gives the z transform of the convolution of those signals.
These concepts establish a link between the theory of discrete, digital ﬁlters and the algebra of
polynomials. This link has far reaching implications in signal theory because it allows the many
properties of polynomials to be used in signal processing. For example, if polynomial multiplication
can perform a convolution, then polynomial division does deconvolution. Later in this chapter, it will
be demonstrated that the z transform is a generalization of the discrete Fourier transform provided
that z is a complex variable. This means that the result demonstrated above is an example of the
convolution theorem that will be proven for Fourier transforms in a later section. It will also be
demonstrated that the location of the roots or zeros of o(.) completely determines the behavior of
¦o¦ as a digital ﬁlter.
Exercise 2.1.4. Use z transforms to repeat the convolution of exercise 2.1.1.
Exercise 2.1.5. Given a sequence ¦o¦, show that o(.).
m
is the spectrum of the sequence delayed
by : samples. Thus z is the unit delay operator. What is the meaning of .
−1
?
2.1.3 Convolution as a matrix multiplication
Usually the integral of the product of two continuous functions can be approximated in a computer
as a matrixvector product. The convolution integral provides an important example. Consider the
discrete convolution formula
p
j
=
N−1
k=0
o
j−k
)
k
(2.10)
and compare it to the general formula for the product of a matrix, `
jk
with a vector ·
k
that is
n
j
=
k
`
jk
·
k
. (2.11)
Examination of equations (2.6) and (2.11) shows that convolution can be done by deﬁning a matrix
¹
jk
= o
j−k
. Written as a matrix operation, equation (2.10) becomes
_
¸
¸
¸
¸
¸
_
p
0
p
1
p
2
.
.
.
p
N−1
_
¸
¸
¸
¸
¸
_
=
_
¸
¸
¸
¸
¸
_
o
0
o
−1
o
−2
. . . o
−N+1
o
1
o
0
o
−1
. . . o
−N+2
o
2
o
1
o
0
. . . o
−N+3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
o
N−1
o
N−2
o
N−3
. . . o
0
_
¸
¸
¸
¸
¸
_
_
¸
¸
¸
¸
¸
_
)
0
)
1
)
2
.
.
.
)
N−1
_
¸
¸
¸
¸
¸
_
. (2.12)
(If ¦o¦ is causal, then the entries above the main diagonal of the matrix will all be zero.) This will
be written as an abstract matrix equation as
p = ¹) (2.13)
where the convention is that single underlined quantities are column vectors and a double underline
denotes a matrix.
34 CHAPTER 2. SIGNAL THEORY
The matrix ¹ in equation (2.12) has a special symmetry that is required to perform a convolution.
Though the matrix has ·
2
entries, there are only · independent numbers that all come from ¦o¦.
The elements along any diagonal are constant. Each column contains a copy of ¦o¦ that has been
shifted to place o
0
on the main diagonal. Equivalently, each row contains a timereversed and shifted
copy of ¦o¦. Matrices with this symmetry are called Toeplitz or sometimes convolution matrices.
Since convolution is commutative, it follows that forming a Toeplitz matrix with ¦)¦ and a column
vector with ¦o¦ must give an identical result.
One way to visualize the matrixvector multiplication of equation (2.12) is called matrix multi
plication by rows. In this process, each row of ¹ multiplies ) as a vector dot product. That is, the
corresponding elements are multiplied and the resulting products summed to a scalar that becomes
the corresponding element of p. This can be written as the set of equations
p
0
= o
0
)
0
+ o
−1
)
1
+ o
−2
)
2
+ . . . o
−N+1
)
N−1
p
1
= o
1
)
0
+ o
0
)
1
+ o
−1
)
2
+ . . . o
−N+2
)
N−1
p
2
= o
2
)
0
+ o
1
)
1
+ o
0
)
2
+ . . . o
−N+3
)
N−1
. . . = . . .
p
N−1
= o
N−1
)
0
+ o
N−2
)
1
+ o
N−3
)
2
+ . . . o
0
)
N−1
. (2.14)
This view of matrix multiplication shows how each sample of p (each output sample) is created as
a linear superposition of the inputs. An alternate, but equally valid perspective comes from matrix
multiplication by columns. Inspection of the equations (2.14) shows that each sample of ) multiplies
a corresponding column of ¹. Thus, a column oriented view of matrix multiplication suggests
_
¸
¸
¸
¸
¸
_
p
0
p
1
p
2
.
.
.
p
N−1
_
¸
¸
¸
¸
¸
_
=
_
¸
¸
¸
¸
¸
_
o
0
o
1
o
2
.
.
.
o
N−1
_
¸
¸
¸
¸
¸
_
)
0
+
_
¸
¸
¸
¸
¸
_
o
−1
o
0
o
1
.
.
.
o
N−2
_
¸
¸
¸
¸
¸
_
)
1
+
_
¸
¸
¸
¸
¸
_
o
−2
o
−1
o
0
.
.
.
o
N−3
_
¸
¸
¸
¸
¸
_
)
2
+ . . .
_
¸
¸
¸
¸
¸
_
o
−N+1
o
−N+2
o
−N+3
.
.
.
o
0
_
¸
¸
¸
¸
¸
_
)
N−1
(2.15)
In this view, the formation of a convolution by a scaled superposition of impulse responses (the
columns of ¹) is manifest. The ﬁnal result is obtained for all samples simultaneously after the
superposition of the ﬁnal scaled column of ¹.
2.1.4 Convolution as a weighted average
Equation (2.15) shows that matrix multiplication by columns is equivalent to viewing convolution as
the scaled superposition of impulse responses. However, equation (2.14) suggests an alternative, and
equally valid, interpretation of convolution. This equation shows each element of p being formed as
a weighted average of the samples of ) with ¹ providing the weights. Of course, since convolution
is commutative, p can equally well be regarded as a weighted average of o with a Toeplitz matrix 1
providing the weights.
This view of convolution is valuable since it is often desirable to smooth a physical dataset. For
example, a time series that represents the measurement of a slowly changing physical quantity may
ﬂuctuate more rapidly than is easily explicable. Such ﬂuctuations may be ascribed to contamination
of the measurements by random noise. In this case, the data are often subjected to a running average
whereby the /
th
output point is formed as the average of the input points on either side of sample
/. This is also called smoothing. The averaging width, or number of points involved in the average,
2.2. THE FOURIER TRANSFORM 35
is an important decision. For a width of :, a running average can be implemented as a convolution
with a series of : ones, or an mlength boxcar. For example, a 3length running average uses an
averaging operator deﬁned by o
k
= 1,3, −1 ≤ / ≤ 1; o
k
= 0, ot/c:ni:c. Then, ) is smoothed by the
matrix equation
_
¸
¸
¸
¸
¸
¸
_
p
0
p
1
p
2
.
.
.
.
.
.
_
¸
¸
¸
¸
¸
¸
_
=
1
3
_
¸
¸
¸
¸
_
1 1 0 0 0 . . . 0
1 1 1 0 0 . . . 0
0 1 1 1 0 . . . 0
. . . . . . . . .
. . . . . . . . .
_
¸
¸
¸
¸
_
_
¸
¸
¸
¸
¸
¸
_
)
0
)
1
)
2
.
.
.
.
.
.
_
¸
¸
¸
¸
¸
¸
_
. (2.16)
Here the convolution matrix is nonzero only in the main diagonal and the two subdiagonals above
and below the main. These diagonals are ﬁlled with ones. Comparing with equation (2.14) shows
that, for example, p
2
= ()
1
+)
2
+)
3
),3. Thus the conclusion is that a running average is equivalent
to convolution with a boxcar.
It is easily concluded that a running average using weights other than unity can be expressed as
convolution with an appropriate averaging function. For example, weights that ramp linearly from
zero to one and back zero can be expressed as a triangular averaging function. Multidimensional
averaging works the same way, it can always be expressed as a multidimensional convolution. Later
in this chapter, the connection between averaging and lowpass ﬁltering will be illustrated.
2.2 The Fourier Transform
The development of the Fourier transform is one of the most signiﬁcant developments in math
ematical analysis. Its digital counterpart, the discrete Fourier transform, plays a central role in
signal analysis. Fourier developed his ideas in the context of solving the heat equation to study
heat dissipation while boring out canons. Despite this speciﬁc intent, it soon became apparent that
Fourier’s theory could be used to develop solutions to other partial diﬀerential equations such as
Laplace’s equation or the wave equation. Despite the success of practical applications, the mathe
matics community resisted Fourier’s ideas because of the diﬃcult challenges they posed for analysis.
For example, a discontinuous function, such as the boxcar function, could be synthesized from the
superposition of an appropriate set of sine and cosines that are everywhere continuous. Also prob
lematic was the convergence of Fourier’s series of sines and cosines. The resolution of these and other
similar questions is a fascinating chapter in the history of mathematics but is beyond the scope of
this text.
2.2.1 The temporal Fourier transform and its inverse
In essence, Fourier’s theory provides a means to represent an arbitrary function as a superposition
(sum or integral) of a set of simpler functions called basis functions. Usually, these basis functions
are the trigonometric sines and cosines of diﬀerent frequencies. To construct a speciﬁc function,
the sines and cosines must have amplitudes and phases that depend on frequency. Considered as a
function of frequency, the amplitudes comprise the amplitude spectrum and the phases are the phase
spectrum of the function being represented.
Fourier’s theory can be deﬁned on either a ﬁnite interval or an inﬁnite domain. On a ﬁnite
interval, only a ﬁnite number of basis functions are required. Their superposition is a summation
over a countable set of frequencies and the method is called Fourier series. More relevant to data
processing is the case of an inﬁnite interval. Here an inﬁnite number of basis functions are required
36 CHAPTER 2. SIGNAL THEORY
and their superposition is accomplished by an integration over frequency. This is called the Fourier
transform. Rather than treating sin(ωt) and cos(ωt) as separate basis functions, it is common to use
exp(iωt) = c
iωt
. Since Euler’s theorem says c
iωt
= cos(ωt) + i sin(ωt) and since real and imaginary
parts of an equation are independent, the complex exponential provides a decomposition equivalent
to independent sin and cosine decompositions.
An essential tool in Fourier theory is an orthogonality relation. For complex exponentials, this
takes the form
1
2π
_
∞
−∞
c
i(ω−ˆ ω)t
dt = δ(ω − ˆ ω) (2.17)
where δ(ω − ˆ ω) is Dirac’s delta function that is deﬁned by
_
∞
−∞
δ(r)dr = 1 (2.18)
δ(r) = 0, r ,= 0 (2.19)
and has the fundamental property that
_
−
:(r)δ(r)dr = :(0) (2.20)
where c 0 and :(r) is any function. This result is called the sifting property of the Dirac’s delta
function.
The delta function is actually not a function in the classical sense because it has vanishing
support and takes on a singular value (inﬁnity) where the argument vanishes. It has been given
rigorous meaning through the branch of analysis known as distribution theory. There it is modelled
as the limit of a sequence of ordinary functions. These functions must have unit area but the limit
is taken as their support vanishes. For example, a boxcar of width o and height o
−1
has unit area
and converges to a delta function in the limit as o →0.
A proof of equation (2.17), that does not assume the Fourier inversion theorem, requires distri
bution theory and that is beyond the scope of this discussion. Intuitively, it can be understood quite
simply. If ω = ˆ ω, then exp(ωt − ˆ ωt) = 1 and the integral in equation (2.17) is inﬁnite. On the other
hand if ω ,= ˆ ω, then exp(ωt − ˆ ωt) = cos((ω − ˆ ω)t) + i sin((ω − ˆ ω)t). Both terms are simply periodic
oscillatory functions that, over the domain −∞< t < ∞ will integrate to zero.
Given the orthogonality relation, the Fourier transform theorem can be derived by postulating
an expansion of an arbitrary function :(t) in terms of the complex exponentials
:(t) =
1
2π
_
∞
−∞
o(ω)c
−iωt
dω. (2.21)
This says that a representation of :(t) is sought as the superposition of an inﬁnite set of complex
exponentials having weights o(ω). At this point, o(ω) is unknown but it can be calculated by
multiplying equation (2.21) by exp(iˆ ωt) and integrating over t, that is
_
∞
−∞
:(t)c
iˆ ωt
dt =
_
∞
−∞
c
iˆ ωt
_
1
2π
_
∞
−∞
o(ω)c
−iωt
dω
_
dt. (2.22)
Now, interchange the order of integration of the right and use the orthogonality relation, equation
2.2. THE FOURIER TRANSFORM 37
(2.17),
_
∞
−∞
:(t)c
iˆ ωt
dt =
_
∞
−∞
o(ω)
_
1
2π
_
∞
−∞
c
iˆ ωt−iωt
dt
_
dω =
_
∞
−∞
o(ω)δ(ˆ ω −ω)dω = o(ˆ ω). (2.23)
Upon renaming ˆ ω to ω, this is just o(ω), which will be called the Fourier transform of :(t). In
summary, the (forward) Fourier transform of :(t) is given by
o(ω) =
_
∞
−∞
:(t)c
iωt
dt (2.24)
and the inverse Fourier transform is
:(t) =
1
2π
_
∞
−∞
o(ω)c
−iωt
dω. (2.25)
If a function is denoted by a lower case letter, then its Fourier transform is denoted by a capital
letter. In geophysics, it is often desirable to use the frequency variable, ), in units of Hertz or cycles
persecond. The variable ω, called angular frequency in equations (2.24) and (2.25) is measured in
radianspersecond. Since there are 2π radians in one cycle of a sine wave, these variables are related
by ω = 2π). Upon change of variables, the Fourier transform pair in cyclical frequency is
o()) =
_
∞
−∞
:(t)c
i2πft
dt (2.26)
and
:(t) =
_
∞
−∞
o())c
−i2πft
d). (2.27)
In addition to the selection of frequency variables, there are other arbitrary choices in the deﬁnition of
a Fourier transform pair. Things work equally well if the sign in the Fourier kernal (i.e. exponent of
the complex exponential) is negative for the forward transform and positive for the inverse transform.
Also, the (2π)
−1
factor in front of the inverse transform (equation (2.25) ) can be replaced by (2π)
−1/2
in front of both transforms. These arbitrary choices appear in all possible combinations throughout
the relevant literature. The practitioner must be aware of this and always check the deﬁnitions
that are in eﬀect before using a particular theorem or result. In this book, the temporal Fourier
transforms will always be written as in the equations (2.24)(2.27); however, the choice of angular
or cyclical frequency variables may vary as is convenient.
2.2.2 Real and imaginary spectra, even and odd functions
For a real or complexvalued function, :(t), the Fourier transform is always complexvalued. It
is customary to call o()) either the Fourier transform or the spectrum. These terms will be used
synonymously in this text. As a complexvalued function, the spectrum has both real and imaginary
parts that can be denoted in either of two equivalent ways
o()) = o
R
()) + io
I
())
o()) = 1c(o())) + i1:(o())). (2.28)
38 CHAPTER 2. SIGNAL THEORY
An alternate decomposition of the spectrum is employed more commonly than real and imaginary
parts. The amplitude spectrum, ¹
S
()), and the phase spectrum, φ
S
()), are deﬁned as
¹
S
()) =
_
o
2
R
()) + o
2
I
()) (2.29)
and
φ
S
()) = arctan(
o
I
())
o
R
())
). (2.30)
Thus the spectrum can be written
o()) = ¹
S
())c
iφ
S
(f)
(2.31)
. Equations (2.28) and (2.31) are equivalent and alternate representations of a spectrum. Either
one can be used as convenient for whatever problem is at hand.
The Fourier transform decomposes a function using the complex exponential, exp(iωt) as a basis.
By Euler’s theorem, the is equivalent to cos ωt +i sin ωt. The cosine functions all are even functions
of t while the sines are odd functions. An even function has the property that :(−t) = :(t) while an
odd function has the property that :(−t) = −:(t). Any function can be expressed as a sum of even
and odd parts.
:(t) = :
e
(t) + :
o
(t) (2.32)
where
:
e
(t) =
1
2
[:(t) + :(−t)] (2.33)
and
:
e
(t) =
1
2
[:(t) −:(−t)] . (2.34)
Even functions have the property that
_
a
−a
:
e
= 2
_
a
0
:
e
while for odd functions
_
a
−a
:
0
= 0.
Furthermore, the product of two odd functions, or the product of two even functions, is even while
an even function times an odd function is odd. From these properties it follows directly that
_
∞
−∞
:
e
(t)c
iωt
dt = 1c
__
∞
−∞
:(t)c
iωt
dt
_
= 1c (o(ω)) . (2.35)
That is, the real part of the spectrum of :(t) is the Fourier transform of the even part of :(t).
Similarly, it is also true that
_
∞
−∞
:
o
(t)c
iωt
dt = 1:
__
∞
−∞
:(t)c
iωt
dt
_
= 1:(o(ω)) . (2.36)
This means that the imaginary part of the spectrum of :(t) is the spectrum of the odd part of :(t).
Exercise 2.2.1. Show that the product of two odd functions or of two even functions is even.
Exercise 2.2.2. Show that
_
a
−a
:
o
(t)dt = 0 where o is a positive constant and :
o
is any odd function.
Exercise 2.2.3. Prove equations (2.35) and (2.36).
2.2.3 The convolution theorem and the diﬀerentiation theorem
A very important property of the Fourier transform is that it converts convolution into multiplication.
That is, if :(t) is the convolution of n(t) and ·(t), the spectrum of :(t) of equation (2.3) is the product
2.2. THE FOURIER TRANSFORM 39
of the spectra of n(t) and ·(t). To prove this, substitute into equation (2.3) the deﬁnitions of n(t)
and ·(t) as inverse Fourier transforms of their spectra. This gives
:(t) =
_
∞
−∞
__
∞
−∞
l())c
−i2πf(t−τ)
d)
_ __
∞
−∞
\ (
ˆ
))c
−i2π
ˆ
fτ
d
ˆ
)
_
dτ. (2.37)
Now, move the τ integral to the inside
:(t) =
_
∞
−∞
_
∞
−∞
l())\ (
ˆ
))c
−i2πft
__
∞
−∞
c
−i2π(
ˆ
f−f)τ
dτ
_
d)d
ˆ
). (2.38)
The quantity in square brackets is δ(
ˆ
) −)) and this then collapses the
ˆ
) integral to give
:(t) =
_
∞
−∞
l())\ ())c
−i2πft
d). (2.39)
Recognizing this integral as an inverse Fourier transform proves the basic result that o()) =
l())\ ()) and this is called the convolution theorem.
The mathematics shown in equations (2.37)(2.38) requires considerable eﬀort to justify with
full mathematical precision. There are subtle but diﬃcult questions such as: ”For what class of
functions do the various integrals converge?” and ”Under what circumstances may the order of
integration be changed?”. These questions have been answered and the operations are valid for a
very general class of functions and even distributions. The interested reader should consult a treatise
in harmonic analysis such as Korner (1988) or Stein (1993). For this book, it will be assumed that
the convolution theorem is valid for all functions encountered.
The importance of this result is that it means that a ﬁlter can be applied to a signal in the Fourier
domain by multiplying the spectrum of the signal by that of the ﬁlter. For digital computations,
this is often faster than direct evaluation of the convolution integral because of the fast Fourier
transform algorithm. However, there is more to this story that will be discussed after the discrete
Fourier transform is introduced.
The symmetry of the Fourier transform means that the time and frequency domains are es
sentially similar. Thus is follows the the convolution theorem also works in reverse. That is, the
product n(t)·(t) is the convolution of the spectra of these functions in the frequency domain. A
careful derivation shows that a factor of (2π)
−1
with the result
_
∞
−∞
n(t)·(t)c
iωt
dt =
1
2π
_
∞
−∞
l(ˆ ω)\ (ω − ˆ ω)dˆ ω (2.40)
Also of great importance is that the Fourier transform reduces diﬀerentiation to multiplication.
For example, consider the calculation of ∂
t
:(t) given :(t) as an inverse Fourier transform of its
spectrum
∂:(t)
∂t
=
∂
∂t
_
∞
−∞
o())c
−i2πft
d). (2.41)
Examination of the righthandside of this expression shows that the t dependence occurs only in
the exponent of the complex exponential. Therefore the diﬀerentiation can be moved under the
integration sign and performed analytically with the result
∂:(t)
∂t
=
_
∞
−∞
−i2π)o())c
−i2πft
d). (2.42)
40 CHAPTER 2. SIGNAL THEORY
Thus diﬀerentiation with respect to t can be performed by multiplying the spectrum of :(t) by
−i2π) = −iω. In this case, angular frequency leads to a simple formula.
More general diﬀerentiation operators can also be computed. Let o(t, ∂
t
) = /
1
(t)∂
t
+ /
2
(t)∂
2
t
be
a diﬀerential operator, then
o(t, ∂
t
):(t) = /
1
(t)
∂:(t)
∂t
+ /
2
(t)
∂
2
:(t)
∂t
2
=
1
2π
_
∞
−∞
_
−iω/
1
(t) −ω
2
/
2
(t)
¸
o(ω)c
−iωt
dω
=
1
2π
_
∞
−∞
α(t, ω)o(ω)c
−iωt
dω (2.43)
where α(t, ω) = −iω/
1
(t) −ω
2
/
2
(t) is called the symbol of the diﬀerential operator. In this manner
virtually any diﬀerential operator can be converted into an equivalent Fourierdomain multiplicative
operator. This observation means that the Fourier transform is of great importance in solving partial
diﬀerential equations.
Exercise 2.2.4. Derive equation (2.40).
2.2.4 The phaseshift theorem
Another important result involving Fourier transforms is the relationship between a time shift and
a phase shift. Consider the Fourier transform of the timeshifted signal :(t + ∆t)
ˆ
o()) =
_
∞
−∞
:(t + ∆t)c
i2πft
dt (2.44)
and make the change of variables τ = t + ∆t so that
ˆ
o()) =
_
∞
−∞
:(τ)c
i2πf(τ−∆t)
dτ = c
−i2πf∆t
_
∞
−∞
:(τ)c
i2πfτ
dτ = c
−i2πf∆t
o()). (2.45)
In the ﬁnal expression, o()) is the Fourier transform of :(t). This shows that the spectrum of
the timeshifted signal may be computed from the spectrum of the original signal by multiplication
with c
−i2πf∆t
. This operator has unit amplitude and a phase that is linear in ) with a slope
−2π)∆t = −ω∆t. Let o()) = ¹
S
())c
iφ
S
(f)
and equation (2.45) becomes
ˆ
o()) = o())c
−i2πf∆t
= ¹
S
())c
iφ
S
(f)
c
−i2πf∆t
= ¹
S
())c
iφ
S
(f)−i2πf∆t
. (2.46)
Thus, the spectrum of the timeshifted signal is obtained from the spectrum of the original signal
by a phase shift . That is, a linear term is added to the phase. The magnitude of the slope of the
linear term is directly proportional to the magnitude of the time shift.
One subtlety is that the overall sign on the phaseshift depends upon the sign convention used in
the Fourier transform deﬁnition. That is, equation (2.46) results from the Fourier transform pair of
equations (2.26)(2.27). If the sign convention is reversed so that the forward transform is done with
crj−i2π)t, then the sign of the phase shift required for a positive time shift will be reversed. Thus,
if a theory is derived analytically with one sign convention and then implemented with software
that uses the other sign convention, confusing results can ensue. As a practical rule, if a phaseshift
program does not give the expected results, then it should be tested with the sign reversed on the
phase.
The phaseshift theorem is especially important with sampled data. This is because a timeshift
that is not an integral number of samples required that new samples be interpolated from the signal.
2.2. THE FOURIER TRANSFORM 41
If the time shift is done as a phase shift, then this interpolation is not required. In a sense, it is
achieved implicitly by the discrete Fourier transform.
2.2.5 The spectrum of a realvalued signal
Fourier transform theory is developed such that both the timedomain signal and its spectrum can be
complex valued. This leads to relationships between the real and imaginary parts in both domains.
On the other hand, data is inherently real valued but its spectrum is still complex. Considering
that the real and imaginary parts of a general complex function are independent, this means that
the spectrum of a real signal has two functions that are calculated from one. This is only possible
if there is a relationship between the real and imaginary parts of the spectrum of a real signal. Put
another way, the spectrum must have a symmetry.
Consider a real signal written as the inverse Fourier transform of its spectrum
:(t) =
_
∞
−∞
o())c
−i2πft
d). (2.47)
Since a real signal is equal to its complex conjugate
1
, then it must be true that
_
∞
−∞
o())c
−i2πft
d) =
_
∞
−∞
¯
o())c
i2πft
d) (2.48)
where
¯
o denotes the complex conjugate of o. The complex conjugation has changed the righthand
side from an inverse to a forward Fourier transform. Substitution of
ˆ
) = −) will change it back to
an inverse transform. This gives
_
∞
−∞
o())c
−i2πft
d) =
_
−∞
∞
¯
o(−
ˆ
))c
−i2π
ˆ
ft
d(−/ot)) =
_
∞
−∞
¯
o(−
ˆ
))c
−i2π
ˆ
ft
d
ˆ
). (2.49)
In the ﬁnal integral,
ˆ
) can be freely renamed to ) because in a deﬁnite integral the name of the
variable of integration is irrelevant. If this is surprising, consider that
_
4
0
rdr,
_
4
0
jdj, and
_
4
0
ηdη are
all equal to the same number, 8. So, equation (2.49) shows that the spectrum of a realvalued signal
has the symmetry
o()) =
¯
o(−))
or
¯
o()) = o(−)). (2.50)
This means that the negative frequencies are not independent of the positive ones. Rather, one may
always be calculated from the other.
This symmetry has importance in data processing because it means that only half of the Fourier
transform need be computed, stored, and operated upon.
Exercise 2.2.5. Show that the amplitude spectrum of a causal, real function is an even function
and that the phase spectrum is an odd function.
1
The complex conjugate of a complex number z is written as ¯ z and is deﬁned as ¯ z = Rez − iImz. The complex
conjugate may also be formed by replacing i by −i wherever it occurs in a complexvalued expression.
42 CHAPTER 2. SIGNAL THEORY
2.2.6 The spectrum of a causal signal
In the previous section, it was demonstrated that a realvalued signal imposes a certain symmetry
upon its spectrum. It is a similar story with a causal signal, that is, a function, s(t), for which
:(t) = 0, t < 0. This symmetry can be derived from the timedomain requirement for a causal
function that
:(t) = /(t):(t) (2.51)
where /(t) is the Heaviside step function or unit causal function deﬁned by
/(t) =
_
1, t ≥ 0
0, otherwise
. (2.52)
Since, equation (2.51) is a product of two temporal functions, the analogous frequencydomain
equation must involve a convolution of two spectra. The development of this expression will lead to
the desired symmetry.
This requires the Fourier transform of the step function, and that is known to be
H(ω) = πδ(ω) +
i
ω
. (2.53)
An informal justiﬁcation of this result begins with fact that the derivative of the step function is the
delta function
∂/(t)
∂t
= δ(t). (2.54)
Thus, if δ(t) were to be integrated, the step function would be recovered to within a possible
additive constant. In section 2.2.3 it was shown that diﬀerentiation in the time domain corresponds
to multiplication by −iω in the frequency domain. It follows that integration must correspond to
(−iω)
−1
= i,ω. Since the Fourier transform of δ(t) is the constant 1, it might be expected that the
Fourier transform of /(t) is i,ω. However, a moments reﬂection shows that this cannot be the entire
story since a purely imaginary spectrum corresponds to an odd function in the time domain (see
section 2.2.2) and /(t) is not purely odd. What is lacking from this result is the Fourier transform of
the even part of /(t). Using equation (2.33), the even part of /(t) is just the constant 1/2. (What is
the odd part?) Since the Fourier transform of 1/2 is πδ(ω), the spectrum of /(t) must be πδ(ω)+i,ω
and this is just equation (2.53). A more formal proof can be found in Lancaster and Salkauskas
(1996).
It follows from the convolution theorem and equations (2.53) and (2.40) that the Fourier trans
form of equation (2.51) is
o(ω) =
1
2π
o(ω) •
_
πδ(ω) +
i
ω
_
(2.55)
where • denotes a convolution over ω. Since o(ω) • δ(ω) = o(ω), this becomes
o(ω) =
i
π
o(ω) •
1
ω
. (2.56)
The factor of i on the righthandside essentially switches the real and imaginary parts around.
Decomposing equation (2.56) into its real and imaginary parts gives
o
R
(ω) =
−1
π
o
I
(ω) •
1
ω
=
−1
π
_
∞
−∞
o
I
(ˆ ω)
ω − ˆ ω
dˆ ω (2.57)
2.2. THE FOURIER TRANSFORM 43
and
o
I
(ω) =
1
π
o
R
(ω) •
1
ω
=
1
π
_
∞
−∞
o
R
(ˆ ω)
ω − ˆ ω
dˆ ω. (2.58)
The integrals on the righthandsides of these equations are explicit prescriptions for convolution
with ω
−1
and are called Hilbert transforms. Formally, the Hilbert transform of a function n(r) is
deﬁned as
H [n] (r) =
1
π
_
∞
−∞
n(ˆ r)
r − ˆ r
dˆ r (2.59)
so that equations (2.57) and (2.58) can be written compactly as
o
R
(ω) = −H [o
I
] (ω) (2.60)
and
o
I
(ω) = H [o
R
] (ω). (2.61)
These are the ﬁnal results of this section. A causal signal has the symmetry that the real and
imaginary parts of its spectrum are not independent but rather are Hilbert transforms of one another.
2.2.7 Minimum phase
Consider a physical signal, :(t) with the properties that it has ﬁnite energy and that an inverse
ﬁlter, also with ﬁnite energy, can be constructed for it. The ﬁnite energy requirement for :(t) can
be written
total energy = 2
_
∞
0
¹
2
S
(ω)dω < ∞. (2.62)
The inverse ﬁlter, ˆ :(t), is deﬁned by ˆ :(t) • :(t) = δ(t) from which it is clear that its amplitude
spectrum must be ¹
−1
S
(ω). So the energy for the inverse ﬁlter must be
total energy of inverse = 2
_
∞
0
¹
−2
S
(ω)dω < ∞. (2.63)
It is diﬃcult, if not impossible, to satisfy both of these equations simultaneously. For example,
suppose ¹
S
(ω) 0 for all ﬁnite ω, then equation (2.62) is only satisﬁed if ¹
S
(ω) → 0 rapidly
as ω → ∞. However, this condition means that ¹
−1
S
(ω) → ∞ and so equation (2.63) will diverge.
Therefore, it seems prudent to relax the conditions demanded of :(t) while still maintaining suﬃcient
generality to model all physical systems. It will be assumed that, for a causal :(t), an ω
max
can be
found such that
¹
S
(ω) →
_
0, [ω[ < ω
max
= 0, ω ≥ ω
max
. (2.64)
This is a very reasonable requirement for any physical system though it does exclude some interesting
mathematical signals. Obviously, the inverse ﬁlter cannot invert this amplitude spectrum for ω ≥
ω
max
so a bandlimited inverse must be acceptable. This is deﬁned through
¹
ˆ
S
(ω) =
_
1
A
S
(ω)
, [ω[ < ω
max
0, ω ≥ ω
max
. (2.65)
Signals with ﬁnite energy such as those deﬁned by equations (2.64) and (2.65) are called stable
signals.
44 CHAPTER 2. SIGNAL THEORY
Now consider the signal deﬁned by the spectrum
o
log
(ω) =
_
ln o(ω) = ln ¹
S
(ω) + iφ
S
(ω), ω < ω
max
0, ω ≥ ω
max
. (2.66)
If it can be shown that o
log
(ω) corresponds to a causal signal in the time domain, then the results of
section 2.2.6 apply and it can be concluded that ln¹
S
= −H [φ
S
] and φ
S
= H [ln ¹
S
]. The inverse
Fourier transform of equation (2.66) is
:
log
(t) =
1
2π
_
∞
−∞
o
log
(ω)c
−iωt
=
1
2π
_
ωmax
−ωmax
[ln ¹
S
(ω) + iφ
S
(ω)] c
−iωt
dω. (2.67)
Equation (2.67) can be considered to be part of a contour integral in the complex ω plane. In
addition to the real ω axis from −∞ to ∞ let the contour be closed by a semicircle of radius
tending to ∞ either above the real axis, 1:(ω) 0, or below, 1:(ω) < 0. For complex ω, the
complex exponential becomes exp(iω
R
t −ω
I
t), so for positive t the contour is completed above the
real axis in order that the real exponential is decaying. Similarly, for negative t, the contour is
completed below the real axis. Call contour along the real axis C1, that around the lower semicircle
C2, and that around the upper semicircle C3.
Cauchy’s integral theorem says that a contour integral of a function of a complex variable around
a closed contour is always zero if the function is everywhere analytic within the contour. An analytic
function is one that is diﬀerentiable at every point. Thus, if o
log
is analytic in the lower halfplane
then its integral around C1+C2 is zero. Furthermore, if the integral along C2 vanishes, then so must
that along C1. Since C1+C2 is the appropriate contour for t < 0, showing this would prove that
:
log
is a causal function.
By assumption, o(ω) is the spectrum of a causal function, therefore, the integral
_
∞
−∞
o(ω) exp iωtdω
must be zero for t < 0. The integral along the contour C2 clearly vanishes because of the exponential
attenuation caused by exp(−ω
I
t) for very large ω. Therefore, a necessary condition for o(ω) to be
causal is that it is analytic in the lower halfplane. Now, does it follow that o
log
is also analytic? This
is true provided that ¹
S
(ω) does not vanish for ω < ω
max
because the logarithm of 0 is −∞. Since
this condition was assumed for invertibility, it follows that o
log
is analytic in the lower halfplane.
The integral along C2 vanishes for the same reason as for o(ω).
Under the assumptions given previously, it follows that the spectrum deﬁned by equation (2.66)
is the spectrum of a causal function. Therefore, it follows that
1c (o
log
) (ω) = −H [1:(o
log
)] (ω) (2.68)
therefore from equation (2.66)
ln [¹
S
(ω)] = −H [φ
S
(ω)] (2.69)
and similar reasoning leads to the conclusion that
φ
S
(ω) = H [ln (¹
S
(ω))] . (2.70)
In summary, for a causal, stable signal that has a causal, stable inverse, the log amplitude spectrum
and the phase spectrum are a Hilbert transform pair. The phase spectrum deﬁned by equation
(2.70) is given the special name of the minimum phase spectrum. In a theorem credited to Robinson
(XXXXXXXX) it is shown that, of all causal signals with the amplitude spectrum ¹
s
(ω), the phase
spectrum given by the Hilbert transform of the logarithm of the amplitude spectrum is the smallest
2.2. THE FOURIER TRANSFORM 45
in absolute value at any frequency. In the time domain, the minimum phase signal is the most
frontloaded signal possible that is both causal and has the given amplitude spectrum. If the phase
is made smaller, then the signal becomes non causal.
Chapter 3
Wave propagation
3.1 Introduction
Seismic wave propagation in the upper layers of the earth’s crust is a complex physical process.
For example, a wave emanating from an explosive charge in a shallow (5 to 20 m) hole generally
undergoes an immediate and rapid spectral decay before it leaves the near surface
1
. Theory predicts
that this spectral decay is associated with minimum phase eﬀects that produce the characteristic
source waveform (Futterman, 1962). In addition to the primary downgoing pulse, there is always
upgoing energy from the source that reﬂects oﬀ of the earth’s free surface to produce a socalled
source ghost. In fact, there will be an entire series of similar ghosts that are produced when either
the primary or a particular ghost reﬂects oﬀ the base of the near surface and travels up again to
reﬂect oﬀ the free surface. Thus, it must always be expected that the downgoing pulse that serves
to illuminate the subsurface consists of a complex reverberatory series.
The subsurface is commonly idealized as a stacked sequence of nearly homogeneous layers, called
formations, whose geometry may be simple or complex. The contacts between the formations are
called horizons and are assumed to be in welded contact. (Of course, slip does occur along faults in
the subsurface but this is negligible over the timespan of a seismic experiment.) In the case of a
sedimentary basin, the formations are assumed to be horizontal and hence their material description
depends only on the vertical coordinate. This book adopts the common convention of a right
handed Cartesian coordinate system with the . coordinate oriented in the vertical and increasing
downward. Thus it is common to describe the sedimentary basin environment as a ·(.) setting by
which it is meant that the propagation speed of seismic waves depends only upon the formation
depth. (However, even in this setting, it is rarely a good model to assume that the base of the near
surface is a horizontal boundary.)
More complex settings are found near mountain belts, along passive continental margins, and
near the boundaries of sedimentary basins. Here, formations can be greatly distorted from the
horizontal due to tectonic compressional or extensional forces. Common jargon for such settings is
to say that they are ·(r, .) environments which means that seismic wave speed can depend arbitrarily
upon position.
As a wave propagates into the subsurface, a number of important physical eﬀects occur. When
1
The phrase near surface refers to a deliberately vague region just below the earth’s surface. It is generally
considered to be a region of high attenuation where static delays occur. Near surface eﬀects are expected to be
surface consistent.
46
3.2. THE WAVE EQUATION DERIVED FROM PHYSICS 47
a wave encounters a horizon (with diﬀerent material parameters on either side) both reﬂected and
transmitted waves result. Regardless of the type of incident wave, reﬂections and transmissions are
generally found of each possible type of waves called compressional or P , shear or S, and perhaps
interface waves. Even if a source can be devised to produce only one type of wave, the propagating
waveﬁeld rapidly evolves to contain all possible types going in all possible directions. For idealized
elastic media and plane waves
2
the equations governing reﬂection and transmission at a plane
interface are known exactly. These algebraically complex equations are given by Aki and Richards
(1980) and many approximate forms are also known.
Waves also lose energy as they propagate. Even in a perfectly elastic medium, a spherical
wavefront suﬀers a 1,: amplitude loss that is a geometric consequence of spherical divergence (or
spreading). In real media, there is always some additional loss due to anelasticity and typically
quantiﬁed by the dimensionless quality factor Q. These anelastic eﬀects are often modelled by the
constant Q theory (Kjartansson, 1980) which refers to a Q that is independent of frequency but may
vary with position. All anelastic loss theories predict that attenuation is necessarily accompanied
by dispersion or they violate causality.
These introductory remarks only hint at the complexity of the true seismic wave propagation
process in the earth’s crust. They are mentioned here to give the reader some idea of the drastic
simpliﬁcations that will be seen in the theoretical discussions in this chapter. Producing realistic
numerical models of seismic wave propagation is a blend of both science and intuition. The science
must be pushed to limits dictated by the available computation power but then approximations must
be made. The science can be dealt with logically; but, knowing which physical eﬀects are small and
can be neglected or developing an approximate expression for a mathematical operator, is often a
very subjective process.
This chapter will examine computational methods of wave propagation based mostly on the
scalar wave equation. Some initial eﬀort will be expended in justifying the mathematical form of the
equation and understanding its range of validity. Then raytracing methods for simple media will be
developed and used to illustrate fundamental eﬀects. Next methods for the formal solution of the
wave equation will be developed. The Fourier method will be shown to emerge from the classical
technique of separation of variables. Then Green’s theorem will be used to develop solutions which
proceed by integrating over the boundary (or initial) values. Finally, ﬁnite diﬀerence methods will
be explored to develop very general solution methods. (Note to the reader: this paragraph refers to
the chapter as I hope it to be. It is far from that now. Sorry!)
3.2 The wave equation derived from physics
There are many diﬀerent ‘wave equations’ that arise from physical theory (and many more that
occur only in mathematics). The classical scalar wave equation, ∇
2
ψ = ·
−2
∂
2
t
ψ (where ψ is the
wave function, · is the wave propagation speed, and ∇
2
ψ = ∂
2
x
ψ + ∂
2
y
ψ + ∂
2
z
ψ is the Laplacian in
3D), is only one possibility. For example, pressure, 1, in an inhomogeneous ﬂuid will be seen to
obey the wave equation
∇ (ρ(x)
∇1) = /(x)∂
2
t
1 where ρ(x) and /(x) are the heterogeneous density
and bulk modulus and x is the position vector. Though apparently quite diﬀerent, what these wave
equation have in common with all other wave equations is that they are hyperbolic partial diﬀerential
equations (pde’s). A great body of literature exists concerning the solution of pde’s and they are
2
Plane waves are a mathematical idealization because they are necessarily inﬁnite in extent. A point source actually
emits spherical wavefronts which may be approximately planar if the radius of the wavefront is large. A spherical
wavefront may be mathematically decomposed into plane waves for analysis.
48 CHAPTER 3. WAVE PROPAGATION
r r+dr
6
6
1
equilibriumposition
ψ(r)
Figure 3.1: Tension, T acts on a vibrating string whose displacement is ψ(r) to produce a restoring
force 1
known to fall into three general classes: hyperbolic, parabolic, and elliptic. A discussion of the origin
of this classiﬁcation and the meaning of these terms is beyond the scope of this book and the reader
is invited to consult a more general reference. There are many excellent works and some that are
particular favorites of this author are Morse and Feshbach (1953), Zauderer (1989), Ames (1992),
and Durran (1999). These books are very practical in their orientation and cannot be said to present
the subject of pde’s with full mathematical rigor. For this purpose, the sophisticated reader may
wish to consult Gustafson (1987) or, for the very brave, Taylor (1996).
In this section, some physical systems that lead to wave equations are examined. Only systems
that are relevant to the seismic exploration problem will be discussed.
3.2.1 A vibrating string
Here we will examine the simplest secondorder hyperbolic pde that arises as the governing equation
for transverse waves on a vibrating string. The presentation is adapted from that found in Morse and
Feshbach (1953). The solutions to this system are an instructive beginning for the more complex
problems in two and three spatial dimensions. The one dimensional solutions can be considered
as a basis for the common seismic processing step known as stretching that transforms a single
seismic trace from time to depth or the reverse. Consider the situation shown in ﬁgure 3.1 where a
snapshot (i.e. at constant time) of a vibrating string is shown. The displacement of the string from
equilibrium, ψ(r) is shown as a dashed curve and the tension, T, always acts tangentially to this
curve. The tension on both ends of a diﬀerential element of the string from r to r+dr creates a net
force, 1, that acts to restore the string to its equilibrium position. It is assumed that the magnitude
of ψ(r) is suﬃciently small at all points such that there is no signiﬁcant change in T or in the length
of the string. At position r in Figure 3.1, T(r) is directed tangentially along the string and has a
component, T(r) sin θ, that acts to restore the string to it’s equilibrium position. (Here, t/cto is the
angle between the string and the horizontal.) The assumption that T(r) is small implies that θ is
3.2. THE WAVE EQUATION DERIVED FROM PHYSICS 49
also small. This allows
T sin θ(r) · T tan θ(r) = T
∂ψ(r)
∂r
(3.1)
where the last step follows from the geometric deﬁnition of the derivative. Considering the tension
acting at both ends of the string element between r and r + dr allows the total restoring force on
the element to be written as
1(r)dr = T
_
∂ψ(r + dr)
∂r
−
∂ψ(r)
∂r
_
(3.2)
where 1(r) is the force per unit length and the minus sign in the square brackets is needed because
the tension acts at r and r + dr in opposite directions.
Now, recall that the deﬁnition of the second derivative of ψ(r) is
∂
2
ψ(r)
∂r
2
= lim
dx→0
1
dr
_
∂ψ(r + dr)
∂r
−
∂ψ(r)
∂r
_
. (3.3)
Thus in the limit as dr becomes inﬁnitesimal, equation (3.2) leads to
1(r) = T
∂
2
ψ(r)
∂r
2
. (3.4)
This important result says that the restoring force (per unit length) depends on the local curvature
of the string. When the second derivative is positive, the curvature is concave () and when it
is negative the curvature is convex (·). Since a positive force is directed upward in Figure 3.1
and a negative force is downward, it is easy to see that this force does act to restore the string to
equilibrium.
If the string’s weight is negligible, then Newton’s second law (force = mass acceleration) gives
T
∂
2
ψ(r, t)
∂r
2
= j
∂
2
ψ(r, t)
∂t
2
(3.5)
where j is the mass per unit length and the dependence of ψ on both space and time is explicitly
acknowledged. It is customary to rearrange equation (3.5) to give the standard form for the one
dimensional scalar wave equation as
∂
2
ψ(r, t)
∂r
2
−
1
·
2
∂
2
ψ(r, t)
∂t
2
= 0 (3.6)
where · =
_
T
µ
is the wave velocity
3
This analysis has shown that the scalar wave equation arises
for the vibrating string as a direct consequence of Newton’s second law. Wave equations invariably
arise in this context, that is when a displacement is initiated in a continuum. Also typical is the
assumption of small displacements. Generally, large displacements lead to nonlinear equations.
The waves modelled here are known as transverse waves because the particle displacement is in a
directional orthogonal to the direction of wave propagation. In section ?? longitudinal waves, that
have particle oscillation in the direction of wave propagation, are discussed.
If there are external forces being applied to the string as speciﬁed by the force density
4
function
3
It is quite common to use velocity for this scalar quantity even though velocity is classically a vector quantity in
physics. This book conforms with this common usage.
50 CHAPTER 3. WAVE PROPAGATION
o(r, t), then equation (3.6) is usually modiﬁed to
∂
2
ψ(r, t)
∂r
2
−
1
·
2
∂
2
ψ(r, t)
∂t
2
=
o(r, t)
T
. (3.7)
Both equations (3.6) and (3.7) are examples of onedimensional hyperbolic pde’s with constant
coeﬃcients. Equation (3.6) is said to be homogeneous while the presence of the source term, o(r, t),
in (3.7) gives it the label inhomogeneous. Hyperbolic pde’s can usually be recognized right away
because they involve the diﬀerence of spatial and temporal partial derivatives being equated to a
source function. Wave equations can be second order in their derivatives as these are or any other
order as long as the highest order of the time and space derivatives are the same. For example, a
ﬁrst order wave equation known as the advection equation is
∂φ(r, t)
∂r
−o
∂φ(r, t)
∂t
= 0 (3.8)
where o is a constant.
Exercise 3.2.1. Show that the left side of equation (3.6) can be factored into two operators of the
form of the left side of equation (3.8). What values does the constant o take in each expression?
Show that ψ(r, t) = ψ
1
(r + ·t) + ψ
2
(r − ·t) is a solution to (3.6) by showing that the two factors
annihilate ψ
1
or ψ
2
. (ψ
1
(r+·t) means an arbitrary onedimensional function of r+·t and similarly
for ψ
2
(r −·t)). Can you explain the physical meaning of this result?
3.2.2 An inhomogeneous ﬂuid
labelssec:ihf An inhomogeneous ﬂuid is one whose physical properties vary with position
5
. Let ρ(r)
and 1(r) be the density and bulk modulus of such a ﬂuid. Let 1(r) represent a pressure ﬂuctuation
from the ambient pressure 1
0
in the ﬂuid. Thus the total ﬂuid pressure is 1(r) + 1
0
. The bulk
modulus is a material property deﬁned by the relation
1(r, t) = −1(r)θ(r, t). (3.9)
The quantity θ is the volume strain or dilatation and is a measure of local fractional volume change.
This relation says that the pressure ﬂuctuations are directly proportional to induced volume changes.
θ is related to particle velocity, ν, though ∂
t
θ =
∇ ν. The minus sign in equation (3.9) is needed
because an increase in pressure causes a decrease in volume and viceversa. This is an example of
a constitutive relation that deﬁnes how stress relates to strain. In other words, equation (3.9) is
Hooke’s law for a ﬂuid.
We assume that the ﬂuid is at rest except for those motions induced by the pressure disturbance
1(r, t). As with the vibrating string, the motion of the ﬂuid is deﬁned by Newton’s second law
−
∇1(r, t) = ρ(r)
dν(r, t)
dt
. (3.10)
This says that spatially changing pressure causes local forces in the ﬂuid that give rise to local
4
In this context this is just a fancy way of saying force per unit length.
5
It is unfortunate that inhomogeneous is used in at least two very diﬀerent contexts in this theory. Here the word
refers to physical parameters that vary with position. In the previous section the word referred to a pde with a source
term and that usage has nothing to do with this.
3.2. THE WAVE EQUATION DERIVED FROM PHYSICS 51
particle accelerations. The minus sign is also necessary here because the local forces caused by the
pressure gradient point in the direction opposite to the gradient. That is, the gradient points from
low to high pressure but the ﬂuid will move from high to low pressure.
The interpretation of the
dν
dt
requires some care. Generally in ﬂuid dynamics, such time deriva
tives consist of two terms as
dT
dt
=
∂T
∂t
+ (ν
∇)T where T denotes any scalar ﬂuid property such as
temperature. The ﬁrst term describes local temporal changes (e.g. local heating) while the second
describes changes due to new material being transported to the analysis location by ﬂuid motion.
For this reason, the second term is known as the convective term. The assumption that the ﬂuid is
at rest except for the motions caused by the passing pressure wave allows the convective term to be
neglected. If the term is included, a nonlinear wave equation will result. Thus, equation (3.10) is
rewritten approximately as
−
∇1(r, t) = ρ(r)
∂ν(r, t)
∂t
. (3.11)
A wave equation for pressure can be derived by taking the divergence of (3.11),
−
∇
∇1(r, t) =
∇ρ(r)
∂ν(r, t)
∂t
+ ρ(r)
∂
∇ ν(r, t)
∂t
, (3.12)
and substituting equation (3.11) into the ﬁrst term on the right side and ∂
t
of equation (3.9) into
the second. This gives
∇
2
1(r, t) −
∇ln ρ(r)
∇1(r, t) −
ρ(r)
1(r)
∂
2
1(r, t)
∂t
2
= 0 (3.13)
where ∇
2
=
∇
∇ and
1
ρ
∇ρ =
∇ln ρ have been used. If the second term were absent in equation
(3.13) then we would have a classic scalar wave equation for pressure. This occurs exactly if ρ(r) is
constant. In many other cases when ρ(r) varies slowly the term will be negligible. Neglecting the
∇ln ρ term then gives
∇
2
1(r, t) −
1
·
2
∂
2
1(r, t)
∂t
2
= 0 (3.14)
where · =
_
K
ρ
. Equation (3.14) is a scalar wave equation that approximately models the propa
gation of pressure waves through an inhomogeneous ﬂuid. Though a number of assumptions have
been made in deriving this result, it still has quite general application. Also, it is possible to use
a solution of (3.14) to develop an approximate solution to the more complex Equation (3.13). Let
ˆ
1(r, t) be a solution to equation (3.14), then it can be used to approximately express the
∇ln ρ
∇1
term in (3.13) to give
∇
2
1(r, t) −
1
·
2
(r)
∂
2
1(r, t)
∂t
2
=
∇ln ρ(r)
∇
ˆ
1(r, t). (3.15)
The term on the right does not depend upon the unknown 1(r, t) but rather plays the role of a
source term in scalar wave equation. Thus the eﬀect of strong density inhomogeneity introduces an
approximate source term whose strength is proportional to the logarithmic gradient of density. This
process can be repeated indeﬁnitely with the solution from iteration n1 being used to compute the
eﬀective source term for iteration n.
Exercise 3.2.2. Show that the volume dilatation, θ also satisﬁes a scalar wave equation.
52 CHAPTER 3. WAVE PROPAGATION
Exercise 3.2.3. Consider the 1D inhomogeneous ﬂuid. Write down the wave equation that ap
proximately models pressure waves in a long narrow cylinder.
3.3 Finite diﬀerence modelling with the acoustic wave equa
tion
This section describes a simple facility for ﬁnite diﬀerence modelling using the acoustic wave equa
tion. This toolkit was originally developed by Carrie Youzwishen who was employed by this author
for that purpose. Subsequently it has been evolved by this author and Dr. Zhengsheng Yao. The
package provides a basic facility, using second order ﬁnite diﬀerence approximations, for modelling
with the variable velocity acoustic wave equation in two dimensions. The facility provides tools
for model building, source speciﬁcation, timestepping a waveﬁeld, seismogram creation, and mak
ing waveﬁeld movies. Sources and receivers can be positioned anywhere within the 2D medium
(including on the boundaries) and absorbing boundary conditions are implemented.
Consider the variablevelocity scalar wave equation in two dimensions
∇
2
ψ(r, ., t) =
∂
2
ψ(r, ., t)
∂r
2
+
∂
2
ψ(r, ., t)
∂.
2
=
1
·
2
(r, .)
∂
2
ψ(r, ., t)
∂t
2
. (3.16)
A secondorder approximation for the time derivative may be implemented as
∇
2
ψ(r, ., t) =
1
∆t
2
·
2
(r, .)
[ψ(r, ., t + ∆t) −2ψ(r, ., t) + ψ(r, ., t −∆t)] (3.17)
where ∆t is the time discretization interval. This expression can be solved for the waveﬁeld at t +∆t
to give
ψ(r, ., t + ∆t) =
_
2 + ∆t
2
·
2
(r, .)∇
2
¸
ψ(r, ., t) −ψ(r, ., t −∆t). (3.18)
This is an expression for time stepping the waveﬁeld. It shows that estimation of the waveﬁeld at
t + ∆t requires knowledge of the two earlier waveﬁelds at t and t −∆t. Each of these waveﬁelds is
called a snapshot and, in a computer simulation, they are all two dimensional matrices.
Equation (3.18) shows that ψ(r, ., t + ∆t) is estimated from the superposition of three terms:
2ψ(r, ., t), ∆t
2
·
2
(r, .)∇
2
ψ(r, ., t), and −ψ(r, ., t − ∆t). Of these, the second requires the compu
tation of the Laplacian (∇
2
) on the current waveﬁeld which is an expensive operation. MATLAB
supplies the function del2 that computes .25∇
2
of a matrix using centered secondorder ﬁnite oper
ators that are modiﬁed near the boundary. Experimentation showed that del2 was not optimal for
use with absorbing boundary conditions so two alternate Laplacians, del2 5pt and del2 9pt , were
created. These functions both pad the entire boundary of the input matrix with extra rows and
columns of zeros and this works better with absorbing boundaries. del2 5pt implements ∇
2
using
secondorder ﬁnitediﬀerence operators while del2 9pt uses fourthorder. Thus del 5pt computes
the approximation
∇
2
ψ(r, ., t) =
ψ(r + ∆r, ., t) −2ψ(r, ., t) + ψ(r −∆r, ., t)
∆r
2
+
ψ(r, . + ∆., t) −2ψ(r, ., t) + ψ(r, . −∆., t)
∆.
2
(3.19)
3.3. FINITE DIFFERENCE MODELLING WITH THE ACOUSTIC WAVE EQUATION 53
and del2 9pt computes
∇
2
ψ(r, ., t) =
1
12∆r
2
[−ψ(r + 2∆r, ., t) + 16ψ(r + ∆r, ., t) −30ψ(r, ., t) + 16ψ(r −∆r, ., t) −ψ(r −2∆r, ., t)] +
1
12∆.
2
[−ψ(r + 2∆., ., t) + 16ψ(r + ∆., ., t) −30ψ(r, ., t) + 16ψ(r −∆., ., t) −ψ(r −2∆., ., t)]
(3.20)
The core function in the ﬁnite diﬀerence toolbox is afd snap (the ‘afd ’ preﬁx stands for acous
tic ﬁnite diﬀerence). Function afd snap requires two input waveﬁelds representing ψ(r, ., t) and
ψ(r, ., t −∆t) and computes ψ(r, ., t + ∆t) according to equation (3.18). This function is intended
to be used in a computation loop that timeincrements a waveﬁeld any number of steps. Two initial
waveﬁelds must be constructed to start the simulation and sources may be prescribed by placing
appropriate impulses in these two waveﬁelds. Receivers are simulated by extracting samples at each
receiver location from each ψ(r, ., t) as it is computed. These extracted samples may be accumulated
in vectors representing the recorded traces.
The use of equation (3.18) in a timestepping simulation is known to be unstable in certain
circumstances (Mitchell and Griﬃths, 1980). Instability means that the amplitudes of the waveﬁeld
grow without bound as it is stepped through time. The key to this behavior is the amplitude of
the ∇
2
ψ(r, ., t) term in equation (3.18). Using the ﬁvepoint Laplacian of equation (3.19) (with
∆. = ∆r) in equation (3.18) leads to
ψ(r, ., t + ∆t) = 2ψ(r, ., t) −ψ(r, ., t −∆t) +
∆t
2
·
2
∆r
2
[δ
xx
ψ(r, ., t) + δ
zz
ψ(r, ., t)] (3.21)
where δ
xx
ψ(r, ., t) = ψ(r + ∆r, ., t) − 2ψ(r, ., t) + ψ(r − ∆r, ., t) and similarly for δ
zz
. In this
expression, all of the ψ terms can be considered to have similar magnitude. Thus, the factor
∆t
2
·
2
∆r
−2
is a possible ampliﬁcation factor if it becomes too large. Lines et al. (1999) show that
the condition for stability is
·∆t
∆r
≤
2
√
o
(3.22)
where the constant o is the sum of the absolute values of the weights for the various waveﬁeld terms
in the ﬁnitediﬀerence approximation for ∇
2
. For the Laplacian of equation (3.19), o = 8 while
for equation (3.20), o = 128,12 = 32,3. Also, since · is a function of (r, .) it suﬃces to use the
maximum velocity in the model. Thus the stability conditions are
·
max
∆t
∆r
≤
_
_
_
1
√
2
secondorder Laplacian,
_
3
8
fourthorder Laplacian.
(3.23)
Thus, the time and space sample rates cannot be chosen independently. Generally, ﬁnite
diﬀerence operators need many more samples than the Nyquist criterion of two per wavelength.
Technically, this is because the operators cause an artiﬁcial dispersion called grid dispersion. Grid
dispersion preferentially aﬀects the shorter wavelengths so oversampling reduces the dispersion. A
good rule of thumb is about ﬁve to ten samples per wavelength. Typically, in the creation of a
model, a desired temporal frequency range is known. Then, the minimum wavelength is given
by λ
min
= ·
min
,)
max
and the spatial sample rate can be chosen to achieve a desired number of
54 CHAPTER 3. WAVE PROPAGATION
samplesperwavelength. Finally the temporal sample rate is chosen to achieve stability.
Usually, the user will not invoke afd snap directly. Instead, afd shotrec is provided to create a
source record and afd exreflector will create exploding reﬂector models. The exploding reﬂector
model and afd exreflector will be described in chapter 5 and only afd shotrec will be discussed
here. afd shotrec requires inputs giving: the temporal and spatial sample sizes, the maximum
record time, the velocity matrix, the receiver positions, the wavelet, the desired Laplacian (ﬁve point
or nine point), and the two initial snapshots of the waveﬁeld (snap1 and snap2). The snapshots
should be initialized to matrices of zeros the same size as the velocity model. Then the source
conﬁguration is described by placing appropriate impulses in these two snapshots. A simple strategy
is to leave snap1 as all zeros and simply place impulses in snap2.
Code Snippet 3.3.1. This code illustrates the use of afd shotrec to model a shot record. Lines
111 build the velocity model and lines 1325 create a secondorder and a fourthorder seismogram.
The results are shown in Figures 3.2, 3.3, and 3.4.
1 %make a velocity model
2 nx=128;dx=10;nz=128; %basic geometry
3 x=(0:nx1)*dx;z=(0:nz1)*dx;
4 v1=2000;v2=2800;v3=3200;%velocities
5 vmodel=v3*ones(nx,nz);
6 z1=(nz/8)*dx;z2=(nz/2)*dx;
7 dx2=dx/2;
8 xpoly=[dx2 max(x)+dx2 max(x)+dx2 dx2];zpoly=[dx2 dx2 z1+dx2 z1+dx2];
9 vmodel=afd_vmodel(dx,vmodel,v1,xpoly,zpoly);
10 zpoly=[z1+dx2 z1+dx2 z2+dx2 z2+dx2];
11 vmodel=afd_vmodel(dx,vmodel,v2,xpoly,zpoly);
12
13 dtstep=.001;%time step
14 dt=.004;tmax=1;%time sample rate and max time
15 xrec=x;%receiver locations
16 zrec=zeros(size(xrec));%receivers at zero depth
17 snap1=zeros(size(vmodel));
18 snap2=snap1;
19 snap2(1,length(x)/2)=1;%place the source
20 %second order laplacian
21 [seismogram2,seis2,t]=afd_shotrec(dx,dtstep,dt,tmax, ...
22 vmodel,snap1,snap2,xrec,zrec,[5 10 30 40],0,1);
23 %fourth order laplacian
24 [seismogram4,seis4,t]=afd_shotrec(dx,dtstep,dt,tmax, ...
25 vmodel,snap1,snap2,xrec,zrec,[5 10 30 40],0,2);
End Code
Code Snippet 3.3.1 illustrates the use of these ﬁnite diﬀerence facilities to model a single shot
record. First, a threelayer velocity model is deﬁned on lines 1 through 11 by calling afd vmodel
twice. The velocity model is a matrix representing ·
ins
in (r, .) space. The function afd vmodel is a
convenience function that ﬁlls in a polygonal area in a matrix with a constant value. The polygonal
area is deﬁned by the (r, .) coordinates of its nodes and the coordinate origin is assumed to be the
upper left corner of the model. In all of these ﬁnite diﬀerence codes, the vertical and horizontal
sample sizes must be identical. In this example, the velocity model has three layers with horizontal
interfaces and layer velocities of 2000 m/s, 2800 m/s, and 3200 m/s.
The model is built by ﬁrst deﬁning (r, .) coordinates (lines 23) and ﬁlling the velocity matrix
with 3200 m/s (line 5). Subsequently, two polygons are deﬁned to represent the two upper layers.
On line 6, z1 and z2 are the depths to the bottom of the ﬁrst and second layers. Line 8 deﬁnes the
(r, .) coordinates of the four vertices of a rectangle representing the ﬁrst layer. A property of the
3.3. FINITE DIFFERENCE MODELLING WITH THE ACOUSTIC WAVE EQUATION 55
meters
m
e
t
e
r
s
0 200 400 600 800 1000 1200
0
200
400
600
800
1000
1200
Figure 3.2: The velocity model created in Code Snippet 3.3.1.
algorithm used by afd vmodel is that points that lie exactly on the boundary of the polygon are
considered outside the polygon and so do not acquire the new velocity. The variable dx2, deﬁned on
line 7 as half of the grid spacing, is used on line 8 to deﬁne a rectangle that is half a grid spacing above
depths 0 and z2 and half a grid spacing outside the minimum and maximum r coordinates. This
ensures that the rectangle extends to the limits of the velocity matrix. Line 9 ﬁlls this rectangle with
the velocity of 2000 m/s and then lines 10 and 11 repeat this process for the next layer. The resulting
velocity model is shown in Figure 3.2. This plot was made using plotimage(vmodel3000,z,x).
A constant is subtracted from the velocity model so that the resulting matrix has both positive
and negative values as expected by plotimage . The raypaths shown in this ﬁgure correspond to
traveltimes shown in Figures 3.3 and 3.4.
Code Snippet 3.3.1 creates two seismograms, the ﬁrst (line 21) uses a secondorder Laplacian
(equation 3.19) and the second (line 23) uses a fourthorder Laplacian (equation 3.20). The prepa
ration for the seismograms deﬁnes the time step (line 13), temporal sample rate (line 14), maximum
time (line 14), the receiver locations (lines 1516) and the source strength and geometry (line 19).
The time step is generally chosen to be small enough to satisfy the stability requirement (equation
3.23) and the temporal sample rate is usually much more coarse. afd shotrec internally calculates
the seismogram at the sample rate of the time step and then resamples it to the desired temporal
sample rate. This is sensible because it is a well known property of ﬁnitediﬀerence methods that
the higher frequencies are physically inaccurate. In this case, the Nyquist frequency for a sample
rate of .001 seconds is 1000 Hz while for .004 seconds it is 125 Hz. Considering that the antialias
ﬁlter for resampling to .004 seconds will attenuate frequencies above about half of Nyquist, this ex
ample anticipates using only frequencies below about 60 Hz and that is less than 10% of the original
Nyquist.
The variables snap1 and snap2 created on lines 1719 represent the waveﬁeld ψ(r, ., t = −∆t)
and ψ(r, ., t = 0) respectively. They are created to be the same size as the velocity model and snap1
is a matrix of zeros. The source is speciﬁed by placing appropriate nonzero samples in snap2. In
this case, a point source in the center of the r axis at . = 0 is simulated.
At this stage, all of the input parameters to afd shotrec have been described except for the
ﬁnal three. These specify the ﬁlter (or wavelet) to be convolved with the seismogram, the phase of
the ﬁlter, and the order of the Laplacian. In this case, Ormsby ﬁlter speciﬁcations are given as [5
10 30 40] and this means that the ﬁlter pass band begins at 5 Hz., reaches full amplitude at 10 Hz.,
56 CHAPTER 3. WAVE PROPAGATION
meters
s
e
c
o
n
d
s
0 200 400 600 800 1000 1200
0
0.2
0.4
0.6
0.8
1
Figure 3.3: The secondorder seismogram cre
ated on line 21 of Code Snippet 3.3.1. Superim
posed on the righthand side are raytraced trav
eltimes for (from top to bottom) the ﬁrst pri
mary reﬂection, the ﬁrstorder multiple in the
top layer, and the second primary reﬂection.
The corresponding raypaths are shown in Fig
ure 3.2.
meters
s
e
c
o
n
d
s
0 200 400 600 800 1000 1200
0
0.2
0.4
0.6
0.8
1
Figure 3.4: The fourthorder seismogram cre
ated on line 23 of Code Snippet 3.3.1. See Figure
3.3 for a description of the superimposed travel
times.
begins to ramp down at 30 Hz., and rejects frequencies above 40 Hz. The penultimate parameter
speciﬁes the phase of the ﬁlter that is, in this case, zero (a value of 1 gives minimum phase).
The last parameter is either 1, indicating a secondorder Laplacian, or 2, meaning a fourthorder
approximation.
The seismograms are shown in Figures 3.3 and 3.4 respectively. Both of these ﬁgures are plotted
with a highly clipped display, otherwise, the direct wave near the source would be the only visible
arrival. Though similar at ﬁrst glance, these two seismograms are signiﬁcantly diﬀerent. The three
hyperbolic reﬂections on each ﬁgure are (from the top) the primary reﬂection oﬀ the bottom of the
ﬁrst layer, the ﬁrstorder multiple reﬂecting between the bottom of the ﬁrst layer and the surface,
and the primary reﬂection oﬀ the bottom of the second layer. The traveltimes for these events
are superimposed on the righthand sides of the ﬁgures and their raypaths are shown in Figure
3.2. The reﬂections for these events lag signiﬁcantly behind the raytraced traveltimes but more
so on the secondorder solution. This time lag occurs because the ﬁnite diﬀerence approximations
to the derivative in the wave equation have a frequencydependent performance. Essentially, for
wavelengths that are large compared to the computation grid, the approximate derivatives are
acceptable but, as the wavelength approaches the grid spacing, the approximation becomes very poor.
The result is a phenomenon known as grid dispersion, meaning that the actual propagation speed of
waves on the grid is not simply ·
ins
(r, .) but is a complex function of wavelength (or, equivalently,
frequency). Grid dispersion makes the reﬂections appear to lag behind the corresponding raytrace
traveltimes. It also makes the apparent wavelet appear more elongated (dispersed). Comparison of
the ﬁrst reﬂection at far oﬀsets on both seismograms shows that the secondorder result has a more
dispersed waveform. Also, the fourthorder result has a smaller lag behind the raytrace traveltimes
than the secondorder for all reﬂections.
3.4. THE ONEDIMENSIONAL SYNTHETIC SEISMOGRAM 57
Careful inspection of both Figures 3.3 and 3.4 shows a set of events that originate where each
reﬂection meets the sides of the seismogram and then cross in the center of the ﬁgures. These are
typical artifacts known as edge eﬀects. They arise because a computer simulation of wave propaga
tion must always operate in a ﬁnite domain with deﬁnite boundaries. When a wave encounters such
a boundary, it behaves as though it has met a perfect reﬂector. These boundary reﬂections would be
much worse if afd shotrec did not incorporate absorbing boundaries (Clayton and Engquist, 1977).
Obviously, absorbing boundaries are not perfect but they do help. The boundary related artifacts
can be seen to be generally quite steeply dipping in (r, t). This is because the absorbing boundary
conditions are optimized for a small range of wavefront incidence angles around normal incidence.
That is, a wavefront that encounters the boundary at normal incidence is completely absorbed while
one making an angle of, say, 30
◦
is partially reﬂected.
3.4 The onedimensional synthetic seismogram
For a onedimensional acoustic medium, there exists an algorithm that can generate a complete
synthetic seismogram that includes all multiples and the eﬀects of transmission losses. The theory
is also very ﬂexible in that it allows the explicit separation of the various physical eﬀects. These
1D synthetic seismograms are a very important tool in seismic interpretation. After migration, or
for nearly horizontal reﬂectors in any case, the 1D model is quite appropriate. Comparison of 1D
synthetic seismograms with seismic data, a process called tieing, allows reﬂections from key geologic
markers to be identiﬁed. Typically, velocity and density information are provided through well
logging as ﬁnelysampled functions of depth. A common sample rate is 1 foot or .31 meters. The well
logging is usually conﬁned to a certain depth zone beginning at the exploration target and extending
upwards perhaps hundreds of meters. The near surface is rarely logged and is usually represented as
a homogeneous layer whose velocity is selected to optimize the tie between the synthetic seismogram
and the seismic data. The theory presented here constructs the response of the 1D medium to a
unit impulse, the impulse response, and this must be convolved with an appropriate wavelet before
comparison with seismic data. The estimation of the appropriate wavelet is a potentially complex
task that is called wavelet analysis.
3.4.1 Normal incidence reﬂection coeﬃcients
Consider a 1D displacement wave incident from above upon an interface where α
1
, ρ
1
and α
2
, ρ
2
are the velocities and densities of the upper and lower media. Let the incident wave be described
by )(t − .,α
1
), the reﬂected wave by p(t + .,α
2
), and the transmitted wave by /(t − .,α
2
). Here
), p, and/ represent arbitrary functions describing traveling waves. The reﬂected and transmitted
waves can be determined in terms of the incident waves by requiring that the total waveﬁeld satisfy
continuity of displacement and continuity of pressure. The ﬁrst condition is required so that the
interface remains in welded contact during the passage of the wave. The second condition is needed
to ensure that local acceleration remains ﬁnite at the interface. This is because the local force is
determined by the pressure gradient and a discontinuous pressure means an inﬁnite force and that
means inﬁnite acceleration.
For deﬁniteness, let the interface be at . = 0 and continuity of displacement is expressed by
)[
z=0
+ p[
z=0
= /[
z=0
. (3.24)
To develop a form for continuity of pressure, Hooke’s law can be used. As show in equation (3.9), for
an inhomogeneous ﬂuid, Hooke’s law relates the applied pressure to the negative of the diﬀerential
58 CHAPTER 3. WAVE PROPAGATION
volume change. In 1D this reduces to j = −1∂
z
n where j is pressure, n is displacement, and 1
is the bulk modulus. In the development of equation (3.14) it was shown that the wave velocity
is given by the square root of the bulk modulus divided by the density, or equivalently, 1 = ρα
2
.
Thus continuity of pressure can be expressed by
ρ
1
α
2
1
∂)
∂.
¸
¸
¸
¸
z=0
+ ρ
1
α
2
1
∂p
∂.
¸
¸
¸
¸
z=0
= ρ
2
α
2
2
∂/
∂.
¸
¸
¸
¸
z=0
. (3.25)
Since ) = )(t − .oj/o
1
), then ∂
z
) = −α
−1
1
)
where )
is the derivative of ) with respect to its
entire argument. With similar considerations for p and /, equation (3.25) becomes
ρ
1
α
1
)
[
z=0
+ ρ
1
α
1
p
[
z=0
= ρ
2
α
2
/
[
z=0
(3.26)
which can be immediately integrated to give
ρ
1
α
1
)[
z=0
+ ρ
1
α
1
p[
z=0
= ρ
2
α
2
/[
z=0
. (3.27)
Considering the incident waveﬁeld as known, equations (3.24) and (3.27) constitute two linear
equations for the two unknowns p and /. Deﬁning the acoustic impedance 1 = ρα the solution can
we written as
p[
z=0
= −1)[
z=0
/[
z=0
= T)[
z=0
(3.28)
where the reﬂection coeﬃcient, 1, and the transmission coeﬃcient, T are given by
1 =
1
2
−1
1
1
2
+ 1
1
(3.29)
1 =
21
1
1
2
+ 1
1
. (3.30)
The reﬂection coeﬃcient is deﬁned such that a transition from lower to higher impedance is a
positive 1. It is easily shown that 1 + T = 1. A wave incident from below on the same interface
will experience a reﬂection coeﬃcient of −1 and a transmission coeﬃcient of 1
2
T,1
1
= 1 + 1. As
the ﬁrst of equations (3.28) shows, the reﬂected wave is actually −1 times the incident wave. This
is because these are displacement waves and the direction of particle displacement reverses at a
positive impedance contrast. This can be understood by considering the limiting case of 1
2
→ ∞
corresponding to incidence upon a perfectly rigid material. In this case, T → 0 and continuity of
displacement requires that the reﬂected wave have equal and opposite displacement to that of the
incident wave.
Exercise 3.4.1. ?? By directly computing pressures, show that the reﬂected pressure is +1 times
the incident pressure. Also show that the transmitted pressure is +T times the incident pressure.
Thus the displacement and pressure waves have the same transmission equation but there is a sign
diﬀerence in their reﬂection expressions. Explain these results with a physical description. (Hint:
If the particle displacement is in same direction as the wave propagation, then is the pressure a
compression or a rarefaction? What about if the displacement is in the opposite direction to the
direction of wave propagation.? Is a compression a positive or negative pressure? Why? )
An alternative form for the reﬂection and transmission coeﬃcients involves writing them in terms
of the contrast and average of impedance across the layer. Deﬁne 1 = (1
1
+1
2
),2 and ∆1 = 1
2
−1
1
3.4. THE ONEDIMENSIONAL SYNTHETIC SEISMOGRAM 59
and equations (3.28) become
1 =
∆1
21
T =
1 −.5∆1
1
. (3.31)
Using 1 = ρα allows 1 to be reexpressed as
1 =
1
2
_
∆α
α
+
∆ρ
ρ
_
(3.32)
which expresses the contributions of both α and ρ to the reﬂection coeﬃcient.
3.4.2 A ”primariesonly” impulse response
Consider a layered 1D medium described by wave velocity α(.) and density ρ(.) for . ≥ 0. In order
to apply the results of the previous section, let α(.) and ρ(.) be approximated by a discrete sequences
¦α
k
¦ and ¦ρ
k
¦, / = 1, 2, . . . · representing a stack of homogeneous layers having thicknesses of
¦∆.
k
¦. Furthermore, let the thicknesses be chosen such that
∆.
k
α
k
=
∆t
2
= constant (3.33)
where ∆t is a constant giving the twoway traveltime across any layer. This requirement is not
strictly necessary for the theory but is convenient for algorithm development. The condition means
that homogeneous intervals of high velocity will be represented by more samples than corresponding
intervals of low velocity. It is quite acceptable to have many layers with nearly zero impedance
contrasts. By choosing ∆t suﬃciently small, α(.) and ρ(.) can be approximated with arbitrary
accuracy.
The constant ∆t becomes the temporal sample rate of the output seismogram. However, greater
realism is obtained by choosing ∆t much smaller than the desired sample rate and resampling the
seismogram after it is computed.
Given this discrete approximation to the desired model, it is possible to explicitly calculate all
primary reﬂections. For each layer, let the sequence ¦1
k
¦ denote the reﬂection coeﬃcient at the
layer bottom for incidence from above. Let a coincident sourcereceiver pair be placed at . = 0 and
let the source emit a unit impulse of displacement at t = 0. The reﬂection from the ﬁrst interface
will have magnitude −1
1
and will arrive at the receiver at time ∆t. The minus sign arises from
equation (3.28) an occurs because the reﬂection reverses the direction of displacement. A z transform
expression conveniently expresses the ﬁrst arrival as −1
1
.
∆t
. The transmitted wave, of amplitude
1 − 1
1
crosses the ﬁrst interface and reﬂects with reﬂection coeﬃcient −1
2
. It recrosses the ﬁrst
interface from below with a transmission coeﬃcient of 1 +1
1
and then arrives at the receiver. This
second reﬂection has a z transform of −(1 − 1
1
)1
2
(1 + 1
2
).
2∆t
= −(1 − 1
2
1
)1
2
.
2∆t
so the net
transmission eﬀect of twoway passage through the ﬁrst interface is 1 −1
2
1
. Similar reasoning leads
to the z transform of the third reﬂection as −(1 −1
2
1
)(1 −1
2
2
)1
3
.
3∆t
and for the general ,
th
arrival
−
j−1
k=1
(1 −1
2
k
)]1
j
.
j∆t
. A primariesonly synthetic seismogram of displacement for N reﬂectors is
60 CHAPTER 3. WAVE PROPAGATION
represented by the sum of these z transform terms as
n
imp
(.) = 1 −1
1
.
∆t
−(1 −1
2
1
)1
2
.
2∆t
−(1 −1
2
1
)(1 −1
2
2
)1
3
.
3∆t
−. . .
−
_
j−1
k=1
(1 −1
2
k
)
_
1
j
.
j∆t
− −
_
N−1
k=1
(1 −1
2
k
)
_
1
n
.
n∆t
(3.34)
where the subscript i:j indicates “impulse response” and the leading 1 represents a direct arrival.
This expression has the compact representation
n
imp
(.) = 1 −
N
j=1
_
j−1
k=1
(1 −1
2
k
)
_
1
j
.
j∆t
. (3.35)
The term in square brackets is called the transmission loss. Often seismic data has had a correction
applied for transmission loss, in which case it is useful to construct a synthetic seismogram without
transmission losses by setting these terms to unity. The result is the simplest model of a seismogram
as reﬂection coeﬃcients arriving at the twoway traveltime to each reﬂector.
A source waveform other than a unit impulse is easily accounted for. If \(.) represents the
z transform of the source waveform, then, for example, the second reﬂection is given by (1 −
1
2
1
)1
2
\(.).
2∆t
. That is, \(.) simply multiplies the z transform of the impulsive arrival. For
example consider a causal waveform with \(.) = n
0
+ n
1
7
∆t
+ n
2
.
2∆t
+ . . . . Then the reﬂection
and transmission eﬀects scale each sample of \(.) equally and the later samples simply arrive super
imposed on top of later reﬂections. Of course, this is just a physical way of visualizing a convolution.
Thus it is concluded that the source waveform is included in the synthetic seismogram by convolving
it with impulse response (e.g. equation (3.35)) of the layered medium. Written with z transforms,
this is simply
o(.) = n
imp
(.)\(.). (3.36)
It may also be of interest to compute a pressure seismogram as this models what is measured
by a hydrophone. As discussed in exercise ??, the essential diﬀerence is that the pressure does not
change sign upon reﬂection as pressure does. The transmission eﬀect is the same for both pressure
and displacement. Thus, for a the pressure response to a unit impulse of pressure, equation (3.28)
should be modiﬁed to read
j
imp
(.) = 1 +
N
j=1
_
j−1
k=1
(1 −1
2
k
)
_
1
j
.
j∆t
. (3.37)
3.4.3 Inclusion of multiples
Waters (1981) gives a computational scheme that allows the calculation of all primaries and multiples
up to any desired order. This is essentially a bookkeeping method that uses the diagram of Figure
3.5 to keep track of all waves. The vertical axis of this diagram is model traveltime, τ, while the
horizontal axis is event arrival time, t. Layer boundaries are indicated by horizontal lines and
indexed by the integer n = 0, 1, 2, . . . · with 0 denoting the recording surface. As in the previous
section, it is assumed that the model has been sampled such that the layers all have the same interval
traveltime, τ
n
−τ
n−1
, and hence are of variable thickness in .. The diagonal lines slanting down to
the right correspond to downward traveling waves that are indexed by , = 1, 2, 3, . . . . Similarly, the
diagonals that slant up to the right denote upward traveling waves using the index / = 1, 2, 3, . . . .
3.4. THE ONEDIMENSIONAL SYNTHETIC SEISMOGRAM 61
t
t
t=0
1
1
1
1
1
2
l
1
1
1
1
3
1
1
4
l
1
2
l
3
3
l
2
2
1
2
1
l
2
3
l
1
3
1
3
1
1
2
3
1
2
2
1
3
2
1
3
3
l
4
4
l
3
4
l
2
4
l
1
4
1
4
1
1
5
1
1
4
2
1
2
4
1
1
5
l
5
5
l
4
5
l
3
5
l
2
5
l
1
5
1
6
1
1
5
2
1
4
3
1
3
4
1
2
5
1
1
6
interface 1
interface 2
interface 3
interface 4
interface 5
interface 6
j
=
1
j
=
2
j
=
3
j
=
4
j
=
5
j
=
6
k
=
1
k
=
2
k
=
3
k
=
4
k
=
5
k
=
6
2 t t= t 3 t 4 t 5 t
Figure 3.5: The computation triangle for a 6 layer synthetic seismogram. Computation
begins with a unit impulse in the upper left corner. Horizontal lines are interfaces between
layers, diagonals slanting down from lefttoright are downgoing waves, and diagonals
slanting up from lefttoright are upgoing waves. Nodes are denoted by their interface
number, n, and their upgoing wave index /. The highlighted node is (n, /) = (3, 4).
Though these waves are symbolized by diagonal lines, this is a 1D model so all wave motion is
actually vertical. The intersection of a downward wave and an upward wave occurs at a node that
corresponds to a scattering event. A node will be designated by the pair (n, /) that denote its
interface number and the upward traveling wave index. The downward wave index at node (n, /) is
, = / −n + 1.
The algorithm description requires that the upward and downward traveling waves be described
by both their wave indices and the layer number. The layer number is the same as the interface
number for the layer bottom. Thus the upward traveling wave in layer n with wave index / will be
denoted l
n
k
while the j
th
downward wave in the same layer will be 1
n
j
. The fourth upward wave in
the ﬁrst layer is l
1
4
and so on. Considering a particular node (n, /), there are two incident waves,
l
n+1
k
and 1
n
k−n+1
, and two scattered waves, l
n
k
and 1
n+1
k−n+1
. For example, the second node on
the third layer in Figure 3.5 is node (3, 4). The incident waves enter the node from the left and
are l
4
4
and 1
3
2
while the scattered waves exit the node from the right and are l
3
4
and 1
4
2
. For
interface n, denoting the reﬂection coeﬃcient for incidence from above by 1
n
, the scattered waves
of displacement at node (n, /) are related to the incident waves by the equations
l
n
k
= [1 + 1
n
] l
n+1
k
−1
n
1
n
k−n+1
1
n+1
k−n+1
= [1 −1
n
] 1
n
k−n+1
+ 1
n
l
n+1
k
. (3.38)
For pressure waves, the corresponding equations are
lj
n
k
= [1 + 1
n
] lj
n+1
k
+ 1
n
1j
n
k−n+1
1j
n+1
k−n+1
= [1 −1
n
] 1j
n
k−n+1
−1
n
lj
n+1
k
(3.39)
where lj
n
k
is the k
th
upward traveling pressure wave in the n
th
layer and 1j
n
k
is a similar downward
traveling pressure.
The displacement seismogram algorithm begins by assuming 1
1
1
= 1 as is appropriate for an
impulse response. At node (1, 1) the upward incident wave, l
2
1
is zero and so the scattered waves
62 CHAPTER 3. WAVE PROPAGATION
are 1
2
1
= [1 −1
1
] 1
1
1
= 1 − 1
1
and l
1
1
= −1
1
. In general, l
n
k
= 0 if n < / or n < 1 and
1
n
j
= 0 if n < 1 or , < 1. Then l
1
1
can be propagated up to the surface where the scattered wave
1
1
2
= 1
0
l
1
1
, a surfacerelated multiple, is calculated. Since all of the layers have the same 2way
traveltime, ∆t, the waves arrive at interface 0 at regular intervals where they are accumulated into
the seismogram. If surfacerelated multiples are to be included, the k
th
sample of the seismogram is
l
1
k
+ 1
1
k+1
= [1 + 1
0
] l
1
k
, otherwise it is just l
1
k
.
Having propagated l
1
1
to the surface and calculated 1
2
1
and 1
1
2
, the upward wave l
2
2
can be
calculated and propagated to the surface. l
2
2
is easy and is just l
2
2
= −1
2
1
2
1
= −1
2
[1 −1
1
]. Then
at node (1, 2), 1
1
2
and l
2
2
are incident and the scattered waves are l
1
2
= [1 + 1
1
] l
2
2
− 1
1
1
1
2
and
1
2
2
= [1 −1
1
] 1
1
2
+ 1
1
l
2
2
. The last step in bringing l
2
to the surface is to calculate 1
1
3
= 1
0
l
1
2
.
Thus the second sample on the seismogram is determined and the downgoing waves 1
3
1
, 1
2
2
, and 1
1
3
are all computed in preparation for propagation of l
3
3
to the surface.
The pattern should now be clear. The wave l
k
k
= −1
k
1
k
1
is propagated to the surface using
equations (3.38) to include the contributions from all of the downgoing multiples and to calculate
the upgoing and downgoing scattered waves. The propagation of l
k
k
to the surface results in the
calculation of all of the downgoing waves that are required for l
k+1
k+1
. The process then continues
for as long as is desired. In principle, there are inﬁnitely many arrivals from an · layered system
because there can be inﬁnitely many multiple bounces.
Using z transform notation, the ﬁrst few samples of the displacement seismogram can be shown
to be
n
imp
(.) = 1−[1 + 1
0
] 1
1
.
∆t
−[1 + 1
0
]
_
1
2
(1 −1
2
1
) −1
2
1
1
0
¸
.
2∆t
−[1 + 1
0
]
_
1
3
(1 −1
2
2
)(1 −1
2
1
)−
1
2
1
1
(1
2
+ 1
0
)(1 −1
2
1
) −1
2
1
1
1
0
(1 −1
2
1
) + 1
3
1
1
2
0
¸
.
3∆t
+ . . . . (3.40)
The equivalent pressure seismogram is given by
j
imp
(.) = 1+[1 −1
0
] 1
1
.
∆t
+[1 −1
0
]
_
1
2
(1 −1
2
1
) −1
2
1
1
0
¸
.
2∆t
+[1 −1
0
]
_
1
3
(1 −1
2
2
)(1 −1
2
1
)−
1
2
1
1
(1
2
+ 1
0
)(1 −1
2
1
) −1
2
1
1
1
0
(1 −1
2
1
) + 1
3
1
1
2
0
¸
.
3∆t
+ . . . . (3.41)
The displacement and pressure seismograms have diﬀerence physical units that are not reﬂected in
equations (3.40) and (3.41).
The increasing complexity of each term is apparent even with only four samples written explicitly.
In each term, the primary arrival can be identiﬁed by comparison with equation (3.35). In general,
there are many possible multiples that also contribute to each term. In equation (3.40), each term
after the leading one contains the common factor 1 + 1
2
0
that includes the surfacerelated multiple.
In equation (3.41) the surfacerelated multiple is included via the term 1 − 1
2
0
. If the surface is
modelled as a free surface then it has 1
0
= 1 (recall that these reﬂection coeﬃcients are deﬁned for
incidence from above) so each term in the displacement seismogram is doubled while the pressure
seismogram is identically zero. This is correct and consistent with the boundary condition of a liquid
free surface that calls for the pressure to vanish.
Though the pressure seismogram of equation (3.41) vanishes identically on a free surface, the
expression can be used to draw a valuable observation in comparison with the displacement seismo
gram of equation (3.40). If the two seismograms are added, then the signs are such that the primaries
cancel and only the surfacerelated multiples remain. Or, more importantly, the seismograms can
be subtracted to cancel all of the surfacerelated multiples. Of course, this observation overlooks the
fact that the pressure and displacement seismograms have diﬀerent physical dimensions. In practice,
this could be accounted for by scaling the ﬁrst arrivals to have the same magnitude. These details
3.4. THE ONEDIMENSIONAL SYNTHETIC SEISMOGRAM 63
aside, the important conclusion is that downgoing waves, like the surface related multiple, can be
eliminated by subtracting a scaled pressure seismogram from a displacement seismogram. This ob
servation is the basis of the modern technique of marine seismic surveying with a cable laid on the
ocean bottom. Called OBC recording, this method includes a paired hydrophone and geophone at
each recording position.
More speciﬁcally, it is of interest to explicitly detail a few downgoing and upgoing waves for
both displacement and pressure. For example, the downgoing waves needed to propagate l
3
3
to the
surface are
1
3
1
= (1 −1
2
)(1 −1
1
)
1
2
2
= −1
1
(1 −1
1
)(1
0
+ 1
2
) (3.42)
1
3
1
= −1
2
1
1
(1 −1
2
1
) + 1
2
1
1
2
0
and the corresponding pressure waves identical in form
1j
3
1
= (1 −1
2
)(1 −1
1
)
1j
2
2
= −1
1
(1 −1
1
)(1
0
+ 1
2
) (3.43)
1j
3
1
= −1
2
1
1
(1 −1
2
1
) + 1
2
1
1
2
0
.
Then, propagation of the third upgoing wave to the surface gives, for displacement,
l
3
3
= −1
3
(1 −1
2
)(1 −1
1
)
l
2
3
= −1
3
(1 −1
2
2
)(1 −1
1
) + 1
2
1
1
(1 −1
1
)(1
0
+ 1
2
) (3.44)
l
1
3
= −1
3
(1 −1
2
2
)(1 −1
2
1
) + 1
2
1
1
(1 −1
2
1
)(1
0
+ 1
2
) + 1
2
1
1
1
0
(1 −1
2
1
) −1
3
1
1
2
0
and for pressure
lj
3
3
= 1
3
(1 −1
2
)(1 −1
1
)
lj
2
3
= 1
3
(1 −1
2
2
)(1 −1
1
) −1
2
1
1
(1 −1
1
)(1
0
+ 1
2
) (3.45)
lj
1
3
= 1
3
(1 −1
2
2
)(1 −1
2
1
) −1
2
1
1
(1 −1
2
1
)(1
0
+ 1
2
) −1
2
1
1
1
0
(1 −1
2
1
) + 1
3
1
1
2
0
.
A termbyterm comparison of these upgoing wave expressions shows that a particular upgoing
displacement wave is opposite in sign for every term when compared with the corresponding pressure
wave. Though these calculations can be complex, the sign diﬀerences are a simple consequence of
the scattering equations (3.38) and (3.39) and of the fact that the source was placed above the
entire model. Thus, if the initial downgoing displacement and pressure pulses are in phase, then the
only upgoing waves are generated by reﬂections and these have opposite polarity for pressure versus
displacement.
OBC recording can be modelled using the onedimensional seismogram theory by calculating the
recorded wave at the particular interface representing the ocean bottom. There, the pressure wave
will not trivially vanish and the upgoing waves will have the polarity relationships just described.
This can be done with the present algorithm by representing the water layer as many thin layers
of equal traveltime and no impedance contrast. However, for a deep water layer and a typical
seismogram sample rate of .001 seconds, this can mean a great many layers that serve no purpose
other than to give the correct traveltime. In a later section, a synthetic seismogram algorithm will
be given that allows the layers to have arbitrary thicknesses. Then it will be possible to model a
64 CHAPTER 3. WAVE PROPAGATION
water layer with a single algorithmic layer.
As a ﬁnal comment, this theory makes clear that the eﬀect of multiple reﬂections is generally
nonstationary. This means that the multiple content of the seismogram generally increases with
time. Ordinary deconvolution theory, which assumes a stationary seismogram, cannot readily deal
with a nonstationary multiple sequence. However, there are certain classes of multiples that have
the desired stationarity. For example, in equation (3.40) the eﬀect of the free surface is to cause
every term after the direct arrival to have the same 1+1
0
multiplicative factor. This means that the
free surface multiples can be modelled as a convolution and that deconvolution might be expected
to remove them. A similar eﬀect is true for a bright reﬂector that occurs deeper in a model. All
reﬂections from beneath the bright reﬂector will have the same characteristic multiple while those
from above it will not.
Exercise 3.4.2. On a replica of Figure 3.5, sketch the raypath for each multiple that arrives at
t = 3∆t. How many multiples are there in total?
Exercise 3.4.3. Verify the expression given for l
1
3
in equation (3.40). Also compute the downgoing
waves 1
4
1
, 1
3
2
, 1
2
3
, and 1
1
4
in preparation for the next exercise. Verify the downgoing waves to be
1
4
1
= (1 −1
3
)(1 −1
2
)(1 −1
1
)
1
3
2
= −1
1
(1 −1
2
)(1 −1
1
)(1
0
+ 1
2
) −1
3
1
2
(1 −1
2
)(1 −1
1
)
1
2
3
= −1
2
1
0
(1 −1
1
)(1 −1
2
1
) + 1
2
1
1
2
0
(1 −1
1
) −1
3
1
1
(1 −1
2
2
)(1 −1
1
) + 1
2
1
2
1
(1 −1
1
)(1
0
+ 1
2
)
1
1
4
= −1
3
1
0
(1 −1
2
2
)(1 −1
2
1
) + 1
2
1
1
1
0
(1 −1
2
1
)(1
0
+ 1
2
) + 1
2
1
1
1
2
0
(1 −1
2
1
) −1
3
1
1
3
0
.
Exercise 3.4.4. Calculate l
1
4
using the method described above with Figure 3.5 and the results
of the previous exercise. This computation is algebraically tedious. The point of the exercise is to
improve understanding of the complexity of the seismogram. The answer is
l
1
4
= −1
4
(1 −1
2
3
)(1 −1
2
2
)(1 −1
2
1
) + (1 −1
2
2
)(1 −1
2
1
)
_
21
3
1
1
1
0
+ 21
3
1
2
1
1
+ 1
2
3
1
2
¸
+
(1 −1
2
1
)
_
1
2
2
1
0
(1 −1
2
1
) −31
2
1
2
1
1
2
0
−21
2
2
1
2
1
1
0
−1
3
2
1
2
1
¸
+ 1
4
1
1
3
0
.
3.5 MATLAB tools for 1D synthetic seismograms
There are a number of diﬀerent possibilities for creating synthetic seismograms in MATLAB. The
intended purpose of the synthetic usually dictates which facility to use. For example, the testing
of spiking deconvolution algorithms usually is done with a random reﬂectivity, no multiples, and
a minimum phase wavelet while testing predictive deconvolution will usually involve the inclusion
of some form of multiples. Alternatively, a synthetic seismogram intended for comparison with
processed seismic data will usually be created using a welllog reﬂectivity, no multiples, and a zero
phase wavelet.
3.5.1 Wavelet utilities
Once an impulseresponse seismogram has been created, it is usually convolved with a wavelet to
simulate the bandlimiting imposed by the seismic source. There are a number of diﬀerent wavelets
available including
ormsby Creates an Ormsby bandpass ﬁlter.
3.5. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 65
−0.2 −0.1 0 0.1 0.2
−0.1
0
0.1
0.2
0.3
seconds
a
m
p
l
i
t
u
d
e
0 20 40 60 80 100 120 140
−100
−50
0
Hertz
d
b
d
o
w
n
Figure 3.6: An Ormsby wavelet for the pass
band 10, 15, 40, 50Hz. is shown in the time do
main (top) and its amplitude spectrum is shown
against a decibel scale in the bottom frame. This
ﬁgure was created by Code Snippet 3.5.1
−0.2 −0.1 0 0.1 0.2
−0.1
0
0.1
0.2
0.3
seconds
a
m
p
l
i
t
u
d
e
0 50 100 150 200
−100
−50
0
Hertz
d
b
d
o
w
n
Figure 3.7: A Ricker wavelet with a 40 Hz dom
inant frequency is shown in the time domain
(top) and its amplitude spectrum on a decibel
scale is shown in the bottom frame. This was
created by Code Snippet 3.5.2
ricker Creates a Ricker wavelet.
sweep Generate a linear Vibroseis sweep.
wavemin Creates a minimum phase wavelet for impulsive sources.
wavevib Creates a vibroseis (Klauder) wavelet.
wavez Creates a zero phase wavelet with a dominant frequency.
These functions all have a similar interface in that they accept a number of input parameters
describing the construction of the wavelet and return only two outputs: the wavelet and its time
coordinate vector. Since only wavemin and sweep generate causal responses, the timecoordinate
vector is essential to properly position the wavelet.
Code Snippet 3.5.1. This code creates the Ormsby wavelet shown in Figure 3.6. The inputs to
ormsby are the four frequencies deﬁning the passband, the wavelet length, and the sample rate.
1 %make ormsby wavelet
2 [w,tw]=ormsby(10,15,40,50,.4,.002);
3 %compute spectrum
4 [W,f]=fftrl(w,tw);
5 W=todb(W);
End Code
The ormsby command, used in Code Snippet 3.5.1, produces a popular zerophase wavelet that
has an easy speciﬁcation of its passband. The analytic expression for the Ormsby wavelet is
n(t)
ormsby
=
π)
2
4
)
4
−)
3
_
sin π)
4
t
π)
4
t
_
2
−
π)
2
3
)
4
−)
3
_
sin π)
3
t
π)
3
t
_
2
−
π)
2
2
)
2
−)
1
_
sin π)
2
t
π)
2
t
_
2
+
π)
2
1
)
2
−)
1
_
sin π)
1
t
π)
1
t
_
2
(3.46)
66 CHAPTER 3. WAVE PROPAGATION
where )
1
< )
2
< )
3
< )
4
are speciﬁcations of the frequency passband in Hertz. Approximately, the
passband begins at )
1
and increases to full amplitude at )
2
. It remains at full amplitude until )
3
and ramps down to the stopband at )
4
. Figure 3.6 shows an Ormsby wavelet with ()
1
, )
2
, )
3
, )
4
) =
(10, 15, 40, 50) in the time domain and its Fourier amplitude spectrum. On line 2 in Code Snippet
3.5.1 the wavelet passband is speciﬁed as the ﬁrst four input parameters, the ﬁfth parameter is
the desired wavelet length in seconds, and the sixth parameter is the temporal sample rate also in
seconds. It is obviously important to ensure that the Nyquist frequency, )
Nyquist
= 1,(2∆t), is
greater than )
4
. Less obviously, the temporal length of the wavelet must be suﬃcient to ensure that
the character of the wavelet is captured. Since the frequency bandwidth and the temporal width
are inversely proportional, a narrow passband wavelet will be temporally long and viceversa. With
any of these wavelet tools, it is always a good idea to plot the wavelet before using it and assess
the adequacy of the temporal length. If the length is chosen too short, then truncation eﬀects will
distort the desired spectrum. Line 4 of Code Snippet 3.5.1 computes the wavelet’s spectrum using
fftrl and line 5 computes the decibel amplitude spectrum using the utility todb . Plotting the real
part of the output from todb versus f creates the spectrum shown in Figure 3.6.
An important consideration when creating wavelets is the question of normalization. That is,
how should the overall amplitude of the wavelet be determined. If equation (??) is used directly,
the maximum amplitude of the wavelet can be quite large. This may be an annoyance in that any
time series that is convolved with such a wavelet will have a large change in overall amplitude.
An easy solution might seem to be to scale the wavelet such that its maximum absolute value is
unity. However, another possibility is to scale the wavelet such that a sinusoid of the dominant
frequency is passed at unit amplitude under convolution. These criteria are not identical with the
ﬁrst tending to preserve the peak values of the signal before and after convolution and the second
preserves the amplitude of the signal near the wavelet’s dominant frequency. The wavelets presented
here all use the second method of normalizing with respect to the dominant frequency. However, if
other behavior is desired, the wavelet can always be renormalized after it is created. The function
wavenorm is useful for this purpose.
Code Snippet 3.5.2. This code creates the Ricker wavelet shown in Figure 3.7. The inputs to
ricker are the temporal sample rate (seconds), the dominant frequency (Hz), and the temporal
length (seconds).
1 %make ricker wavelet
2 [w,tw]=ricker(.002,40,.4);
3 %compute spectrum
4 [W,f]=fftrl(w,tw);
5 W=todb(W);
End Code
Though the amplitude spectrum of the Ormsby wavelet of Figure 3.6 shows the desired passband,
the wavelet is often felt to have an unacceptable level of ripple. The Ricker wavelet has a simpler
from in the timedomain though this comes at the expense of a broader, less controlled, passband.
The Ricker wavelet is given analytically by
n(t)
ricker
=
_
1 −2π
2
)
2
dom
t
2
¸
c
−π
2
f
2
dom
t
2
(3.47)
which can be shown to be the second derivative of a Gaussian. In this expression, )
dom
is the
dominant frequency of the wavelet. The Fourier transform of this wavelet is known to be (Sheriﬀ
and Geldart, 1995)
\()) =
2)
2
√
π)
2
dom
c
−f
2
/f
2
dom
. (3.48)
3.5. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 67
0 50 100 150 200 250
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
Hertz
A
m
p
l
i
t
u
d
e
Figure 3.8: Three Ricker wavelet spectra are
shown against a linear scale for )
dom
= 40, 80,
and 120 Hz. This ﬁgure was created by Code
Snippet 3.5.3 using equation (3.48)
0 50 100 150 200 250
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
Hertz
A
m
p
l
i
t
u
d
e
Figure 3.9: Six amplitude spectra are shown
illustrating the behavior of equation (3.49).
Three dominant frequencies are shown, )
dom
=
40, 80, 120 and the bold curves correspond to
: = 2 while the dashed curves are for : = 3.
This was created by Code Snippet 3.5.3
This is a Gaussian multiplied by )
2
,)
2
dom
. It is characteristic of Ricker wavelets that the higher the
dominant frequency, the broader the bandwidth. This is evident from equation (3.48) in that the
eﬀective width of the Gaussian is seen to be )
dom
. The eﬀect is demonstrated by Code Snippet 3.5.3
and shown in Figure 3.8.
Code Snippet 3.5.3. This code calculates the Ricker wavelet spectra shown in Figure 3.8 using
equation (3.48).
1 f=0:250;
2 fdom1=40;fdom2=80;fdom3=120;
3 R1=exp(f.ˆ2/(fdom1ˆ2)).*(2*f.ˆ2)/(sqrt(pi)*fdom1ˆ2);
4 R2=exp(f.ˆ2/(fdom2ˆ2)).*(2*f.ˆ2)/(sqrt(pi)*fdom2ˆ2);
5 R3=exp(f.ˆ2/(fdom3ˆ2)).*(2*f.ˆ2)/(sqrt(pi)*fdom3ˆ2);
End Code
The Ormsby and Ricker wavelets are zero phase (i.e. symmetric) and are most suitable for models
to be compared to fully processed seismic images. An alternative are minimumphase wavelets that
are suitable for models to be compared with raw seismic data or to be used for deconvolution testing.
One eﬀective way to design minimumphase wavelets is to specify the locations of the poles and zeros
of the wavelet’s ztransform directly. This is the approach taken by Claerbout in ? and has the
advantage that the minimum phase property is easily assured. On the other hand, it is not necessarily
easy to control the spectral shape. With this in mind, an alternative is presented here that speciﬁes
the wavelet’s amplitude spectrum and calculates the minimumphase wavelet using the Levinson
recursion. The Levinson recursion is an eﬃcient way to solve a system of linear equations that has
Toeplitz symmetry. It is discussed more completely in the conjunction with Wiener deconvolution
in Chapter ??. For now, it is just presented as an abstract numerical technique.
Since a minimumphase wavelet is meant to model an impulsive source, an analytic model for the
amplitude spectrum should resemble the observed spectrum for the dynamite blast that is common
68 CHAPTER 3. WAVE PROPAGATION
in exploration seismology. Such spectra have a dominant frequency below about 30 Hz with larger
charges giving lower dominant frequencies and show slow decay towards the high frequencies. The
model spectrum adopted here is given by
¹()) =
1 −c
−(f/f
dom
)
2
1 + (),)
dom
)
m
(3.49)
where : determines the rate of decay at high frequencies. This spectrum is produced by tntamp .
Figure 3.9 was created using tntamp and shows the behavior of this equation for : = 2 and : = 3.
Clearly, larger : gives a more sharply bandlimited spectrum and this means a longer temporal
wavelet. When using : 2, care must be taken that a suﬃcient temporal length is selected because
truncation eﬀects can destroy the minimumphase property.
Code Snippet 3.5.4. This code is an excerpt from wavemin and illustrates the calculation of a
minimumphase wavelet. The column vector of frequencies is f, the intended length of the wavelet
is tlength, the dominant frequency is fdom, and the temporal sample rate is dt.
1 % create the power spectrum
2 powspec=tntamp(fdom,f,m).ˆ2;
3 % create the autocorrelation
4 auto=ifftrl(powspec,f);
5 % run this through Levinson
6 nlags=tlength/dt+1;
7 b=[1.0 zeros(1,nlags1)]’;
8 winv=levrec(auto(1:nlags),b);
9 % invert the wavelet
10 wavelet=real(ifft(1. ./(fft(winv))));
11 twave=(dt*(0:length(wavelet)1)’;
12 % now normalize the wavelet
13 wavelet=wavenorm(wavelet,twave,2);
End Code
Function wavemin invokes tntamp to create a minimum phase wavelet as is shown in Code
Snippet 3.5.4. Line 2 creates the desired power spectrum by squaring the output from tntamp .
On line 4, the power spectrum is inverse Fourier transformed to create the autocorrelation of the
desired wavelet. Lines 68 set up a linear system and solve it using the Levinson recursion. This
linear system is derived in Chapter ?? where it is shown to specify the minimumphase inverse to
a minimumphase wavelet. It is of the form ¹r = / where ¹ is a Toeplitz matrix formed from the
autocorrelation, r is the unknown minimumphase inverse, and / is a column vector of zeros except
for a one in the ﬁrst place. Solving this system with levrec does not require the formation of the
matrix ¹ but needs only the ﬁrst n lags of the autocorrelation and the vector /. Since the result from
solving this linear system is the minimumphase inverse, the desired wavelet is found by inverting
the inverse. This is done in the Fourier domain on line 10. Finally line 11 builds the timecoordinate
vector and line 13 normalizes the ﬁnal wavelet.
Code Snippet 3.5.5. This code calls wavemin twice with : = 2 and : = 3 to create two diﬀer
ent minimumphase wavelets with the same dominant frequency. There amplitude spectra are also
calculate and the result is shown in Figure 3.10
1 %make wavemin wavelet
2 [w1,tw]=wavemin(.002,20,.2,2);
3 [w2,tw]=wavemin(.002,20,.2,3);
4 %compute spectrum
3.5. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 69
0 0.05 0.1 0.15 0.2
−0.1
0
0.1
0.2
0.3
seconds
a
m
p
l
i
t
u
d
e
0 50 100 150 200 250
−100
−50
0
Hertz
d
b
d
o
w
n
Figure 3.10: Two minimum phase wavelets are
shown (top) and their amplitude spectra (bot
tom). The wavelets were created with Code
Snippet 3.5.5 and correspond to : = 2 and
: = 3 in equation (3.49). The : = 2 wavelet
has a broader spectrum and is more frontloaded
in the time domain.
−0.08 −0.06 −0.04 −0.02 0 0.02 0.04 0.06
0
0.2
0.4
seconds
a
m
p
l
i
t
u
d
e
0 50 100 150 200 250
−60
−40
−20
0
Hertz
d
b
d
o
w
n
Figure 3.11: In the upper frame, a 20 Hz Ricker
wavelet (top) is compared to wavez wavelets
corresponding to : = 3 (middle) and : = 2
(bottom). Their amplitude spectra are shown
in the lower frame. The Ricker spectrum is the
one that runs oﬀ the bottom of the axes at 70Hz.
5 [W1,f]=fftrl(w1,tw);
6 W1=todb(W1);
7 [W2,f]=fftrl(w2,tw);
8 W2=todb(W2);
End Code
The example shown in Code Snippet 3.5.5 uses wavemin to create two diﬀerent minimumphase
wavelets. The wavelets have the same dominant frequency of 20 Hz and have : = 2 and : = 3. The
wavelet with : = 2 shows less highfrequency decay and, in the time domain, is more front loaded.
It is not certain that the result from wavemin will be truly minimum phase. If the parameters are
chosen such that the requested temporal length is substantially shorter than what is implied by
the spectrum, then a nonminimum phase wavelet can result due to truncation eﬀects. The utility
function ismin is provided to test a wavelet for the minimumphase property. This function factors
the ztransform of the wavelet and measures the radius vector for all of the roots. If all roots are
outside the unit circle, then ismin returns unity. If any root is inside the unit circle, ismin returns
0. The two wavelets in Figure 3.10 pass the minimum phase test; however, wavemin(.001,10,.2,3)
produces a wavelet that does not.
The spectral model of equation (3.49) can also be used to create a zerophase wavelet. This
is accomplished by wavez . Figure 3.11 shows three zerophase wavelets with the same dominant
frequency of 20 Hz. The upper wavelet is a 20Hz. Ricker while the middle and lower were created
by wavez with : = 3 and : = 2 respectively. Relative to the Ricker, the wavez wavelets are
considerably more spikelike at the origin. This is due to their relative richness in high frequencies
compared with the Ricker wavelet. The code that created this Figure is a simple modiﬁcation of
Code Snippet 3.5.5 and is not shown.
Given any particular amplitude spectrum there are inﬁnitely many wavelets that can be created
with diﬀerent phase spectra. So far, only minimum phase and zero phase have been discussed.
70 CHAPTER 3. WAVE PROPAGATION
−0.2 −0.1 0 0.1 0.2 0.3 0.4 0.5
−0.6
−0.5
−0.4
−0.3
−0.2
−0.1
0
0.1
0.2
0
°
45
°
90
°
135
°
180
°
seconds
Figure 3.12: A 40 Hz zerophase Ricker wavelet is shown for four phase rotations of
θ = [45
◦
, 90
◦
, 135
◦
, 180
◦
]. This was created with Code Snippet 3.5.6.
Often, it is useful to model seismic data with a wavelet that has a constant phase other than zero.
This is easily accomplished by creating a zerophase wavelet and then using phsrot to rotate the
phase from zero to the desired constant value. An example of this that creates Figure 3.12 is shown
in Code Snippet 3.5.6. It is good practice to note the basic features of each phase rotation. For
example, the 90
◦
rotation has antisymmetry about the wavelet’s center with a major leading peak
and a trailing trough. The 45
◦
rotation is similar but the major leading peak is about 50% larger
than the trailing trough. Since c
iπ
= −1, a 180
◦
phase rotation is just a ﬂip in polarity. This
can be seen in the 0
◦
and 180
◦
wavelets and it also means that a 45
◦
rotation is the same as a
polarityreversed 135
◦
wavelet. Similarly, the 45
◦
wavelet is a polarityreversed version of a 135
◦
wavelet.
Code Snippet 3.5.6. This code creates a zerophase Ricker wavelet and then calls phsrot four
times to create a set of phase rotated wavelets. The resulting plot is in Figure 3.12.
1 [w,tw]=ricker(.002,40,.2);%make Ricker wavelet
2 nrot=5;deltheta=45;%number of phases and increment
3 figure
4 for k=1:nrot
5 theta=(k1)*deltheta;
6 wrot=phsrot(w,theta);%phase rotated wavelet
7 xnot=.1*(k1);ynot=.1*(k1);
8 line(tw+xnot,wrot+ynot);%plot each wavelet
9 text(xnot+.005,ynot+.1,[int2str(theta) ’ˆ\circ’])
10 end
End Code
3.5.2 Seismograms
Convolutional seismograms with random reﬂectivity
A common use for synthetic seismograms is to test deconvolution algorithms. In this context, it is
often desirable to use an artiﬁcial reﬂectivity function so that the deconvolution assumption of a
3.5. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 71
0 0.2 0.4 0.6 0.8
−0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
well
m=1
m=2
m=3
m=4
m=5
m=6
seconds
Figure 3.13: Seven reﬂectivity functions are
shown. The bottom one comes from a real well
log and the other six are synthetic reﬂectivities
that were generated by reflec .
−0.4 −0.2 0 0.2 0.4
−1
0
1
2
3
4
5
6
7
8
9
well
m=1
m=2
m=3
m=4
m=5
m=6
lag time (seconds)
Figure 3.14: Seven twosided autocorrelations
are shown corresponding to the seven reﬂectivi
ties in Figure 3.13.
white reﬂectivity is fulﬁlled as nearly as possible. The command reflec supplies such a reﬂectivity
function by using MATLAB’s random number generator, randn. Technically, numerical random
number generators like randn generate pseudorandom numbers. This means that given the same
starting point, called the seed, the generator will return the same set of apparently random numbers.
MATLAB has two random number generators, rand that generates uniformly distributed random
numbers, and randn that generates normally, or Gaussian, distributed random numbers. Generally,
a normal distribution is preferable, however, in either case such random numbers do not display the
spikiness typically found in real well logs. This is addressed in reflec by raising the output from
randn to an integral power, :, as in
:
reflec
= :ipn(:
randn
) [:
randn
[
m
. (3.50)
Suppose that the maximum values in :
randn
are near unity. Then raising them to any power will
not change them while the smaller numbers will get smaller. Thus :
reflec
will appear more spiky
than :
randn
.
Figure 3.13 compares a real reﬂectivity derived from well logs with six outputs from reflec
using values of of : from 1 to 6. It is a subjective decision about which value of : gives the most
realistic reﬂectivity estimate. The default in reflec is 3. Clearly, the real reﬂectivity has features
that are present in none of the synthetic ones. The most obvious is the lowamplitude zone from
.4 to .7 seconds on the real reﬂectivity. More generally, a low frequency amplitude variation can be
perceived throughout the real reﬂectivity while the synthetic ones show a very uniform amplitude
distribution with time. This is a hint that the real reﬂectivity is not white, i.e. not truly random,
but rather shows spectral color.
A useful test of randomness is to calculate the autocorrelation of the reﬂectivity. In theory, a
truly random signal has an autocorrelation that is exactly zero everywhere except at zero lag where
it is unity. However, this requires an inﬁnite length signal and so is never exactly fulﬁlled in practice.
Figure 3.14 shows the central portion of the autocorrelations of the reﬂectivities of Figure 3.13. All
72 CHAPTER 3. WAVE PROPAGATION
0 0.2 0.4 0.6 0.8 1 1.2 1.4
−0.2
−0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
seconds
Figure 3.15: The lower trace is a random reﬂec
tivity generated by reflec with an extra spike
on the end. The middle trace is a convolutional
seismogram that uses a 20 Hz minimum phase
wavelet convolved with the ﬁrst trace. The top
trace is a similar seismogram except that a 20
Hz minimumphase wavelet was used. See Code
Snippet 3.5.7.
0 50 100 150 200 250
−50
0
d
b
d
o
w
n
Hz
0 50 100 150 200 250
−50
0
d
b
d
o
w
n
0 50 100 150 200 250
−50
0
d
b
d
o
w
n
Figure 3.16: Decibel amplitude spectra of the
seismograms of Figure 3.15: (bottom) reﬂectiv
ity, (middle) minimumphase seismogram and
wavelet (smooth curve), and (top) Ricker seis
mogram and wavelet (smooth curve).
autocorrelations have a large spike at zero lag and only small values elsewhere. However, only the
real well log shows signiﬁcant negative side lobes of the zero lag sample. This again indicates that
the real reﬂectivity is not white but has spectral color. It is also interesting that :
reflec
shows the
same degree of randomness regardless of the value of :.
Code Snippet 3.5.7. Here two wavelets, a 40 Hz Ricker and a 20 Hz minimum phase, are convolved
with the same reﬂectivity to generate two synthetic seismograms. The result is shown in Figure 3.15.
1 %make wavelet
2 dt=.002;tmax=1;tmaxw=.2;
3 [wm,twm]=wavemin(dt,20,tmaxw); %20 Hz min phs
4 [wr,twr]=ricker(dt,40,tmaxw); %40 Hz Ricker
5 %make reflectivity
6 [r,t]=reflec(tmax,dt,.2);
7 %pad spike at end
8 ntw=tmaxw/dt;
9 r=[r;zeros(ntw/2,1);.2;zeros(ntw,1)];
10 t=dt*(0:length(r)1);
11 %convolve and balance
12 s1=convz(r,wr);
13 s1=balans(s1,r);
14 s2=convm(r,wm);
15 s2=balans(s2,r);
End Code
The calculation of a synthetic seismogram using reflec to generate the reﬂectivity is illustrated
in Code Snippet 3.5.7. Lines 34 generate a 40 Hz Ricker wavelet and a 20 Hz minimumphase wavelet
3.5. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 73
as described in section 3.5.1. Line 6 invokes reflec to create a random reﬂectivity. The three input
parameters are the maximum time, the time sample rate, and the maximum reﬂection coeﬃcient.
A fourth argument, that is defaulted here, gives : in equation (3.50). In addition to returning
a reﬂectivity series, r, reflec also returns an appropriate timecoordinate vector, t. Lines 810
place an extra isolated spike on the end of the reﬂectivity. This is useful because, after convolution,
the shape of the wavelet will be immediately apparent. Line 9 is simply the concatenation of the
reﬂectivity with: a column vector of ntw/2 zeros, an impulse of .2, and another column vector of ntw
zeros. Line 10 rebuilds the timecoordinate vector to be compatible with the lengthened reﬂectivity.
Line 12 convolves the reﬂectivity with the zerophase Ricker wavelet using the convenience function
convz while line 14 convolves the reﬂectivity with the minimumphase wavelet using convm . These
convenience functions invoke conv and then truncate the result to be the same length as the ﬁrst
input argument. Function convz truncates evenly from the beginning and the end of the convolved
series as is appropriate if a zerophase wavelet was used. Function convm truncates entirely oﬀ the
end of the convolved series as would be expected for a causal wavelet. After each convolution, the
function balans is invoked to balance the amplitudes of the seismogram with the original reﬂectivity
to aid in the comparison. One thing that is immediately apparent from these seismograms is that
the zerophase seismogram is more interpretable than the minimumphase. This is because the
larger peaks on the former coincide temporally with the major reﬂection coeﬃcients. With the
minimumphase seismogram, the major peaks are displaced to later times relative to the reﬂectivity.
Code Snippet 3.5.8. This example assumes that Code Snippet 3.5.8 has already been run. Here
the spectra are computed and displayed. The result is Figure 3.16.
1 [R,f]=fftrl(r,t);
2 [S1,f]=fftrl(s1,t);
3 [S2,f]=fftrl(s2,t);
4 [Wr,fwr]=fftrl(wr,twr);
5 [Wm,fwm]=fftrl(wm,twm);
6 R=real(todb(R));
7 S1=real(todb(S1));
8 S2=real(todb(S2));
9 Wr=real(todb(Wr));
10 Wm=real(todb(Wm));
End Code
Code Snippet 3.5.8 assumes that Code Snippet 3.5.7 has already been run. Lines 15 use fftrl
to compute the spectrum of each component of the seismogram construction exercise. Then, lines
610 use the convenience function todb to compute the amplitude spectrum in decibel format, each
spectrum relative to its own maximum. (The imaginary part of the return from todb is the phase
spectrum). The resulting spectra are displayed in Figure 3.16. It is apparent that the spectra of
the seismograms are shaped by that of the wavelets. That is, the slowlyvarying, average behavior
of the seismogram spectrum is essentially similar to the wavelet spectrum. The fact that the Ricker
wavelet spectrum departs from that of the seismogram in the upper panel is an artifact caused by
the truncation of the convolution.
It is often desirable to add some level of background random noise to a synthetic to simulate
a noisy recording environment or perhaps the limited precision of recording. The function rnoise
is designed for this purpose. If s1 is a time series, then rn=rnoise(s1,5) creates a vector of
normallydistributed random noise, rn, such that s1+rn will have a signaltonoise ratio of 5. The
signaltonoise ratio is deﬁned by assuming that s1 is pure signal and measuring its rms amplitude
as o
rms
=
_
j
:1
2
j
, where the sum is over samples in the time domain. The rms amplitude of rn
74 CHAPTER 3. WAVE PROPAGATION
0 0.2 0.4 0.6 0.8 1 1.2 1.4
−0.2
0
0.2
0.4
0.6
0.8
s/n=1
s/n=2
s/n=5
s/n=10
seconds
a
m
p
l
i
t
u
d
e
Figure 3.17: The minimumphase seismogram of
Figure 3.15 is shown with four diﬀerent levels of
added noise.
0 50 100 150 200 250
−150
−100
−50
0
s/n=1
s/n=2
s/n=5
s/n=10
frequency (Hz)
d
b
d
o
w
n
Figure 3.18: The spectra of the seismograms of
Figure 3.17 are shown with the spectrum of the
wavelet superimposed on each. The maxima
of the spectra acutally coincide but have been
shifted vertically for clarity.
is then set as σo
rms
where σ is the desired signaltonoise ratio. In using rnoise it is important to
remember that rn must be added to the input time series after calling rnoise . Also, the method
of calculating the signaltonoise ratio may not be exactly what was desired as there is no standard
way of doing this. Other possibilities include deﬁning the ratio between peak amplitudes or in the
frequency domain. Also, rnoise can be given a third argument that deﬁnes the range of indices
over which the signaltonoise ratio is to be computed. This is useful for nonstationary signals
whose signal level may change strongly with time. For example, if t is the time coordinate vector
for s1, then rn=rnoise(s1,5,near(t,.5,1.0)) uses the function near to determine the range of
indices that span the time zone from .5 to 1.0 seconds. Then only those samples between .5 and
1 are used in the rms amplitude calculation. Figure 3.17 shows four diﬀerent noisy seismograms
computed using rnoise and the minimumphase seismogram of Figure 3.15 as signal. The Fourier
amplitude spectra of these noisy seismograms are shown in Figure 3.18 with the spectrum of the
wavelet superimposed. Comparison with Figure 3.16 shows that the noise causes a corner in the
spectrum deﬁned by where it departs from the shape of the wavelet’s spectrum. An interpretive
assessment of the corner frequencies would put them near 75 Hz, 100 Hz, 150 Hz, and 220 Hz for
signaltonoise ratios of 1, 2, 5, and 10 respectively. It is very diﬃcult to recover the signal spectrum
beyond this point in data processing. Close inspection shows that the spectra at frequencies below
the corner frequency are also altered by the addition of noise. From another perspective, this must
be the case because the dynamic range of the wiggle trace plots in Figure 3.17 is about 2030 decibels
and they are all clearly altered by the noise.
Exercise 3.5.1. Develop a script that remakes and displays the seismograms and spectra of Figures
3.15 and 3.16. Modify the script to demonstrate that truncation eﬀects are the reason that the
seismogram spectrum and the Ricker wavelet spectra depart from one another near 110 Hz (top
Figure 3.16.
Exercise 3.5.2. Create a script that builds two seismograms from the same reﬂectivity using wavelets
from wavemin and wavez. Make the wavelets the same in all respects except for their phase. Which
3.5. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 75
seismogram is more interpretable? Why?
Synthetic seismograms with multiples
The
Chapter 4
Velocity
Exploration seismology is literally overﬂowing with velocities. Just to name a few, there are interval
velocity, instantaneous velocity, apparent velocity, rms velocity, average velocity, mean velocity,
stacking velocity, horizontal velocity, vertical velocity, phase velocity, group velocity, Pwave velocity,
Swave velocity, migration velocity, weathering velocity, and almost certainly others. This chapter is
meant to bring some order to this chaos of velocities. For starters, there is a fundamental distinction
between physical velocities and velocity measures. The former refers to velocities that are actually
the speed at which some physical wave propagates. Examples are instantaneous velocity, P and
Swave velocities, phase and group velocity. On the other hand, velocity measures are typically
quantities derived from data analysis that have the physical dimensions of velocity but are related to
physical velocities in some indirect (and possibly unknown) fashion. Examples of velocity measures
include average, mean, and rms velocities, interval velocity, stacking velocity, apparent velocity, and
migration velocity. In contrast to physical velocities, it cannot generally be expected that a physical
wave actually propagates at the speed of one of these velocity measures.
Using the measured data for the analysis of velocity and the application to the data of corrections
that depend upon velocity are fundamental to seismic processing. Velocity, together with the geom
etry of the seismic acquisition and the shapes of the reﬂectors, causes the characteristic traveltime
shapes (such as hyperbolae) in the data. Spatial variations in velocity cause distortions from the
simple, canonical shapes, and these distortions must be accounted for in processing. Sometimes ve
locity information can be obtained from supporting data such as well logs, core measurements, and
geologic maps but this information is inherently sparse with respect to the coverage of the seismic
data itself. Ultimately, the only way to obtain the spatially dense velocity information required in
processing is from the data itself. This is known as velocity analysis and is the source of some of
the velocity measures such as stacking and migration velocities. The interpretation of the velocity
measures such that they can be converted into measurements of physical velocities is called velocity
inversion and is an ongoing problem. A careful discussion of the deﬁnitions of these measures is
essential to gain understanding of the complexities of velocity inversion.
For simplicity, consider the case of Pwave propagation in a heterogeneous earth. (Swaves can
be treated similarly.) A velocity measure will be deﬁned by either relating it mathematically to the
actual Pwave speed or by describing how it can be derived from seismic data.
76
4.1. INSTANTANEOUS VELOCITY: \
INS
OR JUST \ 77
1500 2000 2500 3000 3500 4000
0
500
1000
1500
2000
2500
3000
velocity(m/s)
d
e
p
t
h
(
m
)
Figure 4.1: The universal velocity function is linear with depth
4.1 Instantaneous velocity: v
in:
or just v
Instantaneous velocity generally refers to the speed of propagation of seismic waves in the earth.
The word instantaneous refers to the local wave speed as the wave evolves from one instant of time
to the next. The term can be applied to any wave type (P, S, surface, etc) though here we specialize
to Pwaves for clarity.
Like most seismic “velocities” ·
ins
is not usually a vector quantity and so is not a velocity as
physicists would use the term. Rather it is a scalar which can be thought of as the magnitude of a
velocity vector.
For practical seismic experiments, ·
ins
must be acknowledged to be a highly variable function of
position in the earth. In the most general case of anisotropic media, it also depends upon direction,
but this will be ignored for now. It is not a function of time as that would imply that the earth’s
properties changed during the seismic experiment. Only rarely can it be assumed to be spatially
constant but often there is signiﬁcant variation in one direction only. This is commonly the case
in sedimentary basins where velocity varies strongly with depth but only weakly in the horizontal
direction.
Consider the instantaneous velocity function that is linear with depth .
·
ins
= ·
0
+ c.. (4.1)
The universal velocity function is the name given to this function when ·
0
= 1800 m/sec and
c = .6 sec
1
. Figure 4.1 shows this function for a depth range of 0 to 3000 m. The name originates
in the days of analog computing (the 1950s and 1960s) when changing a velocity function was a
considerable labor. For example, normal moveout was removed by a “computer” (who was a human
being) who “traced the trace” (hence the name trace for a seismic recording) with a stylus that
was connected to a pen by a lever arm driven by an eccentric cam. The pen would redraw the
trace with normal moveout removed. However, the shape of the cam was determined by the velocity
function and changing functions often meant going to the machine shop to cut a new cam. Thus the
possibility of a universal function was quite attractive. And, it actually works quite well in many
sedimentary basins.
78 CHAPTER 4. VELOCITY
4.2 Vertical traveltime: τ
Given a complete speciﬁcation of ·
ins
as a function of position, ·
ins
(r, j, .), traveltimes over any
path can be computed. Since there are inﬁnitely many possible paths between any two points (of
course, not all are Snell’s law paths but all are possible routes for scattered energy), it is unreasonable
to expect that there could be an unambiguous relation between traveltime and depth. However, if
a special path is chosen, then such a relation can be developed. For this purpose, it is common to
relate depth, ., to the traveltime along the vertical path from 0 to .. This vertical traveltime is a
useful quantity that, to ﬁrst order, is the time coordinate of ﬁnal stacked sections and, to higher
accuracy, is the time coordinate for migrated time sections. Even though ·
ins
is a general function of
position, for the calculation of vertical traveltime, it can be considered as a function of depth alone
because the calculation at each (r, j) is independent. Therefore, instantaneous velocity will now be
written ·
ins
(.) with the understanding that the calculations can be done for any and all (r, j).
Vertical traveltime is calculated by considering a small depth interval, d. over which ·
ins
can be
considered to be approximately constant. The vertical traveltime over this interval is simply
dτ =
d.
·
ins
(.)
. (4.2)
The total oneway traveltime from the surface to depth, ., is simply the sum of many such small
contributions. In the limit as d. →0 this becomes the integral
τ(.) =
_
z
0
d˜ .
·
ins
(˜ .)
. (4.3)
The . dependence appears as the upper limit of the integral while ˜ . is just a dummy variable of
integration. Deﬁned in this way, τ(.) is a function that increases monotonically with .. As such it
is guaranteed to have an inverse. That is, given τ(.) it is always possible to ﬁnd .(τ) and viceversa.
Function τ(.) is called a timedepth curve and can be used to ﬁnd depth given vertical traveltime
or the reverse.
Continuing with the universal velocity function of Equation 4.1, the vertical traveltime of equation
(4.3) becomes
τ(.) =
_
z
0
d˜ .
·(˜ .)
=
1
c
_
v0+cz
v0
dξ
ξ
=
1
c
ln
_
1 +
c.
·
0
_
. (4.4)
Thus a linear variation of velocity with depth yields a logarithmic timedepth curve. It is a simple
matter to invert Equation 4.4 for .(τ) to get
.(τ) =
·
0
c
[c
cτ
−1] . (4.5)
For the case of the universal velocity function, the curves τ(.) and .(τ) are shown in Figures 4.2
and 4.3 respectively. The graph of .(τ) is just the transpose of the graph of τ(.).
4.3 v
in:
as a function of vertical traveltime: v
in:
(τ)
In the preceding sections it has been shown that for any ﬁxed (r, j) location, every depth, ., has
a unique vertical traveltime associated with it. Therefore, ·
ins
, which is physically a function of .
4.4. AVERAGE VELOCITY: \
AV E
79
0 500 1000 1500 2000 2500 3000
0
0.2
0.4
0.6
0.8
1
1.2
depth (m)
t
i
m
e
(
s
)
Figure 4.2: The timedepth curve (τ(.)) of equa
tion (4.4) for the case of ·
0
= 1800m/sec and
c = .6/sec
0 0.2 0.4 0.6 0.8 1 1.2
0
500
1000
1500
2000
2500
3000
d
e
p
t
h
(
m
)
time (s)
Figure 4.3: The depthtime curve (.(τ)) of equa
tion (4.4) for the case of ·
0
= 1800 m/sec and
c = .6 sec
1
may always be expressed as a function of τ(.). That is
·
ins
(τ) = ·
ins
(.(τ)) (4.6)
Given ·
ins
(τ) in equation (4.2), an expression for .(τ) follows as
.(τ) =
_
τ
0
·
ins
(˜ τ)d˜ τ. (4.7)
Comparing equations (4.3) and (4.7) shows that knowledge of ·
ins
(.) allows computation of τ(.)
and knowing ·
ins
(τ) enables computation of .(τ). In practice, ·
ins
(.) might be directly obtained
from a sonic well log while ·
ins
(τ) can be estimated from the analysis of stacking velocities.
For the universal velocity function of equation (4.1) the vertical traveltime results in the loga
rithmic expression given in equation (4.4) and .(τ) is given by equation (4.5). Thus ·
ins
(τ) becomes
·
ins
(τ) = ·
ins
(.(τ)) = ·
0
+ c
_
·
0
c
(c
cτ
−1)
_
(4.8)
which reduces to
·
ins
(τ) = ·
0
c
cτ
. (4.9)
Thus, when ·
ins
is linear with depth it is actually exponential with vertical traveltime. For case of
the universal velocity function, ·
ins
(τ) is plotted in Figure 4.4.
4.4 Average velocity: v
o·c
The typical industry deﬁnition of ·
ave
is that it is a particular depth divided by the vertical traveltime
from the surface to that depth. Given any .(τ) curve, pick a point (τ
0
, .
0
) and ·
ave
is the slope of
the line connecting the origin with the point (τ
0
, .
0
) while ·
ins
is the tangent to the curve at that
80 CHAPTER 4. VELOCITY
2000 2500 3000 3500
0
0.2
0.4
0.6
0.8
1
1.2
velocity (m/s)
t
i
m
e
(
s
e
c
)
Figure 4.4: For the universal velocity function shown in Figure 4.1, ·
ins
is an exponential
function of vertical traveltime.
point. Mathematically, ·
ave
(.) is expressed as
·
ave
(.) =
.
τ(.)
=
.
_
z
0
d˜ z
vins(˜ z)
(4.10)
while ·
ave
(τ) is
·
ave
(τ) =
.(τ)
τ
=
1
τ
_
τ
0
·
ins
(˜ τ)d˜ τ. (4.11)
Equation (4.11) shows that the average velocity is a mathematical average only with respect to
vertical traveltime. (Recall from calculus, that the average (or mean) value of a function )(r) over
the interval from 0 → r is r
−1
_
x
0
)(r
)dr
.) When considered as a function of depth, the average
velocity is not a mathematical average.
For the running example of linear variation of velocity with depth, ·
ave
(.) becomes
·
ave
(.) =
c.
ln
_
1 +
cz
v0
_ (4.12)
and ·
ave
(τ) is the given by
·
ave
(τ) =
·
0
cτ
[c
cτ
−1] . (4.13)
These equations are graphed in Figures 4.5 and 4.6.
4.5 Mean velocity: v
:con
Since ·
ave
is a mathematical average of ·
ins
over traveltime and not depth, it is useful to deﬁne
another velocity measure that is a depth average. The mean velocity, ·
mean
is deﬁned as
·
mean
(.) =
1
.
_
z
0
·
ins
(˜ .)d˜ .. (4.14)
4.6. RMS VELOCITY: \
RMS
81
2000 2500 3000 3500
0
500
1000
1500
2000
2500
3000
velocity (m/s)
d
e
p
t
h
(
m
)
v
ave
v
ins
Figure 4.5: ·
ave
and ·
ins
are shown versus depth
for the case of the universal velocity functions
(equation (4.1)) with ·
0
= 1800 m/s and c =
.6 sec
1
2000 2500 3000 3500
0
0.2
0.4
0.6
0.8
1
1.2
velocity (m/s)
t
i
m
e
(
s
e
c
)
v
ave
v
ins
Figure 4.6: ·
ave
and ·
ins
are shown versus time
for the case of the universal velocity functions
(equation (4.1)) with ·
0
= 1800 m/s and c =
.6 sec
1
For the linear variation of ·
ins
(.), ·
mean
(.) becomes
·
mean
(.) =
1
.
_
z
0
[·
0
+ c˜ .] d˜ . = ·
0
+
1
2
c. (4.15)
which shows that the mean velocity increases at half the rate of ·
ins
(.). Of course, ·
mean
(.) can be
reexpressed as a function of τ by substituting .(τ), this results in
·
mean
(τ) =
·
0
2
[1 + c
cτ
] . (4.16)
Equation (4.15) is compared with ·
ave
(.) and ·
ins
(.) in Figure 4.7. ·
mean
(.) and ·
ins
(.) are
both linear but ·
ave
(.) is not. Also, ·
mean
(.) is always greater than ·
ave
(.) which will be proven
true in the next section.
4.6 RMS velocity: v
:::
The mean velocity, discussed previously, is not commonly used in seismology. The reason is that
another velocity measure, ·
rms
, is used and only two of ·
ave
, ·
mean
, and ·
rms
are independent. The
rootmeansquare velocity is deﬁned as
·
2
rms
(τ) =
1
τ
_
τ
0
·
2
ins
(˜ τ)d˜ τ. (4.17)
Two important relationships exist between the three velocity measures: ·
ave
, ·
mean
, and ·
rms
.
First, they are linked by the relation
·
2
rms
= ·
ave
·
mean
(4.18)
82 CHAPTER 4. VELOCITY
2000 2500 3000 3500
0
500
1000
1500
2000
2500
3000
velocity (m/s)
d
e
p
t
h
(
m
)
v
ave
v
ins
v
mean
Figure 4.7: ·
mean
and ·
ave
are compared with ·
ins
for the case of the linear increase of
·
ins
with z.
which means that only two of the three velocity measures can be considered independent. The proof
is straight forward ·
2
rms
= τ
−1
_
·
2
ins
dτ =
z
τ
1
z
_
·
ins
[·
ins
dτ] =
z
τ
[
1
z
_
·
ins
d.] = ·
ave
·
mean
.
The second relationship follows from a mathematical inequality known as Schwartz’s Inequality.
This result is quite general and conﬁrms the intuition that the square root of the average of the
squares of a set of numbers is always greater than the direct average of the numbers themselves.
That is, let ¦r
k
¦ be an arbitrary set of n real numbers, then
_
n
−1
k
r
2
k
≥ n
−1
k
r
k
where the
equality only occurs if all r
k
are identical.
For the continuing example of ·
ins
linear with depth, equation (4.9) showed that ·
int
was expo
nential. Thus ·
rms
becomes
·
2
rms
(τ) =
1
τ
_
τ
0
·
2
0
c
2c˜ τ
d˜ τ =
·
2
0
2cτ
_
c
2cτ
−1
¸
. (4.19)
Figure 4.8 compares ·
rms
·
ave
and ·
ins
for the universal velocity function. Though ·
rms
is
always greater than ·
ave
the diﬀerence is not greater than 2%.
Exercise 4.6.1. Use MATLAB to numerically demonstrate Schwartz’s inequality. Use rand to
generate a vector of random numbers with zero mean. Compute both the mean and the rms average
of these numbers. Repeat the process for many diﬀerent vectors with steadily increasing length. Plot
a graph of these two averages versus length. Repeat your work using random numbers that are all
positive with a mean value somewhere near that expected for seismic velocities. Show that if the
velocity vector has identical entries then the rms average and the mean are equal but if one value
diﬀers from the rest, then the rms average exceeds the mean.
4.7 Interval velocity: v
int
Corresponding to any of the velocity averages, an interval velocity can be deﬁned that is simply the
particular average applied across a small interval rather than from the surface (. = 0) to depth ..
4.7. INTERVAL VELOCITY: \
INT
83
2000 2500 3000 3500
0
0.2
0.4
0.6
0.8
1
1.2
velocity (m/s)
t
i
m
e
(
s
e
c
)
v
ave
v
ins
v
rms
Figure 4.8: ·
rms
and ·
ave
are compared with ·
ins
for the case of the linear increase of ·
ins
with z.
For example, the average and rms velocities across an interval deﬁned by τ
1
and τ
2
are simply
·
ave
(τ
2
, τ
1
) =
1
τ
2
−τ
1
_
τ2
τ1
·
ins
(˜ τ)d˜ τ (4.20)
and
·
2
rms
(τ
2
, τ
1
) =
1
τ
2
−τ
1
_
τ2
τ1
·
2
ins
(˜ τ)d˜ τ. (4.21)
These quantities are functions of both the upper and lower bounds of the integrals. In the limit, as
the interval shrinks so small that ·
ins
(τ)can be considered constant, both interval velocities approach
the instantaneous velocity.
It follows directly from the deﬁnition of average velocity (equation (4.10)) that the average
velocity across a depth interval is just the ratio of the depth interval to the vertical traveltime across
the interval. That is
·
ave
(τ
2
, τ
1
) =
.
2
−.
1
τ
2
−τ
1
=
∆.
∆τ
. (4.22)
Thus, if the range from 0 to . is divided into n ﬁnite intervals deﬁned by .
0
, .
1
, .
2
, . . . , .
n−1
, .
n
(where .
0
= 0 and .
n
= .) then
·
ave
(τ) =
.(τ)
τ
=
n
k=1
[.
k
−.
k−1
]
τ
=
1
τ
n
k=1
[τ
k
−τ
k−1
]·
ave
(τ
k
, τ
k−1
) (4.23)
where τ
k
= τ(.
k
). Deﬁning ∆τ
k
= τ
k
−τ
k−1
then gives
·
ave
(τ) =
1
τ
n
k=1
·
k
∆τ
k
(4.24)
where ·
k
≡ ·
ave
(τ
k
, τ
k−1
) and τ =
n
k=1
∆τ
k
. Comparing equation (4.24) with equation (4.11)
suggests that the former is just a discrete version of the latter. However, the velocity ·
k
in equation
84 CHAPTER 4. VELOCITY
(4.24) is the average velocity of the k
th
ﬁnite interval and is thus the time average of ·
ins
across the
interval. Of course, if ·
ins
(τ) is constant across each interval then ·
k
is an instantaneous velocity
and this distinction vanishes.
Equation (4.24) can be used in a number of ways. Most obviously, it shows how to combine a
set of local average velocities to obtain the macro average velocity across a larger interval. Also, it
can be used to estimate a local average velocity given two macroaverage velocities. Suppose the
average velocities ·
ave1
and ·
ave2
from . = 0 to depths .
1
and .
2
are known. Then an expression for
the average velocity, from .
1
→.
2
or equivalently from τ
1
→τ
2
, follows from equation (4.24) and is
·
ave
(τ
2
, τ
1
) =
1
τ
2
−τ
1
[τ
2
·
ave2
−τ
1
·
ave1
] . (4.25)
The two macro averages are each weighted by their time intervals and then the shallower average is
subtracted from the deeper. This diﬀerence is then divided by the time interval of the local average.
If ·
ave1
, τ
1
, ·
ave2
, andτ
2
are all measured without error, then this process (i.e. equation 4.25)
works perfectly. However, in a real case, errors in the measurements can lead to wildly incorrect
estimates of ·
ave
(τ
2
, τ
1
). With noisy data, there is no guarantee that the term [τ
2
·
ave2
−τ
1
·
ave1
]
will always be positive leading to the possibility of negative velocity estimates. Also, the division by
τ
2
−τ
1
can be unstable if the two times are very close together.
The discussion so far has been only for average velocities across an interval. The entire derivation
above can be repeated for rms velocities with similar results but a few more subtleties arise in
interpretation. Rather than repeating the derivation just given with ‘rms’ in place of ‘ave’, it is
instructive to consider an alternative approach. It is a property of integrals that
_
c
a
=
_
b
a
+
_
c
b
where
o < / < c. Given τ
0
< τ
1
< τ
2
and applying this rule to equation (4.17) results in
·
2
rms
(τ
2
, τ
0
) =
1
τ
2
−τ
0
__
τ1
τ0
·
2
ins
(˜ τ)d˜ τ +
_
τ2
τ1
·
2
ins
(˜ τ)d˜ τ
_
. (4.26)
Recognizing the integrals in [ . . . ] as rms interval velocities squared multiplied by their interval
times (i.e.
_
τ1
τ0
·
2
ins
(˜ τ)d˜ τ = [τ
1
−τ
0
]·
2
rms
(τ
1
, τ
0
) and similarly for the other integral) leads to
·
2
rms
(τ
2
, τ
0
) =
1
τ
2
−τ
0
_
(τ
1
−τ
0
)·
2
rms
(τ
1
, τ
0
) + (τ
2
−τ
1
)·
2
rms
(τ
2
, τ
1
)
¸
. (4.27)
For the case of n subdivisions between τ
2
and τ
0
this generalizes to
·
2
rms
(τ
2
, τ
0
) =
1
τ
2
−τ
0
n
k=1
·
2
k
∆τ
k
(4.28)
where ·
k
= ·
rms
(τ
k
, τ
k−1
) and, as before, ∆τ
k
= τ
k
− τ
k−1
and τ =
n
k=1
∆τ
k
. This is the rms
equivalent to equation (4.24) and all of the comments made previously about ·
ave
apply here for
·
rms
. In particular, equation (4.28) should be thought of a combining interval rms velocities into
a macro rms velocity. Only in the case when ·
ins
does not vary signiﬁcantly across an interval can
the ·
k
in equation (4.28) be considered to be instantaneous velocities.
Equation (4.27) is the addition rule for rms velocities. To combine rms velocities, the squared ve
locities are added and each must be weighted by its time interval. Equation (4.27) can be rearranged
4.8. MATLAB VELOCITY TOOLS 85
to give an expression for estimating a local rms velocity from two macro velocities
·
2
rms
(τ
2
, τ
1
) =
1
τ
2
−τ
1
_
(τ
2
−τ
0
)·
2
rms
(τ
2
, τ
0
) −(τ
1
−τ
0
)·
2
rms
(τ
1
, τ
0
)
¸
(4.29)
or, with simpliﬁed notation
·
2
rms
(τ
2
, τ
1
) =
1
τ
2
−τ
1
_
τ
2
·
2
rms2
−τ
1
·
2
rms1
¸
. (4.30)
In this expression τ
0
has been set to 0 and ·
rms2
= ·
rms
(τ
2
, τ
0
) and similarly for ·
rms1
. Equation
(4.30) is often called the Dix equation for interval rms velocities because it was C.H. Dix (Dix, 1955)
who ﬁrst recognized the connection between stacking velocities and rms velocities and showed how
to calculate an interval velocity from two stacking velocity measurements.
The application of equation (4.30) in practice requires the measurement of stacking velocities and
vertical traveltimes to two closely spaced reﬂectors. Under the assumption that stacking velocities
are well approximated by rms velocities (Dix (1955) or Taner and Koehler (1969)), the rms velocity
of the interval is then estimated with equation (4.30). However, as with average velocities, errors in
measurement lead to problems with the estimation of ·
rms
(τ
2
, τ
1
). If the term
_
τ
2
·
2
rms2
−τ
1
·
2
rms1
¸
becomes negative then imaginary interval velocity estimates result. Thus one essential condition for
the use of this technique is that
·
2
rms2
·
2
rms1
τ
1
τ
2
. (4.31)
Since τ
1
,τ
2
< 1, this is a constraint upon how fast ·
rms
estimates can decrease with increasing
time. There is no mathematical basis to constrain the rate at which ·
rms
can increase; however, it
is reasonable to formulate a constraint on physical grounds. Since Pwave seismic velocities are not
expected to exceed some ·
max
(say 7000 m/s) a constraint would be
·
2
rms2
< ·
2
rms1
τ
1
τ
2
+ ·
2
max
τ
2
−τ
1
τ
2
. (4.32)
Exercise 4.7.1. Show that the righthandside of inequality (4.32) is always greater than ·
rms1
provided that ·
max
·
rms1
so that this is a constraint on the rate of increase of ·
rms
.
Exercise 4.7.2. Suppose that the times and depths to two reﬂectors are known, say τ
1
, τ
2
, .
1
, and .
2
,
and that the rms velocities to the reﬂectors are also known, say ·
rms1
and ·
rms2
. Consider the interval
velocities deﬁned by
·
int
=
.
2
−.
1
τ
2
−τ
1
and ˜ ·
int
=
¸
·
2
rms2
τ
2
−·
2
rms1
τ
1
τ
2
−τ
1
.
Under what condition(s) will these interval velocity estimates be similar? If the interval between the
reﬂectors is highly heterogeneous, which estimate will be larger. Why?
4.8 MATLAB velocity tools
To this point, the discussion of velocity measures has been illustrated with an instantaneous veloc
ity whose form is a known analytic function. More realistically, velocity functions are inherently
numerical because they are derived from experiment. The conversion of such numerical velocities
86 CHAPTER 4. VELOCITY
1000 2000 3000 4000
0
500
1000
1500
2000
meters/sec
m
e
t
e
r
s
1000 2000 3000 4000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
meters/sec
s
e
c
o
n
d
s
Figure 4.9: (Left) A ﬁve legged ·
ins
(.) with lin
ear variation between the knees. (Right) The
curve on the left has been converted to ·
ins
(τ).
The variation between the knees is no longer lin
ear.
1000 1500 2000 2500 3000 3500 4000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
meters/sec
s
e
c
o
n
d
s
a
b
c d
Figure 4.10: (a) ·
ins
(τ) from Figure 4.9. (b)
ﬁnely sampled ·
rms
(τ). (c) desampled ·
rms
(τ).
(d) ten legged interval rms approximation to
·
ins
(τ).
from one form to another is often necessary in data processing and software tools are required for
this purpose. Two alternate approaches are (1) ﬁt the numerical velocity functions with an n
th
order polynomial and perform the necessary integrations using polynomial integration rules, or (2)
implement a numerical integration scheme for the conversion formulae. The second approach is
taken here.
Five functions are available to convert velocity functions from one form to another. There is also
a utility plotting function to draw piecewise constant lines.
vint2t Computes vertical traveltime given interval velocity versus depth.
vint2vave Converts interval velocity to average velocity.
vave2vint Converts average velocity to interval velocity.
vint2vrms Converts interval to rms velocity.
vrms2vint Converts rms velocity to interval velocity.
drawvint Plots interval velocity curves as piecewise constant functions.
No utility is provided to deal with instantaneous velocity since this can be treated simply by
generating a ﬁnely sampled interval velocity. Like seismic traces, velocity functions are speciﬁed
by prescribing two vectors, one for the velocities and the other for the depth or time that they
apply. Interval velocities are inherently piecewise constant and the convention used here is that the
k
th
velocity, ·
k
prescribed at depth .
k
, persists as a constant until depth .
k+1
. Therefore, the last
velocity in a velocity vector applies for all . greater than the last entry in the depth vector.
As a ﬁrst example of the use of these functions, suppose that ·
ins
(.) is a piecewise linear function
with ﬁve “knees” prescribed by (·, .) pairs as (1200 m/s, 0 m), (2700 m/s, 500 m), (3500 m/s, 1400
m), (3000 m/s, 1600 m), (4000 m/s, 2000 m). Code Snippet 4.8.1 shows how to compute ·
ins
(τ) for
4.8. MATLAB VELOCITY TOOLS 87
this ·
ins
(.) and displays its results in Figure 4.9. Line 2 uses piecewise linear interpolation (pwlint )
to resample the ﬁve legged function to a ﬁne interval so that the piecewise constant interval velocity
approximates the desired piecewise linear instantaneous velocity. Line 5 computes τ(.) by calling
vint2t and thus deﬁning ·
ins
(τ). (Note that the vint2t returns oneway time so these values must
be doubled for twoway time.)
Code Snippet 4.8.1. This code deﬁnes a ﬁve legged, piecewise linear ·
ins
(.) and then computes
·
ins
(τ). It makes Figure 4.9.
1 v=[1200 2700 3500 3000 4000];z=[0 500 1400 1600 2000];
2 z2=0:10:2000;v2=pwlint(z,v,z2);
3 subplot(1,2,1);plot(v2,z2,v,z,’r*’);flipy
4 xlabel(’meters/sec’);ylabel(’meters’);
5 t2=vint2t(v2,z2);
6 t=interp1(z2,t2,z);
7 subplot(1,2,2);plot(v2,t2,v,t,’r*’);flipy;
8 xlabel(’meters/sec’);ylabel(’seconds’);
End Code
The computation of τ(.) requires the numerical computation of the integral in equation (4.3).
Given a densely sampled function, the simplest way to do a numerical integration is with the functions
sum and cumsum. The diﬀerence between these is that the ﬁrst does a deﬁnite integral while the
second does an indeﬁnite integral. For example, the command sum([1:5].ˆ2) just adds the squares
of the integers from 1 to 5 to get 55. This is a discrete approximation to the deﬁnite integral of the
function j = r
2
from .5 to 5.5 for which the analytic answer is (5.5
3
−.5
3
),3 ≈ 55.4167. Alternatively
cumsum([1:5].ˆ2) has the result [1, 5, 14, 30, 55] which gives the value of the integral of j = r
2
for a
lower limit of .5 and ﬁve successive upper limits of 1.5, 2.5, 3.5, 4.5, and 5.5 . Thus sum approximates
_
5.5
.5
r
2
dr and is just a single number while cumsum approximates
_
x
.5
˜ r
2
d˜ r and results in a vector the
same length as the input. Thus, the traveltime integration of equation (4.3) is done within vint2t
with the single command t1(2:nz)=cumsum(dz./vint(1:nz1)). The vector t1 is τ(.) and has
been initialized to zero, dz is a vector of the depth intervals, and vint is the interval velocity vector.
(For more details, browse the source code ﬁle.)
Often velocity functions from well logs do not begin at . = 0. Therefore the computation of τ(.)
from . = 0 requires that some initial velocity be used for the depth range above the log. This can
be input to vint2t , in the form of a constant time shift τ
0
, as the fourth argument. τ
0
defaults
to τ
0
= .(1),·(1), that is the ﬁrst depth divided by the ﬁrst velocity. This can be estimated if the
depth and time to some marker formation top are already known. Then vint2t can be run once
with the initial velocity set to zero, and the time to the marker can be observed to be oﬀ by some
∆τ in oneway time.
Now consider the computation of ·
rms
(τ) and the construction of a ten layer approximation to
·
ins
(τ) using interval rms velocities. This is done in Code Snippet 4.8.2 and the result is shown in
Figure 4.10. Line 2 creates the dense ·
rms
(τ) function using vint2vrms shown as curve ‘b’ in the
ﬁgure. Line 3 deﬁnes a blocky ten legged time vector and line 4 creates the coarse ·
rms
(τ) (curve
‘c’) by calling vint2vrms with a third argument. Essentially, this is just a desampled version of
the ﬁnely sampled ·
rms
(τ). (It was not necessary to create the ﬁnely sampled ·
rms
(τ) as this was
done to demonstrate the software.) Finally line 6 creates the interval rms approximation to ·
ins
(τ)
by sending the coarse ·
rms
(τ) to vrms2vint .
Code Snippet 4.8.2. This carries on after Code Snippet 4.8.1 to compute: ·
rms
from the sur
face for every point in ·
ins
(τ) a ten point sparse ·
rms
(τ) and a tenlegged rmsinterval velocity
approximation to ·
ins
(τ). Figure 4.10 is the result.
88 CHAPTER 4. VELOCITY
Receivers
R
e
c
e
i
v
e
r
s
r ∆r +
. ∆. 
r
θ
θ
t
i
:
c
+
∆
t
.
t
w
a
v
e
f
r
o
n
t
a
t
t
i
m
e
t
Figure 4.11: An impulsive plane wave ap
proaches horizontal and vertical receiver arrays
Receivers
r ∆r +
r
. ∆. 
.
θ
λ
λr
λ.
Figure 4.12: Similar to Figure 4.11 except that
the plane wave is monochromatic.
1 plot(v2,t2,v,t,’r*’);flipy
2 vrms=vint2vrms(v2,t2);
3 tblock=linspace(min(t2),max(t2),10);
4 vrmsblock=vint2vrms(v2,t2,tblock);
5 drawvint(t2,vrms);drawvint(tblock,vrmsblock);
6 vint=vrms2vint(vrmsblock,tblock);
7 drawvint(tblock,vint);
8 xlabel(’meters/sec’);ylabel(’seconds’);
End Code
Exercise 4.8.1. Load the ﬁle vp_from_well.mat that contains a vector of Pwave velocities and a
corresponding vector of depths. Create two tenleg intervalvelocity approximations to ·
ins
(.) one
using average velocities and one using rms velocities. Compare the accuracy of time to depth con
version using these two alternate approximations. (For time to depth conversions, compute average
velocities from both interval velocity functions). Is there any signiﬁcant diﬀerence?
Exercise 4.8.2. Create a function called vrms2vave that converts average velocities to rms ve
locities. Then create the inverse function vave2vrms. Test your codes with the universal velocity
function by comparing with the analytic forms for ·
rms
and ·
ave
.
Exercise 4.8.3. Working with the universal velocity function, create ·
rms
(τ) for the depth range of
0 to 3000 m. Then use MATLAB’s random number generator, rand, to add a 2% random ﬂuctuation
to the ·
rms
(τ) function. Finally calculate ·
ins
(τ) from the perturbed ·
rms
(τ) function and determine
the percentage error in the ·
ins
(τ) estimates caused by the 2% error in ·
rms
(τ). What does this say
about the sensitivity of interval velocity calculations to noise?
4.9 Apparent velocity: v
r
, v
j
, v
.
Consider a wavefront arriving at an array of detectors. For simplicity, use only two dimensions, (r, .),
and let the wavefront make an angle θ with respect to the horizontal (θ is called the emergence angle
of the wave). The detectors are spaced at intervals of ∆r at . = 0 (Figure 4.11). If the medium
4.9. APPARENT VELOCITY: \
X
, \
Y
, \
Z
89
immediately beneath the receivers has the acoustic velocity, ·
0
, then the wavefront arrives at r+∆r
later than it does at r by the delay
∆t =
sin θ
·
0
∆r. (4.33)
Thus it appears to move along the array at the speed
·
x
≡
∆r
∆t
=
·
0
sin θ
. (4.34)
The quantity ·
x
is called an apparent velocity because the wavefront appears to move at that speed
even though its true speed is ·
0
. Apparent velocities are one of the four fundamental observables in
seismic data, the others being position, time and amplitude. The apparent velocity is never less than
the real velocity and can range up to inﬁnity. That is ·
0
≤ ·
x
≤ ∞. Since inﬁnities are cumbersome
to deal with it is common to work with the inverse of ·
x
, called the timedip, ∆t/∆r or horizontal
slowness, :
x
. Another common convention for horizontal slowness is to call it j which signiﬁes the
ray parameter.
Now, enlarge the thought experiment to include an array of receivers in a vertical borehole and
spaced at ∆.. Reasoning similar to that used before shows that the arrival at . − ∆. is delayed
from that at . by
∆t =
cos θ
·
0
∆.. (4.35)
Therefore, the vertical apparent velocity, ·
z
, is
·
z
≡
∆.
∆t
=
·
0
cos θ
. (4.36)
Using simple trigonometry, it results that
1
·
2
0
=
1
·
2
x
+
1
·
2
z
. (4.37)
If this argument is extended to 3D, the result is that there is an apparent velocity in the j direction
as well and that the sum of the inverse squares of the apparent velocities is the inverse square of the
real velocity:
1
·
2
0
=
1
·
2
x
+
1
·
2
y
+
1
·
2
z
. (4.38)
We observe apparent velocity, or equivalently timedip, by simply choosing an event of interest on
a seismic record and measuring the slope, ∆t/∆r. It will be seen shortly that this is a measurement
of the ray parameter of the ray associated with the chosen event. Knowledge of the ray parameter
essentially determines the raypath, provided that the velocities in the subsurface are known. This
allows the ray to be projected down into the earth and to possibly determine it’s reﬂection point.
This technique, called raytrace migration, will be discussed in section 5.2.2.
Another way to measure apparent velocities is with a multidimensional Fourier transform. In
2D for example, the fk transform represents a seismic record on a grid of horizontal wavenumber,
/
x
, and temporal frequency, ). Each point in the (/
x
,)) plane has a complex number associated
with it that gives the amplitude and phase of a fundamental Fourier component: c
2πi(kxx−ft)
. In
3D these fundamental components are monochromatic (i.e. a single )) plane waves so in 3D or 2D
they are called Fourier plane waves. These waves are inﬁnite in extent so they have no speciﬁc
arrival time. However, it does make sense to ask when a particular wave crest arrives at a particular
90 CHAPTER 4. VELOCITY
location. Mathematically, a wave crest is identiﬁed as a point of constant phase where phase refers
to the entire argument of the complex exponential. If the Fourier transform has the value ¹c
iφ
at
some (/
x
,)), then the Fourier plane wave at that point is ¹c
2πi(kxx−ft)+iφ
. The motion of a point
of constant phase is tracked by equating the phase at (r, t) with that at (r + ∆r, t + ∆t) as in
2πi(/
x
r −)t) + iφ = 2πi(/
x
(r + ∆r) −)(t + ∆t)) + iφ (4.39)
from which it follows that
∆r
∆t
=
)
/
x
. (4.40)
Thus the ratio of ) to /
x
determines the horizontal apparent velocity of the Fourier plane wave
at (/
x
,)). Radial lines (from the origin) in the (/
x
,)) plane connect points of a common apparent
velocity. The advantage of the Fourier domain lies in this simultaneous measurement of apparent
velocity for the entire seismic section. The disadvantage is that the notion of spatial position of a
particular apparent velocity measurement is lost.
If equation (4.38) is evaluated for the Fourier plane wave c
2πi(kxx+kyy+kzz−ft)
the result is
1
·
2
=
/
2
x
)
2
+
/
2
y
)
2
+
/
2
z
)
2
. (4.41)
Now, for any monochromatic wave, we have λ) = · and, using / = λ
−1
, then equation (4.41) leads
to
/
2
= /
2
x
+ /
2
y
+ /
2
z
. (4.42)
This very important result shows that the coordinate wavenumbers, (/
x
,/
y
,/
z
), are the components
of a wavenumber vector,
/. Using a position vector, : = (r, j, .), the Fourier plane wave can be
written compactly as c
2πi(
k·r−ft)
. Equation (4.42) can be expressed in terms of apparent wavelengths
(e.g. /
x
= λ
−1
x
, ctc.) as
1
λ
2
=
1
λ
2
x
+
1
λ
2
y
+
1
λ
2
z
. (4.43)
which shows that, like apparent velocities, the apparent wavelengths are always greater than the
true wavelength. An important property of the wavenumber vector is that it points in the direction
of wave propagation (for an isotropic, homogeneous medium). An easy way to see this is to take the
gradient of the phase of a Fourier plane wave. Since the wavefront is deﬁned as a surface of constant
phase, then wavefronts can be visualized as contours of the phase function
˜
φ = πi(
/ : − )t). The
gradient of this phase function points in the direction normal to the wavefronts, that is the direction
of a raypath. This gradient is
∇
˜
φ =
∂
˜
φ
∂r
ˆ r +
∂
˜
φ
∂j
ˆ j +
∂
˜
φ
∂.
ˆ . (4.44)
where ˆ r, ˆ j, and ˆ . are unit vectors in the coordinate directions. Calculating the indicated partial
derivatives leads to
∇
˜
φ = /
x
ˆ r + /
y
ˆ j + /
z
ˆ . =
/. (4.45)
This equation can be achieved more simply by writing
∇ = ˆ :
∂
∂r
, where : =
_
(r
2
+ j
2
+ .
2
) and ˆ :
is a unit vector pointing to a particular location, so that
∇
˜
φ = ˆ :
∂
/ :
∂:
= ˆ :
¸
¸
¸
/
¸
¸
¸ =
/. (4.46)
4.10. SNELL’S LAW 91
medium 1
medium 2
∇˜φ=∂˜φ∂rˆr+∂˜φ∂jˆj+∂˜φ∂.ˆ.
θ
ϕ
ϕ
θ
x
x
δ
z
z
λ
1
λ
2
δ
Figure 4.13: Snell’s law results from the physical requirement that the apparent velocity
along an interface be conserved.
So, the inverse apparent velocities are proportional to the components of the wavenumber vector
that points in the direction of wave propagation.
4.10 Snell’s Law
Snell’s law is the relation that governs the angles of reﬂection and refraction of wavefronts (or
equivalent raypaths) at velocity interfaces. To understand its origins, consider Figure 4.13 that
shows a periodic plane wave propagating across a planar interface between two media of velocity
·
1
and ·
2
. In the ﬁrst medium, the wavelength is λ
1
= ·
1
,) while in the second medium it
is λ
2
= ·
2
,). As the wavefronts cross the interface, they must do so in a continuous fashion,
otherwise, the wavefronts in the second medium would either lead or lag those in the ﬁrst medium.
Either possibility violates considerations of causality. The only way for the two wavefront systems
to maintain continuity across the interface, and still have diﬀerent wavelengths, is for them to have
diﬀerent angles with respect to the interface. The relationship between these angles follows from a
consideration of apparent velocity. Suppose an array of receivers were placed along the interface.
Then the requirement of wavefront continuity means that the wavelength component measured along
the interface must be the same when evaluated in either medium. Since the frequency, f, does not
change (this is a property of linear wave propagation), the apparent velocities measured along the
interface must be the same in both media. Working in the rotated coordinates (r
, .
), the apparent
velocity ·
x
must give the same result when evaluated using ·
1
and θ as when using ·
2
and φ. Thus
·
1x
≡
·
1
sin θ
= ·
2x
≡
·
2
sin φ
. (4.47)
This result is called Snell’s law. The angles involved in Snell’s law can be considered as the angles
between the wavefronts and the interface or between the raypaths and the normal to the interface.
Snell’s law can be derived in other ways, perhaps the most common being to demonstrate that
it is a consequence of requiring the raypaths correspond to stationary traveltimes. This is known as
Fermat’s principle. Physically, waves can propagate energy from point A to point B along inﬁnitely
many diﬀerent paths. Fermat’s principle says that the most important paths are those for which the
traveltime is stationary with respect to slight variations of the path. Here, stationary most often
means a minimum though there are important physical situations for which traveltime is maximized.
The derivation of Snell’s law given here makes it clear that it applies to reﬂected as well as
92 CHAPTER 4. VELOCITY
·
o
.
o
θo
φ1
θ1
θ:
φo
φ1
φ:
·
1
·
:
·
¸
.
1
.
:
.
¸
Figure 4.14: In a ·(.) medium, all velocity interfaces are horizontal and ray propagation
is especially simple.
transmitted energy. In an acoustic medium, where there is only one mode of wave propagation, this
results in the angle of incidence and the angle of reﬂection being equal. However, in elastic media,
the incident and reﬂected waves can be either Pwaves or Swaves. For example, in the case of an
incident Pwave reﬂecting as an Swave, Snell’s law states
sin θ
p
·
p
=
sin θ
s
·
s
. (4.48)
As a ﬁnal summary statement, Snell’s law states that wavefront propagation across a velocity inter
face always conserves the apparent velocity along the interface. Though it is not proven here, this
holds for arbitrary wave types and for nonplanar wavefronts and interfaces.
4.11 Raytracing in a v(z) medium
A ·(.) medium is one where ∂
x
· = ∂
y
· = 0 and all velocity interfaces are horizontal. In this case,
Snell’s law says that the horizontal apparent velocity of the wavefront associated with the ray is
conserved. Using the notation of Figure 4.14 this may be stated, for the j
th
interface, as
sin θ
j−1
·
j−1
=
sin φ
j
·
j
. (4.49)
Since all of the velocity interfaces are horizontal, φ
j
= θ
j
so that
sin θ
j−1
·
j−1
=
sin θ
j
·
j
. (4.50)
This analysis may be repeated at any other interface with a similar conclusion. Thus the quantity
j = sin θ
j
,·
j
is conserved throughout the entire wave propagation. j is generally referred to as the
ray parameter since it is a unique constant for any ray and so parameterizes (or names) the possible
rays. The conservation of j and its identiﬁcation as the horizontal apparent slowness is a direct
consequence of Snell’s law. This analysis generalizes to a continuous variation of · with . such that
j ≡
sin (θ(.))
·(.)
= a constant for any particular ray. (4.51)
4.11. RAYTRACING IN A \ (7) MEDIUM 93
θ( ) .
d.
dr
d:
Figure 4.15: A diﬀerential ray element d:, at depth ., and travelling at an angle θ(.) with
respect to the vertical.
General expressions for the traveltime and horizontal distance travelled by any ray in a v(z)
medium can be easily derived. Figure 4.15 shows a diﬀerential element of a ray. From the geometry,
it follows that
dr = tan (θ(.)) d. (4.52)
and
dt =
d:
·(.)
=
d.
·(.) cos (θ(.))
. (4.53)
Snell’s law is incorporated by replacing the trigonometric functions using j·(.) = :in(θ(.)) so that
dr =
j·(.)
_
1 −j
2
·
2
(.)
d. (4.54)
and
dt =
d.
·(.)
_
1 −j
2
·
2
(.)
. (4.55)
Expressions for macroscopic raypaths are obtained by simply integrating these results. For a ray
travelling between depths .
1
and .
2
, the horizontal distance travelled becomes
r(j) =
_
z2
z1
j·(.)
_
1 −j
2
·
2
(.)
d. (4.56)
and the total traveltime is
t(j) =
_
z2
z1
d.
·(.)
_
1 −j
2
·
2
(.)
. (4.57)
Given a velocity function and a ray parameter we can compute exactly the horizontal distance (oﬀset)
and traveltime for a ray that traverses between two depths. The diﬃculty is that it is usually desired
to trace a ray with a speciﬁc oﬀset and there is no simple way to determine the ray parameter that
will do this. Generally the process is iterative. The oﬀsets produced by a fan of rays (i.e. p values)
are examined and hopefully two p values will be found that bracket the desired oﬀset. Then a new,
reﬁned fan of rays can be constructed and the process repeated until a ray is found that produces
the desired oﬀset within a speciﬁed tolerance (called the capture radius).
If the ·(.) medium is discretely layered rather than continuously variable, then summation forms
94 CHAPTER 4. VELOCITY
Receivers s r
ZOOM
:
EmergentRay
θo
θo θo
: ∆
∆
Figure 4.16: The ray parameter can be measured directly by measuring the delay between
wavefront arrivals at successive receivers.
of equations (4.56) and (4.57) are more appropriate. These are easily seen to be
r(j) =
n
k=1
j·
k
_
1 −j
2
·
2
k
∆.
k
(4.58)
and
t(j) =
n
k=1
∆.
k
·
k
_
1 −j
2
·
2
k
. (4.59)
4.11.1 Measurement of the ray parameter
Given a seismic source record, the ray parameters for the upcoming waves arriving at the receiver
spread may be estimated by measuring the horizontal apparent velocity of each wave (see section
4.9). As shown in Figure 4.16, the emergence angle, θ
0
of a ray arriving at a particular pair of
receivers is
sin θ
0
=
·
0
∆t
∆:
(4.60)
where ·
0
is the instantaneous velocity immediately beneath the receivers, ∆: is the receiver spacing,
and ∆t is the time delay between the wavefront arrival at : and :+∆:. In arriving at this expression,
any wavefront curvature has been assumed to be inconsequential at the local site of measurement.
According to equation (4.51), the ray parameter is given by sinθ
0
,·
0
so
∆t
∆:
=
1
·
r
=
sin θ
0
·
0
= j. (4.61)
where ·
r
is the horizontal apparent velocity of the wave at the measurement location.
Generally, it is expected that j changes with position due to changes in emergence angle and due
to lateral variations in the instantaneous velocity. Horizontal events, i.e. waves travelling vertically
when they reach the receiver array, have a ray parameter of 0. Waves travelling horizontally across
the array have a ray parameter of 1,·
0
and on a seismic (r, t) plot have the maximum possible
4.11. RAYTRACING IN A \ (7) MEDIUM 95
r
t
/
r
)
A B
Figure 4.17: The physical considerations that place limits upon ray parameter manifest as
limits on the maximum timedip in (r, t) space (A) and segment (/
x
, )) space into allowed
and forbidden regions (B).
slope. Even though the wavefronts are vertical, the slope on the time section cannot exceed 1,·
0
.
Taking sign into account, the range of possible values for the ray parameter is −·
−1
0
≤ j ≥ ·
−1
0
.
This maximum possible steepness in (r, t) space is a fundamental property of a seismic time section.
Assuming a value for ·
0
in the course of data processing means that any events with slopes steeper
than ·
−1
0
are interpreted as nonphysical and must be rejected. Since apparent velocities can also
be expressed in (/
x
, )) space as ),/
x
(equation (4.40)), this phenomenon means that (/
x
, )) space
is segmented into allowed and forbidden regions.
Figure 4.17 shows this situation for both (r, t) and (/
x
, )) spaces. In (r, t) space, the fan of
allowed time dips forms a bowtie when plotted at a speciﬁc point, though such events may exist
all (r, t) locations. In (/
x
, )) space, the zero ray parameter plots vertically down the ) axis while
it is horizontal in (r, t). Thus the fan of allowed p values in (/
x
, )) forms a symmetric shape about
the ) axis. (Only one half of the bow tie is shown here because negative frequencies are generally
redundant for realvalued data.) In (/
x
, )) space, j values are found only along radial lines emanating
from the origin, not along lines of the same slope emanating from some other point. The portion
of (/
x
, )) space corresponding to [/
x
,)[ < ·
−1
0
(i.e. outside the shaded region in Figure 4.17B) is
“forbidden” to simple rays and is called the evanescent region. (It will be seen later that certain
exponentially decaying wave types can occur here.) The shaded portion of Figure 4.17B is called
the body wave region and is the portion of (/
x
, )) space that is available for seismic imaging.
4.11.2 Raypaths when v = v
0
+ cz
It is not diﬃcult to integrate equations (4.56) and (4.57) for the case of instantaneous velocity that
increases linearly with depth (e.g. the universal velocity function). The details can be found in
Slotnick (1959) pages 205211. Letting ·(.) = ·
0
+ c., .
1
= 0, and .
2
= ., the results are
r(., j) =
1
jc
_
_
1 −j
2
·
2
0
+
_
1 −j
2
¦·
0
+ c.¦
2
_
(4.62)
and
t(., j) =
1
c
ln
_
_
_
·
0
+ c.
·
0
_
_
_
1 +
_
1 −j
2
·
2
0
1 +
_
1 −j
2
¦·
0
+ c.¦
2
_
_
_
_
. (4.63)
Slotnick shows that equation (4.62) describes an arc of a circle, having radius 1,(jc) and centered
at r
0
=
_
1 −j
2
·
2
0
,(jc) and .
0
= −·
0
,c. Manifestly, equation (4.62) describes a ray as it goes from
zero to some depth z. Since velocity is always increasing in this case, the Snell’s law angles are always
getting larger as a ray goes deeper. Eventually the ray ﬂattens out, when θ(.) = sin
−1
(j·(.)) = 90
◦
,
96 CHAPTER 4. VELOCITY
0 5 10 15 20 25 30 35
0
5
10
15
20
25
30
35
x kilometers
z
k
i
l
o
m
e
t
e
r
s
Figure 4.18: A selection of raypaths are shown
for the universal velocity function of Figure 4.1.
Code Snippet 4.11.1 created this plot.
0 5 10 15 20 25 30 35
0
5
10
15
20
25
30
x kilometers
z
k
i
l
o
m
e
t
e
r
s
Figure 4.19: A set of wavefronts associated with
the raypaths of Figure 4.18. This was created
with Code Snippet 4.11.2.
and turns upward. Therefore, the depth at which a ray bottoms out, called its turning point, is
found from
.
max
=
1 −j·
0
jc
. (4.64)
The complete raypath for a ray that reaches its turning point and then returns to the surface
must have two values of r for each . so the function r(.) is mathematically double valued. However,
.(r) is still single valued so the complete raypath is most easily computed by solving equation (4.62)
for . to get
. =
1
jc
_
_
1 −¦jcr −cos θ
0
¦
2
−j·
0
_
. (4.65)
Code Snippet 4.11.1 implements equation (4.65) to create the raypath display shown in Figure 4.18.
This code establishes a horizontal distance range and a set of takeoﬀ angles on lines 13. Then, in
looping over the desired rays, it calculates a depth for each element of the vector x. However, many
of these rays will not cover the full range of x. Equation (4.65) returns a complex number for an x
distance that cannot be reached by a particular ray. Lines 1114 search for these points and replace
their depths with NaN. (Recall that NaN’s do not display when plotted.) Also, the code generates
. values that are negative so lines 1518 set these to NaN. The ray bending in Figure 4.18 is much
more realistic than a simple constant velocity calculation using straight rays. It shows that most
of the energy of a seismic source cannot penetrate to great depths because it is turned around by
refraction. All of the raypaths are obviously circular arcs whose centers move to the right as the ray
parameter decreases.
Code Snippet 4.11.1. This code implements equation (4.65) and makes Figure 4.18.
1 x=1:50:35000;
2 vo=1800;c=.6;nrays=10;
3 thetamin=5;thetamax=80;
4 deltheta=(thetamaxthetamin)/nrays;
5 zraypath=zeros(nrays,length(x));
6 for k=1:nrays
4.11. RAYTRACING IN A \ (7) MEDIUM 97
7 theta=thetamin+(k1)*deltheta;
8 p=sin(pi*theta/180)/vo;
9 cs=cos(pi*theta/180);
10 z = (sqrt( 1/(pˆ2*cˆ2)  (xcs/(p*c)).ˆ2) vo/c);
11 ind=find(imag(z)˜=0.0);
12 if(˜isempty(ind))
13 z(ind)=nan*ones(size(ind));
14 end
15 ind=find(real(z)<0.);
16 if(˜isempty(ind))
17 z(ind)=nan*ones(size(ind));
18 end
19 zraypath(k,:) = real(z);
20 end
21 figure;plot(x/1000,zraypath/1000);flipy;
22 xlabel(’x kilometers’);ylabel(’z kilometers’)
End Code
Slotnick also derives expressions for the wavefronts (surfaces of constant traveltime) and shows
them to be circles whose centers are along the . axis at
.
w0
=
·
0
c
[cosh(cT) −1] (4.66)
where T is the traveltime deﬁning the wavefront. Each circular wavefront has a radius of
: =
·
0
c
sinh(cT). (4.67)
Code Snippet 4.11.2 calculates and plots 10 wavefronts for a set of traveltimes from 0 to 5 seconds.
For each wavefront, the strategy is to calculate the center of the wavefront circle (line z) and its
radius (line 8). Then, for a predeﬁned set of depths (line 1) the horizontal positions are calculated
from the equation of a circle (line 9). As in the case of the raypaths, this results in both complex
and negative values which are found and set to NaN (lines 1017). The resulting wavefronts clearly
show the eﬀects of increasing velocity with depth, being more closely spaced at shallow depths than
when deeper. Figure 4.20 superimposes the raypaths and wavefronts and uses the command axis
equal to ensure a 1:1 aspect ratio. Clearly the raypaths are normal to the wavefronts.
Code Snippet 4.11.2. This code assumes that Code Snippet 4.11.1 has already been run and
proceeds from there to calculate and plot the wavefronts. Figure 4.19 is the result.
1 zw=0:50:30000;
2 nwaves=10;tmax=5;
3 xwavefront=zeros(nwaves,length(zw));
4 times=linspace(0,tmax,nwaves);
5 zo=zeros(1,nwaves);
6 for k=1:nwaves
7 zo(k)=vo*(cosh(c*times(k))1)/c;
8 r=vo*sinh(c*times(k))/c;%radius
9 xw=sqrt(r.ˆ2(zwzo(k)).ˆ2);
10 ind=find(real(xw)<0.);
11 if(˜isempty(ind))
12 xw(ind)=nan*ones(size(ind));
13 end
14 ind=find(imag(xw)˜=0.0);
15 if(˜isempty(ind))
16 xw(ind)=nan*ones(size(ind));
98 CHAPTER 4. VELOCITY
0 5 10 15 20 25 30
0
5
10
15
20
25
30
x kilometers
z
k
i
l
o
m
e
t
e
r
s
Figure 4.20: This ﬁgure superimposes the raypaths of Figure 4.18 onto the wavefronts of
Figure 4.19.
17 end
18 xwavefront(k,:) = real(xw);
19 end
20 figure;plot(xwavefront/1000,zw/1000);flipy;
21 xlabel(’x kilometers’);ylabel(’z kilometers’)
End Code
Exercise 4.11.1. Use equations (4.62) and (4.63) to calculate and plot the (r, t) curve for a PP
reﬂection from 2000 meters depth. Assume the universal velocity function and a source and receivers
at depth 0. Repeat your calculations for a PS reﬂection assuming a constant ·
p
,·
s
of 2. In each
case, what is the maximum sourcereceiver oﬀset for which a reﬂection is expected?
Exercise 4.11.2. Derive equations (4.62) and (4.63) from equations (4.56) and (4.57).
Exercise 4.11.3. For the linear increase of velocity with depth, a source at (r, .) = (0, 0), and
considering transmitted rays only, is there a unique j for each point in the (r, .) plane? Will your
conclusion remain valid for more general ·(.)?
4.11.3 MATLAB tools for general v(z) raytracing
The analytic expressions in the previous section produce ﬁrstorder realism by including the eﬀects
of ray bending when ·(.) is a linear function of depth. However, more accurate results are often
desired for complicated ·(.) such as those that result from well log measurements. In this case the
only way to proceed is through a numerical implementation of equations (4.56) and (4.57), or more
properly, equations (4.58) and (4.59). Usually, it is desired to trace rays between two speciﬁc points
such as a source and receiver, perhaps via a reﬂection at a speciﬁc depth. There is no known solution
technique that solves this two point raytracing problem in one step. Instead, an iterative procedure,
as alluded to on page 93, must be used.
For deﬁniteness, suppose it is desired to raytrace a PP reﬂection from a reﬂector at .
r
= 2000m
in an arbitrary ·(.) medium and for oﬀsets from 100 to 2000 m. Since a PP ray follows a completely
symmetric path (if source and receiver are at the same depth), it is suﬃcient to trace a ray from
4.11. RAYTRACING IN A \ (7) MEDIUM 99
. = 0 to . = .
r
at oﬀset r,2 and then double the results. However, equation (4.56) does not easily
facilitate this since the value of j that will do the job is not known. If velocity were constant, then
simple geometry would predict the takeoﬀ angle of θ
0
= arctan(r,(2.
r
)) and thus the ray parameter
is trivially found. For increasing velocity with depth, the takeoﬀ angle will be smaller than that
predicted with constant velocity while for decreasing velocity with depth the situation is reversed.
In the general case, the takeoﬀ angle and hence the ray parameter and cannot be found analytically.
There are seven functions and one demonstration script provided for ·(.) raytracing. These are
rayfan Shoots a fan of rays given their ray parameters for v(z).
rayfan a Similar to rayfan but the rays are speciﬁed by angle.
shootray Similar to rayfan but with less error checking (faster).
traceray pp Traces a PP (or SS) reﬂection for v(z).
traceray ps Traces a PS (or SP) reﬂection for v(z).
traceray Traces an arbitrary ray given its raycode for v(z).
drawray Plots rays given their ray parameters.
raytrace demo Interactive demonstration of v(z) raytracing capabilities.
The approach taken here is to shoot a fan of rays and to iteratively reﬁne the fan until a
convergence criterion is met. For a general case, this iteration will shoot many fans of rays so the
ray fan algorithm needs to be very eﬃcient. The functions rayfan , rayfan a , and shootray all
performs this task in s similar fashion. However, only the latter is actually used in the twopoint
raytracers, traceray pp , traceray ps , and traceray , because it is the most eﬃcient. However,
the eﬃciency of shootray is achieved at the sacriﬁce of some ﬂexibility so rayfan and rayfan a
are provided as well.
As shown in Code Snippet 4.11.3, shootray has three inputs: v, z, and p that are (respectively)
column vectors of velocity and depth and a row vector of ray parameters. The vector of rays deﬁned
by p is traced from z(1) to z(end) using the velocities in v. As discussed in section 4.8, the velocity
model is assumed to be piecewise constant, with velocity v(k) beginning at z(k) and persisting as
a constant until z(k+1). Accordingly, the last velocity in v is irrelevant for shootray , and line 3
establishes an index vector to the relevant velocities. Lines 4 through 8 are key to the eﬃciency
of shootray . On line 4, v(iprop) is an : length column vector and p is an n length row vector.
This product of an :1 matrix representing ·(.) with an 1 n matrix representing j is an :n
matrix of sin θ = j·(.) called sn. The k
th
column of sn represents the product j·(.) for the k
th
ray parameter. Line 6 builds the matrix cs that represents cos θ(.) =
_
1 −j
2
·
2
(.). Lines 7 and
8 build the : n matrices vprop and thk that represent ·(.) and ∆. for each ray. Since these
quantities are the same for each ray, they are represented by matrices with identical columns. Thus,
we have four :n matrices, with . as the row coordinate and j as the column coordinate. Not all
of these combinations of . and j can correspond to physical rays since the depth of penetration of
a ray is limited. Line 5 detects these nonphysical combinations by ﬁnding any values of j·(.) that
are greater than one.
Code Snippet 4.11.3. The function shootray shoots a fan of rays as deﬁned by the row vector p
from z(1) to z(end) through the velocity model deﬁned by the column vectors v and z.
100 CHAPTER 4. VELOCITY
1 function [x,t]=shootray(v,z,p)
2 ... code not displayed ... see shootray.m
3 iprop=1:length(z)1;
4 sn = v(iprop)*p;
5 [ichk,pchk]=find(sn>1);
6 cs=sqrt(1sn.*sn);
7 vprop=v(iprop)*ones(1,length(p));
8 thk=abs(diff(z))*ones(1,length(p));
9 if(size(sn,1)>1)
10 x=sum( (thk.*sn)./cs);
11 t=sum(thk./(vprop.*cs));
12 else
13 x=(thk.*sn)./cs;
14 t=thk./(vprop.*cs);
15 end
16 %assign infs
17 if(˜isempty(ichk))
18 x(pchk)=inf*ones(size(pchk));
19 t(pchk)=inf*ones(size(pchk));
20 end
End Code
The ray tracing is completed in lines 9 through 15 and an if statement is used to handle the
single layer case. Using the :n matrices thk, sn, cs, line 10 computes equation (4.58) by using
the .* operator to form the expression j·
k
∆.
k
,
_
1 −j
2
·
2
k
as an :n matrix. Then, as discussed
in section 4.8, the function sum is used to compute the discrete sum that approximates the integral
in equation (4.56). When applied to a matrix, sum produces a row vector that is the sum of each
column of the matrix. This behavior dictated the construction of the :n matrices with j constant
in each column. The if statement is required for the single layer case also because of the behavior
of sum. If there is only one layer, then the : n matrices are all 1 n row vectors. When given
a row vector, sum adds its entries to get a single value instead of “summing” the columns of length
1. The if statement circumvents this behavior by omitting the sum entirely in the single layer case.
The ﬁnal step, lines 17 through 20 assigns Inf to those nonphysical values that were ﬂagged earlier
on line 5.
The function shootray does not check for consistency of the inputs to ensure that v and z are
column vectors and p is a row vector. Also, it lacks ﬂexibility to specify the start and end depths
and always shoots the rays from z(1) to z(end). rayfan traces rays with the same scheme as
shootray but incorporates error checking and allows the start and end depths to speciﬁed. This
makes rayfan easier to use but slower. shootray is intended to be used within a larger raytracing
scheme while rayfan is more easily used from the command line.
The twopoint ray tracing functions traceray pp , traceray ps , and traceray all work simi
larly with an iterative scheme involving multiple calls to shootray . The codes are quite intricate
and will not be displayed. traceray pp and traceray ps are constructed to trace PP and PS
primary reﬂections and nothing else. traceray is more general and can trace an arbitrary ray
that has multiple bounces (reﬂections) and mode conversions. All three codes use similar schemes
of building an equivalent layered model that allows the problem to be addressed by shooting rays
in one direction only. For example, the PP reﬂection problem requires a ray to be traced down
through a set of layers to a speciﬁed depth and then back up again though nearly the same set of
layers. (It will be exactly the same set if the source and receiver depths are the same.) Instead of
this twoway problem, a oneway problem is set up by determining the layers for the upgoing leg
and placing them beneath the reﬂector in the order that they are encountered (Figure 4.21). The
layers containing the source, receiver, and reﬂector are adjusted in thickness so that shootray can
4.11. RAYTRACING IN A \ (7) MEDIUM 101
·
o
·
1
·
:
·
¸
·
¸
·
¸
·
6
·
¿
·
8
·
µ
:on:cc
:ccci·c:
·
o
·
1
·
:
·
¸
·
¸
·
¸
·
6
·
¿
·
8
·
µ
·
1
·
:
·
¸
·
¸
·
¸
·
6
·
¿
·
8
:on:cc
:ccci·c:
¹
1
Figure 4.21: (A) A PP reﬂection between a source and receiver at diﬀerent depths. (B)
The equivalent oneway raypath to the twoway ray shown in (A). The dashed line is the
reﬂector in both cases.
be used to trace rays from z(1) to z(end). A similar equivalent layering can always be constructed
for a ray that changes mode (between P and S) and that takes any number of extra bounces. In the
former case, the equivalent layering simply must use the correct velocities. In the latter case, the
equivalent layering can contain many repeats of a section. This is a technically simple scheme for
computing any ray in ·(.).
The twopoint raytracing functions can all trace rays from a single starting point to multiple
receivers at once. That is, they are vectorized to produce simple source gathers. Though the source
depth need not equal the receiver depth, if multiple receivers are speciﬁed, they must all be at the
same depth. This means that geometries like that of a VSP must be handled by calling the ray
tracer separately for each receiver depth. All three programs iterate until all receivers have a ray
traced within a capture radius of their position or until a maximum number of iterations is reached.
A capture radius is the radius of an imaginary circle around each receiver which, if a ray falls within
it, is considered “good enough” for that receiver. If the ﬂag optflag is set to 1, then the actual
traveltime and ray parameter returned are linearly interpolated between the captured ray and the
next closest ray. If optflag is zero, then the captured ray is used directly.
Unlike many raytracers, the codes here can reﬂect, or mode convert, a ray at any depth not just
at a layer boundary. Though this may not be physically correct, it allows the common (and very
practical) practice of separating the reﬂectivity from the propagation model. The idea is that the
rays are traced through a simpliﬁed background medium which is chosen to give suﬃciently accurate
traveltimes for the task at hand. Reﬂections are assumed to come from a level of detail beyond that
required for the traveltime calculations. For example, a linear variation of ·(.) may be used with
locally determined constants as a background velocity function. Of course, the user who disagrees
with this approach is free to prescribe reﬂections at actual velocity layer boundaries.
Code Snippet 4.11.4 exhibits the use of traceray pp and traceray ps to model PP and PS
reﬂections with the universal velocity function as the background medium. The results are shown
in Figures 4.22 and 4.23. Line 1 deﬁnes the ·
p
and ·
s
velocity models with a ·
p
,·
s
of 2. Lines 2
and 3 establish the basic geometry of source, receivers, and reﬂector. The capture radius is set to
10% of the receiver spacing and the maximum number of iterations is set to 4 which is adequate for
smooth media. The call to traceray pp is on line 7 and the ﬁnal parameter dflag instructs the
102 CHAPTER 4. VELOCITY
0 500 1000 1500 2000 2500 3000
0
1000
2000
3000
Vertical gradient simulation, P−P mode zsrc=100 zrec=500
meters
m
e
t
e
r
s
1000 1500 2000 2500 3000
2
2.1
2.2
2.3
meters
s
e
c
o
n
d
s
Figure 4.22: A PP reﬂection is shown for a
background medium of ·
p
(.) = 1800 + .6.m/s.
See Code Snippet 4.11.4.
0 500 1000 1500 2000 2500 3000
0
1000
2000
3000
Vertical gradient simulation, P−S mode zsrc=100 zrec=500
meters
m
e
t
e
r
s
1000 1500 2000 2500 3000
2.8
3
3.2
3.4
meters
s
e
c
o
n
d
s
Figure 4.23: A PS reﬂection is shown for a back
ground medium of ·
s
(.) = 900 + .3.. See Code
Snippet 4.11.4
program to draw the rays into the current ﬁgure window. Lines 9 and 10 draw symbols indicating
the source and receiver and line 12 plots the traveltime in the bottom half of the ﬁgure. Lines 1522
are very similar except that traceray ps is called to create a PS reﬂection. An SP reﬂection could
be created by reversing the order of the velocity arguments (i.e.traceray ps(vs,zs,vp,zp,...)).
Similarly, an SS reﬂection can be modelled using traceray pp and providing it with the Swave
velocity functions.
Code Snippet 4.11.4. This example raytraces a PP and a PS reﬂection in a linear gradient
medium. It creates Figures 4.22 and 4.23.
1 zp=0:10:4000;vp=1800+.6*zp;vs=.5*vp;zs=zp;% velocity model
2 zsrc=100;zrec=500;zd=3000;%source receiver and reflector depths
3 xoff=1000:100:3000;caprad=10;itermax=4;%offsets, cap radius, and max iter
4 pfan=1;optflag=1;pflag=1;dflag=2;% default ray fan, and various flags
5 % create PP reflection
6 figure;subplot(2,1,1);flipy;
7 [t,p]=traceray_pp(vp,zp,zsrc,zrec,zd,xoff,caprad,pfan,itermax,optflag,...
8 pflag,dflag);
9 title([’Vertical gradient simulation, PP mode zsrc=’ ...
10 num2str(zsrc) ’ zrec=’ num2str(zrec)])
11 line(xoff,zrec*ones(size(xoff)),’color’,’b’,’linestyle’,’none’,’marker’,’v’)
12 line(0,zsrc,’color’,’r’,’linestyle’,’none’,’marker’,’*’)
13 grid;xlabel(’meters’);ylabel(’meters’);
14 subplot(2,1,2);plot(xoff,t);grid;
15 xlabel(’meters’);ylabel(’seconds’);flipy
16 % PS reflection
17 figure;subplot(2,1,1);flipy;
18 [t,p]=traceray_ps(vp,zp,vs,zs,zsrc,zrec,zd,xoff,caprad,pfan,itermax,...
19 optflag,pflag,dflag);
20 title([’Vertical gradient simulation, PS mode zsrc=’ ...
21 num2str(zsrc) ’ zrec=’ num2str(zrec)])
22 line(xoff,zrec*ones(size(xoff)),’color’,’b’,’linestyle’,’none’,’marker’,’v’)
23 line(0,zsrc,’color’,’r’,’linestyle’,’none’,’marker’,’*’)
24 grid;xlabel(’meters’);ylabel(’meters’);
4.11. RAYTRACING IN A \ (7) MEDIUM 103
0 500 1000 1500
0
1000
2000
3000
VSP Vertical gradient simulation, P−P mode
meters
m
e
t
e
r
s
1.4 1.6 1.8 2 2.2
500
1000
1500
2000
2500
seconds
d
e
p
t
h
(
m
e
t
e
r
s
)
Figure 4.24: A PP reﬂection is shown for an
oﬀset VSP. See Code Snippet 4.11.5.
0 500 1000 1500
0
1000
2000
3000
VSP Vertical gradient simulation, P−S mode
meters
m
e
t
e
r
s
1.5 2 2.5 3
500
1000
1500
2000
2500
seconds
d
e
p
t
h
(
m
e
t
e
r
s
)
Figure 4.25: A PS reﬂection for an oﬀset VSP
is shown. See Code Snippet 4.11.5.
25 subplot(2,1,2);plot(xoff,t);grid;
26 xlabel(’meters’);ylabel(’seconds’);flipy;
End Code
Often very interesting calculations can be done by calling these functions in a loop. For example,
since the receivers are required to be at a constant depth on each call to traceray pp a VSP cannot
be modelled with a single call. However, as Code Snippet 4.11.5 shows, the desired results can be
obtained by looping over receiver depth. Though not as eﬃcient in this mode, the calculation is still
simple and accurate. The parameter pfan is set to 2 in this case which causes the ray tracer to
start with the ﬁnal ray fan determined the last time it was called. The modelled events are shown
in Figures 4.24 and 4.25.
Code Snippet 4.11.5. This code traces PP and PS reﬂections for an oﬀset VSP by looping over
receiver depth. It creates Figures 4.24 and 4.25.
1 zp=0:10:4000;vp=1800+.6*zp;vs=.5*vp;zs=zp;%velocity model
2 zrec=500:100:2500;zsrc=0;zd=3000;xoff=1500;%geometry
3 caprad=10;itermax=4;%cap radius, and max iter
4 pfan=2;optflag=1;pflag=1;dflag=2;% default ray fan, and various flags
5 figure;subplot(2,1,1);flipy
6 t=zeros(size(zrec));
7 for kk=1:length(zrec);
8 if(kk==1)dflag=gcf;else;dflag=2;end
9 [t(kk),p]=traceray_pp(vp,zp,zsrc,zrec(kk),zd,xoff,caprad,pfan,...
10 itermax,optflag,pflag,dflag);
11 end
12 title([’ VSP Vertical gradient simulation, PP mode ’])
13 line(xoff,zrec,’color’,’b’,’linestyle’,’none’,’marker’,’v’)
14 line(0,zsrc,’color’,’r’,’linestyle’,’none’,’marker’,’*’)
15 grid;xlabel(’meters’);ylabel(’meters’);
16 subplot(2,1,2);plot(t,zrec);
17 xlabel(’seconds’);ylabel(’depth (meters)’);grid;flipy;
18
19 figure;subplot(2,1,1);flipy;
104 CHAPTER 4. VELOCITY
0 500 1000 1500 2000 2500 3000
0
500
1000
1500
2000
2500
3000
A P−P−P−P−P−P−P−P−P−P mode in vertical gradient media
meters
m
e
t
e
r
s
1000 1200 1400 1600 1800 2000 2200 2400 2600 2800 3000
3.2
3.25
3.3
3.35
3.4
3.45
offset
t
im
e
Figure 4.26: A complicated multiple is shown
that remains a Pray throughout. See Code
Snippet 4.11.6
0 500 1000 1500 2000 2500 3000
0
500
1000
1500
2000
2500
3000
A P−S−S−S−S−P−P−P−P−S mode in vertical gradient media
meters
m
e
t
e
r
s
1000 1200 1400 1600 1800 2000 2200 2400 2600 2800 3000
4.65
4.7
4.75
4.8
4.85
4.9
offset
t
im
e
Figure 4.27: A complicated ray is shown that
converts back and forth from P to S as it
bounces. See Code Snippet 4.11.6
20 t=zeros(size(zrec));
21 for kk=1:length(zrec);
22 if(kk==1)dflag=gcf;else;dflag=2;end
23 [t(kk),p]=traceray_ps(vp,zp,vs,zs,zsrc,zrec(kk),zd,xoff,caprad,pfan,...
24 itermax,optflag,pflag,dflag);
25 end
26 title([’ VSP Vertical gradient simulation, PS mode ’])
27 line(xoff,zrec,’color’,’b’,’linestyle’,’none’,’marker’,’v’)
28 line(0,zsrc,’color’,’r’,’linestyle’,’none’,’marker’,’*’)
29 grid;xlabel(’meters’);ylabel(’meters’);
30 subplot(2,1,2);plot(t,zrec);
31 xlabel(’seconds’);ylabel(’depth (meters)’);grid;flipy;
End Code
As a ﬁnal example of these raytracing facilities, consider the calculation of a complicated mode
that takes multiple bounces and converts back and forth between P and S modes. This calculation
can be done with traceray and is shown in Code Snippet 4.11.6. The key idea here is to use a
ray code that deﬁnes the depths and mode types of the diﬀerent legs of the raypath. A ray code is
an n 2 matrix with the ﬁrst column being a list of depths and the second containing either the
integer 1 (Pwave) or 2 (Swave). For example, the ray code [0 1;1000 2;800 2;1000 1;100 1]
speciﬁes a Pray from depth 0 to 1000 m. At 1000 m it converts to an Sray and travels back up to
800 m and then back down to 1000 m while remaining an Sray. On the second reﬂection at 1000
m it converts back to a Pray and travels up to 100 m where it ends. The ﬁnal entry in column two
is meaningless. Code Snippet 4.11.6 demonstrates this facility by creating a complicated multiple
bounce Pray (no mode conversions) on line 8 and a multimode ray on line 17. Generally, it might
be expected that signiﬁcant rays like this will be symmetric (i.e. the same bounce pattern on both
the up and down legs); however, creating an asymmetric ray is perhaps a better demonstration.
There are many more possible ways to use these raytracing facilities. For more examples, execute
the script raytrace demo and follow the onscreen instructions. The code of this script is similar
to the examples presented here and should be comprehensible.
4.12. RAYTRACING FOR INHOMOGENEOUS MEDIA 105
Code Snippet 4.11.6. Here is a demonstration of the use of traceray to compute multiplebounce
and multiplemode raypaths. This code creates Figures 4.26 and 4.27.
1 zp=0:10:4000;vp=1800+.6*zp;vs=.5*vp;zs=zp;
2 xoff=1000:100:3000;
3 caprad=10;itermax=4;%cap radius, and max iter
4 pfan=1;optflag=1;pflag=1;dflag=2;% default ray fan, and various
5
6 raycode=[0 1;1500 1;1300 1;2000 1;1800 1;3000 1;2000 1;2300 1;1000 1; 1500 1; 0 1];
7 figure;subplot(2,1,1);flipy
8 [t,p]=traceray(vp,zp,vs,zs,raycode,xoff,caprad,pfan,itermax,optflag,pflag,dflag);
9 title(’A PPPPPPPPPP mode in vertical gradient media’);
10 xlabel(’meters’);ylabel(’meters’)
11 line(xoff,zeros(size(xoff)),’color’,’b’,’linestyle’,’none’,’marker’,’v’)
12 line(0,0,’color’,’r’,’linestyle’,’none’,’marker’,’*’);grid
13 subplot(2,1,2);plot(xoff,t);
14 grid;flipy;xlabel(’offset’);ylabel(’time’)
15
16 raycode=[0 1;1500 2;1300 2;2000 2;1800 2;3000 1;2000 1;2300 1;1000 1; 1500 2; 0 1];
17 figure;subplot(2,1,1);flipy
18 [t,p]=traceray(vp,zp,vs,zs,raycode,xoff,caprad,pfan,itermax,optflag,pflag,dflag);
19 title(’A PSSSSPPPPS mode in vertical gradient media’);
20 xlabel(’meters’);ylabel(’meters’)
21 line(xoff,zeros(size(xoff)),’color’,’b’,’linestyle’,’none’,’marker’,’v’)
22 line(0,0,’color’,’r’,’linestyle’,’none’,’marker’,’*’);grid
23 subplot(2,1,2);plot(xoff,t);
24 grid;flipy;xlabel(’offset’);ylabel(’time’)
End Code
Exercise 4.11.4. Consider the velocity model deﬁned by
·
p
(.) =
_
¸
_
¸
_
1860 + .6. . . . 0 ≤ . < 1000:
3100 + .4(. −1000) . . . 1000 ≤ . < 1550:
2750 + .7(. −1550) . . . 1550 ≤ .
and ·
p
,·
s
of 2. Create a display showing the PP and PS raypaths for sourcereceiver oﬀsets from
10 to 3010 at 100 meter intervals for a reﬂector at a depth of 2500 m. Let the source and receivers
be a . = 0 Make another plot showing the angle of incidence on the reﬂector (in degrees) versus
oﬀset for both PP and PS reﬂections.
Exercise 4.11.5. For the velocity model in the previous exercise, what is the largest oﬀset that can
be successfully raytraced for the reﬂector at . = 2500m for both PP and PS reﬂections. Explain
why the ray tracing fails. How do these conclusions change if the reﬂector is at 1500 m?
4.12 Raytracing for inhomogeneous media
Raytracing for more general settings that the v(z) method described in the previous setting can
be done by detailing the velocity ﬁeld on a grid in two or three dimensions and then shooting
rays through it. The ray trajectories are found by solving a certain diﬀerential equation that can
be derived from the wave equation. An alternative to the gridded velocity model is to specify
the geometry of geologic interfaces between diﬀerent velocity units (layers) and then to prescribe
the velocity of each unit by a simple analytic function (e.g. constant velocity layers). Rays are
then traced through the model by using analytic results within with layers and explicit Snell’s law
106 CHAPTER 4. VELOCITY
calculations at the interfaces. The ﬁrst approach is generally simpler because the raytracing can
be reduced to the solution of an ordinary diﬀerential equation that implicitly incorporates Snell’s
law. In the second approach, the description of the geologic interfaces must be done with great
care to ensure that they connect without overlap or voids and this can require complex geometric
calculations. Furthermore, it is generally a complex matter to determine the next interface that a
ray will encounter. However, for three dimensional simulations, the gridded model approach can
rapidly consume a great deal of computer memory and can rapidly become impractical. This is
especially true if rays are to be traced through a complex structure that lies far beneath a simple
one. In this case, the grid must be made quite small for the complex structure which results in too
much detail for the upper medium. In this book, only the gridded approach in two dimensions will
be explored.
4.12.1 The ray equation
A reasonable expectation for inhomogeneous media is that individual temporal frequencies can be
represented with a mathematical form that is similar to that for a Fourier plane wave. In two or
three dimensions, a Fourier plane wave has the form ¹c
2πi(ft±
k·x)
where
/ and r are the wavenumber
and position vectors. By analogy, for the variablevelocity scalar wave equation
∇
2
ψ −
1
·
2
(r)
∂
2
ψ
∂t
2
= 0 (4.68)
an approximate planewave solution will now be assumed in the form
ψ(r, t) = ¹(r)c
2πif(t−T(x))
(4.69)
where ¹(r) and T(r) are unknown functions describing amplitude and traveltime that are expected
to vary with position. In the constant velocity limit, ¹ becomes constant while T still varies rapidly
which leads to the expectation that variation in ¹ will often be negligible compared with variation
in T. Substitution of equation (4.69) into equation (4.68) will require computation of the Laplacian
of the assumed solution. This is done as
∇
2
ψ(r, t) =
∇
∇
_
¹(r)c
2πif(t−T(x))
_
=
∇
_
c
2piif(t−T)
∇¹−2πi¹c
2πif(t−T)
∇T
_
(4.70)
which can be expanded as
∇
2
ψ(r, t) =
_
∇
2
¹−4πi)
∇¹
∇T −4π
2
)
2
¹
_
∇T
_
2
−2πi)¹∇
2
T
_
c
2πif(t−T(x))
. (4.71)
Then, using this result and ∂
2
t
ψ(r, t) = −4π
2
)
2
¹c
2πif(t−T(x))
in equation (4.68) and equating real
and imaginary parts gives the two equations
_
∇T
_
2
−
∇
2
¹
4π
2
)
2
¹
−
1
·(r)
2
= 0 (4.72)
and
¹
2
∇
2
T −
∇¹
∇T = 0. (4.73)
So far, these results are exact and no simpliﬁcation has been achieved. However, the second term
in equation (4.72) is expected to be negligible when velocity gradients are weak or when frequencies
4.12. RAYTRACING FOR INHOMOGENEOUS MEDIA 107
1
1
1
:
dr
T
1
T
:
Figure 4.28: A diﬀerential raypath element dr extends from a point 1
1
on a wavefront at
time T
1
to a point 1
2
on a wavefront at time T
2
. The ray segment is perpendicular to
both wavefronts and has length [dr[ = ∆:.
are high regardless of the velocity gradient. When this term is discarded, the result is the nonlinear,
partialdiﬀerential equation called the eikonal equation
_
∇T
_
2
−
1
·(r)
2
= 0. (4.74)
Though not exact, for many realistic situations, a solution to the eikonal equation gives accurate
traveltimes through complex media. Equation (4.73) is called the geometrical spreading equation
because its solution can be shown to describe the ﬂow on energy along a raypath.
The diﬀerential equation for raypaths is the vector equation that is implied by the eikonal equa
tion (4.74). For isotropic media, raypaths are normal to the wavefronts and the latter are described
as surfaces where T(r) = con:tont. Therefore,
∇T must be a vector that points in the direction of
the raypath and the eikonal equation shows that
¸
¸
¸
∇T
¸
¸
¸ = ·
−1
. Consider a wavefront at time T
1
(r
1
)
and another at a slightly later time T
2
(r
2
) where T
2
− T
1
is very small. Let 1
1
be a point on the
surface T
1
and 1
2
be the corresponding point on T
2
along the normal from 1
1
(Figure 4.28). Then
∆: = (T
2
(1
2
)−T
1
(1
1
)),·(1
1
) is an estimate of the perpendicular distance between these wavefronts,
and
∇T(1
1
) = lim
P2→P1
T
2
(1
2
) −T
1
(1
1
)
∆:
ˆ : =
ˆ :
·(1
1
)
(4.75)
where ˆ : is a unit vector that is normal to the surface T
1
(1
1
) or, in other words, ˆ : points along the
raypath. If dr is the diﬀerential vector pointing from 1
1
to 1
2
then ˆ : may be written
ˆ : =
dr
d:
(4.76)
where d: = [dr[ and : is the arclength along the raypath. Combining equations (4.75) and (4.76)
gives the raypath equation
∇T(r) =
ˆ :
·(r)
=
1
·(r)
dr
d:
. (4.77)
The traveltime T can be eliminated from equation (4.77) by calculating its derivative with respect
to arclength, which is
d
∇T
d:
=
d
d:
1
·
dr
d:
. (4.78)
108 CHAPTER 4. VELOCITY
The lefthandside of this equation can be simpliﬁed as follows
d
∇T
d:
=
∇
_
dT
d:
_
=
∇
_
1
·(r)
_
. (4.79)
The last step in this equation is justiﬁed using equation (4.77) and the identity d,d: = ˆ :
∇.
Intuitively, this step is valid because
∇T points along the raypath and therefore dT,d:, that is the
scalar derivative with respect to arclength along the raypath, gives the full magnitude of
∇T. Thus
the ray equation is recast as
1
·
2
(r)
∇·(r) = −
d
d:
1
·(r)
dr
d:
(4.80)
which is a second order ordinary diﬀerential equation for the raypath vector r. This result can be
further recast into a system of ﬁrstorder equations by modifying the righthandside using
d
d:
=
dt
d:
d
dt
=
1
·(r)
d
dt
(4.81)
and deﬁning the slowness vector, j =
∇T, that is (from equation (4.77)
j =
1
·(r)
dr
d:
=
1
·
2
(r)
dr
dt
. (4.82)
These last two equations allow equation (4.80) to be recast as the ﬁrstorder system
dr
dt
= ·
2
(r) j (4.83)
and
d j
dt
= −
∇·(r)
·(r)
. (4.84)
Veriﬁcation that these two equations (4.83) and (4.84) are equivalent to equation (4.80) can be done
by solving equation (4.83) for j and substituting it into equation (4.84).
Example 4.12.1. As an illustration of the validity of equations (4.83) and (4.84), it is instructive to
show that they reduce to the ·(.) case considered previously. If ·(r) = ·(.), then in two dimensions,
let r = [r, .] and j = [j
x
, j
z
] so that equation (4.84) becomes
dj
x
dt
= 0 and
dj
z
dt
= −
1
·(.)
∂·(.)
∂.
(4.85)
and equation (4.83) is
dr
dt
= ·
2
(.)j
x
and
d.
dt
= ·
2
(.)j
z
. (4.86)
The ﬁrst of equations (4.85) immediately integrates to j
x
= con:tont. Using this result in the ﬁrst
of equations (4.86) together with ·
−2
(.)dr,dt = ·
−1
(.)dr,d: results in
j
x
=
1
·(.)
dr
d:
=
sin θ
·(.)
= constant (4.87)
4.12. RAYTRACING FOR INHOMOGENEOUS MEDIA 109
0 2000 4000 6000 8000 10000 12000
0
500
1000
1500
2000
2500
3000
3500
4000
meters
m
e
t
e
r
s
Figure 4.29: A ray is shown traced through ·(r, .) = 1800 + .6. + .4r using ode45 as
shown in Code Snippet 4.12.1.
where sin θ = dr,d: has been used. Of course, this is Snell’s law for the ·(.) medium. Of the
remaining two equations in the system (4.85) and (4.86), the ﬁrst is redundant because j
2
x
+ j
2
z
=
·
−2
(.) and the second gives
dt =
d.
·
2
(.)j
z
=
d.
·(.) cos θ
=
d.
·(.)
_
1 −·
2
(.)j
2
x
. (4.88)
When integrated, this will result in equation (4.57). In that equation, j is the same as j
x
here.
4.12.2 A MATLAB raytracer for v(x, z)
The numerical solution of equations (4.83) and (4.84) can be done using welltested and very general
methods for solving ﬁrstorder ordinary diﬀerential equations. An example is the fourthorder Runge
Kutta method (Press et al. (1992) chapter 16) that will be used here. This and other general methods
are available in MATLAB; however, it is often useful to implement a speciﬁc RungeKutta scheme
to gain improved ﬂexibility.
To proceed, deﬁne the abstract ray vector : = [r, j]. That is, in n dimensions : is a 2n
dimensional vector formed by concatenating the position and slowness vectors. In two dimensions,
the ray vector is : = [r . j
x
j
z
] and the time derivative of : is deﬁned through equations (4.83) and
(4.84) as
d:(1)
dt
= ·
2
:(3);
d:(2)
dt
= ·
2
:(4);
d:(3)
dt
= −
∂ ln ·
∂r
;
d:(4)
dt
= −
∂ ln ·
∂.
. (4.89)
Deﬁning the vector o = [·
2
j −
∇(ln ·)], equation (4.89) becomes
d:
dt
= o. (4.90)
Then, given this prescription for d:,dt and initial values for :, the fourthorder RungeKutta (RK4)
method is invoked to integrate equation (4.90) for :(t).
The MATLAB implementation requires a velocity matrix giving ·(r, .) on a grid with ∆r =
110 CHAPTER 4. VELOCITY
∆. ≡ ∆p and uses the convention that (r = 0, . = 0) is in the upper left corner. Prior to
raytracing, the function rayvelmod is invoked with arguments being the velocity matrix and the
grid spacing ∆p. This function creates a number of global variables that will be used repeatedly
in the raytracing. These include matrices of ·
2
, ∂
x
ln ·, and ∂
z
ln · that are needed in equation
(4.89). This precomputation speeds the raytracing and is especially beneﬁcial if a great many rays
are to be traced; however, the cost is three times the memory overhead of the simple velocity matrix.
rayvelmod need only be called once at the beginning of the raytracing unless the velocity model is
changed.
The function drayvec implements the computation of d:,dt according to equation (4.89). This
function is designed with the interface required by MATLAB’s builtin ODE solver ode45. This
latter function implements an RK4 scheme by calling a userdesigned function like drayvec that
computes the time derivative of the solution vector. The general interface required by ode45 for
such a function is that it must have two input arguments that are the current time and the current
value of the solution vector :. Thus, even though equation (4.90) does not require the value of t to
compute d:,dt, drayvec requires t as input but does not use it.
Code Snippet 4.12.1. This code builds a velocity matrix representing ·(r, .) = 1800 + .6. + .4r
and then uses ode45 to trace a ray. It creates Figure 4.29.
1 dg=10; %grid spacing
2 tstep=0:.004:3; %time step vector
3 x=0:dg:10000;z=x’; %x and z coordinates
4 v=1800+.6*(z*ones(1,length(x)))+.4*(ones(length(z),1)*x);%velocity
5 rayvelmod(v,dg);clear v;%initialize the velocity model
6 theta=pi*45/180;%takeoff angle
7 r0=[0,0,sin(theta)/1800,cos(theta)/1800]’;%initial value of r
8 [t,r]=ode45(’drayvec’,tstep,r0);%solve for raypath
9 plot(r(:,1),r(:,2));flipy%plot
End Code
Code Snippet 4.12.1 illustrates the tracing of a single ray in a medium with both vertical and
horizontal velocity gradients. The timestep vector is established on line 2 and a .004 second timestep
is used. Smaller timesteps will improve accuracy but will also lengthen the computation. For a
particular velocity model, some testing may be required to determine the optimal time step for the
problem at hand. The velocity matrix is built on line 4 and then passed to rayvelmod on line 5. It
is then cleared to save space because rayvelmod has established the required velocity information
in global matrices. The takeoﬀ angle and initial values for : are calculated on lines 7 and 8. As
mentioned in exercise 4.12.1, the components of j are not independent of one another since j j = ·
−2
and this is illustrated in the calculation of the initial values. Finally, ode45 is invoked to integrate
equation (4.90) and thus compute : for the vector of times established on line 2. The calculated ray
is shown in Figure 4.29.
In the computation of d:,dt it is generally true that the ray coordinates at a particular time will
not coincide with grid points in the model. Thus the estimation of the velocity terms in equations
(4.89) requires some form of interpolation. By default, drayvec uses nearest neighbor interpolation
because this is the fastest method. For more accuracy, bilinear interpolation is also available and its
use is controlled through a global variable that is explained in the drayvec help ﬁle.
A problem with the use of ode45, that is apparent upon close inspection of Figure 4.29, is that
the ray has been traced beyond the bounds of the velocity model. To avoid indexing into the velocity
array beyond its bounds, drayvec has been constructed to use the ﬁrst (or last) column to represent
a simple ·(.) medium for rays than go beyond the beginning (or end) of the model. A similar strategy
is used to cope with rays that go beyond the minimum or maximum depths. Though this allows
4.12. RAYTRACING FOR INHOMOGENEOUS MEDIA 111
the solution to proceed, a better approach would be to detect when a ray has reached the boundary
of the model and stop the raytracing. For this purpose, an RK4 solver has been built as described
in Press et al. (1992) and is incorporated in the functions shootrayvxz and shootrayvxz g . In
these functions, the ray is tested at each time step to determine if it is within the model bounds
and raytracing is halted before the maximum time if the ray leaves the model. The syntax to
trace a ray with either program is essentially the same as with Code Snippet 4.12.1 except that the
command [t,r]=shootrayvxz(tstep,r0) replaces [t,r]=ode45(’drayvec’,tstep,r0) on line 8.
The functions shootrayvxz and shootrayvxz g diﬀer in that the latter calls drayvec to compute
d:,dt while the former does this computation directly without the function call. The result is that
shootrayvxz is much more eﬃcient but does not oﬀer bilinear interpolation as does shootrayvxz g .
If nearestneighbor interpolation is satisfactory, then shootrayvxz should be preferred because it is
much faster.
Another useful raytracer is shootraytosurf . This function works similarly to shootrayvxz but
the ray is traced until it reaches . = 0 or a maximum time limit is exceeded. This is useful in normal
incidence raytrace modelling that will be discussed in chapter 5 in connection with normal incidence
raytrace migration.
Chapter 5
Elementary Migration Methods
In exploration seismology, migration refers to a multichannel processing step that attempts to
spatially reposition events and improve focusing. The term is essentially synonymous with imaging
(though the latter term has a speciﬁc secondary meaning as a substep in a migration process). Before
migration, seismic data is usually displayed with traces plotted at the surface location of the receivers
and with a vertical time axis. This means that dipping reﬂections are systematically mispositioned in
the lateral coordinate and the vertical time axis needs a transformation to depth. Also problematic
is the unfocussed nature of seismic data before migration. It is very much like looking through
an unfocussed camera lens. Just as the construction of a camera lens requires knowledge of the
physics of light propagation, migration algorithms incorporate the physics of acoustic and elastic
wave propagation. In addition to spatial positioning and focusing, migration algorithms perform
amplitude and phase adjustments that are intended to correct for the eﬀects of the spreading (or
convergence) of raypaths as wave propagate.
Migration can be viewed as an approximate solution to the general elastic waveﬁeld inversion
problem (Gray, 1997). Full elastic inversion uses the entire seismic waveﬁeld as input into a mathe
matical process that seeks to estimate the elastic parameters of the earth. This is called an inverse
problem because it is opposite to the classical forward modelling problem of predicting the seismic
waveﬁeld response of a known elastic earth model. Generally, a forward problem can be reduced to
ﬁnding the solution to a partial diﬀerential equation, in this case the elastic wave equation, given
speciﬁcations of the coeﬃcients of the equation as functions of position and given appropriate bound
ary conditions. Though often this is a very diﬃcult process, it is usually more easily accomplished
than the corresponding inverse problem. The inverse problem usually amounts to estimating the co
eﬃcients of a partial diﬀerential equation given its response to a known source. Often, these inverse
problems are illposed which is a mathematical term for a problem whose inputs are insuﬃcient to
determine all of its expected outputs. For example, the solution to the constantvelocity migra
tion problem (section 5.4.1) requires two surface measurements, the waveﬁeld (ψ) and its vertical
derivative (∂
z
ψ), all along the surface. Despite this mathematical requirement, there is no feasible
technology for measuring ∂
z
ψ so methods must be found to deal with only ψ. In addition to being
illposed, inversion problems are generally nonlinear and practical schemes are typically linearized
approximations. This means that they are very sensitive to an assumed initial model. This is un
fortunate because knowledge of the subsurface is very limited and the construction of initial models
is extremely diﬃcult.
Thus, for many reasons, migration amounts to a very approximate solution to a general, nonlin
ear, inverse problem. The need to ﬁnd approximate solutions has lead to a large number of diﬀerent
112
5.1. STACKED DATA 113
migration algorithms that are generally distinguished by the kind of approximations made. As a
result there are many diﬀerent, overlapping ways to categorize migration algorithms. For example,
it can be shown that an assumption that waves are traveling only upward at the earth’s surface,
though physically incorrect, allows the solution to proceed without knowledge of ∂
z
ψ. (Or equiv
alently, this assumption allows ∂
z
ψ to be calculated from ψ.) This approach is called the oneway
wave assumption and is very common. Given that oneway waves will be considered, there are: ﬁnite
diﬀerence algorithms that oﬀer great ﬂexibility with spatial variations of velocity but suﬀer from grid
dispersion and angle limitations, Kirchhoﬀ methods that can easily accommodate arbitrary varia
tions in seismic recording geometry but require raytracing to guide them, and Fourier (or spectral)
techniques that oﬀer high ﬁdelity but have diﬃculty coping with rapid variations in either velocity
or recording geometry. All of these techniques attempt, in some manner, to downward continue
measurements made at . = 0 into the subsurface. There are also useful distinctions about whether
the estimation of 1(r, j, .) is made directly from . = 0, direct methods, or whether 1(r, j, .) is
estimated from . −∆., recursive methods. Finally, perhaps the most common categorization comes
under the confusing labels of time migration and depth migration. The former is an earlier tech
nology that remains viable because it is very insensitive to velocity errors even though it is known
to be accurate only if ∂
x
· ∼ 0. On the other hand, depth migration is the only currently available
imaging technology that is accurate when ∂
x
· varies strongly; however, it requires a very accurate
speciﬁcation of the velocity model.
These last remarks hint at the general chickenandegg nature of modern migration methods.
A true inversion technique would derive the velocity model from the data as part of the inversion.
Migration requires the velocity model as input and merely attempts to reposition, focus, and adjust
amplitudes. These really all turn out to be the same thing. In order to be a useful process, it should
be true that migration requires only an approximate, or background, velocity model and that more
detailed velocity information can be extracted from a successful migration than was input to it.
This is generally the case though it can be very diﬃcult to achieve in structurally complex areas.
Especially for depth migration, the construction of the velocity model is the central diﬃculty in
achieving a successful result.
This chapter will discuss “elementary” migration methods. This refers to techniques designed
to migrate stacked seismic data (poststack migration) in simple velocity variations. More complex
topics including prestack migration will be discussed in the next chapter.
5.1 Stacked data
5.1.1 Bandlimited reﬂectivity
The ultimate goal of a migration is to transform the seismic data into bandlimited reﬂectivity.
In the simplest context, reﬂectivity means the normalincidence reﬂection coeﬃcient of Pwaves.
Potentially, every point in the subsurface has a reﬂectivity value associated with it. In a one
dimensional layered medium, Pwave reﬂectivity is given by :
k
= 2(1
k
− 1
k−1
),(1
k
+ 1
k−1
) where
1
k
= ρ
k
·
k
is the Pwave impedance of the k
th
layer. In the continuous case, this can be written as
:
δz
(.) = .5∂
z
ln(1(.))δ. where δ. is a small increment of depth. In a 3D context, reﬂectivity of a
small earth element, δ·o, is conveniently described by
:(r, j, .) = .5
¸
¸
¸
∇(log(1(r, j, .)))
¸
¸
¸ δ·o (5.1)
At best, equation (5.1) can only be an expression for normal incidence reﬂectivity. More generally,
reﬂectivity must be acknowledged to be a function of the angle of incidence as well as spatial position.
114 CHAPTER 5. ELEMENTARY MIGRATION METHODS
For the case of plane elastic waves in layered media, the Zoeppritz equations (Aki and Richards,
1980) are an exact prescription of this variation. The Zoeppritz equations are highly complex and
nonlinear and the estimation of their approximate parameters from seismic data is called the study
of amplitude variation with oﬀset or AVO. (A nearly synonymous term is amplitude variation with
angle or AVA.) Such complex reﬂectivity estimates are key to true lithology estimation and are a
subject of much current research. Ideally, AVO analysis should be conducted simultaneously with
migration or after migration. For the current discussion, it is assumed that only the normalincidence
reﬂectivity, :(r, j, .), is of interest and that a stacked seismic section provides a bandlimited estimate
of :(r, j, .).
The estimate of reﬂectivity must always be bandlimited to some signal band of temporal fre
quencies. This is the frequency range over which signal dominates over noise. Unless some sort of
nonlinear or modelbased inversion is done, this signal band is determined by the power spectrum
of the source, the data fold, the types of coherent and random noise, and the degree of anelastic
attenuation (Q loss). The optimal stacked section will have a zerophase, white, embedded wavelet.
This means that it should obey the simple convolutional model
:(t) = :(t) • n(t) (5.2)
where w(t) is a zero phase wavelet whose amplitude spectrum is white over some limited passband.
If w(t) has residual phase or spectral color then these will adversely aﬀect the resolution of the ﬁnal
migrated image. They should be dealt with before migration.
5.1.2 The zero oﬀset section
A discussion of poststack migration greatly beneﬁts from a ﬁrm theoretical model of the CMP
(common midpoint) stack. A simple model of stacked seismic data is the zerooﬀset section or “ZOS”
model. This model asserts that the prestack processing and CMP stack estimates a signalenhanced
version of what we would have recorded had there been a single, coincident soure/receiver pair at
each CMP. Each stacked trace represents a separate physical experiment that can be approximately
described by the scalar wave equation (assuming acoustic energy only). Taken together, the ensemble
of stacked traces has a more complicated basis in physical theory.
The major steps the in the estimation of the signal enhanced ZOS are
Spherical spreading correction: A time dependent amplitude scaling that approximately corrects
for spherical divergence.
Deconvolution: The source signature and the average Q eﬀect is estimated and removed.
Sort to (r, /) coordinates: The data is considered to be gathered in (:, p) (source,geophone) coor
dinates and then sorted to midpoint, r, and halfoﬀset, / (Figure 5.1).
Statics correction: Near surface static time delays are estimated and removed.
NMO removal: The data is taken through stacking velocity analysis and the resulting velocities are
used to remove normal moveout time delays.
Residual statics correction: Residual time delays (small) are sought and removed. Usually this is
a surfaceconsistent step.
Trace balancing: This might be considered optional but some step is needed to correct for source
strength and geophone coupling variations.
5.1. STACKED DATA 115
0 5 10 15 20 25 30
4
6
8
10
12
14
16
18
20
22
24
Common
midpoint
Common
offset
Receiver coordinate
S
o
u
r
c
e
c
o
o
r
d
i
n
a
t
e
Figure 5.1: A 2D seismic line is depicted in the
(:, p) plane. Each shot is represented as hav
ing eight receivers with a central gap. Common
midpoint, r, and common oﬀset, / coordinates
are depicted.
Velocitylens
s/r s/r s/r s/r s/r s/r s/r s/r
Figure 5.2: Most, but not all, zerooﬀset ray
paths are also normalincidence raypaths.
CMP stacking: All traces with a common midpoint coordinate are summed. Events which have
been ﬂattened on CMP gathers are enhanced. Other events and random noise are reduced.
The ZOS is said to be signal enhanced because the stacking process has been designed to select
against multiples. The simplest (and dominant) raypath which returns energy to its source is called
the normalincidence raypath. Quite obviously, the normalincidence reﬂection will send energy
back up along the path that it traveled down on. However, it is possible to have zerooﬀset paths
that are not normalincidence paths (Figure 5.2).
5.1.3 The spectral content of the stack
The sort from (:, p) to (r, /) marks the transition from single channel to surface consistent processing.
Where it actually takes place is somewhat arbitrary because a seismic processing system can always
resort the data whenever required. However, it is a logical transition that must occur somewhere
before stack. (r, /) coordinates are deﬁned by
r =
: + p
2
and / =
p −:
2
(5.3)
of which the inverse transformation is
: = r −/ and p = r + /. (5.4)
The relationship between (:, p) and (r, /) is depicted graphically in Figure 5.1.
Mathematically, a 2D prestack seismic dataset is a 3D function, ψ(:, p, t). This dataset can be
written as an inverse Fourier transform of its spectrum through
ψ(:, p, t) =
_
V∞
φ(/
s
, /
g
, ))c
2πi(kss+kgg−ft)
d/
s
d/
g
d) (5.5)
116 CHAPTER 5. ELEMENTARY MIGRATION METHODS
50 100 150 200
0
5
10
15
20
25
30
35
500 m/s
1000 m/s
1500 m/s
2000 m/s
2500 m/s
maximum frequency (Hertz)
∆
g
(
m
e
t
e
r
s
)
Figure 5.3: These curves show the maximum spatial sample rate required to avoid aliasing
of /
g
on shot records (assuming point receivers) as a function of the maximum signal
frequency. A curve is drawn for each of ﬁve near surface velocities. This is based on
expression (5.15).
where the notation \
∞
indicates the integration covers the entire relevant, possibly inﬁnite, portion
of (/
s
, /
g
, )) space. Imposing the coordinate transform of equations 5.4 gives
ψ(r, /, t) =
_
V∞
φ(/
s
, /
g
, ))c
2πi(ks(x−h)+kg(x+h)−ft)
d/
s
d/
g
d) (5.6)
or
ψ(r, /, t) =
_
V∞
φ(/
s
, /
g
, ))c
2πi((ks+kg)x+(ks−kg)h−ft)
d/
s
d/
g
d). (5.7)
This motivates the deﬁnitions
/
x
= /
s
+ /
g
and /
h
= /
s
−/
g
(5.8)
or the inverse relationship
/
s
=
/
x
+ /
h
2
and /
g
=
/
x
−/
h
2
. (5.9)
This allows equation 5.7 to be written
ψ(r, /, t) =
1
2
_
V∞
φ(/
x
, /
h
, ))c
2πi(kxx+k
h
h−ft)
d/
x
d/
h
d). (5.10)
where the factor of 1,2 comes from the Jacobian of the coordinate transformation given in equation
5.9. Both of equations 5.5 and 5.10 are proper inverse Fourier transforms which shows that the
wavenumber relationships given in equations 5.8 and 5.9 are the correct ones corresponding to the
(:, p) to (r, /) coordinate transformation.
Quite a bit can be learned from equations 5.9 about how the spectral content of the prestack
data gets mapped into the poststack data. The maximum midpoint wavenumber, /
xmax
comes
5.1. STACKED DATA 117
from the sum of /
smax
and /
gmax
. As will be shown formally later, the maximum wavenumber
is directly proportional to horizontal resolution (i.e. the greater the wavenumber, the better the
resolution). The meaning of the maximum wavenumbers is that they are the largest wavenumbers
that contain signal. They typically are less than the Nyquist wavenumbers but they cannot be
greater. Thus /
smax
≤ /
sNyq
= 1,(2∆:) and /
gmax
≤ /
gNyq
= 1,(2∆p). It is customary to sample
the r coordinate at ∆r = .5∆p so that /
xNyq
= 1,(2∆r) = 2/
gNyq
which means that the stacking
process will generate /
x
wavenumbers up to this value from combinations of /
s
and /
g
according
to equation 5.8. However, because spatial antialias ﬁlters (source and receiver arrays) are not very
eﬀective, it must be expected that wavenumbers higher than Nyquist will be present in both the /
s
and /
g
spectra. The only way to generate unaliased wavenumbers up to /
xNyq
in the stacking process
is if ∆: = ∆p so that /
xNyq
= /
sNyq
+ /
gNyq
. This means that there must be a shotpoint for every
receiver station which is very expensive acquisition. Normal 2D land shooting puts a shotpoint for
every n receiver stations where n ≥ 3. This means that /
x
wavenumbers greater than a certain limit
will be formed from completely aliased /
s
and /
g
wavenumbers. This limiting unaliased wavenumber
is
/
xlim
=
1
2∆p
+
1
2∆:
=
1
2∆p
+
1
2n∆p
=
n + 1
2n∆p
. (5.11)
For n=3, /
xlim
=
2
3
/
xNyq
so that shooting every third group will result in a conventional stack with
the upper third of the /
x
spectrum being completely useless.
Even if n = 1, there will still be aliased contributions to /
x
if the /
s
and /
g
spectra are aliased
as they normally are. For example, /
xNyq
can be formed with unaliased data from /
sNyq
+ /
gNyq
but it can also be formed from the sum of /
s
= 0 and /
g
= 2/
gNyq
and there are many more such
aliased modes. Similarly, wavenumbers less that /
xlim
can be formed by a wide variety of aliased
combinations. Further analysis is helped by having a more physical interpretation for /
s
and /
g
so
that their potential spectral bandwidth can be estimated.
As explained in section 4.9, the apparent velocity of a wave as it moves across a receiver array is
given by the ratio of frequency to wavenumber. For a source record (common source gather), this
has the easy interpretation that
)
/
g
=
·
0
sin θ
0
(5.12)
which means that
/
g
=
) sin θ
0
·
0
. (5.13)
So, if )
max
is the maximum temporal frequency and (sin θ
0
)
max
= 1 then
/
gmax
=
)
max
·
0min
(5.14)
where ·
0min
is the slowest near surface velocity found along the receiver spread. So, to avoid any
aliasing of /
g
, assuming point receivers, the receiver sampling must be such that /
gNyq
≥ /
gmax
which leads to the antialiasing condition
∆p ≤
·
0min
2)
max
. (5.15)
Assuming the equality in expression (5.15) allows the maximal sampling curves in Figure 5.3 to
be calculated. Alternatively, if coarser sampling than suggested in these curves is planned, then
a portion of the /
g
spectrum will be aliased. An array can be designed to suppress the aliased
118 CHAPTER 5. ELEMENTARY MIGRATION METHODS
α
o
θ
o
receivers
source
α
o
θ
o
receiver
sources
A
B
Figure 5.4: (A) Wavenumber /
g
is measured on a common source gather and estimates
the emergence angle, θ
0
, of a monochromatic wave. (B) Wavenumber /
s
is measured on a
common receiver gather and estimates the takeoﬀ angle α
0
of the ray that arrives at the
common receiver.
wavenumbers though this is not as eﬀective as temporal antialias ﬁltering.
The wavenumbers /
s
are those which would be measured by an )/ analysis on a common
receiver gather. Reciprocity suggests that a common receiver gather is similar to a common source
gather with the source and receiver positions interchanged (Figure 5.4). It cannot be expected
that the amplitudes will be completely reciprocal on such gathers but the traveltimes should be.
Since the relationship between apparent velocity and frequencywavenumber ratios is a based on
traveltimes, not amplitudes, the arguments just made for the interpretation of /
g
also apply to /
s
.
The interpretation is that ),/
s
gives the apparent velocity of a monochromatic wave as it leaves a
source such that it will arrive at the common receiver. Thus
)
/
s
=
·
0
sin α
0
(5.16)
where α
0
is the takeoﬀ angle required to reach the common receiver and ·
0
is as before. Comparing
equations 5.12 and 5.16 leads to the conclusion that the potential bandwidth of /
s
is just as broad
as that of /
g
.
For the /
h
wavenumber, the stacking process rejects all but /
h
= 0. Stacking can be modelled
by an integral over / as
ψ
0
(r, t) =
_
all h
ψ(r, /, t)d/. (5.17)
If equation (5.10) is substituted into equation (5.17) and the order of integration reversed, it results
that
ψ
0
(r, t) =
1
2
_
V∞
_
_
_
all h
c
2πik
h
h
d/
_
_
φ(/
x
, /
h
, ))c
2πi(kxx−ft)
d/
x
d/
h
d). (5.18)
The integral in square brackets is δ(/
h
) which, in turn, collapses the /
h
integral by evaluating it at
5.1. STACKED DATA 119
Surface
Reflector
R
S
Q P
depth=0
depth=.
n
Figure 5.5: The zerooﬀset Fresnel zone is deﬁned as the width of a disk on a subsurface
reﬂector from which scattered energy arrives at R with no more than a λ,2 phase diﬀerence.
/
h
= 0 to give
ψ
0
(r, t) =
1
2
_
V∞
φ(/
x
, 0, ))c
2πi(kxx−ft)
d/
x
d). (5.19)
So the CMP stacking process passes only the /
h
= 0 wavenumber which is a very severe )/ﬁlter
applied to a CMP gather. It is for this reason that )/ﬁltering applied to CMP gathers does
not typically improve the stack. However, )/ ﬁltering of source and receiver gathers can have a
dramatic eﬀect. The /
h
= 0 component is the average value over the CMP gather and corresponds
to horizontal events. Of course, this is done after normal moveout removal that is designed to ﬂatten
those events deemed to be primaries.
So far, the discussion has been about wavenumber spectra with nothing being said about the
eﬀect of stacking on temporal frequencies. Bearing in mind the goal to estimate bandlimited reﬂec
tivity, the ideal stacked section should have all spectral color removed except that attributable to
the reﬂectivity. Most prestack processing ﬂows rely on one or more applications of statistical decon
volution to achieve this. Typically these deconvolution techniques are not capable of distinguishing
signal from noise and so whiten (and phase rotate) both. If the prestack data input into the stacking
process has been spectrally whitened, it will always suﬀer some attenuation of high frequencies due
to the stacking out of noise. This is because the stacking process improves the signaltonoise ratio
by
√
)od. Moreover, this eﬀect will be timevariant in a complicated way because of two competing
eﬀects. First, the fold in any stacked section is actually timevariant because of the frontend mute.
Until the time at which nominal fold is reached, the stacking eﬀect is therefore time variant. Second,
the signaltonoise ratio in any single prestack trace must decrease with both increasing time and
increasing frequency due to attenuation (i.e. Q eﬀects). As a result, it is virtually guaranteed that
the poststack data will need further spectral whitening. It is also highly likely that some sort of
wavelet processing will be required to remove residual phase rotations.
5.1.4 The Fresnel zone
The zerooﬀset rays shown in Figure 5.2 are only a high frequency approximation to what really
happens. The zerooﬀset recording at a point on the earth’s surface actually contains scattered
waves from a very broad zone on each subsurface reﬂector. This contrasts with the highfrequency
raytracing concepts that suggest the reﬂection occurs at a point. Figure 5.5 illustrates the concept
of the zerooﬀset Fresnel zone. The width, n of the Fresnel zone is deﬁned as the diameter of a
120 CHAPTER 5. ELEMENTARY MIGRATION METHODS
0 1000 2000 3000 4000
0
200
400
600
800
1000
1200
20Hz.
60Hz.
100Hz.
140Hz.
180Hz.
depth (meters)
F
r
e
s
n
e
l
z
o
n
e
(
m
e
t
e
r
s
)
Figure 5.6: The width of the Fresnel zone (based
on equation (5.21)) is shown versus depth for a
variety of frequencies and an assumed velocity
of 3000 m/s.
Original Fresnel zone
after 2D migration
after 3D migration
n
λ/2
Figure 5.7: A 3D migration collapses the Fres
nel zone to a disk of diameter λ,2 while a 2D
migration only collapses the Fresnel zone in the
inline direction
disk whose center is marked by the ray P and edge by the ray Q. Ray P is a simple zerooﬀset ray
while ray Q is deﬁned to be λ,4 longer than ray P. Assuming constant velocity, this means that
scattered energy that travels downandback along path Q will be λ,2 out of phase at the receiver,
R, compared with that which travels along path P. All paths intermediate to P and Q will show a
lesser phase diﬀerence. Therefore, it is expected that path Q will interfere destructively with P and
is taken to deﬁne the diameter of the central disk from which scattered energy shows constructive
interference at R. The equation deﬁning the Fresnel zone diameter is therefore
_
.
2
+ (n,2)
2
−. =
λ
4
(5.20)
which is easily solved for n to give
n = 2
_
(λ,4 + .)
2
−.
2
=
√
2.λ
_
1 + λ,(8.) =
_
2.·,)
_
1 + ·,(8).) (5.21)
where, in the third expression, λ) = ·, has been used. If . ¸ λ, then the approximate form
n ∼
√
2.λ is often used. The size of a Fresnel zone can be very signiﬁcant in exploration as it is
often larger than the target (Figure 5.6).
Migration can be conceptualized as lowering the source and receiver to the reﬂector and so shrinks
the Fresnel zone to its theoretical minimum of λ,2. That the Fresnel zone does not shrink to zero is
another way of understanding why reﬂectivity estimates are always bandlimited. However, seismic
data is a bit more complicated than this in that it possesses signal over a bandwidth while the
Fresnel zone concept is monochromatic. Roughly speaking, the eﬀective Fresnel zone for broadband
data can be taken as the average of the individual Fresnel zones for each frequency.
The 3D Fresnel disk collapses, under 3D migration, from a diameter of n to a diameter of λ,2.
However, much seismic data is collected along lines so that only 2D migration is possible. In this
case, The Fresnel zone only collapses in the inline direction and remains at its unmigrated size in
the crossline direction (Figure 5.7). Thus the reﬂectivity shown on a 2D migrated seismic line must
be viewed as a spatial average in the crossline direction over the width of the Fresnel zone. This is
one of the most compelling justiﬁcations for 3D imaging techniques, even in the case of sedimentary
5.2. FUNDAMENTAL MIGRATION CONCEPTS 121
basins with ﬂatlying structures.
5.2 Fundamental migration concepts
5.2.1 One dimensional timedepth conversions
It is quite common to convert a single trace from time to depth, or the reverse, by a simple one
dimensional conversion that is called a stretch. This is accomplished as a simple mapping of samples
from the time trace to the depth trace. The mapping from time to depth is deﬁned by
.(τ) =
_
τ
0
·
ins
(τ
)dτ
(5.22)
and from depth to time by
τ(.) =
_
z
0
d.
·
ins
(.
)
(5.23)
where ·
ins
is the instantaneous velocity or, equivalently, the local wave speed.
Though not migrations, these onedimensional operations are very useful for converting from
migrated depth to migrated time (or the reverse) or from unmigrated time to unmigrated depth (or
the reverse). Thus it is possible to have time or depth displays both before and after migration and
the interpreter must be careful to understand what is being presented.
A form of aliasing is possible in all such operations (including migrations) though it is most
easily analyzed in one dimension. Consider the conversion of a trace :(t) to a depth trace ˆ :(.) with
a desired depth sample interval of ∆.. The depth trace will usually be constructed by a loop over the
desired depth samples. Assuming constant velocity for simplicity, a particular depth sample of ˆ :(.)
at . = n∆. must be interpolated from :(t) at t = 2n∆.,·. Thus, the time to depth conversion will
eﬀectively extract samples from :(t) at the interval ∆t
eff
= 2∆.,·. This is a form of resampling.
If ∆t
eff
∆t then aliasing will occur as the depth trace is constructed unless an antialias ﬁlter is
applied. If )
max
is the maximum signal frequency (presumed to be less than the Nyquist frequency)
in :(t), then the sampling theorem (Karl, 1989) assures that :(t) can be resampled to ∆t ≤ 1,(2)
max
)
(with antialias ﬁltering to prevent noise aliasing) without loss of signal. Therefore, the depth sample
interval should not be chosen arbitrarily but should be chosen to ensure that ∆t
eff
preserves signal.
This leads to the condition
∆. ≤
·
min
4)
max
. (5.24)
In this expression, ·
min
is used to ensure that all signal frequencies are preserved in the worst case.
These considerations are true for multidimensional migrations as well as simple stretching. The
depth sample interval should be chosen with knowledge of the maximum signal frequency. Further
more the temporal data should be highcut ﬁltered to reject frequencies larger than the maximum
frequency used to compute the depth sample interval.
5.2.2 Raytrace migration of normalincidence seismograms
Most modern migration techniques are based on waveﬁeld concepts that treat the recorded data as a
boundary value. This was not always the case; however, because raytrace migration was very popular
before 1980. As is often true, raytrace methods provide a great deal of insight into the problem and
can be adapted to almost any setting. Understanding raytrace migration can help considerably
in understanding the corresponding waveﬁeld technique. For example, the very word “migration”
122 CHAPTER 5. ELEMENTARY MIGRATION METHODS
Datum (recording surface)
φo
·o
·1
·:
·¸
·¸
∆r
φ1
φ:
φ¸
θo
θ1
θ:
θ¸
∆
δ
δ
δ
δ
Figure 5.8: Two normalincidence rays from a dipping reﬂector beneath a ·(.) medium.
The delay between the rays allows the ray parameter to be estimated.
comes from a popular, though somewhat incorrect, view that the process just “moves events around”
on a seismic section. This encourages a fundamental, and very pervasive, confusion that time and
depth sections are somehow equivalent. A better view is that an unmigrated time section and a
migrated depth section are independent (in fact orthogonal) representations of a waveﬁeld. Raytrace
migration emphasizes this latter view and makes the role of the velocity model very clear.
Figure 5.8 illustrates the link between reﬂector dip and the measurable traveltime gradient (for
normalincidence rays) on a ZOS. The ﬁgure shows two rays that have normal incidence on a dipping
reﬂector beneath a ·(.) medium. More general media are also easily handled, this just simpliﬁes the
discussion. The two rays are identical except for an extra segment for the lower ray in the bottom
layer. From the geometry, this extra segment has a length ∆rsin δ where ∆r is the horizontal
distance between the rays. If there were receivers on the interface between layers three and four,
then for the upcoming rays, they would measure a traveltime delay, from left to right, of
∆t =
2∆rsin δ
·
4
(5.25)
where the factor of two accounts for twoway travel. This implies a horizontal traveltime gradient
(horizontal slowness) of
∆t
∆r
= 2
sin δ
·
4
. (5.26)
Inspection of the geometry of Figure 5.8 shows that equation (5.26) can be rewritten as
∆t
∆r
= 2j
n
(5.27)
where j
n
is the ray parameter of the normalincidence ray. In the ·(.) medium above the reﬂector,
Snell’s law ensures that j
n
will remain equal to twice the horizontal slowness at all interfaces including
the surface at . = 0. Thus, a measurement of ∆t,∆r at the surface of a normalincidence seismogram
completely speciﬁes the raypaths provided that the velocity model is also known. In fact, using
equation (5.26) allows an immediate calculation of the reﬂector’s dip.
Of course, in addition to the reﬂector dip, the spatial position’s of the reﬂection points of the
normal rays are also required. Also, it must be expected that more general velocity distributions
5.2. FUNDAMENTAL MIGRATION CONCEPTS 123
Datum (recording surface)
δ
φo
·o
·1
·:
·¸
·¸
φ1
φ:
φ¸
θo
θ1
θ:
θ¸
θ¸
δ
θo
Figure 5.9: The migration of a normalincidence ray is shown. Knowledge of the ray
parameter allows the ray to be traced down through the velocity model.
than ·(.) will be encountered. In ·(r, j, .) media, the link between reﬂector dip and horizontal
slowness is not as direct but knowledge of one still determines the other. Normalincidence raytrace
migration provides a general algorithm that handles these complications. This migration algorithm
will be described here for 2D but is easily generalized to 3D. Before presenting the algorithm, a
formal deﬁnition of a pick is helpful:
A pick is deﬁned to be a triplet of values (r
0
, t
0
, ∆t,∆r)measured from a ZOS having
the following meaning
r . . . inline coordinate at which the measurement is made.
t
0
. . . normalincidence traveltime (two way) measured at r.
∆t,∆r . . . horizontal gradient of normalincidence traveltime measured at (r, t
0
).
To perform a raytrace migration, the following materials are required:
1. (r
i
, t
0ij
, ∆t,∆r
ij
) . . . a set of picks to be migrated. The picks are made at a the locations r
i
and at each location a number of t
0ij
and ∆t,∆r
ij
values are measured.
2. ·(r, .) . . . a velocity model is required. It must be deﬁned for the entire range of coordinates
that will be encountered by the rays.
3. Computation aids. . . one or more of: a calculator, compass, protractor, computer.
Finally, the algorithm is presented as a series of steps with reference to Figure 5.9. For all
locations r
i
, i = 1, 2, . . . n then each ray must be taken through the following steps:
Step 1 . . . Determine the emergence angle at the surface of the ij
th
ray according to the formula
sin θ
0ij
=
·
0
(r
i
)
2
∆t
∆rij
(5.28)
Step 2 . . . Denote the current layer by the number /. Project the ray down to the next interface
and determine the incident angle φ
hij
.
124 CHAPTER 5. ELEMENTARY MIGRATION METHODS
Step 3 . . . Determine the length of the ij
th
raypath in the current (h
th
) layer, 
hij
and compute the
layer traveltime
δt
hij
=

hij
·
h
(5.29)
Step 4 . . . Determine the refraction angle into the (/ + 1)
th
layer from Snell’s law:
sin(θ
(h+1)ij
) =
·
h+1
·
h
sin(φ
hij
) (5.30)
Step 5 . . . Repeat steps 2 →4 for each velocity layer until the stopping condition is fulﬁlled
t
ij
=
n
h=1
δt
hij
=
t
0ij
2
(5.31)
which simply says that the raypath traveltime must be half the measured traveltime.
Step 6 . . . Draw in a reﬂecting segment perpendicular to the raypath at the point that the stopping
condition is satisﬁed.
5.2.3 Time and depth migration via raytracing
When the ﬁrst waveﬁeld migration methods were being developed, the ﬁnitediﬀerence approach
was pioneered by Jon Claerbout (Claerbout, 1976) and his students at Stanford University. This
very innovative work produced dramatic improvements in the quality of seismic images but the
algorithms were a strong challenge for the available computers. As a result approximations were
sought which could reduce the numerical eﬀort required. A key approximation was Claerbout’s use
of a moving coordinate system to derive an approximate wave equation that essentially substituted
vertical traveltime, τ, for depth. When the ﬁnite diﬀerence machinery was implemented with this
approximate equation the resulting migrated images had a vertical coordinate of time not depth.
It also resulted, for reasons to be discussed when ﬁnitediﬀerence methods are presented, in much
faster run times. One way to see why this might be is to imagine a stacked section consisting only
of events with ∆t,∆r = 0. This is not far from the appearance of seismic sections from many of
the world’s sedimentary basins. Such basins are good ·(.) environments and the normal rays for
ﬂat events are all vertical. Thus, they are already positioned correctly in vertical traveltime on the
stacked section and the migration algorithm has very little to do. This is a drastic over simpliﬁcation
that will be more correctly stated later, but it comes close to the truth.
These early ﬁnitediﬀerence methods were used with great success in the sedimentary basins
around the world. However, when the technology was taken into thrust belts, continental margins,
and other areas where the ·(.) approximation is not a good model, it was gradually realized that
systematic imaging errors were occurring. Today, the reason is well understood and it was a conse
quence of the approximate wave equation discussed in the previous paragraph. Figure 5.10 suggests
the problem. Here an anticline is shown positioned beneath a slowervelocity nearsurface that has a
dipping bottom interface. The normal ray from the crest of the structure is generally not the ray of
minimum traveltime even though it has the shortest path to the surface. Instead, a ray from a point
to the right is the leasttime ray because it spends more of its path in the fast material. Thus, on a
normal incidence section, the traveltime signature of the anticline will have a crest at the emergence
5.2. FUNDAMENTAL MIGRATION CONCEPTS 125
crest ray
leasttime
ray
·
)o:t
·
:on
true
distorted
image
Figure 5.10: The leasttime ray does not always come from the crest of an anticline.
Depth migration
o
Time migration
/
sino
·
1
sin/
·
:
=
sin¹
·
1
sin1
·
:
=
1
¹
Figure 5.11: (Left) When a ray encounters a dipping velocity interface, Snell’s law predicts
the transmitted ray using a relation between angles withrespectto the interface normal.
(Right) In a time migration algorithm, Snell’s law is systematically violated because the
vertical angles are used. Both techniques give the same result if the velocity interface is
horizontal.
point of the leasttime ray. Generally, a traveltime crest will have zero ∆t,∆r which means that
the corresponding ray emerges vertically. It turned out that the migration schemes were producing
a distorted image in cases like this and the distortion placed the crest of the migrated anticline at
the emergence point of the least time ray. Just like in the sedimentary basin case, the algorithm was
leaving ﬂat events alone even though, in this case, it should not.
The understanding and resolution of this problem resulted in the terms time migration and depth
migration. The former refers to any method that has the bias towards ﬂat events and that works
correctly in ·(.) settings. The latter refers to newer methods that were developed to overcome these
problems and therefore that can produce correct images even in strong lateral velocity gradients.
Robinson (1983) presented the raytrace migration analogs to both time and depth migration and
these provide a great deal of insight. The raytrace migration algorithm presented previously in
section 5.2.2 is a depth migration algorithm because it obeys Snell’s law even when ∂
x
· is signiﬁcant.
Figure 5.11 shows how Snell’s law must be systematically altered if a time migration is desired.
Instead of using the angles that the incident and transmitted rays make with respect to the normal
126 CHAPTER 5. ELEMENTARY MIGRATION METHODS
in Snell’s law, the time migration algorithm uses the angles that the rays make with respect to the
vertical. It is as though the dipping interface is rotated locally to the horizontal at the incident
point of the ray. Thus, any vertical ray (i.e. ∆t,∆r = 0) will pass through the velocity interface
without deﬂection regardless of the magnitude of the velocity contrast.
This explains why time migration gets the wrong answer and it also explains why the technology
remains popular despite this now wellunderstood shortcoming. The fact that ﬂat events are unaf
fected by time migration regardless of the velocity model means that the process has a “forgiving”
behavior when the velocity model has errors. Velocity models derived automatically from stacking
velocities tend to be full of inaccuracies. When used with time migration, the inaccuracies have
little eﬀect but when used with depth migration they can be disastrous. Even today, the majority
of seismic sections come from ·(.) settings and they consist of mostly ﬂat events. Such data can be
migrated with relatively little care using time migration and wellfocused sections are obtained. Of
course, these are still time sections and a pleasing time migration does not mean that the migration
velocities can be used for depth conversion. In general, the velocity errors that are “ignored” by
time migration will cause major problems in a subsequent depth conversion. Much more care must
be taken if an accurate depth section is required.
The terms time migration and depth migration arose, in part, because the early versions of
both technologies tended to produce only time and depth sections respectively. However, this is no
longer the case and either technology can produce both time and depth sections. Therefore, the
terms should be treated simply as jargon that indicates whether or not an algorithm is capable of
producing a correct image in the presence of strong lateral velocity gradients. The mere presence of
a time or depth axis on a migrated seismic display says nothing about which technology was used.
In this book, time migration will be used to refer to any migration technique that is strictly valid
only for ·(.) while depth migration will refer to a technique that is valid for ·(r, .). Thus, when
employed in constant velocity or ·(.) settings, both techniques are valid and there is no meaningful
distinction. Under these conditions, a migrated time section can always be converted to a depth
section (or viceversa) with complete ﬁdelity.
The ﬁrst timemigration algorithms were almost always ﬁnitediﬀerence methods. Today, a better
understanding of the subject allows virtually any migration method to be recast as a time migration.
Therefore, it is very important to have some knowledge of the algorithm, or to have a statement
from the developer, to be sure of the nature of a method. The issue has been clouded even further
by the emergence of intermediate techniques. Sometimes, it is worth the eﬀort to build a synthetic
seismic section to test a migration algorithm whose abilities are uncertain. One thing remains clear,
depth migrations always require much more eﬀort for a successful result. Not only is more computer
time required; but, much more signiﬁcantly, vastly greater human time may be necessary to build
the velocity model.
5.2.4 Elementary wavefront techniques
Though very versatile, the raytrace method described in section 5.2.2 has its limitations. For exam
ple, it is not obvious how to make the migrated amplitudes any diﬀerent from the unmigrated ones
and it is equally obvious that amplitudes should change under migration. Recall that bandlimited
reﬂectivity is the goal and that the geometrical spreading of wavefronts must be accounted for to
estimate this. (See section 5.1.1.) Wavefront methods provide amplitude adjustments in a very
natural way though they are more diﬃcult to adapt to complex media than the raytrace approach.
Hagedoorn (1954) provided one of the ﬁrst, and still very relevant, explanations of wavefront
migration. The ideas presented in this section are all essentially attributable to him. Consider the
ZOS image of a dipping reﬂector overlain by a constant velocity medium as shown in Figure 5.12A.
5.2. FUNDAMENTAL MIGRATION CONCEPTS 127

1

:

¸

¸

¸
d
r
.
r
1
r
:
r
¸
r
¸
r
¸
δ
r
1
r
:
r
¸
r
¸
r
¸
r
t
t
1
t
:
t
¸
t
¸
t
¸
r
1
r
:
r
¸
r
¸
r
¸
r
.
o
α

1

:

¸

¸

¸
C
A B
Figure 5.12: (A) Normalincidence raypaths are shown for a dipping reﬂector in a constant
velocity medium. (B) The traveltime section for (A) plots the arrival times for each raypath
beneath its emergence point. (C) When (B) is plotted at apparent depth, .
a
= ·t,2, an
apparent dip can be deﬁned.
128 CHAPTER 5. ELEMENTARY MIGRATION METHODS
The reﬂector dip, δ, can be related to the lengths of the raypaths and their emergence points by
sin δ =

5
−
1
r
5
−r
1
. (5.32)
The time section corresponding to this raypath diagram is shown in Figure 5.12B. Since velocity is
constant, the arrival times are directly proportional to the path lengths through t
k
= 2
k
,· and the
ZOS image of the reﬂector is seen to have a time dip of
∆t
∆r
=
t
5
−t
1
r
5
−r
1
=
2
·

5
−
1
r
5
−r
1
= 2
sin δ
·
(5.33)
which is in agreement with equation (5.27) that the time dip on a ZOS gives twice the normal
incidence ray parameter. A further conceptual step can be taken by mapping the traveltimes to
apparent depth, .
a
, by .
a
= ·t,2 as shown in Figure 5.12C. At this stage, the unmigrated display
has both coordinate axes in distance units so that it makes sense to deﬁne an apparent dip through
tan α =

5
−
1
r
5
−r
1
. (5.34)
Finally, comparison of equations (5.32) and (5.34) gives the relation
sin δ = tan α. (5.35)
Equation (5.35) is called the migrator’s equation and is of conceptual value because is illustrates
the geometric link between unmigrated and migrated dips. However, it should not be taken too far.
It is not generally valid for nonconstant velocity and cannot be applied to a time section. Though
this last point may seem obvious, it is often overlooked. It is not meaningful to talk about a dip
in degrees for an event measured on a time section because the axes have diﬀerent units. A change
of timescale changes the apparent dip. On an apparent depth section, an apparent dip can be
meaningfully deﬁned and related to the true dip through equation (5.35). The apparent dip can
never be larger than 45
◦
because sin δ ≤ 1 which is a restatement of the fact that the maximum
time dip is ∆t,∆r = 1,· as discussed in section 4.11.1. Though intuitively useful, the apparent dip
concept is not easily extended to variable velocity. In contrast, the limitation on maximum time dip
is simply restated in ·(.) media as ∆t,∆r = 1,·
min
where ·
min
is the minimum of ·(.).
Comparison of Figures 5.12A and 5.12C shows that, for a given surface location r
k
, the normal
incidence reﬂection point and the corresponding point on the ZOS image both lie on a circle of radius

k
centered at r
k
. This relationship is shown in Figure 5.13 from which it is also apparent that
• The ZOS image lies at the nadir (lowest point) of the circle.
• The reﬂection point is tangent to the circle.
• The ZOS image and the reﬂector coincide on the datum (recording plane).
These observations form the basis of a simple wavefront migration technique which is kinemati
cally exact for constant velocity:
i) Stretch (1D timedepth conversion) the ZOS image from t to .
a
.
ii) Replace each point in the (r, .
a
) picture with a wavefront circle of radius .
a
. Amplitudes along
the wavefront circle are constant and equal to the amplitude at (r, .
a
).
5.2. FUNDAMENTAL MIGRATION CONCEPTS 129
δ
α
R
e
f
l
e
c
t
o
r
Z
o
s
i
m
a
g
e

/
r
/

/
Datum
Figure 5.13: The normalincidence reﬂection
point and the corresponding point on the ZOS
image both lie on a circle of radius 
k
centered
at r
k
.
Z
o
s
i
m
a
g
e
R
e
f
l
e
c
t
o
r
f
o
r
m
s
t
a
n
g
e
n
t
t
o
w
a
v
e
f
r
o
n
t
s
Datum
Figure 5.14: The wavefront migration of a dip
ping reﬂector is shown. Each point on the ZOS
image is replaced by a wavefront circle of radius

k
. The wavefronts interfere constructively at
the location of the actual reﬂector.
iii) The superposition of all such wavefronts will form the desired depth section.
Figure 5.14 shows the migration of a dipping reﬂector by wavefront superposition. The actual
mechanics of the construction are very similar to a convolution. Each point in the ZOS image is used
to scale a wavefront circle which then replaces the point. A 2D convolution can be constructed by
a similar process of replacement. The diﬀerence is that the replacement curve in a 2D convolution
is the same for all points while in the migration procedure it varies with depth. Thus the migration
process can be viewed as a nonstationary convolution.
Wavefront migration shows that the impulse response of migration is a wavefront circle. That is,
if the input ZOS contains only a single nonzero point, then the migrated section will be a wavefront
circle. The circle is the locus of all points in (r, .) that have the same traveltime to (r
k
, 0). Two
equivalent interpretations of this are either that the circle is the only earth model that could produce
a single output point or that the circle is the curve of equal probability. The ﬁrst interpretation is
a deterministic statement that only one earth model could produce a ZOS image with a single
live sample. The second interpretation is a stochastic one that suggests why the generalization
from one live sample to many works. By replacing each point with it’s curve of equal probability,
the migrated section emerges as the most likely geology for the superposition of all points. The
constructive interference of a great many wavefronts forms the migrated image.
Exercise 5.2.1. Describe the appearance of:
• a migrated section that contains a high amplitude noise burst on a single trace.
• a migration that results from a ZOS image whose noise level increases with time.
• the edge of a migrated section.
5.2.5 Huygens’ principle and point diﬀractors
Christian Huygens was an early physicist and astronomer (a contemporary of Newton) who made
a number of advances in the understanding of waves. Most notable was his principle that, if the
130 CHAPTER 5. ELEMENTARY MIGRATION METHODS
point sources
t
t ∆t +
Figure 5.15: Huygens’ principle reconstructs the
wavefront at t + ∆t by the superposition of the
small wavefronts from secondary point sources
placed on the wavefront at t.
Reef
Datum
·
o
·
1
·
:
·
¸
·
¸
Point diffractors
(scatterers)
Figure 5.16: The seismic response of a contin
uous geological structure is synthesized as the
superposition of the responses of many point
diﬀractors.
position of a wavefront at time t is known, its position at t + ∆t can be computed by a simple
strategy. Each point on the wavefront at time t is considered to be a secondary source of a small
spherical (3D) or circular (2D) wavefront called a Huygens’ wavelet as shown in Figure 5.15. For the
seismic problem, Huygens’ principle can be adapted to consider the response of a continuous reﬂector
as the superposition of the responses of a great many point diﬀractors or scatterpoints(Figure 5.16).
Figure 5.17 shows the concept of a point diﬀractor that scatters any incident wave in all directions.
Thus the complete imaging of any reﬂector is only possible if all of this scattered energy is captured
and focused at the scatterpoint. Each scattered raypath is characterized by its scattering angle θ. If
the scatterpoint lies on a dipping reﬂector then the scattered ray that coincides with the normal ray
will be the strongest after superposition of many scatterpoints. For this ray the scattering angle is the
same as the reﬂector dip which suggests why the scattering angle is commonly called the “migration
dip” in a migration program. However, migration dip still conveys a misleading impression to many
untutored users who wish to equate it with geologic dip. They draw the mistaken conclusion that,
for data with low geologic dips, it suﬃces to correctly handle only low migration dips. The correct
interpretation of migration dip as scattering angle shows that even for low geologic dips it is desirable
to handle large scattering angles. In fact, a highresolution migration requires that scattering angle
be as large as possible. In the context of section 5.1.3 scattering angle is directly related to spectral
components through /
x
,) = .5 sin θ,· or equivalently /
x
= .5) sin θ. This says that high /
x
values
require large values of θ. It is a fundamental component of resolution theory that the /
x
spectrum
must be as large as possible for high resolution.
The traveltime curve of a point diﬀractor, for zerooﬀset recording and constant velocity, has a
raypath geometry that is essentially equivalent to that for a CMP gather and a zerodip reﬂector
(Figure 5.18). Recall that the NMO traveltime curve is given by t
2
H
= t
2
0
+ H
2
,·
2
where H is the
full sourcereceiver oﬀset. This means that the traveltime curve for a zerooﬀset point diﬀractor is
given by
t
2
x
= t
2
0
+
4(r −r
0
)
2
·
2
(5.36)
where the diﬀractor is at (r
0
, .), t
0
= 2.,·, and the velocity, ·, is constant. The factor of 4 in the
numerator arises because r−r
0
corresponds to the halfoﬀset. For ·(.), the conclusion is immediate
5.2. FUNDAMENTAL MIGRATION CONCEPTS 131
point diffractors
(scatterers)
reflector
datum cmp 1
.
.
.
is the”migration dip”
cmp 3 cmp n
θ
θ
Figure 5.17: Each point on a reﬂector is consid
ered to be a point diﬀractor that scatters energy
to all surface locations.
: : : : : :
: :
/
B A
: :
/
: :
/
: :
/
: :
/
Figure 5.18: (A) The ray paths for the left side of
a zerooﬀset point diﬀractor. (B) The raypaths
for a CMP gather assuming a zerodip reﬂector.
These raypaths are identical for ·(.) leading to
the conclusion that the traveltime curves for the
point diﬀractor are the same as for the NMO
experiment.
3000 2000 1000 0 1000 2000 3000
0
0.5
1
1.5
A
3000 2000 1000 0 1000 2000 3000
0
0.5
1
1.5
B
meters meters
s
e
c
o
n
d
s
Figure 5.19: (A) This diﬀraction chart shows the traveltime curves for ﬁve point diﬀractors
in a constant velocity medium. All ﬁve curves are asymptotic to the line x=vt/2. (B) The
second hyperbola has been migrated by wavefront superposition.
132 CHAPTER 5. ELEMENTARY MIGRATION METHODS
1000 500 0 500 1000
0
500
1000
1500
D
i
p
p
i
n
g
r
e
f
l
e
c
t
o
r
Z
o
s
i
m
a
g
e
met er s
m
e
t
e
r
s
Figure 5.20: The ZOS image of the dipping reﬂector is formed by replacing each point on
the reﬂector with the ZOS image of a point diﬀractor. The superposition of these many
hyperbolae forms the dipping reﬂector’s ZOS image.
that the Dix equation proof that the NMO hyperbola is approximately characterized by ·
rms
means
that the diﬀraction traveltimes are approximately
t
2
x
≈ t
2
0
+
4(r −r
0
)
2
·
2
rms
(5.37)
where t
0
= 2.,·
ave
.
Figure 5.14 shows how wavefront superposition migrates the ZOS image of a dipping reﬂector.
The ZOS image of a single point diﬀractor is the hyperbola given by equation (5.36) so it is instructive
to see how wavefront migration can collapse such hyperbolae. Figure 5.19A shows a diﬀraction
chart that gives the traveltime curves for ﬁve point diﬀractors in a constant velocity medium. The
wavefront migration of this chart should convert it into ﬁve impulses, one at the apex of each
hyperbola. Figure 5.19B shows the wavefront migration of the second hyperbola on the chart. Each
point on the second hyperbola has been replaced by a wavefront circle whose radius is the vertical
time of the point. Since the chart is drawn with a vertical coordinate of time rather than depth,
these wavefront curves may not appear to be exactly circular. The geometry of hyperbola and
circles is such that the wavefront circles all pass through the apex of the second hyperbola. Thus
the amplitude of the wavefront superposition will be large at the apex and small elsewhere. The
same process will also focus all other hyperbolae on the chart simultaneously.
The diﬀraction curves can be used to perform the inverse of migration or modelling. Figure 5.20
shows the construction of the ZOS image of a dipping reﬂector using Huygens’ principle. Each point
on the dipping reﬂector is replaced by the ZOS image of a point diﬀractor. The superposition of
these many hyperbolae constructs the ZOS image of the dipping reﬂector. For a given hyperbola,
its apex lies on the geology and it is tangent to the ZOS image. This directly illustrates that the
wavefront migration of dipping reﬂectors is completely equivalent to the migration of diﬀraction
responses. In fact, the collapse of diﬀraction responses is a complete statement of the migration
problem and a given algorithm can be tested by how well it achieves this goal.
5.2. FUNDAMENTAL MIGRATION CONCEPTS 133
Receivers
Reflector
Wavefield at time 0
•
Figure 5.21: The exploding reﬂector model at
the instant of explosion establishes a waveﬁeld
that is isomorphic with the reﬂector.
ψ0(r,t)=12_V∞φ(/x,0,))c2πi(kxx−ft)d/xd).ψ0(r,t)=12_V∞φ(/x,0,))c2πi(kxx−ft)d/xd).
Wavefield snapshot
Receivers
Figure 5.22: A snapshot of the ERM waveﬁeld
at some instant of time as it approaches the re
ceivers
5.2.6 The exploding reﬂector model
In the preceding sections, two methods have been described to migrate stacked data. In section
5.2.2 the stacked section was treated as a normalincidence seismogram and raytrace techniques
were developed to migrate it. In section 5.2.4 the wavefront migration method was presented for
constantvelocity zerooﬀset sections. Further progress is greatly facilitated by a more abstract
model of the stacked section. Ultimately, the goal is to formulate the poststack migration problem
as a solution to the wave equation where the measured data plays the role of a boundary value.
However, this is complicated by the fundamental fact that the CMP stack is not a single waveﬁeld
but the composite of many individual waveﬁelds. There is no single physical experiment that could
record a ZOS and so a ZOS cannot be a single physical waveﬁeld.
There is a useful thought experiment, called the exploding reﬂector model (ERM), that does yield
something very similar to a ZOS and serves as the basis for most poststack migration methods. (The
following discussion is presented in 2D and the generalization to 3D is elementary.) As motivation,
note that equation (5.36) can be rewritten as
t
2
x
= t
2
0
+
(r −r
0
)
2
ˆ ·
2
(5.38)
where ˆ · = ·,2 is called the exploding reﬂector velocity and t
0
= .,ˆ ·. This trivial recasting allows
the interpretation that the point diﬀractor is a seismic source of waves that travel at onehalf of
the physical velocity. As shown in Figure 5.21 the exploding reﬂector model adopts this view and
postulates a model identical to the real earth in all respects except that the reﬂectors are primed with
explosives and the seismic wave speeds are all halved. Receivers are placed at the CMP locations
and at t = 0 the explosives are detonated. This creates a waveﬁeld that is morphologically identical
to the geology at the instant of explosion.
If ψ(r, ., t) denotes the exploding reﬂector waveﬁeld, then the mathematical goal of the migration
problem is to calculate ψ(r, ., t = 0). Thus ψ(r, ., t = 0) is identiﬁed with the geology and represents
the migrated depth section. The ERM waveﬁeld is allowed to propagate only upward (the −.
direction) without reﬂections, mode conversions, or multiples. It refracts according to Snell’s law and
the halfvelocities mean that the traveltimes measured at the receivers are identical to those of the
ZOS. In the constant velocity simulation of Figure 5.22, a snapshot of the ERM waveﬁeld, ψ(r, ., t =
134 CHAPTER 5. ELEMENTARY MIGRATION METHODS
receivers
z
o
s
im
a
g
e
G
e
o
l
o
g
y
Figure 5.23: The ERM seismogram is shown superimposed on the migrated depth section.
con:t), is shown as the waveﬁeld approaches the receivers. The raypaths are normalincidence
raypaths (because of the isomorphism between the geology and ψ(r, ., t = 0)) and spreading and
buried foci are manifest. The ﬁgure emphasizes three Huygen’s wavelets that emanate from the three
corners of the geologic model. The migrated depth section is also a snapshot, but a very particular
one, so the term snapshot will be used to denote all such constanttime views.
In Figure 5.23, the ERM seismogram, ψ(r, . = 0, t), is shown in apparent depth superimposed
on top of the depth section. Wavefront circles are shown connecting points on the geology with
points on the seismogram. The ERM seismogram is kinematically identical (i.e. the traveltimes are
the same) with the normalincidence seismogram and is thus a model of the CMP stack. It is also
kinematically identical with all normalincidence, primary, events on a ZOS image. This allows the
migration problem to be formulated as a solution to the wave equation. Given ψ(r, . = 0, t) as a
boundary condition, a migration algorithm solves the wave equation for the entire ERM waveﬁeld,
ψ(r, ., t), and then sets t = 0 to obtain the migrated depth section. This last step of setting t = 0
is sometimes called imaging though this term has also come to refer to the broader context of
migration in general. Precisely how the waveﬁeld is evaluated to extract the geology is called an
imaging condition. In the poststack case the imaging condition is a simple evaluation at t = 0.
Later, it will be seen that there are other imaging conditions for prestack migration.
Thus far, the ERM has given simple mathematical deﬁnitions to the migrated depth section, the
recorded seismogram, and the waveﬁeld snapshot. In addition, the extrapolated seismogram can be
deﬁned as ψ(r, . = ∆., t). Both the ERM seismogram and the extrapolated seismogram are time
sections while the snapshot and the migrated section are in depth. The extrapolated seismogram
is a mathematical simulation of what would have been recorded had the receivers been at . = ∆.
rather than at . = 0. The construction of ψ(r, . = ∆., t) from ψ(r, . = 0, t) is called downward
continuation and, synonymously, waveﬁeld extrapolation.
As a summary, the ERM has deﬁned the following quantities:
ψ(r, ., t) . . . the ERM waveﬁeld.
ψ(r, ., t = 0) . . . the migrated depth section.
ψ(r, ., t = con:t) . . . a waveﬁeld snapshot.
ψ(r, . = 0, t) . . . the ERM seismogram.
ψ(., . = ∆., t) . . . an extrapolated section.
5.3. MATLAB FACILITIES FOR SIMPLE MODELLING AND RAYTRACE MIGRATION 135
N
.
cmp stack
extrapolated
section
migrated depth
section
∆.
r
t
Figure 5.24: This prism shows the portion of (r, ., t) space that can be constructed from
a ﬁniteextent measurement of ψ(r, . = 0, t) (upper face). Also shown are the migrated
depth section, ψ(r, ., t = 0), (vertical slice) and an extrapolated section, ψ(r, . = ∆., t),
(horizontal slice).
These quantities are depicted in Figure 5.24. It is signiﬁcant that any extrapolated seismogram can
be evaluated at t = 0 to give a single depth sample of the migrated depth section. The process
of deducing a succession of extrapolated seismograms, and evaluating each at t = 0, is called a
recursive migration. It is recursive because the extrapolated seismogram ψ(r, . = .
k
, t) is computed
from the previous seismogram ψ(r, . = .
k−1
, t). Examples of recursive migrations are the ﬁnite
diﬀerence methods and the phaseshift techniques. An alternative to the recursive approach is a
direct migration that computes ψ(r, ., t = 0) directly from ψ(r, . = 0, t) without the construction
of any intermediate products. Examples of direct migration are (/
x
, )) migration and Kirchhoﬀ
migration.
A direct migration tends to be computationally more eﬃcient than a recursive approach both
in terms of memory usage and computation speed. However, the direct methods must deal with
the entire complexity of the velocity structure all at once. In contrast, the recursive approach
forms a natural partitioning of the migration process into a series of waveﬁeld extrapolations. The
extrapolation from . = .
k−1
to . = .
k
need only deal with the velocity complexities between these
two depths. If the interval .
k−1
→.
k
is taken suﬃciently small, then the vertical variation of velocity
can be ignored and · can be considered to depend only upon the lateral coordinates. In this way
the migration for a complex ·(r, .) variation can be built from the solution of many ·(r) problems.
5.3 MATLAB facilities for simple modelling and raytrace mi
gration
This section describes three facilities that can produce simple seismic section models. The ﬁrst two,
hyperbolic superposition and ﬁnite diﬀerencing, create full waveform models suitable for migration
with full waveform migration methods. The third, normal incidence raytracing, merely predicts
arrival times of events and not their amplitudes.
136 CHAPTER 5. ELEMENTARY MIGRATION METHODS
5.3.1 Modelling by hyperbolic superposition
Section 5.2.5 describes how the seismic response of a complex geological structure can be viewed as
the superposition of the responses of many point diﬀractors. Conceptually, inﬁnitely many point
diﬀractors are required and the seismic response is found in the limit as the number of diﬀractors
becomes inﬁnite and their spacing inﬁnitesimal. In a practical computer implementation, only a
ﬁnite number of diﬀractors can be simulated and their spacing can be no ﬁner than the underlying
computation grid.
There are six basic routines that support modelling by superposition of hyperbolae. These are
collected in the synsections toolbox and assume that a constantvelocity, zerooﬀset synthetic is
desired. The fundamental paradigm is that each routine inserts a single event in a matrix that
represents the seismic section. These six basic commands are
event spike Inserts an isolated noise spike.
event hyp Inserts a hyperbolic event.
event dip Inserts a dipping (linear) event.
event diph Builds a dipping event by superimposing hyperbolae.
event diph2 Similar to event diph plus it allows control over the hyperbolae spacing.
event pwlinh Superimposes hyperbolae along a piecewise linear track.
These all operate similarly and insert a spike, hyperbola, linear event, or piecewise linear event in
a matrix. The matrix must be created externally and assigned vertical (time) and horizontal (dis
tance) coordinates. Then the inserted event is described by its position in (r, t) or (r, .). Some of
the commands require the speciﬁcation of velocity and this should be the physical velocity. Within
the functions, the velocity is halved to produce an exploding reﬂector synthetic. The ﬁnal three
commands create events by the superposition of hyperbolae along linear or piecewise linear struc
tures. By calling these functions repeatedly, the seismic responses from quite complex geometric
shapes can be synthesized.
Code Snippet 5.3.1. This example creates the synthetic zero oﬀset section shown in Figure 5.25.
1 v=2000;dx=10;dt=.004;%basic model parameters
2 x=0:dx:2000;%x axis
3 t=0:dt:2;%t axis
4 seis=zeros(length(t),length(x));%allocate seismic matrix
5 seis=event_hyp(seis,t,x,.4,700,v,1,3);%hyperbolic event
6 seis=event_dip(seis,t,x,[.75 1.23],[700 1500],1);%linear event
7 [w,tw]=ricker(dt,40,.2);%make ricker wavelet
8 seis=sectconv(seis,t,w,tw);%apply wavelet
End Code
Code Snippet 5.3.2. This is similar to Code Snippet 5.3.1 but diﬀers by using event diph to
create the dipping event. The result is shown in Figure 5.26.
1 v=2000;dx=10;dt=.004;%basic model parameters
2 x=0:dx:2000;%x axis
3 t=0:dt:2;%t axis
4 seis=zeros(length(t),length(x));%allocate seismic matrix
5 seis=event_hyp(seis,t,x,.4,700,v,1,3);%hyperbolic event
6 seis=event_dip(seis,t,x,[.75 1.23],[700 1500],1);%linear event
7 [w,tw]=ricker(dt,40,.2);%make ricker wavelet
8 seis=sectconv(seis,t,w,tw);%apply wavelet
5.3. MATLAB FACILITIES FOR SIMPLE MODELLING AND RAYTRACE MIGRATION 137
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000
0
0.5
1
1.5
2
Figure 5.25: The hyperbolic response of a point
diﬀractor and a simple linear event are shown.
The display is slightly clipped to make the
diﬀraction more visible. This was created by
Code Snippet 5.3.1.
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000
0
0.5
1
1.5
2
Figure 5.26: Similar to Figure 5.25 except that
the linear event was created by the superposition
of many hyperbolae. The display is clipped to
match that of Figure 5.25. See Code Snippet
5.3.2.
End Code
Code Snippet 5.3.1 illustrates the use of event hyp and event dip to create the model section
shown in Figure 5.25. The ﬁrst three lines establish the basic model geometry and deﬁne the
coordinate axes; then, line 4 initializes the seismic matrix to zero. On line 5, event hyp is invoked
to make the hyperbolic diﬀraction response shown in the top left of Figure 5.25. The seismic matrix
is input to event hyp and is replaced by the output. The coordinate vectors (second and third input
parameters) are required to deﬁned the geometry. The fourth and ﬁfth input parameters are the
(r, t) coordinates of the apex of the diﬀraction and the sixth parameter is the velocity. The seventh
parameter sets the amplitude at the apex of the hyperbola and the eighth is a ﬂag that determines
how amplitude decays down the limbs of the hyperbola. There are four possibilities: (1) no amplitude
decay, (2) decay given by o(r) = o(0)t
0
,t
x
(where o(r) is the amplitude at oﬀset r, t
0
is the zero
oﬀset traveltime, and t
x
is the traveltime at oﬀset r), (3) decay given by o(r) = o(0)(t
0
,t
x
)
3/2
, and
(4) decay given by o(r) = o(0)(t
0
,t
x
)
2
. Line 6 invokes event dip to create the linear dipping event
seen in the center of Figure 5.25. The fourth input parameter speciﬁes the time of the event at
its beginning and end while the ﬁfth parameter gives the corresponding lateral positions. The last
parameter gives the event amplitude. Once the events are created, the ﬁnal two lines make a Ricker
wavelet (dominant frequency of 40 Hz) and convolve it with the seismic section.
The linear event shown in Figure 5.25 is physically unrealistic because it lacks diﬀractions from
its endpoints. Real waveﬁelds are never discontinuous. A much more realistic event can by created
using event diph . This function synthesizes a linear event by hyperbolic superposition exactly
as illustrated in Figure 5.20. The result is the seismic section shown in Figure 5.26. In order to
do so, the input parameters must describe the dipping event in (r, .) rather than (r, t). Code
Snippet 5.3.2 shows how this is done and diﬀers from Code Snippet 5.3.1 only on line 6. The fourth
input parameter for event diph is the velocity while the next four parameters are respectively: the
starting and ending r coordinates, the starting . coordinate, and the dip in degrees. The lateral
extent of the resulting event is generally much greater than the prescribed coordinates. If the section
138 CHAPTER 5. ELEMENTARY MIGRATION METHODS
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000
0
0.5
1
1.5
2
Figure 5.27: The response of ﬁve reﬂectors with
dips of 0
◦
, 20
◦
, 40
◦
, 60
◦
, and 80
◦
.
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000
0
0.5
1
1.5
2
Figure 5.28: The same dataset as Figure 5.28 is
shown with a strongly clipped display to reveal
the underlying hyperbolae.
is migrated, then the migrated reﬂector will be found between the speciﬁed coordinates.
A more complex seismic section is shown in Figure 5.27. The geologic model is a fan of ﬁve
dipping reﬂectors that originate at the point (r, .) = (250m, 200m) and extend to the right until
r = 1500:. In Figure 5.28 the same seismic section is shown with a strongly clipped display to
reveal the underlying hyperbolae.
Code Snippet 5.3.3. This code illustrates the use of event pwlinh to create a simple model of a
reef. The result is shown in Figure 5.29.
1 v=2000;dx=10;dt=.004;%basic model parameters
2 x=0:dx:3000;%x axis
3 t=0:dt:1.5;%t axis
4 zreef=600;hwreef=200;hreef=50;%depth, halfwidth, and height of reef
5 xcntr=max(x)/2;
6 xpoly=[xcntrhwreef xcntr.8*hwreef xcntr+.8*hwreef xcntr+hwreef];
7 zpoly=[zreef zreefhreef zreefhreef zreef];
8 seis4=zeros(length(t),length(x));%allocate seismic matrix
9 seis4=event_diph(seis4,t,x,v,0,xcntrhwreef,zreef,0,.1);%left of reef
10 seis4=event_diph(seis4,t,x,v,xcntr+hwreef,max(x),zreef,0,.1);%right of reef
11 seis4=event_diph(seis4,t,x,v,xcntrhwreef,xcntr+hwreef,zreef,0,.2);%base of reef
12 seis4=event_pwlinh(seis4,t,x,v,xpoly,zpoly,.1*ones(size(zpoly)));%reef
13 [w,tw]=ricker(dt,40,.2);%make ricker wavelet
14 seis4=sectconv(seis4,t,w,tw);%apply wavelet
End Code
Code Snippet 5.3.3 illustrates the use of these hyperbolic summation tools to create a simple
model of a reef. The resulting seismic response is shown in Figures 5.29 and 5.30. The reef is a
simple trapezoidal structure, 400 m wide and 50 m high, on top of a ﬂat reﬂector 600 m below the
recording plane. The reﬂection coeﬃcient of the reef is modelled as .1 (the acoustic impedance
within the reef is assumed to be lower than the surrounding material), +.1 on the base reﬂector,
and +.2 beneath the reef.
5.3. MATLAB FACILITIES FOR SIMPLE MODELLING AND RAYTRACE MIGRATION 139
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000 2500 3000
0
0.5
1
1.5
Figure 5.29: The seismic response of a simple
reef model. This was created with Code Snippet
5.3.3
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000 2500 3000
0
0.5
1
1.5
Figure 5.30: The same dataset as Figure 5.29 is
shown with a strongly clipped display to reveal
the underlying hyperbolae.
Code Snippet 5.3.4. This code uses event diph2 to construct the response of a trapezoidal struc
ture. The parameter ndelx (line 5) controls the spacing of the hyperbolae. Figures 5.31, 5.32, 5.33
and 5.34 correspond to values of ndelx of 15, 10, 5, and 1 respectively.
1 v=2000;dx=5;dt=.004;%basic model parameters
2 x=0:dx:3000;%x axis
3 t=0:dt:1.5;%t axis
4 xcntr=max(x)/2;
5 ndelx=30;
6 seis5=zeros(length(t),length(x));%allocate seismic matrix
7 seis5=event_diph2(seis5,t,x,v,0,500,1000,ndelx,0,.1);
8 seis5=event_diph2(seis5,t,x,v,500,xcntr500,1000,ndelx,45,.1);
9 seis5=event_diph2(seis5,t,x,v,xcntr500,xcntr+500,500,ndelx,0,.1);
10 seis5=event_diph2(seis5,t,x,v,xcntr+500,max(x)500,500,ndelx,45,.1);
11 seis5=event_diph2(seis5,t,x,v,max(x)500,max(x),1000,ndelx,0,.1);
12 [w,tw]=ricker(dt,40,.2);%make ricker wavelet
13 seis5=sectconv(seis5,t,w,tw);%apply wavelet
End Code
The function event diph2 is similar to event diph except that it allows control over the spacing
of hyperbolae through the input parameter ndelx. In event diph the hyperbolae spacing is never
greater than the grid spacing while in event diph2 the spacing is ndelx times greater than in
event diph . Code Snippet 5.3.4 illustrates the use of this function to create a series of ﬁgures
illustrating the gradual formation of the seismic response of a trapezoidal structure. The sequence
of Figures 5.31, 5.32, 5.33 and 5.34 shows the complete seismic response gradually forming as the
density of hyperbolae increases.
Also present in the synsections toolbox are two functions that make “standard” synthetics
called makestdsyn and makestdsynh . These diﬀer in that one uses hyperbolic superposition for
linear events and the other does not. Their use can be illustrated in the script makesections that
can be run as a demonstration.
140 CHAPTER 5. ELEMENTARY MIGRATION METHODS
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000 2500 3000
0
0.5
1
1.5
Figure 5.31: A trapezoidal structure is modelled
with only a few sparse hyperbolae. Relative to
Figure 5.34 only every 15th hyperbola is shown.
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000 2500 3000
0
0.5
1
1.5
Figure 5.32: Similar to Figure 5.31 except that
every 10th hyperbola is shown.
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000 2500 3000
0
0.5
1
1.5
Figure 5.33: Similar to Figure 5.31 except that
every 5th hyperbola is shown.
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000 2500 3000
0
0.5
1
1.5
Figure 5.34: A trapezoidal structure is com
pletely modelled by hyperbolic superposition.
Compare with Figures 5.31, 5.32, and 5.33.
5.3. MATLAB FACILITIES FOR SIMPLE MODELLING AND RAYTRACE MIGRATION 141
5.3.2 Finite diﬀerence modelling for exploding reﬂectors
This section builds on section 3.3 and describes those extensions required for exploding reﬂector
modeling. The key facility here is the function afd explode that uses an input velocity model to
calculate the initial exploding reﬂector snapshot, ψ(r, ., t = 0), and then timestep it with equation
(3.18).
The calculation of ψ(r, ., t = 0) can be done directly from the velocity model if it is assumed to
be the normal incidence reﬂectivity at constant density. Using equation (5.1) and assuming a unit
volume, that is
ψ(r, ., t = 0) = :
n
(r, .) =
1
2
¸
¸
¸
∇log ·(r, .)
¸
¸
¸ . (5.39)
This can be simply calculated using MATLAB’s builtin gradient function, gradient. Given an
input matrix representing log ·(r, .), this function returns two matrices of the same size representing
∂
x
log ·(r, .) and ∂
z
log ·(r, .). These are calculated using a centered ﬁnite diﬀerence approximation
for interior points and onesided approximations on the boundaries. Thus, reﬂectivity is calculated
by
[rx,rz]=gradient(log(velocity));
r=.5*sqrt(rx.ˆ2+rz.ˆ2);
where velocity is a matrix representing ·(r, .). This calculation is provided by the function
afd reflec that is invoked by afd explode .
Code Snippet 5.3.5. This code uses of afd explode to model the exploding reﬂector response of
a small channel. Lines 111 build the velocity model and lines 1325 create a fourthorder exploding
reﬂector seismogram. The results are shown in Figures 5.35, and 5.36.
1 dx=5; %cdp interval
2 xmax=2500;zmax=1000; %maximum line length and maximum depth
3 x=0:dx:xmax; % x coordinate vector
4 z=0:dx:zmax; % z coordinate vector
5 vhigh=4000;vlow=2000; % high and low velocities
6 vrange=vhighvlow;
7 %initialize velocity matrix as a constant matrix full of vlow
8 vel=vlow*ones(length(z),length(x));
9 %first layer
10 z1=100;z2=200;v1=vlow+vrange/5;
11 xpoly=[dx xmax+dx xmax+dx dx];zpoly=[z1 z1 z2 z2];
12 vel=afd_vmodel(dx,vel,v1,xpoly,zpoly);
13 %second layer
14 z3=271;v2=vlow+2*vrange/5;
15 zpoly=[z2 z2 z3 z3];
16 vel=afd_vmodel(dx,vel,v2,xpoly,zpoly);
17 %third layer
18 z4=398;v3=vlow+pi*vrange/5;
19 zpoly=[z3 z3 z4 z4];
20 vel=afd_vmodel(dx,vel,v3,xpoly,zpoly);
21 %last layer
22 zpoly=[z4 z4 zmax+dx zmax+dx];
23 vel=afd_vmodel(dx,vel,vhigh,xpoly,zpoly);
24 %channel
25 width=20;thk=50;
26 vch=vlow+vrange/6;
27 xpoly=[xmax/2width/2 xmax/2+width/2 xmax/2+width/2 xmax/2width/2];
28 zpoly=[z4 z4 z4+thk z4+thk];
29 vel=afd_vmodel(dx,vel,vch,xpoly,zpoly);
142 CHAPTER 5. ELEMENTARY MIGRATION METHODS
meters
m
e
t
e
r
s
0 500 1000 1500 2000 2500
0
200
400
600
800
1000
Figure 5.35: The velocity model created by Code
Snippet 5.3.5.
s
e
c
o
n
d
s
meters
0 500 1000 1500 2000 2500
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Figure 5.36: The fourthorder exploding reﬂec
tor seismogram created on line 35 of Code Snip
pet 5.3.5.
30
31 %create the exploading reflector model
32 dt=.004; %temporal sample rate
33 dtstep=.001; %modelling step size
34 tmax=2*zmax/vlow; %maximum time
35 [seisfilt,seis,t,xrec]=afd_explode(dx,dtstep,dt,tmax, ...
36 vel,length(x),x,zeros(size(x)),[10 15 40 50],0,2,0);
End Code
Code Snippet 5.3.5 illustrates the creation of a model of a small channel beneath a layered
medium. The creation of the velocity model uses afd vmodel and was discussed in detail in section
3.3. The channel is deﬁned on lines 2529 as 20 m wide and 50 m deep. With the 5 m grid (line 1)
this means that the channel is 4 samples wide and 10 samples deep. The resulting velocity model is
shown in Figure 5.35. Lines 3236 take this velocity model into afd explode to create an exploding
reﬂector seismogram using the fourthorder Laplacian approximation (equation (3.20)). As with
afd shotrec , two temporal sample rates are prescribed. The coarser one (dt on line 32) speciﬁes
the sample rate of the ﬁnal seismogram while the ﬁner one (dtstep on line 33) is the time step of
the modelling. The resulting seismogram, ﬁltered with Ormsby parameters of [10 15 40 50] is shown
in Figure 5.36. Two small horizontal lines are superimposed to indicate the position of the channel.
The lines are at the time of the top and bottom of the channel (.312 and .355 seconds) and have the
same width as the channel. The channel produces an extensive diﬀraction pattern showing scattered
energy over the entire model.
Figure 5.37 shows a second exploding reﬂector seismogram of the channel model that was cal
culated with the secondorder approximate Laplacian (equation (3.19)). In comparison with the
fourthorder seismogram of Figure 5.36, this result is considerably less accurate though it required
only onehalf of the computation time. Even less accurate is the secondorder solution shown in
Figure 5.38 that was done with a grid sample size of 10 m rather than the 5m of the previous two
ﬁgures. This result is almost unrecognizable as the response of the same structure. An obvious
conclusion is that the results from ﬁnite diﬀerence modelling should not be trusted without a careful
consideration of the algorithms and parameters.
5.3. MATLAB FACILITIES FOR SIMPLE MODELLING AND RAYTRACE MIGRATION 143
s
e
c
o
n
d
s
meters
0 500 1000 1500 2000 2500
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Figure 5.37: Similar to the seismogram of Fig
ure 5.36 except that the Laplacian was approx
imated with secondorder ﬁnite diﬀerences.
s
e
c
o
n
d
s
meters
0 500 1000 1500 2000 2500
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Figure 5.38: Similar to the seismogram of Figure
5.37 except that the spatial sample rate was 10m
rather than 5m.
meters
m
e
t
e
r
s
0 500 1000 1500 2000 2500
0
200
400
600
800
1000
Figure 5.39: An anticline beneath a high veloc
ity wedge. Black is 4000 m/s and white is 2000
m/s.
meters
m
e
t
e
r
s
0 500 1000 1500 2000 2500
0
200
400
600
800
1000
Figure 5.40: The reﬂectivity, corresponding to
Figure 5.39, is shown. This was calculated with
afd reflect .
144 CHAPTER 5. ELEMENTARY MIGRATION METHODS
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000 2500
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Figure 5.41: The fourthorder exploding reﬂec
tor seismogram corresponding to the model of
Figure 5.39. This model was created using a
spatial grid size of 10 m.
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000 2500
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Figure 5.42: Similar to Figure 5.41 except that
the spatial grid size was 5 m.
As a slightly more complex example that will be useful in examining depth migration, consider
the response of an anticline beneath a highvelocity wedge as shown in Figure 5.39. Code Snippet
5.3.6 creates this velocity model and the fourthorder exploding reﬂector seismogram shown in Figure
5.41. This result was created with a spatial grid size of 10 m. It might be tempting to trust this
result as the proper physical response of the model, but that could lead to erroneous conclusions.
For example, it might be concluded that the response of the anticline has a series of reverberations
following the primary response. However, before leaping to conclusions, it is prudent to recreate
the model with a ﬁner spatial grid size. Figure 5.42 shows the result of rerunning Code Snippet
5.3.6 with the spatial grid size set to 5 m. The reverberations have vanished and the amplitude
variation of the primary response of the anticline has changed considerably. Once again, it pays to
be cautious when working with ﬁnite diﬀerence synthetics. The only way to be certain is to fully
understand the algorithm and how to change the parameters to increase the accuracy. When the
accuracy parameters are increased by a factor of two and the response does not change signiﬁcantly,
then it is safe to conclude that the model is showing an accurate physical response. Of course, this
can be a tedious process because increasing the accuracy will always increase the computation time.
Code Snippet 5.3.6. This creates an exploding reﬂector model of an anticline beneath a high
velocity wedge. Lines 125 build the velocity model and lines 2734 create a fourthorder exploding
reﬂector seismogram. The results are shown in Figures 5.39, and 5.41.
1 dx=5; %cdp interval
2 xmax=2500;zmax=1000; %maximum line length and maximum depth
3 xpinch=1500; % wedge pinchout coordinates
4 zwedge=zmax/2; % wedge maximum depth
5 x=0:dx:xmax; % x coordinate vector
6 z=0:dx:zmax; % z coordinate vector
7 vhigh=4000;vlow=2000; % high and low velocities
8 vel=vlow*ones(length(z),length(x));%initialize velocity matrix
9 % define the wedge as a three point polygon
10 dx2=dx/2;
11 xpoly=[dx2 xpinch dx2];zpoly=[1 1 zwedge];
5.3. MATLAB FACILITIES FOR SIMPLE MODELLING AND RAYTRACE MIGRATION 145
12 % install the wedge in the velocity matrix
13 vel=afd_vmodel(dx,vel,vhigh,xpoly,zpoly);
14 % define an anticline beneath the wedge
15 x0=xpinch/2;z0=zwedge+100; % x and z of the crest of the anticline
16 a=.0005; % a parameter that determines the steepness of the flanks
17 za=a*(xx0).ˆ2+z0; % model the anticline as a parabola
18 % build a polygon that models the anticline
19 ind=near(za,zmax+dx);
20 xpoly=[x(1:ind) 0 ];zpoly=[za(1:ind) za(ind)];
21 %install the anticline in the velocity model
22 vel=afd_vmodel(dx,vel,vhigh,xpoly,zpoly);
23 % bottom layer
24 xpoly=[0 xmax xmax 0];zpoly=[.9*zmax .9*zmax zmax+dx zmax+dx];
25 vel=afd_vmodel(dx,vel,vhigh,xpoly,zpoly);
26
27 %do a finitedifference model
28 dt=.004; %temporal sample rate
29 dtstep=.001;
30 tmax=2*zmax/vlow; %maximum time
31 %[w,tw]=wavemin(dt,30,.2); %minimum phase wavelet
32 %[w,tw]=ricker(dt,70,.2); %ricker wavelet
33 [seisfilt,seis,t,xrec]=afd_explode(dx,dtstep,dt,tmax, ...
34 vel,length(x),x,zeros(size(x)),[5 10 40 50],0,2,0);
End Code
5.3.3 Migration and modelling with normal raytracing
Normal raytracing, that is the determination of the raypaths and traveltimes of normal incidence
rays, does not directly provide a complete seismic section. The determination of amplitudes would
require solution of the geometric spreading equation, (4.73), in addition to the eikonal equation.
However, even with this shortcoming, a great deal of useful information can be obtained by using
normal raytracing for migration or modelling.
The two key functions here are normray and normraymig that do modelling and migration
respectively. Migration by normal incidence raytracing was described in section 5.2.2 and normal ray
modelling is essentially just the inverse process. Function normraymig accepts the three parameters
deﬁning a pick, (r
0
, t
0
, ∆t,∆r), (page 123) and then uses shootrayvxz (discussed in section 4.12.2)
to trace that ray down into a velocity model. The plotimage picking facility (section 1.3.3) can be
used to provide these picks for normraymig to migrate. Function normraymig returns the abstract
ray vector, : = [r, j] (see equation (4.90)) as an nby4 matrix. The ﬁrst two columns are the
(r, .) coordinates while the second two are the horizontal and vertical slownesses. The number of
rows is the number of time steps required to trace the ray. Thus the ray vector provides complete
speciﬁcation of the raypath. As a convenience, normraymig will plot the raypath in a userspeciﬁed
ﬁgure.
The use of normraymig , as described in the previous paragraph, can become quite tedious if there
are a great many picks to migrate. Therefore, eventraymig is provided to automatically migrate all
of the picks stored in the global PICKS. Function eventraymig requires only a single input parameter
and that is the ﬁgure number to draw the raypaths in. However, prior to running either normraymig
or eventraymig the velocity model must be properly established using rayvelmod as described in
section 4.12.2.
In Figure 5.43, the exploding reﬂector seismogram of Figure 5.42 is shown with picks on the event
from the anticline. These picks were made with the plotimage picking facility (section 1.3.3) and
so are automatically stored as a global variable for eventraymig . Prior to migrating these picks,
and after running Code Snippet 5.3.6, the velocity matrices required for raytracing were initialized
146 CHAPTER 5. ELEMENTARY MIGRATION METHODS
s
e
c
o
n
d
s
meters
0 500 1000 1500 2000 2500
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Figure 5.43: The seismogram of Figure 5.42 is
shown with picks on the image of the anticline.
meters
m
e
t
e
r
s
0 500 1000 1500 2000 2500
0
200
400
600
800
1000
Figure 5.44: The picks of Figure 5.43 are shown
migrated on top of the reﬂectivity section.
with the command rayvelmod(vel,dx) where vel is the velocity matrix and dx is the grid size.
Then, the command eventraymig(figno), where figno is the MATLAB ﬁgure number of Figure
5.39, causes the picks to be migrated and the resulting raypaths displayed in Figure 5.44. At the
termination of each raypath, a small line segment, perpendicular to the raypath, is drawn that
indicates the implied reﬂector dip. (These do not appear perpendicular in Figure 5.44 because the
(r, .) axes do not have the same scale. The command axis equal will display any ﬁgure with equal
scales on all axes.)
The relative accuracy of the migrations in Figure 5.44 is instructive. The picks have all migrated
to positions near the anticline but some have fallen short while others have gone too far. Among the
obvious reasons for this are the diﬃculty in determining which phase (peak, trough, zero crossing,
etc.) of the input waveform should be picked and then making a consistent pick at two points. A
slight error in either case can result in a very large error in the ﬁnal position. Since the material
beneath the anticline has a high velocity, a pick that arrives at the anticline with a little time left
(see section 5.2.2) will continue a signiﬁcant distance. Thus, small errors in the pick time can make
a large error in the result. Also, an error in picking ∆t,∆r will cause the initial trajectory of the ray
to be incorrect. Since sin θ
0
= .5·
0
∆t,∆r, these emergence angle errors are also more signiﬁcant in
highvelocity material.
Migration by normal raytracing can reveal a lot about the nature of a seismic dataset. Also
instructive is the complementary process of normalincidence raytrace modelling. This process is
implemented in the function normray that is logical reverse of normraymig . The latter requires
the pick speciﬁcation of (r
0
, t
0
, ∆t,∆r) while the former needs the speciﬁcation of the normal ray:
(r
n
, .
n
, θ
n
). Here, (r
n
, .
n
) are the coordinates of the normal incidence point and θ
n
is the structural
dip (in degrees) at the normal incidence point. Though logically similar, it is convenient to use
separate raytracing engines for these two tasks because they have diﬀerent criteria for stopping
the ray. In migration, the ray is terminated when it has used the available traveltime while in
modelling, it is stopped when it encounters the recording surface (. = 0). These raytracing engines
are shootrayvxz and shootraytosurf respectively.
As with the migration tools, it is tedious to invoke normray at the command line for each pick.
Therefore, a convenience function, eventraymod is provided that automatically models any picks
found in the global variable PICKS. These picks are expected to have been made on a depth section
5.4. FOURIER METHODS 147
meters
m
e
t
e
r
s
0 500 1000 1500 2000 2500
0
200
400
600
800
1000
Figure 5.45: The reﬂectivity section of Figure
5.40 is shown with picks on the anticline and
normal rays to the surface.
meters
s
e
c
o
n
d
s
0 500 1000 1500 2000 2500
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Figure 5.46: The picks of Figure 5.45 are shown
modelled on top of the seismic section of Figure
5.42.
though no check is made to ensure this. Figure 5.45 shows the reﬂectivity section of Figures 5.40 and
5.44 with a series of picks, (r
n
, .
n
, θ
n
), made on the anticline. Also shown are the normal incidence
raypaths (drawn by normray ) to the surface. Figure 5.46 shows the modelled picks, (r
0
, t
0
, ∆t,∆r),
on top of the seismic section of Figures 5.42 and 5.43.
5.4 Fourier methods
The Fourier methods are developed from an exact solution to the wave equation using Fourier trans
forms. They provide a highﬁdelity migration that illustrates precisely how the migrated spectrum is
formed. There are two fundamental approaches and many variations of each. )/ migration (Stolt,
1978) is an exact solution to the migration problem for constant velocity. It is a direct method
that is the fastest known migration technique. Phaseshift migration (Gazdag, 1978) is a recursive
approach that uses a series of constant velocity extrapolations to build a ·(.) migration.
5.4.1 fk migration
Stolt (1978) showed that the migration problem can be solved by Fourier transform. Here, Stolt’s
solution will be developed from a formal solution of the wave equation using Fourier transforms. It
will be developed in 2D and the direct 3D extension will be stated at the end.
Let ψ(r, ., t) be a scalar waveﬁeld that is a solution to
∇
2
ψ −
1
ˆ ·
2
∂
2
ψ
∂t
2
= 0 (5.40)
where ˆ · is the constant ERM velocity. It is desired to calculate ψ(r, ., t = 0) given knowledge of
ψ(r, . = 0, t). The waveﬁeld can be written as an inverse Fourier transform of its (/
x
, )) spectrum
as
ψ(r, ., t) =
_
V∞
φ(/
x
, ., ))c
2πi(kxx−ft)
d/
x
d) (5.41)
148 CHAPTER 5. ELEMENTARY MIGRATION METHODS
where cyclical wavenumbers and frequencies are used and the Fourier transform convention uses a +
sign in the complex exponential for spatial components and a − sign for temporal components. (The
notation for the integration domain is explained in section 5.1.3.) If equation (5.41) is substituted
into equation (5.40), the various partial derivatives can be immediately brought inside the integral
where they can be readily evaluated. The result is
_
V∞
_
∂
2
φ(.)
∂.
2
+ 4π
2
_
)
2
ˆ ·
2
−/
2
x
_
φ(.)
_
c
2πi(kxx−ft)
d/
x
d) = 0 (5.42)
where the (/
x
, )) dependence in φ(.) has been suppressed for simplicity of notation. The derivation of
equation (5.42) does not require that ˆ · be constant; however, the next step does. If ˆ · is constant
1
,
then the lefthandside of equation (5.42) is the inverse Fourier transform of the term in curly
brackets. The uniqueness property of Fourier transforms (that there is a unique spectrum for a
given function and viceversa) guarantees that if a function vanishes everywhere in one domain, it
must do so in another. Put another way, the zero function has a zero spectrum. Thus, it results
that
∂
2
φ(.)
∂.
2
+ 4π
2
/
2
z
φ(.) = 0 (5.43)
where the wavenumber /
z
is deﬁned by
/
2
z
=
)
2
ˆ ·
2
−/
2
x
. (5.44)
Equation (5.44) is called the dispersion relation for scalar waves though the phrase is somewhat
misleading since there is no dispersion in this case.
Equations (5.43) and (5.44) are a complete reformulation of the problem in the (/
x
, )) domain.
The boundary condition is now φ(/
x
, . = 0, )) which is the Fourier transform, over (r, t), of ψ(r, . =
0, t). Equation (5.43) is a secondorder ordinary diﬀerential equation for ﬁxed (/
x
, )). Either of the
functions c
±2πikzz
solve it exactly as is easily veriﬁed by substitution. Thus the unique, general
solution can be written as
φ(/
x
, ., )) = ¹(/
x
, ))c
2πikzz
+ 1(/
x
, ))c
−2πikzz
(5.45)
where ¹(/
x
, )) and 1(/
x
, )) are arbitrary functions of (/
x
, )) to be determined from the boundary
condition(s). The two terms on the righthandside of equation (5.45) have the interpretation of a
downgoing waveﬁeld, ¹(/
x
, ))c
2πikzz
, and an upgoing waveﬁeld, 1(/
x
, ))c
−2πikzz
. This can be seen
by substituting equation (5.45) into equation (5.41) and determining the direction of motion of the
individual Fourier plane waves as described in section 4.9. It should be recalled that . increases
downward.
Given only one boundary condition, φ(/
x
, . = 0, )), it is now apparent that this problem cannot
be solved unambiguously. It is a fundamental result from the theory of partial diﬀerential equations
that Cauchy boundary conditions (e.g. knowledge of both ψ and ∂
z
ψ) are required on an open
surface in order for the wave equation to have a unique solution. Since this is not the case here, the
migration problem is said to be illposed. If both conditions were available, ¹ and 1 could be found
as the solutions to
φ(. = 0) ≡ φ
0
= ¹ + 1 (5.46)
1
Actually ˆ v(z) could be tolerated here. The necessary condition is that ˆ v must not depend upon x or t.
5.4. FOURIER METHODS 149
and
∂φ
∂.
(. = 0) ≡ φ
z0
= 2πi/
z
¹−2πi/
z
1. (5.47)
When faced with the need to proceed to a solution despite the fact that the stated problem does
not have a unique solution, a common approach is to assume some limited model that removes the
ambiguity. The customary assumption of oneway waves achieves this end. That is, ψ(r, ., t) is
considered to contain only upgoing waves. This allows the solution
¹(/
x
, )) = 0 and 1(/
x
, )) = φ
0
(/
x
, )) ≡ φ(/
x
, . = 0, )). (5.48)
Then, the ERM waveﬁeld can be expressed as the inverse Fourier transform
ψ(r, ., t) =
_
V∞
φ
0
(/
x
, ))c
2πi(kxx−kzz−ft)
d/
x
d). (5.49)
The migrated solution is
ψ(r, ., t = 0) =
_
V∞
φ
0
(/
x
, ))c
2πi(kxx−kzz)
d/
x
d). (5.50)
Equation (5.50) gives a migrated depth section as a double integration of φ
0
(/
x
, )) over ) and
/
x
. Though formally complete, it has the disadvantage that only one of the integrations, that over
/
x
, is a Fourier transform that can be done rapidly as a numerical FFT. The ) integration is not
a Fourier transform because the Fourier kernel c
−2πft
was lost when the imaging condition (setting
t = 0) was invoked. Inspection of equation (5.50) shows that another complex exponential c
−2πikzz
is available. Stolt (1978) suggested a change of variables from (/
x
, )) to (/
x
, /
z
) to obtain a result
in which both integrations are Fourier transforms. The change of variables is actually deﬁned by
equation (5.44) that can be solved for ) to give
) = ˆ ·
_
/
2
x
+ /
2
z
. (5.51)
Performing the change of variables from ) to /
z
according to the rules of calculus transforms equation
(5.50) into
ψ(r, ., t = 0) =
_
V∞
φ
m
(/
x
, /
z
)c
2πi(kxx−kzz)
d/
x
d/
z
(5.52)
where
φ
m
(/
x
, /
z
) ≡
∂)(/
z
)
∂/
z
φ
0
(/
x
, )(/
z
)) =
ˆ ·/
z
_
/
2
x
+ /
2
z
φ
0
(/
x
, )(/
z
)) (5.53)
Equation (5.52) is Stolt’s expression for the migrated section and forms the basis for the )
/ migration algorithm. The change of variables has recast the algorithm into one that can be
accomplished with FFT’s doing all of the integrations. Equation (5.53) results from the change of
variables and is a prescription for the construction of the (/
x
, /
z
) spectrum of the migrated section
from the (/
x
, )) spectrum of the ERM seismogram.
Many of the important properties of poststack migration can be discerned from Stolt’s result.
First, notice that /
z
deﬁned though
/
z
=
_
)
2
ˆ ·
2
−/
2
x
(5.54)
150 CHAPTER 5. ELEMENTARY MIGRATION METHODS
0
0.02
0.04
0.06
0.08
0.1
f/v
0.06 0.02 0 0.02 0.06
k
x
k
z
=.04
k
z
=.06
k
z
=.02
wavelike
evanescent
Figure 5.47: The space (),·, /
x
) is shown con
toured with values of /
z
from equation (5.54).
The dashed lines are the boundary between the
wavelike and evanescent regions.
0
0.02
0.04
0.06
f/v=.06
k
z
0.06 0.02 0 0.02 0.06
k
x
f/v=.04
f/v=.02
Figure 5.48: The space (/
x
, /
z
) is shown with
contours of ),· as given by equation (5.51).
k
x
10 30 50 70
f/v
k
x
k
z
10
30
50
70
Figure 5.49: The mapping from (/
x
, )) (top) to (/
x
, /
z
) (bottom) is shown. A line of
constant ) is mapped, at constant /
x
, to a semicircle in (/
x
, /
z
). The compressed apparent
dip spectrum of (),·, /
x
) space unfolds into the uniform fan in (/
x
, /
z
) space. The numbers
on each space indicate dips in degrees.
5.4. FOURIER METHODS 151
is realvalued when [),/
x
[ ≥ ˆ · and is otherwise imaginary. Only for real /
z
will equation (5.45)
correspond to traveling waves in the positive and negative z directions. For complex /
z
c
±2πikzz
becomes a real exponential that either grows or decays; however, on physical grounds, growing
exponentials must be excluded. Given a value for ˆ · this dual behavior of /
z
divides (/
x
, )) space
into two regions as was discussed from another perspective in section 4.11.1. The region where
[),/
x
[ ≥ ˆ · is called the wavelike or body wave region and where [),/
x
[ < ˆ · it is called the evanescent
region. Equation (5.54) is sometimes called a dispersion relation for oneway waves since the choice
of the plus sign in front of the square root generates upward traveling waves in c
±2πikz
while the
minus sign generates downward traveling waves.
The geometric relationships between the spaces of (),·, /
x
) and (/
x
, /
z
) are shown from two
diﬀerent perspectives in Figures 5.47 and 5.48. In (),·, /
x
) space, the lines of constant /
z
are
hyperbolae that are asymptotic to the dashed boundary between the wavelike and evanescent regions.
In (/
x
, /
z
) space, the curves of constant ),· are semicircles. At /
x
= 0, /
z
= ),· so these hyperbolae
and semicircles intersect when the plots are superimposed.
The spectral mapping required in equation (5.53) is shown in Figure 5.49. The mapping takes a
constant ) slice of (/
x
, )) space to a semicircle in (/
x
, /
z
) space. Each point on the ) slice maps at
constant /
x
which is directly down in the ﬁgure. It is completely equivalent to view the mapping as
a ﬂattening of the /
z
hyperbolae of Figure 5.47. In this sense, it is conceptually similar to the NMO
removal in the time domain though here the samples being mapped are complex valued. That the
spectral mapping happens at constant /
x
is a mathematical consequence of the fact that /
x
is held
constant while the ) integral in equation (5.50) is evaluated. Conceptually, it can also be viewed as
a consequence of the fact that the ERM seismogram and the migrated section must agree at . = 0
and t = 0.
On a numerical dataset, this spectral mapping is the major complexity of the Stolt algorithm.
Generally, it requires an interpolation in the (/
x
, )) domain since the spectral values that map to
grid nodes in (/
x
, /
z
) space cannot be expected to come from grid nodes in (/
x
, )) space. In order to
achieve signiﬁcant computation speed that is considered the strength of the Stolt algorithm, it turns
out that the interpolation must always be approximate. This causes artifacts in the ﬁnal result.
This issue will be discussed in more detail in section 5.4.2.
The creation of the migrated spectrum also requires that the spectrum be scaled by ˆ ·/
z
,
_
/
2
x
+ /
2
z
as it is mapped (Equation (5.53)). In the constant velocity medium of this theory, sinδ = ˆ ·/
x
,) (δ
is the scattering angle) from which it follows that cos δ = ˆ ·/
z
,) = /
z
,
_
/
2
x
+ /
2
z
. Thus the scaling
factor is proportional to cos δ and therefore ranges from unity to zero as δ goes from zero to 90
◦
.
This scaling factor compensates for the “spectral compression” that is a theoretical expectation of
the ERM seismogram. Recall the migrator’s formulae (equation (5.35)) that relates apparent angles
in (),·, /
x
) space to real angles in (/
x
, /
z
) space. If there is uniform power at all angles in (/
x
, /
z
)
space, then the migrator’s formula predicts a spectral compression in (),·, /
x
) (with consequent
increasing power) near 45
◦
of apparent dip. As shown in Figure 5.49 it is as though (/
x
, /
z
) space is
an oriental fan that has been folded to create (),·, /
x
) space. Migration must then unfold this fan.
)/ migration is called a steepdip method because it works correctly for all scattering angles from
0
◦
to 90
◦
.
The )/ migration algorithm just described is limited to constant velocity though it is exact
in this case. Its use of Fourier transforms for all of the numerical integrations means that it is
computationally very eﬃcient. Though it has been used for many years in practical applications
its restriction to constant velocity is often unacceptable so that it has gradually being replaced by
more ﬂexible, though usually slower, methods. Today, one major virtue still remains and that is the
conceptual understanding it provides. The description of the construction of the migrated spectrum
will provide the basis for a realistic theory of seismic resolution in section 5.7.
152 CHAPTER 5. ELEMENTARY MIGRATION METHODS
meters
m
e
t
e
r
s
0 200 400 600 800 1000 1200 1400 1600 1800 2000
0
200
400
600
800
1000
1200
1400
1600
1800
2000
Figure 5.50: The result of the )/ migration of
the data of Figure 5.25.
meters
m
e
t
e
r
s
0 200 400 600 800 1000 1200 1400 1600 1800 2000
0
200
400
600
800
1000
1200
1400
1600
1800
2000
Figure 5.51: The result of the )/ migration of
the data of Figure 5.26.
5.4.2 A MATLAB implementation of fk migration
The )/ migration algorithm just described is a three step process
• Forward (/
x
, )) transform. This is done on the unmigrated data after all preconditioning such
as spectral whitening, bandpass ﬁltering, and noise reduction.
• Spectral mapping. The spectral mapping and scaling described by equation (5.53) requires a
careful interpolation process.
• Inverse (/
x
, )) transform. This must be the exact inverse of the transform done in the ﬁrst
step.
This process is formalized in the MATLAB function fkmig . This function has the external inter
face: [seismig,tmig,xmig] = fkmig(seis,t,x,v,params). Here the ﬁrst four input variables are
simply the seismic matrix, its time coordinate vector, its x coordinate vector, and a scalar giving the
velocity of migration. The ﬁnal input variable is a vector of parameters that control various aspects
of the migration. This vector, params has length thirteen and aﬀords control over the spatial and
temporal zero pads, the maximum dip to migrate, the maximum frequency to migrate, the type of
spectral interpolation, and the kind of progress messages that are written to the screen. Consult
the online help for fkmig for a complete description. Usually, the default actions for all of these
behaviors are acceptable and params can be omitted. Occasionally, it will be desired to program
one or more elements of params. This can be done while still defaulting the others by ﬁrst creating
a vector of thirteen NaN’s (e.g. params=nan*1:13;) and then setting a few elements of params to
speciﬁc values.
As a ﬁrst example, consider the migration of the synthetic sections shown in Figures 5.25 and 5.26.
This is very simply accomplished with the code in Code Snippet 5.4.1 with the results in Figures 5.50
and 5.51. These ﬁgures are displayed with slight clipping to make visible their more subtle details.
In Code Snippet 5.4.1, the variable seis refers to the data of Figure 5.25 while seis2 refers to Figure
5.26. Figure 5.25 contains the image of a dipping reﬂecting segment without diﬀractions while Figure
5.26 contains a similar image except that diﬀractions are present. The resulting migrations make
5.4. FOURIER METHODS 153
meters
m
e
t
e
r
s
0 200 400 600 800 1000 1200 1400 1600 1800 2000
0
200
400
600
800
1000
1200
1400
1600
1800
2000
Figure 5.52: The result of the )/ migration of
the data of Figure 5.27.
meters
m
e
t
e
r
s
0 500 1000 1500 2000 2500 3000
0
500
1000
1500
Figure 5.53: The result of the )/ migration of
the data of Figure 5.29.
clear the advantage (indeed, the necessity) of modelling with diﬀractions. Only when diﬀractions
are included are the edges of the reﬂecting segment imaged with crisp deﬁnition.
Code Snippet 5.4.1. This code uses fkmig to migrate the sections shown in Figures 5.25 and
5.26. The results are shown in Figures 5.50, and 5.51.
1 seismig=fkmig(seis,t,x,v);
2 plotimage(seismig,t*v/2,x);
3 xlabel(’meters’);ylabel(’meters’);
4 seismig2=fkmig(seis2,t,x,v);
5 plotimage(seismig2,t*v/2,x);
6 xlabel(’meters’);ylabel(’meters’);
End Code
As further examples, the )/ migrations of the data of Figures 5.27, 5.29, 5.31, and 5.34 can be
migrated in similar fashion. The results are shown in Figure 5.52, 5.53, 5.54, and 5.55.
It is apparent that fkmig creates high quality migrations of constantvelocity synthetics, but it
is instructive to examine the code to see precisely how this is done. Code Snippet 5.4.2 contains an
excerpt from the source code of fkmig that illustrates the steps of basic geophysical importance.
The forward )/ transform is accomplished on line 2 by calling fktran . Prior to this, the seismic
matrix, seis, has had zero pads attached in both r (column) and t (row). The variables tnew
and xnew are time coordinate and r coordinate vectors that describe the padded seismic matrix.
Similarly, nsampnew and ntrnew are the number of samplespertrace and the number of traces after
padding. Function fktran is a geophysical wrapper around MATLAB’s builtin twodimensional
FFT fft2. This means that, in addition to calling fft2 to compute the )/ spectrum, fkspec, of
seis, it does some useful things like calculating the frequency and wavenumber coordinate vectors
f and kx. Also, because the input matrix is real valued, it only returns the nonnegative temporal
frequencies. This is possible because the negative frequencies can be deduced from the positive ones
by a symmetry argument. Technically, if φ(/
x
, )) is the )/ transform of the realvalued waveﬁeld
ψ(r, t) then it can be shown that φ(/
x
, )) has the symmetry φ(/
x
, )) =
¯
φ(−/
x
, −)), where the
overbar indicates the complex conjugate. Both positive and negative wavenumbers are required
since, after the temporal Fourier transform, the matrix is no longer real valued. Working only with
154 CHAPTER 5. ELEMENTARY MIGRATION METHODS
meters
m
e
t
e
r
s
0 500 1000 1500 2000 2500 3000
0
500
1000
1500
Figure 5.54: The result of the )/ migration of
the data of Figure 5.31.
meters
m
e
t
e
r
s
0 500 1000 1500 2000 2500 3000
0
500
1000
1500
Figure 5.55: The result of the )/ migration of
the data of Figure 5.34.
the nonnegative temporal frequencies is more eﬃcient because less memory and fewer calculations
are required. Also, it requires more care to formulate an algorithm correctly to process both positive
and negative frequencies. If the processed spectrum does not have the correct conjugate symmetry
then its inverse transform will result in a complexvalued seismic matrix. It is easier to process
only the nonnegative frequencies and calculate the negative ones as needed from the symmetry
condition. The function fktran has a companion inverse ifktran (invoked on line 34) that creates
the negative temporal frequencies from the nonnegative ones and then calls fft2.
Continuing with Code Snippet 5.4.2, line 3 calculates the exploding reﬂector velocity that is
required in the theory. The major computation loop is over /
x
(the columns of fkspec) and extends
from line 9 to line 32. Each iteration through the loop converts one column of fkspec, representing
φ
0
of equation (5.53), into a column vector representing φ
m
. Prior to the loop, lines 56 compute
the vertical coordinate vector, kz, for the matrix representing φ
m
(df is the frequency sample rate).
On line 7, /
2
z
is precomputed as this is needed in every loop. The ﬁrst action in the loop (line 11)
is to apply frequency and dip masks to the relevant column of fkspec and the result is stored in
the temporary vector tmp. The calculation of these masks is not shown in this example. They are
simply vectors of the same size as a column of fkspec whose entries range between zero and one.
The frequency mask, fmask, is precomputed outside the loop but the dip mask, dipmask must be
recalculated with every iteration. These masks are designed to attenuate the frequencies and dips
that are not of interest. For example, it is customary to migrate only frequencies below a certain
maximum, )
max
. Thus a simple fmask could could be unity for ) ≤ )
max
and zero for ) )
max
.
However, from a signal processing perspective, such an abrupt cutoﬀ is not desirable so a better
fmask might be
)
mask
=
_
¸
¸
_
¸
¸
_
1, ) ≤ )
max
−)
wid
1
2
+
1
2
cos
_
π
f−fmax+f
wid
f
wid
_
, )
max
−)
wid
< ) ≤ )
max
0, ) )
max
. (5.55)
This deﬁnes a raisedcosine ramp of width )
wid
from unity at ) = )
max
−)
wid
to zero at ) = )
max
.
The dip mask must be recomputed at every loop iteration because the frequency corresponding to
5.4. FOURIER METHODS 155
a given dip changes as /
x
changes according to ) = /
x
ˆ ·, sin θ. Like the frequency mask, the dip
mask should use a raisedcosine ramp from zero at θ
max
to unity at θ
max
− θ
wid
. Thus dipmask
attenuates low frequencies while fmask attenuates high frequencies.
Next, on line 13 in Code Snippet 5.4.2, the frequencies that map to each output /
z
called
fmap, are calculated via equation (5.51). Since the spectral mapping generally lowers frequencies
(see Figure 5.49) many of these frequencies will, in general, be greater than the maximum desired
frequency to migrate. Thus, on line 14, MATLAB’s powerful find command is used to identify
the entries in the vector fmap that are lower than the maximum frequency to migrate, fmapmig.
(fmapmig corresponds to )
max
in equation (5.55).) At this stage, the vector ind is a vector of
indices into fmap that points to those frequencies that will be migrated.
On line 16 the current column of fkspec is set to zero in preparation for the actual migration
that happens in the ifblock from line 17 to line 28. Lines 1825 compute the cosine scale factor that
occurs in equation (5.53) with a special case for ) = 0 to avoid division by zero. Line 27 does the
actual spectral mapping and applies the cosine scale factor. The spectral mapping is accomplished by
a sincfunction interpolation, that is optimized for complexvalued spectra, by the function csinci .
On lines 2931, a progress message is printed. Though not strictly necessary, this is considered
good form because there are few things more disconcerting than waiting for a computer to ﬁnish a
long calculation without any indication that progress is occurring. A message is printed only after
every kpflag wavenumbers have been processed. This is controllable through the input params
vector.
Finally, after the completion of the loop on line 34, the migrated spectrum is inverse transformed.
Generally, the zero pads are then removed though this is not shown.
Code Snippet 5.4.2. This is an excerpt from the code of fkmig that shows the steps of major
importance. The actual fkmig source code contains 319 lines that handle the many nontechnical
details required for a useful code.
1 %forward fk transform
2 [fkspec,f,kx] = fktran(seis,tnew,xnew,nsampnew,ntrnew,0,0);
3 ve = v/2; %exploding reflector velocity
4 %compute kz
5 dkz= df/ve;
6 kz = ((0:length(f)1)*dkz)’;
7 kz2=kz.ˆ2;
8 %now loop over wavenumbers
9 for j=1:length(kx)
10 % apply masks
11 tmp=fkspec(:,j).*fmask.*dipmask;
12 %compute f’s which map to kz
13 fmap = ve*sqrt(kx(j)ˆ2 + kz2);
14 ind=find(fmap<=fmaxmig);
15 %now map samples by interpolation
16 fkspec(:,j) = zeros(length(f),1); %initialize output spectrum to zero
17 if( ˜isempty(ind) )
18 %compute cosine scale factor
19 if( fmap(ind(1))==0)
20 scl=ones(size(ind));
21 li=length(ind);
22 scl(2:li)=ve*kz(ind(2:li))./fmap(ind(2:li));
23 else
24 scl=ve*kz(ind)./fmap(ind);
25 end
26 %complex sinc interpolation
27 fkspec(ind,j) = scl.*csinci(tmp,f,fmap(ind),[lsinc,ntable]);
156 CHAPTER 5. ELEMENTARY MIGRATION METHODS
1/meters
H
z
−0.1 −0.08 −0.06 −0.04 −0.02 0 0.02 0.04 0.06 0.08
0
20
40
60
80
100
120
Figure 5.56: The )/ spectrum of the data of
Figure 5.31.
1/meters
1
/
m
e
t
e
r
s
−0.1 −0.08 −0.06 −0.04 −0.02 0 0.02 0.04 0.06 0.08
0
0.02
0.04
0.06
0.08
0.1
0.12
Figure 5.57: The (/
x
, /
z
) spectrum of the data
of Figure 5.54.
28 end
29 if( floor(j/kpflag)*kpflag == j)
30 disp([’finished wavenumber ’ int2str(j)]);
31 end
32 end
33 %inverse transform
34 [seismig,tmig,xmig]=ifktran(fkspec,f,kx);
End Code
As a last example, consider the computation of the discrete )/ spectra of one of the preceding
examples before and after migration. This should produce a graphical conﬁrmation of the mapping
of Figure 5.49. This is very simply done using fktran . Speciﬁcally, the case of the synthetic of
Figure 5.31 and its migration in Figure 5.54 is shown. If seis is the unmigrated seismic matrix,
then the command [fkspec,f,kx]=fktran(seis,t,x) computes the complexvalued )/ spectrum
and plotimage(abs(fkspec),f,kx) produces the result shown in Figure 5.56. In a similar manner,
the (/
x
, /
z
) spectrum after migration can be computed and is shown in Figure 5.57. Comparison of
these ﬁgures shows that the spectral mapping has been performed as described.
5.4.3 fk waveﬁeld extrapolation
Stolt (1978) provided an approximate technique to adapt )/ migration to ·(.). This method used
a premigration step called the Stolt stretch that was followed by an )/ migration. The idea was to
perform a onedimensional timetodepth conversion with ·(.) and then convert back to a pseudo
time with a constant reference velocity. The )/ migration is then performed with this reference
velocity. (Stolt actually recommended the timetodepth conversion be done with a special velocity
function derived from ·(.) called the Stolt velocity.) This method is now known to progressively
lose accuracy with increasing dip and has lost favor.
A technique that can handle all scattering angles in ·(.) is the phaseshift method of Gazdag
(1978). Unlike the direct )/ migration, phase shift is a recursive algorithm that treats ·(.) as
a system of constant velocity layers. In the limit as the layer thickness shrinks to inﬁnitesimal,
any ·(.) variation can be modelled. The method can be derived starting from equation (5.49).
5.4. FOURIER METHODS 157
Considering the ﬁrst velocity layer only, this result is valid for any depth within that layer provided
that ˆ · is replaced by the ﬁrst layer velocity, ˆ ·
1
. If the thickness of the ﬁrst layer is ∆.
1
, then the
ERM waveﬁeld just above the interface between layers 1 and 2 can be written as
ψ(r, . = ∆.
1
, t) =
_
V∞
φ
0
(/
x
, ))c
2πi(kxx−kz1∆z1−ft)
d/
x
d). (5.56)
where
/
z1
=
¸
)
2
ˆ ·
2
1
−/
2
x
. (5.57)
Equation (5.56) is an expression for downward continuation or extrapolation of the ERM waveﬁeld
to the depth ∆.
1
. The extrapolated waveﬁeld is distinguished from the surface recorded waveﬁeld
by the presence of the term c
2πikz1∆z1
under the integral sign that is a speciﬁc form of the Fourier
extrapolation operator , c
2πikz∆z
. Any extrapolated waveﬁeld is a temporal seismogram more akin to
a surface recording than to a migrated depth section. In the phaseshift method, as with any recursive
technique, the migrated depth section is built littlebylittle from each extrapolated seismogram. The
extrapolated waveﬁeld is a simulation of what would have been recorded had the receivers actually
been at . = ∆. rather than . = 0 . Since any extrapolated section intersects the depth section at
(. = ∆., t = 0) each extrapolation can contribute one depth sample to the migration (see Figure
5.24). This process of evaluating the extrapolated section at t=0 was discussed in section 5.2.6 as
the poststack imaging condition.
For the wavelike portion of (/
x
, )) space, the extrapolation operator has unit amplitude and a
phase of 2π/
z
∆.. For evanescent spectral components, it is a real exponential c
±2πkz∆z
. Forward
waveﬁeld propagation must obey physical law and propagate evanescent spectral components using
the minus sign in the exponent, e.g. c
−2πkz∆z
. Therefore, inverse waveﬁeld extrapolation, as is done
for migration, should use c
+2πkz∆z
. However, this inversion of evanescent spectral components is a
practical impossibility because they have decayed far below the noise level in forward propagation.
The practical approach is to use c
−2πkz∆z
for the evanescent spectral components for both forward
and inverse extrapolation. Even more practical is to simply zero the evanescent spectral components
on inverse extrapolation. In all that follows, it is assumed that c
2πikz∆z
has one of these two practical
extensions implemented for evanescent spectral components.
The waveﬁeld extrapolation expression (equation (5.56)) is more simply written in the Fourier
domain to suppress the integration that performs the inverse Fourier transform:
φ(/
x
, . = ∆.
1
, )) = φ
0
(/
x
, ))c
2πikz1∆z1
. (5.58)
Now consider a further extrapolation to estimate the waveﬁeld at the bottom of layer 2 (. =
∆.
1
+ ∆.
2
). This can be written as
φ(/
x
, . = ∆.
1
+ ∆.
2
, )) = φ(/
x
, . = ∆.
1
, ))T(/
x
, ))c
2πikz2∆z2
(5.59)
where T(/
x
, )) is a correction factor for the transmission loss endured by the upgoing wave as it
crossed from layer 2 into layer 1. If transmission loss correction is to be incorporated, then the
data must not have had such amplitude corrections applied already. This is extremely unlikely
because seismic data is generally treated with a statistical amplitude balance that will compensate
for transmission losses. Also, correcting for transmission losses at each extrapolation step can be
numerically unstable because the correction factors are generally greater than unity. Consequently,
it is customary to set t(/
x
, )) = 1. With this and incorporating equation (5.58), equation (5.59)
158 CHAPTER 5. ELEMENTARY MIGRATION METHODS
L
Upper Datum
Lower Datum
∆.
θ
θ
Figure 5.58: A geometric interpretation of the extrapolation phase shift. A dipping reﬂec
tor emits a monochromatic signal that is received at two diﬀerent datums. The extrapola
tion phase shift is the phase diﬀerence between this signal as it arrives at a speciﬁc (r
0
, .
0
)
location on the upper datum and the signal as it arrives at the lower datum at the same
horizontal coordinate, i.e. at (r
0
, .
0
+ ∆.).
becomes
φ(/
x
, . = ∆.
1
+ ∆.
2
, )) = φ
0
(/
x
, ))c
2πi
2
m=1
kzm∆zm
(5.60)
which has the immediate generalization to n layers
φ(/
x
, . =
n
m=1
∆zm,f)=φ0(kx,f)e
2πi
n
m=1
kzm∆zm
. (5.61)
In the limit as ∆.
m
→ d., the summation in the extrapolator phase becomes an integral with the
result
φ(/
x
, ., )) = φ
0
(/
x
, ))c
2πi
z
0
kz(z
)dz
. (5.62)
where /
z
(.) =
_
)
2
,ˆ ·(.)
2
−/
2
x
. This result is known as a ﬁrstorder WKBJ
2
solution and can be
derived as an approximate solution to the scalar wave equation for ˆ ·(.) (Aki and Richards, 1980).
The secondorder WKBJ solution arises when transmission losses are considered.
Equation (5.61) expresses what can be realized in a practical implementation of recursive wave
ﬁeld extrapolation while equation (5.62) is the theoretical limit of the process. The theoretically
correct phase shift from .
1
to .
2
is 2π times the area under the /
z
(.) curve between these depths.
It turns out that this result is true in one, two or three dimensions but the form of /
z
(.) changes.
In one dimension, /
z
(.) = ),ˆ ·(.) and
_
z
0
/
z
(.
)d.
= )
_
z
0
ˆ ·(.
)
−1
d.
= )τ(.) where τ(.) is the
vertical traveltime. In three dimensions, /
z
(.) =
_
)
2
,ˆ ·(.)
2
−/
2
x
−/
2
y
and the integral of /
z
(.) has
no immediate simpliﬁcation.
An interpretation of the extrapolation phase shift is suggested by incorporating sinθ = ˆ ·/
x
,)
with the result
2π/
z
∆. = 2π∆.
_
)
2
ˆ ·
2
−/
2
x
= 2π)
∆.
ˆ ·
¸
1 −
_
ˆ ·/
x
)
_
2
= 2π)τ cos θ (5.63)
where τ = ∆.,ˆ · has been used. Thus for constant velocity, the extrapolation phase shift is
2
The name WKBJ is the initials of Wentzel, Kramers, Brilloin, and Jeﬀreys who all derived it independently. The
ﬁrst three were Quantum theorists while Jeﬀreys was a geophysicist.
5.4. FOURIER METHODS 159
∆
1
1
Datum
D
i
p
p
i
n
g
r
e
f
l
e
c
t
o
r
∆.
:∆.
¸∆.
¸∆.
¸∆.
θ1
∆
1
¸
θ¸
Figure 5.59: The recursive application of the constantvelocity phase shift can model ·(.)
media as in equation (5.61).
scatteringangle dependent and ranges from a maximum of 2π)τ at 0
◦
to a minimum of 0 at 90
◦
.
Figure 5.58 shows a geometric interpretation of this phase shift. For a monochromatic planewave,
the phase shift extrapolator corrects for the phase diﬀerence between the wave’s arrival at the upper
datum at (r
0
, .
0
) and its arrival at the lower datum at (r
0
, .
0
+ ∆.). This phase diﬀerence is just
2π times the number of wavelengths that ﬁt in the path diﬀerence 1, that is
phase diﬀerence = 2π
1
λ
= 2π
∆. cos θ
ˆ ·,)
= 2π
)∆.
ˆ ·
cos θ (5.64)
which it the same result as equation (5.63). For a recursive sequence of many constantvelocity
phase shifts, the geometric interpretation is as shown in Figure 5.59.
The extrapolation operator is often separated into two terms, one that accomplishes a bulk time
shift and another that accomplishes dipdependent focusing. The bulk time delay operator is simply
the extrapolation operator evaluated at /
x
= 0 (i.e. zero dip) and is called the static shift operator
or thin lens operator. The phase shift it applies is simply j
s
= 2π)∆.,ˆ ·. Denoting the total phase
shift by j, this suggests that the focusing phase shift is simply j
f
= j −j
s
. Thus,
j
f
= j −j
s
= 2π∆.
_
)
2
ˆ ·
2
−/
2
x
−
2π)∆.
ˆ ·
=
2π)∆.
ˆ ·
_
¸
1 −
/
2
x
ˆ ·
2
)
2
−1
_
(5.65)
where
j
s
=
2π)∆.
ˆ ·
(5.66)
160 CHAPTER 5. ELEMENTARY MIGRATION METHODS
1ooo  ¸oo  1ooo ¸oo o
meters
o
o.:
o.¸
o.6
o.8
s
e
c
o
n
d
s
Figure 5.60: A diﬀraction chart showing the response of ﬁve point diﬀractors as recorded
on the surface . = 0.
and, in summary,
total phase shift = j = j
s
+ j
f
. (5.67)
The focusing phase shift is angledependent and vanishes for /
x
= 0. That the static phase shift
accomplishes a bulk time delay can be seen as a consequence of the phase shift theorem of digital
signal theory (e.g. Karl (1989) page 87). This wellknown result from timeseries analysis says that
a time shift is accomplished in the Fourier domain by a phase shift where the phase is a linear
function of frequency. The slope of the linear phase function determines the magnitude of the time
shift. Rather than merely quote this result, it is instructive to actually demonstrate it. The static
phase shift can be applied to the ERM seismogram by
ψ
s
(r, t) =
_
V∞
φ
0
(/
x
, ))c
−µs+2πi(kxx−ft)
d/
x
d). (5.68)
Since the static phase shift is independent of /
x
, the /
x
integral can be done directly to give
ψ
s
(r, t) =
_
∞
−∞
ˆ
ψ
0
(r, ))c
−2πi(ft+f∆z/ˆ v)
d) (5.69)
where
ˆ
ψ
0
(r, )) is the temporal Fourier transform of the ERM seismogram. Letting τ = ∆.,ˆ ·, this
becomes
ψ
s
(r, t) =
_
∞
−∞
ˆ
ψ
0
(r, ))c
−2πif(t+τ)
d) = ψ
0
(r, t + τ). (5.70)
The last step follows because the integral is an inverse Fourier transform for the time coordinate
t + τ. This result is simply a proof of the phase shift theorem in the present context.
Waveﬁeld extrapolation in the spacetime domain
Since the extrapolation operator is applied with a multiplication in the Fourier domain, it must be
a convolution in the spacetime domain. In section 5.2.4 constantvelocity migration was shown to
be a nonstationary convolution. Constantvelocity extrapolation, which is a much simpler process
5.4. FOURIER METHODS 161
o
o.:
o.¸
o.6
o.8
s
e
c
o
n
d
s
1ooo  ¸oo  1ooo ¸oo o
meters
A
o
o.:
o.¸
o.6
o.8
s
e
c
o
n
d
s
1ooo  ¸oo  1ooo ¸oo o
meters
B
Figure 5.61: The ﬁrst hyperbola of diﬀraction chart of Figure 5.60 is shown convolved
with the its time reverse. (A) The focusing term only is applied. (B) Both the focusing
and the thinlens term are applied
than migration, is a stationary convolution.
Figure 5.60 shows the response of ﬁve diﬀerent point diﬀractors, at depths of 200 m, 400 m,
600 m, 800 m, and 1000 m, as recorded at . = 0. This diﬀraction chart was constructed with an
exploding reﬂector velocity ˆ · = 2000 m/s. The chart represents an idealized ERM seismogram for a
geology that consists on only ﬁve point diﬀractors. It is desired to determine the spacetime shape
of the extrapolation operator that will extrapolate this seismogram to 200 m. Since this is the depth
of the ﬁrst diﬀractor, the ﬁrst diﬀraction curve should focus to a point and shift to time zero. The
other diﬀraction curves should all focus somewhat and shift to earlier times by the same amount.
In fact, the second hyperbola should be transformed into the ﬁrst, the third into the second, and so
on.
In section 5.2.4 it was seen that replacing each point in the ERM seismogram by a wavefront
circle (the operator) will focus all hyperbolae at once. With extrapolation, only the ﬁrst hyperbola
should focus and the operator (i.e. the replacement curve) should be the same for all points. Clearly,
the operator needs to be concave () to focus the convex (·) diﬀraction curves. One process that
will focus the ﬁrst diﬀraction curve is to cross correlate the seismogram with the ﬁrst diﬀraction
curve itself. To visualize this, imagine tracing the ﬁrst diﬀraction curve on a clear piece of ﬁlm
(being careful to mark the coordinate origin on the ﬁlm) and then placing the apex of this curve
at some point on the diﬀraction chart. The value of the cross correlation is computed by taking
the samplebysample product of the ERM seismogram and the section represented by the ﬁlm, and
then summing all of the resulting products. Assuming that all amplitudes are either zero (white)
or one (black) for simplicity, this reduces to summing the samples in the ERM seismogram that are
coincident in spacetime with the diﬀraction curve on the ﬁlm. This crosscorrelation value is then
assigned to the location on the ERM seismogram of the coordinate origin on the ﬁlm. Clearly, when
the ﬁlm is positioned such that its diﬀraction curve exactly overlies the ﬁrst diﬀraction curve, a large
value for the cross correlation will result. In fact, since this is the only exact match between the
ERM seismogram and the curve on the ﬁlm, this will be the largest value for the cross correlation.
This exact match will occur when the coordinate origin on the ﬁlm coincides with that on the ERM
seismogram.
162 CHAPTER 5. ELEMENTARY MIGRATION METHODS
1ooo  ¸oo  1ooo ¸oo o
meters
o
o.:
o.¸
o.6
o.8
s
e
c
o
n
d
s
B
o
o.:
o.¸
o.6
o.8
s
e
c
o
n
d
s
1ooo  ¸oo  1ooo ¸oo o
meters
A
Figure 5.62: The second hyperbola of diﬀraction chart of Figure 5.60 is shown convolved
with the time reverse of the ﬁrst hyperbola. (A) The focusing term only is applied. (B)
Both the focusing and the thinlens term are applied
Conceptually, the process just described is very simple though it might seem tedious to compute
for all samples. Could this cross correlation process be the spacetime equivalent of extrapolation?
In fact, it is and to realize this it helps to recall from time series analysis that the cross correlation
of o(t) with /(t) can be done by time reversing /(t) and convolving. That is o(t) ⊗/(t) = o(t) •/(−t).
This result carries over into two dimensions so that the two dimensional cross correlation of the ERM
seismogram with the ﬁrst diﬀraction curve can be done by reversing the curve in both space and
time and then doing a two dimensional convolution. In this case the diﬀraction curve is symmetric in
space (it will not always be though) so the reversal in space does nothing. However, the time reversal
ﬂips the ﬁrst diﬀraction curve upside down to produce the concave operator that was envisioned.
Figures 5.61 and 5.62 illustrate these concepts with the extrapolation of the ERM seismogram of
Figure 5.60 to the depth of the ﬁrst point diﬀractor. The extrapolation operator is the time reverse
of the ﬁrst diﬀraction curve. In Figure 5.61A, only the focusing term is applied to the ﬁrst diﬀraction
curve with the result that the curve is focused at its apex. In Figure 5.61B, the thin lens term is also
included so that the focused diﬀraction curve is shifted to time zero. In Figure 5.62A, the focusing
term is applied to the second diﬀraction curve and only partial focusing is achieved. When the thin
lens term is included in Figure 5.62B, it is apparent that the partiallyfocused second hyperbola is
now equivalent to the ﬁrst hyperbola.
This perspective of waveﬁeld extrapolation is very powerful and general. The cross correlation
argument shows that to extrapolate a waveﬁeld to a particular depth, the response of a point
diﬀractor at that depth as viewed from the current datum must be constructed. Then the waveﬁeld
is cross correlated with the diﬀraction response. The convolution argument is completely equivalent
and graphically illustrates the eﬀects of the two parts of the operator: focusing and static shift. It
also shows how the extrapolation operator is similar to, but simpler, than the migration operator.
5.4.4 Time and depth migration by phase shift
Thus far, theory has been developed to construct a migrated depth section, ψ(r, ., t = 0) from a zero
oﬀset section or ERM seismogram. It is often desired to express the migrated data with a vertical
5.4. FOURIER METHODS 163
time coordinate for interpretation. Called τ, this migrated time may be created from . by doing a
simple one dimensional stretch using the migration velocity model as discussed in section 5.2.1. It
is always correct to do this following migration with ·(r, .) with the stretch being deﬁned by
τ(r, .) =
_
z
0
d.
ˆ ·(r, .
)
(5.71)
A time display, ψ(r, τ), created from a migrated depth section, ψ(r, .), using equation (5.71) is
called a migrated time display. Generally this has a meaning distinct from that of time migration.
The two are equivalent only when lateral velocity variations are absent.
Time migration seeks to create ψ(r, τ) directly without ﬁrst creating ψ(r, .). To see how this
might be done, recall that the extrapolation phase shift can be written in the (/
x
, )) domain as
φ(∆.) = φ
0
c
iµs+iµ
f
(5.72)
where the static phase shift, j
s
is given by equation (5.66) and the focusing phase shift is given
by (5.65). If this extrapolator is applied in a recursive scheme, it is j
s
that progressively moves
data to earlier times so that each depth sample can be estimated through the imaging condition
ψ(r, ., t = 0). If an extrapolation were done with only j
f
then diﬀractions would focus at their
apex time but never move to time zero and ﬂat events (i.e. /
x
= 0) would never move at all. This
is exactly the behavior desired of a time migration. In fact, a time migration can be computed by
recursive phase shift using the extrapolation equation
φ(τ
m
+ ∆τ) = φ(τ
m
)c
iµ
fm
(5.73)
where j
fm
is
j
f
= 2π∆τ
_
¸
1 −
/
2
x
ˆ ·
2
m
)
2
−1
_
(5.74)
where ∆τ = ∆.,ˆ ·
m
has been used. When computing a time migration by recursive extrapolation,
the imaging condition must be changed because data not longer moves to t = 0 as it is focused.
Instead, focused events are found at t = τ so that the time migration is given by φ(r, τ, t = τ).
Recursive extrapolation with equation (5.73), or some approximation to it, is a form of time
migration while recursive extrapolation with equation (5.72) is a depth migration. There is no
essential diﬀerence between the two for ·(.) because the depth migration can be stretched to time
with equation (5.71) or the time migration can be stretched to depth with
.(τ) =
_
τ
0
ˆ ·(r, τ
)dτ
(5.75)
To see this last point more clearly, if a recursive time migration is formulated as was done for depth
migration that leads to equation (5.62), it will be seen that the time migration omits the accumulated
phase shift operator
c
i
z
0
µs(z
)dz
= exp
_
i2π)
_
z
0
d.
·(.
)
_
. (5.76)
A stretch of the time migration to depth eﬀectively applies this operator. Time migration is thus
equivalent to depth migration for ·(.) because the static delay, ∆.,ˆ ·(.) = ∆τ, does not depend on
r. Since data moves all around during migration following various raypaths, any accumulated time
delays in ψ(r, τ, t = τ) will be complicated functions of dip and position if ˆ · varies with r. When ˆ ·
164 CHAPTER 5. ELEMENTARY MIGRATION METHODS
·
/ip/
∆.
·
on
r
.
r
t
·
/ip/
r
.
r
t
∆.
·
on
apparent image
point
true image
point
t
r
a
v
e
l
t
i
m
e
c
u
r
v
e
point diffractor
·
/ip/
r
.
r
t
∆.
·
on
A B
C
Figure 5.63: (A) A point diﬀractor sits beneath a lowvelocity wedge (top) and its ERM
seismogram shows an apparent image point displaced to the left (bottom). (B) After
application of the focusing phase shift, the diﬀraction curve is partially focused but the
apparent image point has not moved. (C) The static phase shift moves the apparent image
point towards the true image point.
varies only with ., then all data at ﬁxed τ have the same accumulated delay regardless of migration
raypath. When ˆ · varies laterally, time migration actually refracts data in a way that systematically
violates Snell’s law as was discussed in section 5.2.3.
Figure 5.63A shows the ERM response of a point diﬀractor in a medium with ˆ ·(r, .). The
apparent image point, which is the crest of the traveltime curve, is displaced to the left because
velocity is higher there. In Figure 5.63B, the ERM seismogram has been extrapolated to half the
depth of the diﬀractor using the focusing phase shift only. Since j
f
vanishes for /
x
= 0 it cannot
shift the crest of the traveltime curve even if it can apply the lateral velocity variations. All it
achieves is a partial focusing of the diﬀraction response. In Figure 5.63C, the static phase shift has
been applied and has had the eﬀect of moving the crest of the traveltime curve to the right towards
the true image point. This happens because the time advance of the static shift is greater for lower
velocities than for higher ones. Thus it is apparent that extrapolation using j
s
and j
f
can focus
the diﬀractor at the proper location while j
f
alone can never do so.
5.5. KIRCHHOFF METHODS 165
5.5 Kirchhoﬀ methods
The Fourier methods discussed in section 5.4 are based upon the solution of the scalar wave equation
using Fourier transforms. This solution can be derived from a more fundamental approach to
partial diﬀerential equations called separation of variables. An alternative, and equally fundamental,
approach to solving the same partial diﬀerential equations is based on Green’s theorem and leads to
the family of migration methods known as Kirchhoﬀ methods. Though Kirchhoﬀ methods seem
superﬁcially quite diﬀerent from Fourier methods, the uniqueness theorems from partial diﬀerential
equation theory guarantee that they are equivalent. However, this equivalence only applies to the
problem for which both approaches are exact solutions to the wave equation and that is the case
of a constant velocity medium, with regular waveﬁeld sampling, and a horizontal recording surface.
In all other cases, both methods are implemented with diﬀering approximations and can give very
distinct results. Furthermore, even in the exact case, the methods have diﬀerent computational
artifacts.
The wavefront migration methods discussed in section 5.2.4 are simpliﬁed examples of Kirchhoﬀ
migration. There are two alternative Kirchhoﬀ approaches that diﬀer in that one does the computa
tions on the output space (r, .) and the other does them on the input space (r, t). In the ﬁrst case,
the method of replacing each point of the input section by a wavefront circle, as shown in Figure
5.14, essentially works in the output space. Kirchhoﬀ migration theory provides a detailed prescrip
tion for computing the amplitude and phase along the wavefront, and in variable velocity, the shape
of the wavefront. The second case essentially sums through the input space along hyperbolic paths
to compute each point in the output space. As shown in Figure 5.19, summation along hyperbolae
and the superposition of circular wavefronts lead to the same result. Again in this case, Kirchhoﬀ
theory shows that the summation along the hyperbola must be done with speciﬁc weights and, for
variable velocity, how the hyperbola is replaced by a more general shape.
5.5.1 Gauss’ theorem and Green’s identities
Recall the fundamental theorem of calculus that says
_
b
a
φ
(r)dr = φ(r)
¸
¸
b
a
= φ(/) −φ(o). (5.77)
An interpretation of this statement is that the integral of a function φ
over the interval o ≤ r ≤ / is
found by evaluating a diﬀerent function φ at the end points of the interval. The theorem assures us
that if φ
exists then so does φ under a fairly general set of conditions. These functions are of course
mathematically related and φ is said to be the integral of φ
or, equivalently, φ
is the derivative of
φ.
Gauss’s theorem generalizes this basic result to dimensions greater than one. That is, it says that
if the integral over a volume of a certain function is desired, then it can be obtained by evaluating
another related function over the surface that bounds the volume. In higher dimensions, the notion
of direction is more complicated than the + or  needed in one dimension and vector functions
express this. Gauss’ theorem is usually written
_
V
∇
¹ d·o =
_
∂V
¹ n d:n:). (5.78)
Here
¹ is a vector function that might physically represent something like ﬂuid ﬂow or electric ﬁeld
and n is the outward pointing normal to the surface bounding the volume of integration (Figure 5.64).
166 CHAPTER 5. ELEMENTARY MIGRATION METHODS
volume
n
Figure 5.64: Gauss’ theorem relates the volume integral of a function
∇
¹ to the surface
integral of a related function
¹ n where n is the outward pointing normal to the surface
∂\ bounding the integration volume \ .
Equation (5.78) generalizes equation (5.77) in several ways. First, a vector function
¹ generalizes
the notion of direction where, in one dimension, the sign of φ was suﬃcient. Second, the derivative
has been generalized from φ
to
∇
¹, and is called the divergence of
¹. Finally, the dot product of
¹ with n integrated over the bounding surface generalizes the simple diﬀerence φ(/) −φ(o). In the
one dimensional case, the outward pointing normal points in the +r direction at / and in the −r
direction at o and the surface integral degenerates to a simple sum of two end members.
In many important cases, the vector function
¹ can be calculated as the gradient of a scalar
potential
¹ =
∇φ. In this case Gauss’ theorem becomes
_
V
∇
2
φ d·o =
_
∂V
∂φ
∂n
d:n:) (5.79)
where ∇
2
φ =
∇
∇φ and
∂φ
∂n
=
∇φ n have been used. The meaning of
∂φ
∂n
= ∂
n
φ is that it is the
component of the vector
∇φ that is normal to the surface.
Now, return to equation 5.77 and consider the case when φ = φ
1
φ
2
. Then φ
= φ
2
φ
1
+φ
1
φ
2
and
_
b
a
[φ
2
φ
1
+ φ
1
φ
2
] dr = φ
1
φ
2
¸
¸
b
a
(5.80)
or
_
b
a
φ
2
φ
1
dr = φ
1
φ
2
¸
¸
b
a
−
_
b
a
φ
1
φ
2
dr (5.81)
which is the formula for integration by parts. An analogous formula in higher dimensions arises by
substituting ¹ = φ
2
∇φ
1
into equation (5.78). Using the identity
∇ o
∇/ =
∇o
∇/ + o∇
2
/ leads
immediately to
_
V
_
∇φ
2
∇φ
1
+ φ
2
∇
2
φ
1
_
d·o =
_
∂V
φ
2
∂φ
1
∂n
d:n:). (5.82)
5.5. KIRCHHOFF METHODS 167
Then, letting ¹ = φ
1
∇φ
2
leads to a similar result
_
V
_
∇φ
1
∇φ
2
+ φ
1
∇
2
φ
2
_
d·o =
_
∂V
φ
1
∂φ
2
∂n
d:n:). (5.83)
Finally, subtracting equation (5.83) from (5.82) results in
_
V
_
φ
2
∇
2
φ
1
−φ
1
∇
2
φ
2
¸
d·o =
_
∂V
_
φ
2
∂φ
1
∂n
−φ
1
∂φ
2
∂n
_
d:n:) (5.84)
which is known as Green’s theorem.
Green’s theorem is fundamental to the derivation of Kirchhoﬀ migration theory. It is a multi
dimensional generalization of the integration by parts formula from elementary calculus and is
valuable for its ability to solve certain partial diﬀerential equation. At this point, only geomet
ric principles and vector calculus have been involved, the potential physical applications are as yet
unspeciﬁed. That is, φ
1
and φ
2
in equation (5.84) are completely arbitrary scalar ﬁelds. They may
be chosen as desired to conveniently express solutions to a given problem. Typically, in the solution
to a partial diﬀerential equation like the wave equation, one function is chosen to be the solution to
the problem at hand and the other is chosen to be the solution to a simpler reference problem. The
reference problem is usually selected to have a known analytic solution and that solution is called a
Green’s function.
5.5.2 The Kirchhoﬀ diﬀraction integral
Let ψ be a solution to the scalar wave equation
∇
2
ψ(r, t) =
1
·
2
∂
2
ψ(r, t)
∂t
2
(5.85)
where the velocity · may depend upon position or it may be constant. To eliminate the time
dependence in equation (5.85), let ψ be given by a single Fourier component ψ(r, t) =
ˆ
ψ(r)c
−2πift
.
Then equation (5.85) becomes the Helmholtz equation
∇
2
ˆ
ψ(r) = −/
2
ˆ
ψ(r) (5.86)
where /
2
= 4π
2
)
2
,·
2
. Now, let p(r; r
0
) be the solution to
∇
2
p(r; r
0
) −/
2
0
p(r; r
0
) = δ(r −r
0
) (5.87)
where /
2
0
= 4π
2
)
2
,·
2
0
with ·
0
constant over all space and δ(r −r
0
) represents a source at r = r
0
.
The analytic solution to equation (5.87) is well known (e.g. Morse and Feshbach (1953) page 810)
and can be build from a linear combination of the two functions
p
±
(r; r
0
) =
c
±ik0r
:
(5.88)
where : = [r −r
0
[ and three spatial dimensions are assumed. In two dimensions, the solution must
be expressed with Hankel functions that have the asymptotic form
p
±
(r; r
0
) ∼
_
2π
/:
c
±ikr+iπ/4
, : →∞. (5.89)
168 CHAPTER 5. ELEMENTARY MIGRATION METHODS
Since p(r; r
0
)c
−2πift
is the timedependent Green’s function, it is apparent that p
+
= :
−1
c
ik0r
corresponds to a waveﬁeld traveling out from : = 0 while p
−
= :
−1
c
−ik0r
is a waveﬁeld traveling
inward towards : = 0. In modelling, p
+
is commonly used and is called the causal Green’s function
while, in migration, it turns out that p
−
is appropriate and it is called the anticausal Green’s function.
Now, apply Greens theorem (equation 5.84) using
ˆ
ψ and p
−
to get
_
V
_
p
−
(r; r
0
)∇
2
ˆ
ψ(r) −
ˆ
ψ(r)∇
2
p
−
(r; r
0
)
_
d·o =
_
∂V
_
p
−
(r; r
0
)
∂
ˆ
ψ(r)
∂n
−
ˆ
ψ(r)
∂p
−
(r; r
0
)
∂n
_
d:n:).
(5.90)
Substituting equations (5.86) and (5.87) into the left hand side of this expression leads to
_
V
_
/
2
−/
2
0
¸
p
−
(r; r
0
)
ˆ
ψ(r) d·o+
_
V
ˆ
ψ(r)δ(r−r
0
) d·o =
_
∂V
_
p
−
(r; r
0
)
∂
ˆ
ψ(r)
∂n
−
ˆ
ψ(r)
∂p
−
(r; r
0
)
∂n
_
d:n:)
(5.91)
Assuming that the point r
0
is interior to the volume \ , the delta function collapses the second
integral on the left and this expression can be rewritten as
ˆ
ψ(r
0
) = Λ(r
0
) +
_
∂V
_
p
−
(r; r
0
)
∂
ˆ
ψ(r)
∂n
−
ˆ
ψ(r)
∂p
−
(r; r
0
)
∂n
_
d:n:) (5.92)
where
Λ(r
0
) ≡
_
V
_
/
2
−/
2
0
¸
p
−
(r; r
0
)
ˆ
ψ(r) d·o. (5.93)
Equation (5.92) estimates the waveﬁeld
ˆ
ψ at the point r
0
interior to \ as a volume integral plus
a surface integral over ∂\ . The surface integral is what is desired since we can hope to know
ˆ
ψ
over the boundary of \ . However, the volume integral involves the unknown
ˆ
ψ and is essentially
not computable. The function Λ(r
0
) expresses this volume integral and can be seen to vanish if the
reference medium ·
0
is equivalent to the actual medium · over the entire volume. Since p has been
chosen as a constant velocity Green’s function, Λ can only vanish precisely for constant velocity.
However, in the variable velocity case, approximate, ray theoretic Green’s functions can be used to
help minimize Λ (Docherty, 1991). To the extent that the reference medium does not equal the true
medium, then Λ expresses the error in a
ˆ
ψ that is computed without Λ. In any case, the next step
is to drop Λ and substitute in p
−
= c
−ik0r
,: into equation (5.92) with the result
ˆ
ψ(r
0
) =
_
∂V
_
c
−ik0r
:
∂
ˆ
ψ(r)
∂n
−
ˆ
ψ(r)
∂
∂n
c
−ik0r
:
_
d:n:). (5.94)
The normal derivative of p can now be resolved into two terms
ˆ
ψ(r
0
) =
_
∂V
_
c
−ik0r
:
∂
ˆ
ψ(r)
∂n
+
i/
0
ˆ
ψ(r)c
−ik0r
:
∂:
∂n
+
ˆ
ψ(r)
c
−ik0r
:
2
∂:
∂n
_
d:n:). (5.95)
Multiplying both sides of this result by c
−2πift
and recalling that ψ(r
0
, t) =
ˆ
ψ(r
0
)c
−2πift
gives
ψ(r
0
, t) = c
−2πift
_
∂V
_
c
−ik0r
:
∂
ˆ
ψ(r)
∂n
+
i/
0
ˆ
ψ(r)c
−ik0r
:
∂:
∂n
+
ˆ
ψ(r)
c
−ik0r
:
2
∂:
∂n
_
d:n:) (5.96)
5.5. KIRCHHOFF METHODS 169
or, using /
0
= 2π),·
0
,
ψ(r
0
, t) =
_
∂V
_
c
−2πif(t+r/v0)
:
∂
ˆ
ψ(r)
∂n
+
i2π)
ˆ
ψc
−2πif(t+r/v0)
·
0
:
∂:
∂n
+
ˆ
ψ(r)
c
−2πif(t+r/v0)
:
2
∂:
∂n
_
d:n:).
(5.97)
Now,
ˆ
ψ(r)c
−2πif(t+r/v0)
= ψ(r, t +:,·
0
) is the waveﬁeld ψ at the point r but at the advanced time
t + :,·
0
. It is customary to denote this quantity as [ψ]
t+r/v0
with the result
ψ(r
0
, t) =
_
∂V
_
1
:
_
∂ψ
∂n
_
t+r/v0
−
1
·
0
:
∂:
∂n
_
∂ψ
∂t
_
t+r/v0
+
1
:
2
∂:
∂n
[ψ]
t+r/v0
_
d:n:) (5.98)
where the time derivative in the second term results from ∂
t
ψ = −2πi)ψ. This is a famous result and
is known as Kirchhoﬀ’s diﬀraction integral. (In most textbooks this integral is derived for forward
modelling with the result that all of the terms are evaluated at the retarded time t −:,·
0
instead of
the advanced time.) It expresses the waveﬁeld at the observation point r
0
at time t in terms of the
waveﬁeld on the boundary ∂\ at the advanced time t + :,·
0
. As with Fourier theory, it appears
that knowledge of both ψ and ∂
n
ψ are necessary to reconstruct the waveﬁeld at an internal point.
5.5.3 The Kirchhoﬀ migration integral
There are two essential tasks required to convert equation (5.98) into a practical migration formula.
First, as mentioned above, the apparent need to know ∂
n
ψ must be addressed. Second, the re
quirement that the integration surface must extend all the way around the volume containing the
observation point must be dropped. There are various ways to make both of these arguments that
have appeared in the literature. Schneider (1978) dispensed with the need to know ∂
n
ψ by using a
dipole Green’s function with an image source above the recording place. The result was a Green’s
function that vanished at . = 0 and cancelled the ∂
n
ψ term in equation (5.98). Schneider also
argued that the boundary surface can be a horizontal plane with a hemisphere below, and when the
hemisphere is extended to inﬁnity, contributions from it vanish. Wiggins (1984) adapted Schneider’s
technique to rough topography. Docherty (1991) showed that a monopole Green’s function, as used
here in equation (5.88) can lead to the accepted result and also challenged Schneider’s argument
that the integral over the inﬁnite hemisphere can be neglected. Instead, Docherty formulated the
expression with the backscattered waveﬁeld received at the surface and simply put the lower part
of the integration surface beneath the reﬂector. On physical grounds, the waveﬁeld beneath the
reﬂector is not expected to contain signiﬁcant information about the backscattered ﬁeld and so it
may be neglected. In reality, it does contain some information because the reﬂected and transmitted
waveﬁelds are related through boundary conditions on the reﬂector, but these are subtle second
order eﬀects. It should also be recalled that virtually all authors on this subject (the present writer
included) have approached it with knowledge of the desired result. After all, migration by summa
tion along diﬀraction curves or by wavefront superposition has been done for many years. Though
Schneider’s derivation has been criticized, his ﬁnal expressions are considered correct.
As a ﬁrst step in adapting equation (5.98) it is usually considered appropriate to discard the
term
1
r
2
∂r
∂n
[ψ(r)]
t+r/v0
. This is called the nearﬁeld term and decays more strongly with : than the
other two terms. Then, the surface o = ∂\ will be taken as the . = 0 plane, o
0
, plus the surface
inﬁnitesimally below the reﬂector, o
z
, and ﬁnally these surfaces will be joined at inﬁnity by vertical
cylindrical walls, o
∞
, (Figure 5.65). As mentioned previously, the integration over o
z
is not expected
to contribute signiﬁcantly to reconstruction of the backscattered ﬁeld. Also, the integration over
170 CHAPTER 5. ELEMENTARY MIGRATION METHODS
o
o
o
.
o
∞
o
∞
:
r
o
r r
:
source receiver
image source
θ
scatterpoint
Figure 5.65: The geometry for Kirchhoﬀ migration is shown. The integration surface is
o
0
+ o
z
+ o
∞
and it is argued that only o
0
contributes meaningfully to the estimation of
the backscattered ﬁeld at ·r
0
.
o
∞
, though it may contribute, can never be realized due to ﬁnite aperture limitations and its neglect
may introduce unavoidable artifacts. With these considerations, equation (5.98) becomes
ψ(r
0
, t) =
_
S0
_
−1
:
_
∂ψ
∂.
_
t+r/v0
+
1
·
0
:
∂:
∂.
_
∂ψ
∂t
_
t+r/v0
_
d:n:) (5.99)
where the signs on the terms arise because n is the outward normal and . is increasing downward
so that ∂
n
= −∂
z
.
Now, ∂
z
ψ must be evaluated. Figure 5.65 shows the source waveﬁeld being scattered from the
reﬂector at r
0
which is called the scatterpoint. A simple model for ψ is that it is approximately
the waveﬁeld from a point source, placed at the image source location, that passes through the
scatterpoint to the receiver. This can be expressed as
ψ(r, t) ∼
1
:
¹(t −:,·) =
[¹]
t−r/v
:
(5.100)
where ¹(t) is the source waveform at the scatterpoint. Using the chain rule gives
∂ψ
∂.
=
∂:
∂.
∂ψ
∂:
=
∂:
∂.
_
−1
·:
_
∂¹
∂t
_
t−r/v
−
[¹]
t−r/v
:
2
_
. (5.101)
If the second term is neglected (a nearﬁeld term), this becomes
∂ψ
∂.
=
∂:
∂.
−1
·:
_
∂¹
∂t
_
t−r/v
= −
∂:
∂.
1
·
∂ψ
∂t
. (5.102)
When this is substituted into equation 5.99, the two terms in square brackets become similar both
involving the time derivative of the advanced waveﬁeld. These will combine if ·
0
is now taken to be
the same as ·. Thus
ψ(r
0
, t) =
_
S0
2
·:
∂:
∂.
_
∂ψ
∂t
_
t+r/v
d:n:) (5.103)
5.5. KIRCHHOFF METHODS 171
Finally, consider ∂
z
:. Since : =
_
(r −r
0
)
2
+ (j −j
0
)
2
+ (. −.
0
)
2
this can be written
∂:
∂.
=
∂
∂.
_
(r −r
0
)
2
+ (j −j
0
)
2
+ (. −.
0
)
2
=
.
:
= cos θ (5.104)
where θ is the vertical angle between the receiver location and ray to the scatterpoint. With this,
the ﬁnal formula for the scattered waveﬁeld just above the reﬂector is
ψ(r
0
, t) =
_
S0
2 cos θ
·:
_
∂ψ
∂t
_
t+r/v
d:n:) (5.105)
Equation (5.105) is not yet a migration equation. As mentioned, it provides an estimate of
the scattered waveﬁeld just above the scatterpoint. Thus it is a form of waveﬁeld extrapolation
though it is direct, not recursive. A migration equation must purport to estimate reﬂectivity, not
just the scattered waveﬁeld and for this purpose a model relating the waveﬁeld to the reﬂectivity
is required. The simplest such model is the exploding reﬂector model (section 5.2.6) which asserts
that the reﬂectivity is identical to the downward continued scattered waveﬁeld at t = 0 provided
that the downward continuation is done with ˆ · = ·,2. Thus, an ERM migration equation follows
immediately from equation (5.105) as
ψ(r
0
, 0) =
_
S0
2 cos θ
ˆ ·:
_
∂ψ
∂t
_
r/ˆ v
d:n:) =
_
S0
4 cos θ
·:
_
∂ψ
∂t
_
2r/v
d:n:). (5.106)
This result, derived by many authors including Schneider (1978) and Scales (1995), expresses mi
gration by summation along hyperbolic travelpaths through the input data space. The hyperbolic
summation is somewhat hidden by the notation but is indicated by [∂
t
ψ]
2r/v
. Recall that this no
tation means that the expression in square brackets is to be evaluated at the time indicated by the
subscript. That is, as ∂
t
ψ(r, t) is integrated over the . = 0 plane, only those speciﬁc traveltimes
values are selected that obey
t =
2:
·
=
2
_
(r −r
0
)
2
+ (j −j
0
)
2
+ .
2
0
·
(5.107)
which is the equation of a zerooﬀset diﬀraction hyperbola. When squared, this result is a three
dimensional version of equation (5.36).
In addition to diﬀraction summation, equation (5.106) requires that the data be scaled by
4 cos θ,(·:) and that the time derivative be taken before summation. These additional details
were not indicated by the simple geometric theory of section 5.2.4 and are major beneﬁts of Kirch
hoﬀ theory. It is these sort of corrections that are necessary to move towards the goal of creating
bandlimited reﬂectivity. The same correction procedures are contained implicitly in )/ migration.
The considerations taken in deriving equation (5.106) suggest why ERM migration does not
achieve correct amplitudes. As mentioned following equation (5.105), a model linking the backscat
tered waveﬁeld to reﬂectivity was required. A more physical model will illustrate the shortcomings
of the exploding reﬂector model. Such a model has been advanced by Berkhout (1985) and others.
They consider that the source waveﬁeld propagates directly to the reﬂector, undergoing transmission
losses and geometrical spreading but without multiples and converted modes. At the reﬂector it is
scattered upward with an angledependent reﬂection coeﬃcient and then propagates upward to the
receivers, with further geometrical spreading and transmission losses but again without multiples
and mode conversions. This allows an interpretation of equation (5.105) as equivalent to the wave
172 CHAPTER 5. ELEMENTARY MIGRATION METHODS
ﬁeld propagated from the source to the scatterpoint and scaled by the reﬂection coeﬃcient. Thus, a
better way to estimate the reﬂectivity is to produce a model of the source waveﬁeld as propagated
down to the scatterpoint and divide the result of equation (5.105) by this modeled waveﬁeld. This is
a very general imaging condition called the deconvolution imaging condition that works for prestack
and zero oﬀset data. The ERM imaging condition is kinematically correct but does not achieve the
same amplitudes as the deconvolution imaging condition.
Kirchhoﬀ migration is one of the most adaptable migration schemes available. It can be eas
ily modiﬁed to account for such diﬃculties as topography, irregular recording geometry, prestack
migration, and converted wave imaging. When formulated as a depth migration, it tends to be a
slow method because great care must be taken in the raytracing (Gray, 1986). When formulated as
a time migration, straightray calculations using RMS velocities can be done to greatly speed the
process. Another advantage of Kirchhoﬀ methods is the ability to perform ”targetoriented” migra
tions. That is, equation (5.106) need only be evaluated for those points in (x,z) which comprise the
target. Since the cost of computation is directly proportional to the number of output points, this
can greatly reduce the run times and makes migration parameter testing very feasible.
5.6 Finite diﬀerence methods
5.6.1 Finite diﬀerence extrapolation by Taylor series
Finite diﬀerence techniques are perhaps the most direct, but often the least intuitive, of migration
methods. As the name implies, they involve the approximation of analytic derivatives of the wave
equation with ﬁnite diﬀerence expressions. To see how this might be done, consider the deﬁnition
of the derivative of an arbitrary function ψ(.)
dψ(.)
d.
= lim
∆z→0
ψ(. + ∆.) −ψ(.)
∆.
. (5.108)
A simple ﬁnite diﬀerence approximation for this derivative simply involves omitting the limit
dψ(.)
d.
≈ δ
1+
z
ψ(.) ≡
ψ(. + ∆.) −ψ(.)
∆.
. (5.109)
δ
1+
z
is the ﬁrstorder forwarddiﬀerence operator. Here ∆. is assumed small with respect to length
scales of interest (i.e. wavelengths) but is still ﬁnite.
Finite diﬀerence operators can be used to predict or extrapolate a function. Suppose that values
for ψ(.) and its ﬁrst derivative are known at ., then equation 5.109 can be rearranged to predict
ψ(. + ∆.)
ψ(. + ∆.) ≈ ψ(.) +
dψ(.)
d.
∆.. (5.110)
This can be regarded as a truncated Taylor series. Taylor’s theorem provides a method for ex
trapolation of a function provided that the function and all of its derivatives are known at a single
point
ψ(. + ∆.) = ψ(.) +
d
1
ψ(.)
d.
1
∆. +
1
2
d
2
ψ(.)
d.
2
∆.
2
+
1
6
d
3
ψ(.)
d.
3
∆.
3
+ . . . . (5.111)
If all derivatives exist, up to inﬁnite order at z, then there is no limit to the extrapolation distance.
Essentially, if the function and all its derivatives are known at one location, then it is determined
everywhere.
5.6. FINITE DIFFERENCE METHODS 173
If ﬁnite diﬀerence extrapolation is equivalent to using a truncated Taylor series, then what
relation does waveﬁeld extrapolation by phase shift have with Taylor series? Recall that if φ(.) is a
solution to the scalar wave equation in the Fourier domain, then it can be extrapolated by
φ(. + ∆.) = φ(.)c
2πikz∆z
. (5.112)
Here, /
z
is the vertical wavenumber whose value may be determined from the scalar wave dispersion
relation, /
z
=
_
)
2
,·
2
−/
2
x
. Furthermore, if φ
0
(/
x
, )) is the (/
x
, )) spectrum of data measured at
. = 0, then, for constant velocity, φ(.) is given by
φ(.) = φ
0
c
2πikzz
. (5.113)
As an illustration of the connection between Taylor series and the phaseshift extrapolator, consider
using Taylor series applied to equation (5.113) to derive something equivalent to equation (5.112).
From equation (5.113) the various derivatives can be estimated with the result that the n
th
derivative
is
d
n
φ(.)
d.
n
= [2πi/
z
]
n
φ(.). (5.114)
Then, using this result, a Taylor series expression for the extrapolation of φ(.) to φ(. + ∆.) is
φ(. + ∆.) = φ(.) + [2πi/
z
]φ(.)∆. +
1
2
[2πi/
z
]
2
φ(.)∆.
2
+
1
6
[2πi/
z
]
3
φ(.)∆.
3
+ . . . (5.115)
or
φ(. + ∆.) = φ(.)
_
1 + 2πi/
z
∆. +
1
2
[2πi/
z
∆.]
2
+
1
6
[2πi/
z
∆.]
3
+ . . .
_
. (5.116)
At this point, recall the expression for the series expansion of an exponential is c
x
= 1 +r +r
2
,2 +
r
3
,6+. . . which aﬀords the conclusion that the inﬁnite series in square brackets of equation (5.116)
may be summed to obtain
_
1 + 2πi/
z
∆. +
1
2
[2πi/
z
∆.]
2
+
1
6
[2πi/
z
∆.]
3
+ . . .
¸
= c
2πikz∆z
. Thus, if
inﬁnitely many terms are retained in the series, equation (5.116) is equivalent to equation (5.112).
It may be concluded that waveﬁeld extrapolation by phase shift is equivalent to extrapolation with
an inﬁniteorder Taylor series and there is no upper limit on the allowed size of ∆. (in constant
velocity). Alternatively, waveﬁeld extrapolation by ﬁnite diﬀerence approximations is equivalent to
extrapolation with a truncated Taylor series and the ∆. step size will have a deﬁnite upper limit of
validity.
5.6.2 Other ﬁnite diﬀerence operators
The ﬁnite diﬀerence approximation used in equation (5.109) is the simplest possible and there are
many others. The subject of solving partial diﬀerential equations by ﬁnite diﬀerence methods has
produced a vast literature while only a brief examination is possible here. Aki and Richards (1980),
Ames (1992), and Durran (1999) contain much more thorough discussions.
The forward diﬀerence operator in (5.109) uses the points at . and . +∆.. A backward diﬀerence
operator is equally acceptable as an approximate derivative
dψ(.)
d.
≈ δ
1−
z
ψ(.) ≡
ψ(.) −ψ(. −∆.)
∆.
. (5.117)
Both of these expressions give similar problems in practice that are related to the fact that the
diﬀerence is not centered at the estimation point. That is ψ(. +∆.) −ψ(.) is centered at . +∆.,2
174 CHAPTER 5. ELEMENTARY MIGRATION METHODS
while the backward diﬀerence is centered at . − ∆.,2. This suggests forming a centered diﬀerence
by averaging the forward and backward operators
dψ(.)
d.
≈
1
2
_
δ
1+
z
+ δ
1−
z
¸
ψ(.) ≡
ψ(. + d.) −ψ(. −∆.)
2∆.
≡ δ
1
z
. (5.118)
The centered diﬀerence is usually superior to the forward and backward diﬀerences and should be
used whenever possible.
An approximation for the second derivative can be developed by applying the forward and back
ward operators in succession
d
2
ψ(.)
d.
2
≈ δ
1+
z
δ
1−
z
ψ(.) = δ
1+
z
_
ψ(.) −ψ(. −∆.)
∆.
_
=
ψ(. + ∆.) −ψ(.)
∆.
2
−
ψ(.) −ψ(. −∆.)
∆.
2
(5.119)
or
d
2
ψ(.)
d.
2
≈ δ
2
z
ψ(.) ≡
ψ(. + ∆.) −2ψ(.) −ψ(. −∆.)
∆.
2
(5.120)
This is a centered approximation to the second derivative.
5.6.3 Finite diﬀerence migration
Most ﬁnite diﬀerence migrations methods are formulated in the spacetime domain though space
frequency methods are also common. Also, they are all recursive extrapolation techniques. Though
there are many equivalent ways to develop any particular method, a consistent approach can be
formulated by beginning in the frequency domain with phase shift theory as follows:
1) Develop a suitable rational approximation to the one way dispersion relation for scalar waves.
A rational approximation is one which eliminates the square root though it may involve mul
tiplication, division, and powers of frequencies and wavenumbers.
2) Construct a spacetime domain diﬀerential equation from the approximate dispersion relation
by the replacement rules
) →
i
2π
∂
∂t
; /
x
→
−i
2π
∂
∂r
; /
y
→
−i
2π
∂
∂j
; /
z
→
−i
2π
∂
∂.
; (5.121)
3) Choose an appropriate form for the ﬁnite diﬀerence operators (i.e. forward, backward,or central
diﬀerences).
4) Develop the diﬀerence equation which corresponds to the diﬀerential equation found in step 2.
5) Solve the diﬀerence equation for the extrapolated waveﬁeld.
6) Implement a migration by recursive extrapolation computer algorithm using step 5.
As an illustration, the 15 degree ﬁnite diﬀerence time migration algorithm will be developed.
This was one of the ﬁrst migration algorithms to be developed and is described in Claerbout (1976).
Recall that in the Fourier domain, time migration by recursive extrapolation proceeds by using the
5.6. FINITE DIFFERENCE METHODS 175
 1  0.5
0
0.5 1
 0.8
 0.4
0
0.4
/
.
/
r
A
B
C
15
o
Figure 5.66: For a particular ) and ˆ ·, (A) the dispersion relation (equation (5.125)) of
the parabolic wave equation; (B) the exact dispersion relation (equation (5.123)) of the
focusing phase shift; (C) the full dispersion relation of the scalar wave equation.
focusing phase shift at each extrapolation step
j
f
=
2π)∆.
ˆ ·
_
¸
1 −
/
2
x
ˆ ·
2
)
2
−1
_
. (5.122)
Since the general form of an extrapolation phase shift is j/o:c = 2π/
z
∆., a ﬁnite diﬀerence time
migration requires a “wave equation” whose dispersion relation approximates
˜
/
z
=
)
ˆ ·
_
¸
1 −
/
2
x
ˆ ·
2
)
2
−1
_
. (5.123)
where
˜
/
z
is used rather than /
z
to reserve the latter term for the real vertical wavenumber. It is not
acceptable to perform the substitutions of relation (5.121) into this result because the square root of
a diﬀerential operator results and that is diﬃcult to work with. Therefore, a rational approximation
to the square root in equation (5.123) is desired. The second term in the square root is sin
2
θ where
θ is the scattering angle. For small angles (i.e. energy traveling nearly vertically) it is expected that
an approximate form can be obtained by expanding the square root and keeping only the ﬁrst few
terms
¸
1 −
/
2
x
ˆ ·
2
)
2
= 1 −
/
2
x
ˆ ·
2
2)
2
+
3/
2
x
ˆ ·
2
8)
2
+ . . . . (5.124)
Truncating equation (5.124) at two terms and substituting the result into equation (5.123) gives
˜
/
z
≈
)
ˆ ·
_
1 −
/
2
x
ˆ ·
2
2)
2
−1
_
= −
/
2
x
ˆ ·
2
2)
. (5.125)
To construct a partial diﬀerential equation from this approximate dispersion, ﬁrst multiply both
sides by 2),ˆ · and replace the spectral multiplications with partial derivatives according to relation
176 CHAPTER 5. ELEMENTARY MIGRATION METHODS
(5.121). This results in
2
ˆ ·
∂
2
ψ(r, ˜ ., t)
∂˜ .∂t
+
∂
2
ψ(r, ˜ ., t)
∂r
2
= 0. (5.126)
This is known as the 15
◦
or parabolic wave equation. The reason for this name is suggested by
Figure 5.66 which shows that equation (5.125) is a good approximation to equation (5.123) for angles
less than about 15
◦
.
Before proceeding with the ﬁnite diﬀerence approximations, it is helpful to change variables in
equation (5.126) from ˜ . to τ where τ = ˜ .,ˆ ·. The ˜ . derivative changes according to ∂
˜ z
= (∂
˜ z
τ)∂
τ
=
ˆ ·
−1
∂
τ
. This allows equation (5.126) to be recast as
2
ˆ ·
2
∂
2
ψ(r, τ, t)
∂τ∂t
+
∂
2
ψ(r, τ, t)
∂r
2
= 0. (5.127)
Equation (5.127) is an approximate wave equation which can be used to migrate stacked data from
zero oﬀset time to migrated time. Though this equation is rarely used anymore, its ﬁnite diﬀerence
implementation illustrates most of the features of the method and is simpler than higher order
methods.
The ﬁnite diﬀerence approximation to equation (5.127) is well described by Claerbout (1976)
and that approach is followed here. Let
1
∆r
2
T = δ
2
x
≈
∂
2
∂r
2
and ψ
k
j
= ψ(r, /∆τ, ,∆t). (5.128)
Then the r derivatives of equation (5.127) are approximated as
δ
τ
δ
t
ψ
k
j
= −
ˆ ·
2
2∆r
2
Tψ
k
j
(5.129)
where δ
τ
and δ
t
are, as yet, unspeciﬁed ﬁnite diﬀerence operators. The δ
t
operator is implemented
as a forward diﬀerence but the righthandside of equation (5.129) is also modiﬁed to ensure that
both sides of the equation are centered at the same grid location. The result is
δ
τ
_
ψ
k
j+1
−ψ
k
j
¸
= −
∆tˆ ·
2
4∆r
2
T
_
ψ
k
j+1
+ ψ
k
j
¸
(5.130)
where the righthandside represents the average of T applied to two grid points. This process
of maintaining grid balance is essential in producing a stable algorithm and is a CrankNicholson
method. Next the τ operator is implemented in a similar way as a balanced forward diﬀerence with
the result
_
ψ
k+1
j+1
−ψ
k
j+1
¸
−
_
ψ
k+1
j
−ψ
k
j
¸
= −
∆τ∆tˆ ·
2
8∆r
2
T
_
ψ
k+1
j+1
+ ψ
k
j+1
+ ψ
k+1
j
+ ψ
k
j
¸
. (5.131)
Finally, to downward continue, equation (5.131) must be solved for ψ
k+1
j
. This can be written
as
[1 −oT] ψ
k+1
j
= [1 + oT]
_
ψ
k+1
j+1
+ ψ
k
j
¸
−[1 −oT] ψ
k
j+1
(5.132)
where o = ∆τ∆tˆ ·
2
,8∆r
2
. Equation (5.132) is solved numerically for the unknown ψ
k+1
j
where it
is assumed that all of the quantities on the righthandside are known. This is an example of an
implicit ﬁnite diﬀerence method because it requires the numerical inversion of the matrix operator
1 + oT.
5.6. FINITE DIFFERENCE METHODS 177
/
,
ψ
1
1
___ ψ
2
1
ψ
3
1
ψ
2
2
ψ
3
3
ψ
n 1
1
ψ
n 1
2
o
o
o
o
o
o
o
o
Figure 5.67: The parabolic wave equation is solved on a 2D grid using ﬁnite diﬀerences.
The ﬁrst row contains the known data and the last column is set to zero. The solution
proceeds rowbyrow and begins in the upper right corner.
The diﬀerencing procedure can be viewed on a (,, /) grid as shown in Figure 5.67. The r axis
is orthogonal to this ﬁgure and is not shown. The ﬁrst row contains the measured CMP stack and
the last column (corresponding to maximum time) is set to zero. Consider the four grid points in
the upper right corner. Three of these are prescribed by initial conditions and the fourth, ψ
1
n−1
can
then be calculated by equation (5.132). Subsequently, ψ
1
n−2
can be solved for and so on until the
entire second row in calculated. Computation then moves to the third row and continues until the
entire grid is completed. Each row corresponds to an extrapolated τ section and the ﬁnal migrated
section corresponds to t = τ which is the diagonal.
From this example, many of the well known characteristics of ﬁnite diﬀerence migration algo
rithms are easily deduced such as
• They are recursive extrapolation schemes.
• They use an approximate form of the exact dispersion relation for scalar waves. This means
that they are all dip or scattering angle limited.
• They are very ﬂexible in handling velocity variations since the velocity may simply be varied
with each grid cell.
• The use of ﬁnite diﬀerence derivatives means that even the approximate dispersion relation is
not exactly realized.
• Finite diﬀerence derivatives are not unique and the accuracy of a method depends strongly on
the sophistication of the approximations used. Generally, ﬁnite diﬀerence methods need many
more samples per wavelength that Fourier methods (610 versus 23).
• They can be either time or depth migrations.
• They can be posed in the spacetime or spacefrequency domain.
178 CHAPTER 5. ELEMENTARY MIGRATION METHODS
.5
A
1.0
s
e
c
o
n
d
s
1.0 2.0
kilometers
40
80
f
r
e
q
u
e
n
c
y
(
H
z
)
120
0
.06
wavenumber(m
1
)
0 .06
B
Figure 5.68: (A) An ERM seismogram that models a regular grid of point diﬀractors. (B)
The (/
x
, )) spectrum of (A).
5.7 Practical considerations of ﬁnite datasets
From the perspective of )/ migration theory, optimizing the ability of seismic data to resolve
earth features requires maximization of the spectral bandwidth after migration. The /
x
(horizontal
wavenumber) bandwidth determines the lateral resolution and is directly proportional to the maxi
mum frequency and the sine of the maximum scattering angle and inversely proportional to velocity.
Constraints on the maximum scattering angle can be derived by examining the three eﬀects of ﬁnite
spatial aperture, ﬁnite recording time, and discrete spatial sampling. These eﬀects are analyzed,
assuming zerooﬀset recording, for the case of a linear (constant gradient) ·(.) medium. Explicit
analytic expressions are derived for the limits imposed on scattering angle for each of the three
eﬀects. Plotting these scattering angle limits versus depth limits for assumed recording parameters
is an eﬀective way to appreciate their impact on recording. When considered in context with )/
migration theory, these scattering angle limits can be seen to limit spatial resolution and the pos
sibility of recording speciﬁc reﬂector dips. Seismic surveys designed with the linear ·(.) theory are
often much less expensive than constant velocity theory designs.
Seismic line length and maximum record time place deﬁnite limits on the maximum scattering
angle that can be recorded, and hence imaged, on a migrated zerooﬀset section. Since horizontal
resolution depends directly on the sine of the maximum scattering angle (Vermeer (1990) and many
others), it is important to understand these eﬀects for survey design and interpretation. Furthermore,
the observation of a normal incidence reﬂection from a dipping reﬂector requires having a scattering
angle spectrum whose limits exceed the reﬂector dip.
The imposition of ﬁnite recording apertures in space and time actually imprints a strong spatial
temporal variation (i.e. nonstationarity) on the spectral content of a migrated section. As an
example, consider the synthetic seismic section shown in Figure 5.68A. This shows a zero oﬀset
(constant velocity) simulation of the response of a grid of point scatterers (diﬀractors) distributed
uniformly throughout the section. Note how the diﬀraction responses change geometry and how the
recording apertures truncate each one diﬀerently. Figure 5.68B is a display of the (/
x
, )) amplitude
spectrum for this section. As expected from elementary theory, all energy is conﬁned to a triangular
5.7. PRACTICAL CONSIDERATIONS OF FINITE DATASETS 179
.5
1.0
s
e
c
o
n
d
s
1.5
0
A
1.0 2.0
kilometers
3.0
0
40
80
f
r
e
q
u
e
n
c
y
(
H
z
)
120
0
.06
wavenumber(m
1
)
0 .06
B
Figure 5.69: (A) The )/ migration of the ERM seismogram of Figure 5.68A. (B) The
(/
x
, )) spectrum of (A).
region deﬁned by [/
x
[ < ),ˆ ·.
Figure 5.69A shows this section after a constant velocity fk migration and Figure 5.69B is the
(/
x
, )) spectrum after migration. The spectrum shows the expected behavior in that the triangular
region of Figure 5.68B has unfolded into a circle. Essentially, each frequency (horizontal line in
Figure 5.68B) maps to a circle in Figure 5.69B (see Chun and Jacewitz (1981) for a discussion).
Note that fk migration theory as usually stated Stolt (1978) assumes inﬁnite apertures while close
inspection of the focal points in Figure 5.69A shows that their geometry varies strongly with position.
The four focal points shown boxed in Figure 5.69A are enlarged in Figure 5.70A. Considering
the focal points near the center of the spatial aperture, a small, tight focal point at the top of the
section grades to a broad, dispersed smear near the bottom. Alternatively, assessing at constant time
shows the focal points grading from strongly asymmetricleft through symmetric to asymmetricright.
Figure 5.70B shows local (/
x
, )) spectra of the four focal points in 5.70A. Comparing with Figure
5.69B shows that these local spectra are dramatically diﬀerent from the global spectrum. Only
the topcenter point has the full circular spectrum expected from the inﬁnite aperture theory while
the others show strong asymmetry or severe bandwidth restrictions. These local spectra determine
the local resolution characteristics of the aperture limited seismic section. Schuster (1997) gives a
formal theory (assuming constant velocity) for these focal points and shows that the local spectra
are bounded by scattered rays that extend from the scatter point to either side of the section. This
current paper shows how to estimate these scattering angles in a realistic setting and therefore how
to assess resolution implications.
For constant velocity, the computation of limiting scattering angles is well understood but this
approach often results in overly expensive survey designs. An analysis with a constant velocity
gradient is much more realistic as it allows for ﬁrst order eﬀects of ray bending by refraction. Such
an analysis is presented here together with a simple graphical method of assessing the results.
5.7.1 Finite dataset theory
Stolt (1978) established )/ migration theory for the poststack, zerooﬀset case. A fundamental
result is that constant velocity migration is accomplished by a mapping from the (/
x
, )) plane to
180 CHAPTER 5. ELEMENTARY MIGRATION METHODS
1.0
1.1
s
e
c
2.6
km
2.8
1.0
1.1
s
e
c
.25 .4
km
.1
.2
s
e
c
1.2 1.4
km
1.3
1.4
s
e
c
1.2 1.4
km
A
100m
1
0
0
m
s
0
40
80
120
H
z
0 .05
m
1
.05
0
40
80
120
H
z
0 .05
m
1
.05
0
40
80
120
H
z
0 .05
m
1
.05
0
40
80
120
H
z
0 .05
m
1
.05
B
Figure 5.70: (A) Enlargements of the boxed focal points of Figure 5.69A. (B) Local (/
x
, ))
spectra of the focal points in (A).
7
¹
θ
·
T
:
∆r
Figure 5.71: A ray from a scatterpoint on a re
ﬂector requires a certain aperture ¹ and record
length T to be captured. Also, the CMP sam
ple rate ∆r must be suﬃciently small to avoid
spatial aliasing.
60
23 51
o
40 40
o
23
o
51
60
2.5
km
10
km
7.5
km
5
km
5
km
2.5
km
7.5
km
10
km
6
k
m
o
o o o o
Figure 5.72: A ﬁxed length seismic line induces
an aperture eﬀect that varies laterally along the
line. In turn, this limits the scattering angle
spectrum.
5.7. PRACTICAL CONSIDERATIONS OF FINITE DATASETS 181
the (/
x
, /
z
) plane as was discussed in section 5.4.1 and illustrated in Figure 5.49. As can be deduced
from the ﬁgure, the /
x
bandwidth after migration is limited by
/
xlim
= /
xmax
=
2)
max
sin (θ
max
)
·
. (5.133)
/
2
z
=
)
2
(·,2)
2
−/
2
x
(5.134)
λ
min
= λ
dom
= 2.85λ
min
=
λ
dom
2
= 1.425λ
min
(5.135)
δr =
α
/
xmax
(5.136)
δr =
α·
2)
max
sin (θ
max
)
=
α
2 sin (θ
max
)
λ
min
(5.137)
δr ∼
1.4
sin (θ
max
)
λ
min
=
1.4·
)
max
sin (θ
max
)
=
·T
2
(5.138)
In this expression, /
xmax
is the limiting wavenumber to be expected from a migration with no
limitation on scattering angle. In any practical setting, there is always a limit on scattering angle
and it is generally spatially variant. The limit may be a result of the eﬀects of ﬁnite aperture,
ﬁnite record length, and discrete spatial sample size or any of many other possibilities including:
the migration algorithm may be ”dip limited”, lateral or complex vertical velocity variations can
create shadow zones, attenuation eﬀects are dependent on raypath length and hence aﬀect the larger
scattering angles more. Whatever the cause, a limitation of the range of scattering angles which can
be collected and focused to a particular point translates directly into a resolution limit as expressed
by equation (1). The size of the smallest resolvable feature, say δr, is inversely proportional to
/
xlim
. For deﬁniteness, let /
xlim
= α,(2δr), where α is a proportionality constant near unity, and
solve for δr to get
δr =
α·
4)
max
sin (θ
max
)
. (5.139)
Since the aperture limit is r and . variant (record length and spatial aliasing limits are . variant)
δr must also vary with position. An interpretation of equation (5.139) is that it gives the smallest
discernible feature on a reﬂector whose dip is normal to the bisector of the scattering angle cone at
any position (Figure 5.71).
For constant velocity, the limits imposed on zerooﬀset scattering angle are easily derived using
straight ray theory and have been shown (Lynn and Deregowski, 1981) to be
tan θ
A
=
¹
.
(5.140)
and
cos θ
T
=
·T
2.
. (5.141)
In these expressions, ¹ is the available aperture, T is the record length, . is depth, and · is the
presumed constant velocity. θ
A
and θ
T
are limitations on scattering angle imposed by aperture and
record length respectively (Figure 5.71). Aperture is deﬁned as the horizontal distance from an
analysis point to the end of the seismic line or the edge of a 3D patch and is thus dependent on
182 CHAPTER 5. ELEMENTARY MIGRATION METHODS
90
60
30
0
1.0 3.0 5.0
Depth(km)
a
n
g
l
e
(
d
e
g
r
e
e
s
)
Aperture
Spatialaliasing
R
e
c
o
r
d
l
e
n
g
t
h
Figure 5.73: Constant velocity scattering an
gle chart showing the aperture, record length,
and spatial aliasing limits for ¹ = 2500m, T =
3.0sec, · = 3500m/s, ∆r = 20m and ) = 60Hz.
120
80
40
0
1.0 2.0 3.0
depth(km)
a
n
g
l
e
(
d
e
g
r
e
e
s
)
Recordlength
A
p
ertu
re
Spatialaliasing
Figure 5.74: Constant gradient scattering an
gle chart showing the aperture, record length,
and spatial aliasing limits for ¹ = 2500m, T =
3.0sec, · = 1500 + .6.m/s, ∆r = 20m and
) = 60Hz.
azimuth and position (Figure 5.72). Alternatively, the record length limit has no lateral variation.
Taken together, these expressions limit the scattering angle spectrum to a recordable subset.
A third limiting factor is spatial aliasing which further constrains the possible scattering angle
spectrum to that which can be properly imaged (migrated). (Liner and Gobeli (1996) and Liner
and Gobeli (1997) give an analysis of spatial aliasing in this context.) The Nyquist requirement is
that there must be at least two samples per horizontal wavelength to avoid aliasing
λ
x
=
λ
:inθ
x
≥ 2∆r. (5.142)
Here, ∆r is the spatial sample size (CMP interval), λ and λ
x
are wavelength and its apparent
horizontal component, and θ
x
is most properly interpreted as the emergence angle of a dipping event
on a zero oﬀset section. Consistent with zerooﬀset migration theory, the exploding reﬂector model
Lowenthal and Sherwood (1976) can be used to relate wavelength to velocity through λ = ·,(2))
where ) is some frequency of interest. This leads to an angle limited by spatial aliasing given by
sin θ
x
=
·
4)∆r
(5.143)
In the constant velocity case, the emergence angle of a ray and the scattering angle at depth are
equal and thus equation (5.143) expresses the constant velocity limit on scattering angle imposed
by spatial aliasing. For vertical velocity variation, ·(.), the result still applies provided that θ
x
is
simply interpreted as emergence angle and · as near surface velocity. The emergence angle can be
related to the scattering angle at depth using Snell’s law. This is done by recalling that the ray
parameter, j = :in(θ(.)),·(.), is conserved (Slotnick, 1959), which leads to
sin θ
x
=
·(.)
4)∆r
. (5.144)
This expression generalizes spatial aliasing considerations to monotonically increasing but otherwise
arbitrary ·(.) and θ
x
is interpreted as the scattering angle from depth, ..
5.7. PRACTICAL CONSIDERATIONS OF FINITE DATASETS 183
Returning to constant velocity, equations (5.140), (5.141), and (5.143) can be used to create a
scattering angle resolution chart for an assumed recording geometry, position on the line, frequency
of interest and constant velocity. A typical case is shown in Figure 5.73 where it is seen that the
aperture limit is concave upward and tends asymptotically to zero at inﬁnite depth. The record
length limit has the opposite curvature and reaches zero degrees at the depth . = ·T,2. Both limits
admit the possibility of 90
◦
only for . = 0. The spatial aliasing limit is depth independent but
requires a frequency of interest which can conservatively be taken as the maximum (not dominant)
signal frequency.
Charts such as Figure 5.73 can be used as an aid in survey design but tend to give unrealistic
parameter estimates due to the assumption of straight raypaths. In most exploration settings,
velocity increases systematically with depth and thus raypaths bend upward as they propagate from
the scatterpoint to the surface. Intuitively, this should lead to shorter aperture requirements and
allow the possibility of recording scattering angles beyond 90
◦
in the near surface. The spatial
aliasing limit has already been discussed in this context and the aperture and record length limits
will now be derived exactly for the case of a constant velocity gradient, that is when ·(.) = ·o +c..
The derivation requires solution of the Snell’s law raypath integrals for the linear gradient case
(Slotnick, 1959). If j
A
is the ray parameter required to trace a ray from a scatterpoint to the end
of the spatial aperture, then
¹(.) =
_
z
0
j
A
·(.
)
_
1 −j
2
A
·(.
)
2
d.
. (5.145)
Similarly, let j
T
be the ray parameter for that ray from scatterpoint to the surface which has
traveltime (twoway) equal to the seismic record length, then
T(.) =
_
z
0
1
·(.
)
_
1 −j
2
T
·(.
)
2
d.
. (5.146)
These integrals can be computed exactly, letting ·(.) = ·o + c., to give
¹ =
1
j
A
c
_
_
1 −j
2
A
·
2
0
−
_
1 −j
2
A
·(.)
2
_
, (5.147)
and
T =
2
c
ln
_
·(.)
·
0
_
1 +
_
1 −j
2
T
·
2
0
1 +
_
1 −j
2
T
·(.)
2
__
. (5.148)
Equations (5.147) and (5.148) give spatial aperture, ¹, and seismic record length, T, as a function
of ray parameter and velocity structure.
Letting j
A
= :in(θ
A
(.)),·(.) and j
T
= :in(θ
T
(.)),·(.), equations (5.147) and (5.148) can both
be solved for scattering angle to give
:in
2
(θ
A
) =
[2¹c·
0
γ]
2
[¹
2
c
2
+ ·
2
0
]
2
γ
4
+ 2·
2
0
γ
2
[¹
2
c
2
−·
2
0
] + ·
4
0
, (5.149)
and
cos (θ
T
) =
γ
−1
−cosh(cT,2)
sinh(cT,2)
, (5.150)
where
γ =
·
0
·(.)
. (5.151)
184 CHAPTER 5. ELEMENTARY MIGRATION METHODS
When equations (5.144), (5.149), and (5.150) are used to create a scattering angle resolution
chart, the result is typiﬁed by Figure 5.74. The parameters chosen are the same as for Figure 5.73
and the linear velocity function was designed such that it reaches 3500 m/s (the value used in Figure
5.73) in the middle of the depth range of Figure 5.74. It can be seen that the possibility of recording
angles beyond 90
◦
is predicted for the ﬁrst 1000 m and the aperture limit is everywhere more broad
than in Figure 5.73. The record length limit forces the scattering angle spectrum to zero at about
3700 m compared to over 5000 m in the constant velocity case. This more severe limit is not always
the case, in fact a record length of 6 seconds will penetrate to over 12000 m in the linear velocity
case and only 10500 m in the constant case. Also apparent is the fact that the spatial aliasing limit
predicts quite severe aliasing in the shallow section though it gives exactly the same result at the
depth where ·(.) = 3500 m/s.
5.7.2 Examples
Figures 5.75A, 5.75B, and 5.75C provide further comparisons between the linear v(z) theory and
constant velocity results. In Figure 5.75A, the aperture limits are contrasted for the same linear
velocity function (v = 1500 +.6 z m/s) and constant velocity (v 3500 m/s) used before. The dark
curves show the linear velocity results and the light curves emanating from 90
◦
at zero depth are
the constant velocity results. Each set of curves covers the range of aperture values (from top to
bottom): 1000, 4000, 12000, and 20000 meters. The dramatic eﬀect of the v(z) theory is especially
obvious for larger apertures which admit angles beyond 90
◦
for a considerable range of depths.
Figure 5.75B is similar to Figure 5.75A except that the record length limit is explored. For each set
of curves, the record lengths shown are (from top to bottom): 2.0, 4.0, 6.0, and 8.0 seconds. Figure
5.75C shows spatial aliasing limits for a frequency of 60 Hz. and a range of ∆r values (from top to
bottom): 10 20 40 60 80 100 and 150 meters.
Next consider Figure 5.76 that shows a synthetic demonstration of the aperture eﬀect. Here,
a number of unaliased point diﬀractor responses have been arranged at constant time. Thus the
record length limit is constant and the aliasing limit does not apply. When migrated, the resulting
display clearly shows the eﬀect of ﬁnite spatial aperture on resolution. Comparison with Figure 5.72
shows the direct link between recorded scattering angle spectrum and resolution. Approximately,
the focal points appear as dipping reﬂector segments oriented such that the normal (to the segment)
bisects the captured scattering angle spectrum.
Figure 5.77 is a study designed to isolate the eﬀects of temporal record length on resolution. The
unmigrated section is constructed such that all ﬁve point diﬀractors are limited by record length and
not by any other eﬀect. Upon migration, the focal points are all symmetric about a vertical axis but
show systematic loss of lateral resolution with increasing time. As shown in Figures 5.73, 5.74, and
5.75B, the record length limit always forces the scattering angle spectrum to zero at the bottom of
the seismic section. Equation (5.139) then results in a lateral resolution size that approaches inﬁnity.
This eﬀect accounts for the often seen data ’smearing’ at the very bottom of seismic sections.
Figure 5.78 shows the migration of a single diﬀraction hyperbola with three diﬀerent spatial
sample intervals to illustrate the resolution degradation that accompanies spatial aliasing. In Figure
5.78B, the migration was performed with a spatial sample rate of 4.5 m which represents a comfort
ably unaliased situation. In Figures 5.78C and 5.78D the sample intervals are 9 m (slightly aliased)
and 18 m (badly aliased). The slightly aliased situation has not overly compromised resolution but
the badly aliased image is highly degraded. Note that the vertical size of the image is unaﬀected.
In Figure 5.79, the eﬀect of maximum temporal frequency is examined. A single diﬀraction
hyperbola was migrated with three diﬀerent maximum frequency limits . In Figure 5.79B, the focal
point and its local (/
x
, )) spectrum are shown for an 80 Hz. maximum frequency while Figures 5.79C
5.7. PRACTICAL CONSIDERATIONS OF FINITE DATASETS 185
180
120
60
0
0 5 10 15 20
depth (km)
20 km
12 km
4 km
1 km
a
n
g
l
e
(
d
e
g
r
e
e
s
)
140
100
60
20
0 5 10 15 20 25
8
s
e
c
4
s
e
c
a
n
g
l
e
(
d
e
g
r
e
e
s
)
depth (km)
6
s
e
c
2
s
e
c
90
60
30
0
5 10 15 20
depth (km)
a
n
g
l
e
(
d
e
g
r
e
e
s
)
20 m 40 m
80 m
160 m
computed for 60 Hz
A B
C
Figure 5.75: The constant and linear ·(.) theories are compared. In each case, the linear
·(.) theory is presented with bold lines while the constant velocity theory uses thin lines.
The constant velocity used was 3500 m/s and the linear function was · = 1500 + .6.
m/s. (A) The aperture limits are contrasted. The apertures used are labeled on the bold
curves but the light curves use sequentially the same A values. (B) The record limits are
contrasted. The record lengths used are labeled on the bold curves but the light curves
use sequentially the same T values. (C) The spatial aliasing limits are contrasted. The
∆r values used are labeled on the bold curves but the light curves use sequentially the
same values.
186 CHAPTER 5. ELEMENTARY MIGRATION METHODS
.8
1.0
1.2
1.4
s
e
c
o
n
d
s
.5 1.5 2.5
km
.8
1.0
1.2
1.4
s
e
c
o
n
d
s
.5 1.5 2.5
km
A
B
500m
Figure 5.76: (A) A series of point scatterers all at the same time so that their record
length eﬀect is constant. (B) The migration of (A) shows the spatial variability of focal
point geometry caused by the aperture eﬀect. Compare with Figure 5.72
B
200m
1.1 1.5 1.9
km
.5
1.0
s
e
c
o
n
d
s
1.5
0
.5
1.0
s
e
c
o
n
d
s
1.5
0
1.0 2.0
km
3.0 0
A
Figure 5.77: An illustration of the record length eﬀect. (A) A series of diﬀractions that
are all truncated by the bottom of the section to minimize the aperture eﬀect. (B) The
migration of (A) shows a systematic loss of lateral resolution with increasing time. At the
bottom of the section, the lateral size of a focal point is theoretically inﬁnite. Note the
horizontal scale change between (A) and (B).
5.7. PRACTICAL CONSIDERATIONS OF FINITE DATASETS 187
.5
1.0
s
e
c
o
n
d
s
1.5
0
1.0 2.0
km
3.0
0
.48
.56 18m
.05 .05
m
1
H
z
100m
s
e
c
D
20
80
.48
.56
s
e
c
4.5m
20
80
H
z
focal points fk spectra
B
.48
.56
s
e
c
9m
20
80
H
z
C
A
Figure 5.78: The spatial aliasing eﬀect is demonstrated. (A) A single diﬀraction hyperbola.
(B) A zoom of the focal point and the (/
x
, )) spectrum after migration of (A) with ∆r =
4.5 m. (C) A zoom of the focal point and the (/
x
, )) spectrum after migration of (A) with
∆r = 9 m. (D) A zoom of the focal point and the (/
x
, )) spectrum after migration of (A)
with ∆r = 18 m.
and 5.79D are similar except that the maximum frequencies were 60 Hz. and 40 Hz. respectively. It is
clear from these ﬁgures that limiting temporal frequency aﬀects both vertical and lateral resolution.
As expected from equation (5.139), a reduction of )
max
from 80 Hz to 40 Hz causes a doubling of
the focal point size.
In summary, the theory of (/
x
, )) migration predicts a simple model for the resolving power
of seismic data. The result is a spatial bandwidth that depends directly on frequency and sine of
scattering angle and inversely on velocity. Finite recording parameters (aperture and record length)
place space and time variant limits on the observable scattering angle spectrum. Thus the resolution
of a seismic line is a function of position within the aperture of the line. The scattering angle limits
imposed by aperture, record length, and spatial sampling can be derived exactly for the case of
constant velocity and for velocity linear with depth. The linear velocity results are more realistic
and lead to considerably diﬀerent, and usually cheaper, survey parameters than the constant velocity
formulae.
188 CHAPTER 5. ELEMENTARY MIGRATION METHODS
40
80
120
0
f
r
e
q
u
e
n
c
y
(
H
z
)
.06
m
1
0 .06
.5
1.0
s
e
c
o
n
d
s
1.5
0
1.0 2.0
km
3.0 0
A
.48
.56
s
e
c
focalpoints
.48
.56
s
e
c
.48
.56
s
e
c
100m
fmax
˜
80 Hz
20
80
H
z
.05 .05
m1
fkspectra
20
80
H
z
20
80
H
z
B
C
D
fmax
˜
60 Hz
fmax
˜
40 Hz
Figure 5.79: The resolution eﬀect of decreasing 1
max
is demonstrated. (A) A single
diﬀraction hyperbola and its (/
x
, )) spectrum. (B) A zoom of the focal point and the
(/
x
, )) spectrum after migration of (A) with )
max
= 80 Hz. (C) A zoom of the focal point
and the (/
x
, )) spectrum after migration of (A) with )
max
= 60 Hz. (D) A zoom of the
focal point and the (/
x
, )) spectrum after migration of (A) with )
max
= 40 Hz.
Chapter 6
Appendix A
There seems to be a little room here for brilliant expostulation.
Figure 6.1: Seisgun ﬁeld record showing reﬂections, refractions, surface waves and air blast (courtesy
of Don Lawton).
189
190 CHAPTER 6. APPENDIX A
Figure 6.2: 2D Dynamite ﬁeld record from Blackfoot, southern Alberta (courtesy of Don Lawton).
Figure 6.3: Part of a 3D dynamite ﬁeld record from Blackfoot, southern Alberta (Simin et al., 1996).
191
Figure 6.4: Uncorrelated VibroSeis Field record (with AGC) from Pikes Peak, Saskatchewan.
Figure 6.5: Same record as Figure 6.4, after correlation with the sweep, bandpass ﬁlter, and AGC.
192 CHAPTER 6. APPENDIX A
Figure 6.6: Correlated VibroSeis ﬁeld record from Jumpingpound 3C2D, after vertical stacking and
AGC. Note surface noise, air blast, break in slope of direct arrivals, and road noise (Lawton et al.,
2002).
Figure 6.7: Left: Raw record. Right: After trace edit, top mute, statics, ﬁltering, and deconvolution
(courtesy of Don Lawton).
193
Figure 6.8: Unmigrated synthetic source gather from Marmousi model.
Figure 6.9: Same data as Figure 6.8, after prestack depth migration.
194 CHAPTER 6. APPENDIX A
Figure 6.10: Blackfoot stack after surface consistent Wiener deconvolution and timevariant spectral
whitening.
Figure 6.11: Blackfoot stack after Gabor deconvolution. Note improved resolution in time as com
pared to Figure 6.10.
195
Figure 6.12: Top: CDP stack from 3D volume, Middle: after 2D migration, Bottom: after full
3D migration. The 2D migrated version contains outofplane reﬂections, resulting in a poorer
image. (Brown, 1991).
196 CHAPTER 6. APPENDIX A
Figure 6.13: Typical data from Southern Alberta showing undeformed sedimentary basin strata.
(courtesy of Don Lawton.)
Figure 6.14: Comparison of depth migrated conventional and converted wave stacks from Blackfoot
3C2D, Southern Alberta (Hoﬀe and Lines, 1998).
197
Figure 6.15: Triangle zone example from Southern Alberta. Sediments near the surface in the middle
of the section have been pushed upwards above a back thrust, as a wedge of material was forced in
from the southwest. (courtesy of Don Lawton).
Figure 6.16: Another example of a triangle zone, Shaw Basing area (Yan and Lines, 2001).
198 CHAPTER 6. APPENDIX A
Figure 6.17: Unmigrated stack section showing a Permian carbonate reef in West Texas known as
the Horseshoe Atoll (courtesy of Larry Lines).
Figure 6.18: Hotchkiss structure, northern Alberta. This has been interpreted to be a (small)
complex impact crater (Mazur and Stewart, 1997).
199
Figure 6.19: Left: Western half (no vertical exaggeration; width ≈ 116 km) of migrated
and coherency ﬁltered land seismic, west of Great Slave Lake, N.W.T. Right: Migrated
and coherency ﬁltered marine seismic from Lake Huron, Ontario, plotted at the same scale.
(http:¸¸www.litho.ucalgary.ca¸atlas¸atlas.html).
200 CHAPTER 6. APPENDIX A
Figure 6.20: Unmigrated section from the Gulf of Mexico, with the top of a salt dome interpreted
in black (Lines, 1991).
Figure 6.21: Same data as Figure 6.20. The salt dome is much more interpretable on a depth
migrated section (Lines, 1991).
201
Figure 6.22: Deformation of marine sediments as a result of subduction of oceanic crust, west of
Vancouver Island, B.C. (courtesy Paciﬁc Geoscience Centre).
Figure 6.23: Oﬀshore data from the North Sea
with waterbottom and pegleg multiples (Lok
shtanov, 2002).
Figure 6.24: Same data as Figure 6.23 af
ter waveequation multiple suppression (Loksh
tanov, 2002).
202 CHAPTER 6. APPENDIX A
Figure 6.25: Portion of vertically exaggerated (1:30) strike line along the coast of Africa (courtesy
of Amoco).
Figure 6.26: Growth faults, oﬀshore New Zealand. Younger sediments continue to be deposited in
basins created as the fault blocks drop down to the left (courtesy of Don Lawton).
203
Figure 6.27: Ground penetrating radar (GPR) section in the William River Delta, Northern
Saskatchewan (Jol and Smith, 1991).
Figure 6.28: GPR section at a creosote contamination site on the Bow River, Calgary (Lawton and
Jol, 1994).
204 CHAPTER 6. APPENDIX A
Figure 6.29: Left: Borehole sonic and density logs. Middle left: synthetic PP gather (reﬂectivity
convolved with wavelet) showing eﬀect of Normal Moveout (NMO). Middle right: Same gather after
NMO removal. Right: Synthetic trace after stacking (courtesy of Don Lawton).
205
Figure 6.30: Left: CDP stack (same data as Figure 6.13). Middle: Synthetic seismogram and
reﬂectivity. Right: Sonic logs used to calculate reﬂectivity (courtesy of Don Lawton).
206 CHAPTER 6. APPENDIX A
Figure 6.31: Comparison of normal incidence and diﬀraction modeling for a deep syncline (focal
point below the surface, courtesy of Don Lawton).
207
Figure 6.32: Finite diﬀerence snapshot showing compressional and shear waves moving away from
a surface seismic source.
Figure 6.33: Finite diﬀerence snapshot showing compressional and shear waves moving away from
a source within a ﬂuidﬁlled borehole (Chabot et al., 2000).
208 CHAPTER 6. APPENDIX A
Figure 6.34: Marmousi model reﬂectivity. Synthetic shot gathers (eg. Figures 6.8 and 6.9) were
produced from this model.
Figure 6.35: Marmousi stack after prestack depth migration. The goal is to produce an image that
accurately represents the reﬂectivity shown in Figure 6.34.
209
Figure 6.36: Silicone putty and plasticine foldthrust model manufactured by CCORE, Memorial
University (Gallant et al., 2002).
Figure 6.37: Zerooﬀset ultrasonic reﬂection data acquired over model shown in Figure 6.36 (Gallant
et al., 2002).
Figure 6.38: Time slice from 3D ultrasonic reﬂection survey over a heavy oil recovery model, super
imposed on the physical model (Hall et al., 2001).
210 CHAPTER 6. APPENDIX A
Figure 6.39: Ultrasonic data acquired over a model of a step below anisotropic overburden with a
45 degree dip.
Figure 6.40: Figure 6.39 after isotropic depth migration. Note that the step is not positioned
correctly.
Figure 6.41: Figure 6.39 after anisotropic depth migration. The step is now positioned correctly.
Bibliography
Aki, K., and Richards, P. G., 1980, Quantitative Seismology: W.H. Freeman.
Ames, W. F., 1992, Numerical Methods for Partial Diﬀerential Equations: Academic Press.
Berkhout, A. J., 1985, Seismic Migration: Developments in solid earth geophysics:, volume 14
Elsevier.
Brown, A., 1991, Interpretation of threedimensional seismic data:, volume 42 of AAPG Memoir
AAPG, Tulsa, OK.
Chabot, L., Henley, D. C., and Brown, R. J., 2000, Singlewell imaging using the full waveform of
an acoustic sonic: CREWES Research Report, 12.
Chun, J. H., and Jacewitz, C. A., 1981, Fundamentals of frequency domain migration: Geophysics,
46, 717–733.
Claerbout, J. F., 1976, Fundamentals of Geophysical Data Processing: McGraw Hill.
Clayton, R., and Engquist, B., 1977, Absorbing boundary conditions for acoustic and elastic wave
equations: Bull. Seis. Soc. Am., 67, 1529–1540.
Cohen, L., 1995, Time Frequency Analysis: Prentice Hall.
Dix, C. H., 1955, Seismic velocities from surface measurements: Geophysics, 20, 68–86.
Docherty, P., 1991, A brief comparison of some Kirchhoﬀ integral formulas for migration and inver
sion: Geophysics, 56, 1164–1169.
Durran, D. R., 1999, Numerical Methods for Wave Equations in Geophysical Fluid Dynamics:
Springer.
Etter, D. E., 1996, Introduction to Matlab for Engineers and Scientists: PrenticeHall.
Futterman, W. I., 1962, Dispersive body waves: J. Geophys. Res., 73, 3917–3935.
Gallant, E. V., Bertram, M. B., and Stewart, R. R., 2002, Elasticwave seismic acquisition systems:
CREWES Research Report, 14.
Gazdag, J., 1978, Waveequation migration with the phaseshift method: Geophysics, 43, 1342–1351.
Gray, S. H., 1986, Eﬃcient traveltime calculations for Kirchhoﬀ migration: Geophysics, 51, 1685–
1688.
211
212 BIBLIOGRAPHY
Gray, S. H., 1997, Trueamplitude seismic migration: A comparison of three approaches: Geophysics,
62, 929–936.
Gustafson, K. E., 1987, Partial Diﬀerential Equations and Hilbert Space Methods: John Wiley and
Sons.
Hagedoorn, J. G., 1954, A process of seismic reﬂection interpretation: Geophysical Prospecting, 2,
85–127.
Hall, K. W., Gallant, E. V., McKellar, M., Ursenbach, C. P., and Stewart, R. R., 2001, Ultrasonic
imaging of a heavy oil recovery model: CREWES Research Report, 13.
Hanselman, D. C., and Littleﬁeld, B., 1998, Mastering MATLAB 5: A Comprehensive Tutorial and
Reference: Prentice Hall.
Higham, D. J., and Higham, N. J., 2000, MATLAB Guide: Society for Industrial and Applied
Mathematics.
Hoﬀe, B. H., and Lines, L. R., 1998, Depth imaging of elastic waveﬁelds  where P meets S: CREWES
Research Report, 10.
Jol, H. M., and Smith, D. G., 1991, Ground penetrating radar: a brief overview and case study:
CREWES Research Report, 3.
Karl, J. H., 1989, An Introduction to Digital Signal Processing: Academic Press, Inc.
Kjartansson, E., 1980, Constant Qwave propagation and theory: J. Geophys. Res., 84, 4737–4748.
Korner, T. W., 1988, Fourier Analysis: Cambridge University Press, Inc.
Lancaster, P., and Salkauskas, K., 1996, Transform Methods in Applied Mathematics: John Wiley
& Sons, Inc.
Lawton, D., and Jol, H., 1994, Ground penetrating radar investigation of the Canada creosote site,
Calgary: CSEG Recorder, 19, 13–18.
Lawton, D. C., Stewart, R. R., and Bland, H. C., 2002, Multicomponent seismic survey at Jump
ingpound, Alberta: CREWES Research Report, 14.
Liner, C. T., and Gobeli, R., 1996, Bin size and linear ·(.): Expanded abstracts 66th Annual Mtg.
Soc. Expl. Geophy.
Liner, C. T., and Gobeli, R., 1997, 3d seismic survey design and linear ·(.): Expanded abstracts
67th Annual Mtg. Soc. Expl. Geophy.
Lines, L. R., Slawinski, R., and Bording, R. P., 1999, A recipe for stability of ﬁnitediﬀerence
waveequation computations: Geophysics, 64, 967–969.
Lines, L., 1991, Applications of tomography to borehole and reﬂection seismology: The Leading
Edge, 7, 11–17.
Lokshtanov, D., 2002, Removal of water layer multiples and peglegs by waveequation approach:
CREWES Research Report, 14.
BIBLIOGRAPHY 213
LowenthalD., L. L. R. R., and Sherwood, J. W., 1976, The wave equation applied to migration:
Geophysical Prospecting, 24, 380–399.
Lynn, H. B., and Deregowski, S., 1981, Dip limitations on migrated sections as a function of line
length and recording time: Geophysics, 46, 1392–1397.
Mazur, M. J., and Stewart, R. R., 1997, The seismic expression and hydrocarbon potential of
meteorite impact craters: Current research: CREWES Research Report, 9.
Mitchell, A. R., and Griﬃths, D. F., 1980, The Finite Diﬀerence Method in Partial Diﬀerential
Equations: John Wiley and Sons.
Morse, P. M., and Feshbach, H., 1953, Methods of Theoretical Physics: McGrawHill.
Press, W., Teukolsky, S. A., Vetterling, W. T., and Flannery, B. P., 1992, Numerical Recipes in C:
The Art of Scientiﬁc Computing: Cambridge University Press.
Redfern, D., and Campbell, C., 1998, The Matlab 5 Handbook: SpringerVerlag.
Robinson, E. A., 1983, Migration of Geophysical Data: International Human Resources Development
Corp. (IHRDC).
Scales, J. A., 1995, Theory of Seismic Imaging: Springer.
Schneider, W. S., 1978, Integral formulation for migration in two or three dimensions: Geophysics,
43, 49–76.
Schuster, G. T., 1997, Green’s function for migration: Expanded Abstracts 67th Annual Mtg. Soc.
Expl. Geophy., pages 1754–1757.
Sheriﬀ, R. E., and Geldart, L. P., 1995, Exploration Seismology, Second Edition: Cambridge Uni
versity Press.
Simin, V., Harrison, M. P., and Lorentz, G. A., 1996, Processing the Blackfoot 3C3D seismic survey:
CREWES Research Report, 8.
Slotnick, M. M., 1959, Lessons in Seismic Computing: Society of Exploration Geophysicists.
Stein, E. M., 1993, Harmonic Analysis: realvariable methods, orthogonality, and oscillatory inte
grals: Princeton University Press, Inc.
Stolt, R. H., 1978, Migration by Fourier transform: Geophysics, 43, 23–48.
Taner, M. T., and Koehler, F., 1969, Velocity spectradigital computer derivation and applications
of velocity functions: Geophysics, 34, 859–881.
Taner, M. T., Koehler, F., and Sheriﬀ, R. E., 1979, Complex seismic trace analysis: Geophysics, 44,
1041–63.
Taylor, M. E., 1996, Partial Diﬀerential Equations (3 volumes): Springer.
Vermeer, G. J. O., 1990, Seismic Waveﬁeld Sampling: Society of Exploration Geophysicists.
Wiggins, J. W., 1984, Kirchhoﬀ integral extrapolation an migration of nonplanar data: Geophysics,
49, 1239–1248.
214 BIBLIOGRAPHY
Yan, L., and Lines, L., 2001, Seismic imaging and velocity analysis for an Alberta Foothills seismic
survey: Geophysics, 66, 721–732.
Zauderer, E., 1989, Partial Diﬀerential Equations of Applied Mathematics: John Wiley and Sons.
Index
afd explode , 144
afd shortrec , 145
afd vmodel , 145
balans , 73
clip , 10
convm , 73
convz , 73
csinci , 158
drawray , 99
drawvint , 86
drayvec , 110
event diph2 , 139
event diph , 139
event dip , 139
event hyp , 139
event pwlinh , 139
event spike , 139
eventraymig , 148
eventraymod , 149
fftrl , 73
fkmig , 155
fktran , 156
fortclip , 25
fromdb , 6
ginput , 17
ifktran , 157
ismin , 69
levrec , 68
line , 17
makesections , 142
makestdsynh , 142
makestdsyn , 142
nargin , 21
normraymig , 148
normray , 148
ormsby , 65
ornsby , 64
phsrot , 70
plotimage , 12, 16
plotseis , 11
pwlint , 87
randn , 71
rayfan a , 99
rayfan , 99
raytrace demo , 99, 104
rayvelmod , 110
reflec , 9, 71
ricker , 65
seisclrs , 13
shootraytosurf , 111, 149
shootrayvxz g , 111
shootrayvxz , 111, 148
shootray , 99
simplezoom , 10
slicemat , 23
sweep , 65
synsections , 139
tntamp , 68
todb , 6, 73
traceray pp , 99
traceray ps , 99
traceray , 99
vave2vint , 86
vint2t , 86
vint2vave , 86
vint2vrms , 86
vrms2vint , 86
wavemin , 5, 65
wavenorm , 66
wavevib , 65
wavez , 65, 69
which , 19
wtva , 9
afd reflec , 146
absorbing boundaries, 57
addition rule, 84
amplitude
215
216 INDEX
decay, 140
mapping
maximum scaling, 14
mean scaling, 14
spectrum, 38, 67–68
amplitude variation with oﬀset (AVO), 117
anelastic attenuation, 117
apparent depth, 131
apparent dip, 131
AVO, see amplitude variation with oﬀset
bandlimited inverse ﬁlter, 43
body wave region, 95
bulk modulus, 50
Cauchy boundary conditions, 151
Cauchy’s integral theorem, 44
causal signal, 43
centered diﬀerence, 176
clipping, 9–10
CMP, see common midpoint stack
compressional waves, see Pwaves
computation triangle, 61
constant Q theory, 47
convolution
1D, 30
2D, 132
averaging width, 34
continuous function, 30
deﬁnition of, 29
discrete, 31
nonstationary, 132
smoothing, 34
theorem, 39
CREWES, 3, 6
debugger (Matlab)
commands
dbcont , 22
dbdown , 22
dbquit , 22
dbstep , 22
dbstop , 22
dbup , 22
deconvolution imaging condition, 175
diﬀraction chart, 135
Dirac’s delta function, 36
dispersion relation, 154, 178
Dix equation, 85
downward continuation, 137, 160
dynamic range, 6, 8
edge eﬀects, 57
eikonal equation, 107
emergence angle, 88, 94
ERM, see exploding reﬂector model
ERM migration equation, 174
errors
assignment statement, 22
declaring variables, 22
incorrect matrix sizes, 21
logical, 22
syntax, 21
Euler’s theorem, 36
evanescent region, 95, 154
exploding reﬂector model, 136–137, 144, 147,
164, 185
fk analysis, 120–122
Fermat’s principle, 91
ﬁlters
bandlimited inverse, 43
causality, 30
impulse response, 29
inverse, 43
linearity, 30
minimumphase, 43–45
stationarity, 30
stationary linear ﬁlter, 29
ﬁnite diﬀerence
absorbing boundaries, 57
approximation, 175–176
edge eﬀects, 57
grid dispersion, 56
migration, 177
migration algorithms, 180
modelling, 52, 145
sampling, 53
stability requirement, 53
temporal sample rate, 55
ﬁrst break time, 7
forward modelling, 115
Fourier
amplitude spectrum, 38
causal signal, 43
covolution theorem, 39
extrapolation operator, 160
INDEX 217
ﬁlters
causality, 30
impulse response, 29
linearity, 30
stationarity, 30
stationary linear ﬁlter, 29
Fourier transform
2D, 89, 150
deﬁnition of, 35
forward, 37
inverse, 37, 119, 150
multidimensional, 89
step function, 42
symmetry, 39, 41
kernel, 37
orthogonality relation, 36
phase shift theorem, 40
phase spectrum, 38
plane waves, 89
spectrum
general expression, 38
frequency
angular, 37
cyclical, 37
temporal, 120
Fresnel zone, 122–123
functions
even, 38
odd, 38
Gauss’ theorem, 168
geometrical spreading equation, 107
global variables
deﬁnition, 14
MYPATH, 19
NOSIG, 12
PICK, 16
PICKCOLOR, 17
gray level scheme, 13
Green’s theorem, 168
grid dispersion, 53, 56
Heaviside step function, 42
Helmhotz equation, 170
Hilbert transforms, 43
Hooke’s law (for ﬂuid), 50
horizontal slowness, 89, 125
Huygen’s principle, 133
hyperbolic
diﬀraction, 140
partial diﬀerential equation, 50
summation, 141
image displays, 12
imaging, see migration
imaging condition, 137
impulse response, 29
input variables, 20
inverse modelling, 115
Kirchhoﬀ
diﬀraction integral, 172
migration, 168
Levinson recursion, 67
local variables, 14
Matlab
function prototypes, 21
functions, 19
input variable, 20
script, 18
vector addressing, 24
Matlabs mathematical functions, 26
matrix
multiplication, 34
trajectory, 22
migrated time display, 166
migration
3D, 123
deﬁnition of, 115
depth migration, 116, 128–129, 166
direct migration, 138
downward continuation, 137
fk, 150, 155, 180–181
ﬁnite diﬀerence, 177, 180
Kirchhoﬀ, 168
phase shift, 159, 165–167
recursive migration, 138
time migration, 116, 128–129, 166
wavefront migration, 132
migrator’s equation, 131, 154
minimumphase
ﬁlters, 43–45
inverse, 68
spectrum, 44
wavelet, 67, 68
218 INDEX
multiples, 60
nonstationary, 64
surface related, 62
Newton’s 2nd law, 50
normalincidence raytrace migration, 126
Nyquist frequency, 66
OBC recording, 63
Ornsby wavelet, 66–67
Pwaves, 47, 77, 92
reﬂection coeﬃcient, 116
parabolic wave equation, 178
phase
phase shift theorem, 40, 163
spectrum, 38
pressure seismogram, 60
Q loss, see anelastic attenuation
randomness, 71
ray code, 104
ray parameter, 89, 92
raypath, 95
isotropic media, 107
normalincidence, 118
raypath equation, 107
turning point, 96
raytracing
homogenous medium, 92
inhomogeneous media, 105
normal, 148
twopointraytracing, 98
reference velocity, 159
reﬂection (angle of), 91
reﬂection coeﬃcient, 58
of Pwaves, 116
reﬂectivity
3D, 116
autocorrelation of, 71
bandlimitied, 116
normal incidence, 116
random, 70
spectral color, 71
white, 71
reﬂector dip, 125
refraction (angle of), 91
resolution, 120
Ricker wavelet, 66–67
RungeKutta method, 109
Swaves, 47, 92
sample rate, 119–120
sampling theorem, 124
scattering angle, 133, 181, 184
scattering event, 61
scatterpoint, 173
Schwartz’s Inequality, 82
seismic data
drawing on top of, 17
prestack, 118, 122
seismic picking facility, 16
seismic processing
stretching, 48
seismic trace, 5
seismogram
cross correlation, 164
displacement, 62
extrapolated, 137
shear waves, see Swaves
signaltonoise ratio, 73, 122
Snell’s law, 91–92
source ghost, 46
source waveform, 60
spatial aliasing, 184
spectral color, 71
spherical divergence (spreading), 47
static shift operator, 162
stationary traveltime, 91
Stolt stretch, 159
stress
in relation to strain, 50
synthetic seismograms
1D, 57
codes, 70
random reﬂectivity, 70
with multiples, 75
in MATLAB, 64
multiple layer, 61
multiples, 60
primaries only, 59
random noise, 73
source waveform, 60
Taylor series, 175
timedepth conversion, 124
INDEX 219
timedepth curve, 78
timedip, 89
timestepping simulation, 53
Toeplitz matrices, 34
trace envelope, 6
trace excursion, 11
translation invariance, 29
transmission coeﬃcient, 58
transmission loss, 60
traveltime, 78
curves, 133–134, 167
general expression, 93
unit causal function, 42
universal velocity function, 95
vector programming, 25
velocity
apparent, 89, 91
average, 79
instantaneous, 77, 124
traveltime, 78
interval, 82, 85
inversion, 76
mean, 80
physical, 76
real, 89
rootmeansquare (rms), 81
stacking, 85
timedip, 89
universal velocity function, 95
velocity measures, 76
vertical traveltime, 78
volume dilatation, 50
wave
crest, 90
direction of propagation, 90
displacement, 63
in an inhomogeneous ﬂuid, 50–51
incident, 61
longitudinal, 49
of displacement, 61
periodic plane wave, 91
pressure, 63
scattering, 61
transverse, 49
velocity, 49, 120
wave equations
1D scalar, 49
accoustic, 52
eikonal equation, 107
for pressure, 51
geometrical spreading, 107
hyperbolic partial diﬀerential equation, 48
parabolic, 178
scalar, 47
variablevelocity scalar, 106
waveﬁeld
conditions, 57
extrapolation, 163–165
snapshot, 52
timestepping, 52
wavefront propagation, 91–92
wavelength
apparent, 90
minimum, 53
wavelet
amplitude spectrum, 67
analysis, 57
code, 64
minimumphase, 67
normalization, 66
Ornsby, 66–67
Ricker, 66–67
temporal length, 66
wavenumber, 119–121
wavenumber vector, 90
white reﬂectivity, 71
wiggle trace display, 6
WTVA, 9–12
ztransform, 32
zerooﬀset diﬀraction hyperbola, 174
zerooﬀset section, 117, 131
Zoeppritz equations, 117
ZOS, see zerooﬀset section
Preface
The most important thing to know about this draft is that it is unﬁnished. This means that it must be expected to have rough passages, incomplete sections, missing references, and references to nonexistent material. Despite these shortcomings, I hope this document will be welcomed for its description of the CREWES MATLAB software and its discussion of velocity, raytracing and migration algorithms. I only ask that the reader be tolerant of the rough state of these notes. Suggestions for the improvement of the present material or for the inclusion of other subjects are most welcome. Exploration seismology is a complex technology that blends advanced physics, mathematics and computation. Often, the computational aspect is neglected in teaching because, traditionally, seismic processing software is part of an expensive and complex system. In contrast, this book is structured around a set of computer algorithms that run eﬀectively on a small personal computer. These algorithms are written in MATLAB code and so the reader should ﬁnd access to a MATLAB installation. This is not the roadblock that it might seem because MATLAB is rapidly gaining popularity and the student version costs little more than a typical textbook. The algorithms are grouped into a small number of toolboxes that eﬀectively extend the functionality of MATLAB. This allows the student to experiment with the algorithms as part of the process of study. For those who only wish to gain a conceptual overview of the subject, this may not be an advantage and they should probably seek a more appropriate book. On the other hand, those who wish to master the subject and perhaps extend it through the development of new methods, are my intended audience. The study of these algorithms, including running them on actual data, greatly enriches learning. The writing of this book has been on my mind for many years though it has only become physical relatively recently. The material is the accumulation of many years of experience in both the hydrocarbon exploration industry and the academic world. The subject matter encompasses the breadth of exploration seismology but, in detail, reﬂects my personal biases. In this preliminary edition, the subject matter includes raytracing, elementary migration, some aspects of waveequation modelling, and velocity manipulation. Eventually, it will also include theoretical seismograms, wavelets, amplitude adjustment, deconvolution, ﬁltering (1D and 2D), statics adjustment, normal moveout removal, stacking and more. Most of the codes for these purposes already exists and have been used in research and teaching at the University of Calgary since 1995. During the past year, Larry Lines and Sven Treitel have been a constant source of encouragement and assistance. Pat Daley’s guidance with the raytracing algorithms has been most helpful. Pat, Larry, Sven, Dave Henley, and Peter Manning have graciously served as editors and test readers. Many students and staﬀ with CREWES have stresstested the MATLAB codes. Henry Bland’s technical computer support has been essential. Rob Stewart and Don Lawton have been there with moral support on many occasions. I thank you for taking the time to examine this document and I hope that you ﬁnd it rewarding. ii
Contents
Preface 1 Introduction 1.1 Scope and Prerequisites . . . . . . . . . . . . . . . . . 1.1.1 Why MATLAB? . . . . . . . . . . . . . . . . . 1.1.2 Legal matters . . . . . . . . . . . . . . . . . . . 1.2 MATLAB conventions used in this book . . . . . . . . 1.3 Dynamic range and seismic data display . . . . . . . . 1.3.1 Single trace plotting and dynamic range . . . . 1.3.2 Multichannel seismic display . . . . . . . . . . 1.3.3 The plotimage picking facility . . . . . . . . . 1.3.4 Drawing on top of seismic data . . . . . . . . . 1.4 Programming tools . . . . . . . . . . . . . . . . . . . . 1.4.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . 1.4.2 Functions . . . . . . . . . . . . . . . . . . . . . The structure of a function . . . . . . . . . . . 1.4.3 Coping with errors and the MATLAB debugger 1.5 Programming for eﬃciency . . . . . . . . . . . . . . . 1.5.1 Vector addressing . . . . . . . . . . . . . . . . . 1.5.2 Vector programming . . . . . . . . . . . . . . . 1.5.3 The COLON symbol in MATLAB . . . . . . . 1.5.4 Special values: NaN, Inf, and eps . . . . . . . . 1.6 Chapter summary . . . . . . . . . . . . . . . . . . . . ii 1 1 2 3 3 6 6 11 16 17 18 18 19 19 21 24 24 25 26 27 28 29 29 29 32 33 34 35 35 37 38 40 41
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
2 Signal Theory 2.1 Convolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Convolution as ﬁltering . . . . . . . . . . . . . . . . . . . . 2.1.2 Convolution by polynomial multiplication  the Z transform 2.1.3 Convolution as a matrix multiplication . . . . . . . . . . . . 2.1.4 Convolution as a weighted average . . . . . . . . . . . . . . 2.2 The Fourier Transform . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 The temporal Fourier transform and its inverse . . . . . . . 2.2.2 Real and imaginary spectra, even and odd functions . . . . 2.2.3 The convolution theorem and the diﬀerentiation theorem . 2.2.4 The phaseshift theorem . . . . . . . . . . . . . . . . . . . . 2.2.5 The spectrum of a realvalued signal . . . . . . . . . . . . . iii
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
iv 2.2.6 2.2.7
CONTENTS The spectrum of a causal signal . . . . . . . . . . . . . . . . . . . . . . . . . . Minimum phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 43 46 46 47 48 50 52 57 57 59 60 64 64 70 70 75
3 Wave propagation 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 The wave equation derived from physics . . . . . . . . . . . 3.2.1 A vibrating string . . . . . . . . . . . . . . . . . . . 3.2.2 An inhomogeneous ﬂuid . . . . . . . . . . . . . . . . 3.3 Finite diﬀerence modelling with the acoustic wave equation 3.4 The onedimensional synthetic seismogram . . . . . . . . . . 3.4.1 Normal incidence reﬂection coeﬃcients . . . . . . . . 3.4.2 A ”primariesonly” impulse response . . . . . . . . . 3.4.3 Inclusion of multiples . . . . . . . . . . . . . . . . . 3.5 MATLAB tools for 1D synthetic seismograms . . . . . . . 3.5.1 Wavelet utilities . . . . . . . . . . . . . . . . . . . . 3.5.2 Seismograms . . . . . . . . . . . . . . . . . . . . . . Convolutional seismograms with random reﬂectivity Synthetic seismograms with multiples . . . . . . . . 4 Velocity 4.1 Instantaneous velocity: vins or just v . . . . . . . . 4.2 Vertical traveltime: τ . . . . . . . . . . . . . . . . . 4.3 vins as a function of vertical traveltime: vins (τ ) . . 4.4 Average velocity: vave . . . . . . . . . . . . . . . . 4.5 Mean velocity: vmean . . . . . . . . . . . . . . . . . 4.6 RMS velocity: vrms . . . . . . . . . . . . . . . . . . 4.7 Interval velocity: vint . . . . . . . . . . . . . . . . . 4.8 MATLAB velocity tools . . . . . . . . . . . . . . . 4.9 Apparent velocity: vx , vy , vz . . . . . . . . . . . . . 4.10 Snell’s Law . . . . . . . . . . . . . . . . . . . . . . 4.11 Raytracing in a v(z) medium . . . . . . . . . . . . 4.11.1 Measurement of the ray parameter . . . . . 4.11.2 Raypaths when v = v0 + cz . . . . . . . . . 4.11.3 MATLAB tools for general v(z) raytracing 4.12 Raytracing for inhomogeneous media . . . . . . . . 4.12.1 The ray equation . . . . . . . . . . . . . . . 4.12.2 A MATLAB raytracer for v(x, z) . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
76 . 77 . 78 . 78 . 79 . 80 . 81 . 82 . 85 . 88 . 91 . 92 . 94 . 95 . 98 . 105 . 106 . 109 112 113 113 114 115 119 121 121 121 124
5 Elementary Migration Methods 5.1 Stacked data . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Bandlimited reﬂectivity . . . . . . . . . . . . . . . . 5.1.2 The zero oﬀset section . . . . . . . . . . . . . . . . . 5.1.3 The spectral content of the stack . . . . . . . . . . . 5.1.4 The Fresnel zone . . . . . . . . . . . . . . . . . . . . 5.2 Fundamental migration concepts . . . . . . . . . . . . . . . 5.2.1 One dimensional timedepth conversions . . . . . . . 5.2.2 Raytrace migration of normalincidence seismograms 5.2.3 Time and depth migration via raytracing . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . .1 Finite diﬀerence extrapolation by Taylor series . . .6. . . . . . . . .4. . . . . . . . . . . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. . . .3. . 5. . . . . . . . .5. . 5. . Kirchhoﬀ methods . . . . . . . . . . . . . .5 Huygens’ principle and point diﬀractors . . .4. . .6 5. . . . . 5. . . . . . . . . . . 5. . . . . . . . .3 Finite diﬀerence migration . . . . . . . . 5. . Fourier methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . .1 Gauss’ theorem and Green’s identities . . . . . . . . . . . . . . . .5 5. . . . .1 Modelling by hyperbolic superposition . . . . .7. . . . . . . . . . . . . . . . . . . . Practical considerations of ﬁnite datasets . . . . . . . . . . . . . . . . .2. . . . v 126 129 133 135 136 141 145 147 147 152 156 160 162 165 165 167 169 172 172 173 174 177 180 184 189 214 5. . .3 f k waveﬁeld extrapolation . . . . Finite diﬀerence methods . . MATLAB facilities for simple modelling and raytrace migration 5. . . . . . . . . . .3. .2 Examples .4. . . .6. . . . . . . . . . . . . . . . . . . . 5. . 5. . . . . . . . . . .4 5. . . . . . . . . . 5. . . . . . .5. . . . . . . . . . . . . . . . .2 Other ﬁnite diﬀerence operators . . . 5. . . . . . . . . . . . . . . . . . . . . . . . . . .3 5. . . .5. . . .4. . . . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . . . . . .1 f k migration . . . . . . . . . . .7. . . . 5. . . . . . . . . . . 5. . .4 Elementary wavefront techniques . . . . . . . . . . . . . . .1 Finite dataset theory . . . . . .2. 5. . . . . . . . . . . 5. 5. . . . . . . . . . . . . .3 The Kirchhoﬀ migration integral . . . . . . . . .2 Finite diﬀerence modelling for exploding reﬂectors . . . . . . . . .2 A MATLAB implementation of f k migration . . . . .3 Migration and modelling with normal raytracing . . . . . . . . . .6 The exploding reﬂector model . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . . . .CONTENTS 5. . . . . . . . . . . . . . . . . . . . .2 The Kirchhoﬀ diﬀraction integral . . . . . . . . . . . . . . . . . . . . . . . Waveﬁeld extrapolation in the spacetime domain . . . . . . . . . . . .4 Time and depth migration by phase shift . . . . .7 6 Appendix A Index . . . .
vi CONTENTS .
mathematics. These diﬃculties have been a signiﬁcant stimulus to the development of computing technology. and computation. This requires the reader to have a background in these subjects at approximately the level of an advanced undergraduate or beginning graduate student in geophysics or physics. Seismic datasets are often very large and have historically strained computer storage capacities. along with the complexity of the underlying physics. More often than not. will be found throughout this book. but a separate reference work on MATLAB is highly recommended. It is quite feasible for the reader to plan to learn MATLAB concurrently with working through this book. they tend towards the latter. it illustrates a variety of advanced techniques designed to maximize the eﬃciency of working with large datasets.1 Scope and Prerequisites This is a book about a complex and diverse subject: the numerical algorithms used to process exploration seismic data to produce images of the earth’s crust. much larger datasets are routinely migrated by companies and individuals around the world. numerical analysis. coded in MATLAB. a 50. Hanselman and Littleﬁeld (1998). including working the computer exercises. The methods frequently use advanced concepts from physics. a 3D migration1 was only possible in the advanced computing centers of the largest oil companies. independent guides in print such as Etter (1996). often on computers costing less than $5000. requires access to a signiﬁcant machine (at least a latemodel PC or Macintosh) with MATLAB installed and having more than 64 mb of RAM and 10 gb of disk. As 1 Migration refers to the fundamental step in creating an earth image from scattered data. Though this book does not teach MATLAB at an introductory level. Though numerical algorithms. In addition to the reference works published by The MathWorks (the makers of MATLAB).000 trace 3D dataset would take weeks to migrate on a dedicated. this is not a book primarily about MATLAB. multimillion dollar. This need not include experience in exploration seismology but such would be helpful. At that time. In 1980. If you already own a MATLAB reference. This. The techniques involved range from simple and graphical to complex and numerical. Today. computer system. the student edition of MATLAB is a bargain and comes with a very good reference manual. The eﬀective use of this book. Redfern and Campbell (1998) and the very recent Higham and Higham (2000). then stick with it until it proves inadequate.Chapter 1 Introduction 1. In addition. there are many excellent. The website of The MathWorks is worth a visit because it contains an extensive database of books about MATLAB. 1 . has also strongly challenged computation throughput.
Hopefully.2 CHAPTER 1.1 Why MATLAB? A few remarks are appropriate concerning the choice of the MATLAB language as a vehicle for presenting numerical algorithms. and dynamic memory allocation. This is partly because of the vector language but also because most of MATLAB’s number crunching actually happens in compiled library routines written in C. neither seems to oﬀer as complete a package as does MATLAB. column vector. 1. interactive environment. Why not choose a more traditional language like C or Fortran. The appearance of MATLAB changed the face of scientiﬁc computing for many practitioners. it is actually easier to learn the vector approach that does not require so many explicit loops. Since then. large tool set. Fortran lacked some of C’s advantages such as structures. These are useful practical advantages especially when working with large datasets. wellwritten MATLAB code can approach the eﬃciency of C and Fortran.m A(i. INTRODUCTION with many MATLAB applications. For example. C and Fortran have evolved as well. . and strict runtime error checking lead to very rapid prototyping of new algorithms.1. The builtin graphics. It is often argued that C and Fortran are more eﬃcient than MATLAB and therefore more suitable for computationally intensive tasks. is much more transparent than something like do i=1. its lack of a builtin facility for complex numbers was a considerable drawback. through its rough implementation and testing. this author included. from the genesis of the idea. For someone wellversed in Fortran. The vector syntax of MATLAB once mastered. Though C was also a possibility. and systems of linear equations will be familiar. the inclusion of a graphics facility in the language itself is a major boon. it helps greatly if the reader has had some experience with linear algebra. On the other hand.i) enddo enddo Also. leads to more concise code than most other languages. Even in the more narrow view. and builtin graphics. the concepts of matrix. and a builtin interactive debugger. MATLAB is much more eﬃcient for this entire process. MATLAB evolved from the Linpack package that was familiar to Fortran programmers as a robust collection of tools for linear algebra. C has led to C++ and Fortran to Fortran90. objectoriented extensions. but it is well worth the eﬀort.n do j=1. this view misses the big picture. MATLAB also introduced a new vectororiented programming language.j)=B(j. It means that MATLAB programs that use graphics are standard throughout the world and run the same on all supported platforms. an interactive environment. both commercial and shareware. for the beginner. However. Arguably. Though both of these languages have their adherents. to its ﬁnal polished form. and prior to that. row vector. it can be diﬃcult to unlearn this habit. Fortran was the language of choice for scientiﬁc computations. MATLAB has evolved to have a large array of numerical tools. Setting one matrix equal to the transpose of another through a statement like A=B’. It also leads to the ability to graphically display data arrays at a breakpoint in the debugger. pointers. These features oﬀered suﬃcient advantages that users found their productivity was signiﬁcantly increased over the more traditional environments. or an object oriented language like C++ or Java? MATLAB was not available until the latter part of the 1980’s. However. Of course. excellent 2D and 3D graphics. What really matters is the eﬃciency of the entire scientiﬁc process.
but any use of it on company time requires a license. However. In this sense. 1. Also. times have changed and computers are relatively plentiful. It makes Figure 1. Moreover.1.t). powerful. A function name presented like plot refers to a MATLAB function supplied by The MathWorks as part of the standard MATLAB package. most of these functions will not be examined in any detail.2). MATLAB CONVENTIONS USED IN THIS BOOK 3 Traditional languages like C and Fortran originated in an era when computers were roomsized behemoths and resources were scarce.t]=wavemin(. Spending an extra $100 to buy more RAM may be more sensible than developing a complex data handling scheme to ﬁt a problem into less space.1. there are always people who see these choices diﬀerently. you are agreeing to these terms. However. Those in disagreement with the reasons cited here for MATLAB can perhaps take some comfort in the fact that MATLAB syntax is fairly similar to C or Fortran and translation is not diﬃcult.002. Of course. and cheap. MATLAB code will be presented in small numbered packages titled Code Snippets. then you must purchase a license. If you are employed by a commercial company. It is hoped that this book will provide the foundation necessary to enable the user to use and understand all of these commands at whatever level necessary. 1. Explicitly.1. If your company is a corporate sponsor of CREWES (The Consortium for Research in Elastic Wave Exploration Seismology at the University of Calgary) then you automatically have a license. By using the code. The MathWorks markets a MATLAB ”compiler” that emits C code that can be run through a C compiler. The essence of the contract is that you are free to use this code for nonproﬁt education or research but otherwise must purchase a commercial license from the author. Their cryptic syntax leads to eﬃciencies in memory allocation and computation speed that were essential at the time. the name NumMethToolbox refers to the entire collection of software provided in this book. Under no circumstances may you resell this code or any part of it. then you may use this code on your own time for selfeducation.2. Please take time to read it at least once. all have full online documentation. then don’t worry just have fun. Since this is not a book about MATLAB. An example is the code required to convert an amplitude spectrum from linear to decibel scale: Code Snippet 1..2.20. As a result.2 MATLAB conventions used in this book There are literally hundreds of MATLAB functions that accompany this book (and hundreds more that come with MATLAB). A function name presented like dbspec refers to a function provided with this book. It now makes sense to shift more of the burden to the computer to free the human to work at a higher level. MATLAB is a higherlevel language that frees the programmer from technical details to allow time to concentrate on the real problem. 1 2 [wavem. This code computes a wavelet and its amplitude spectrum on both linear and decibel scales.1. If you work for a commercial company and wish to use this code in any work that has the potential of proﬁt. if you are a student at a University (or other school) or work for a University or other nonproﬁt organization. these languages are oriented towards simplifying the task of the computer at the expense of the human programmer. . [Wavem.2 Legal matters It will not take long to discover that the MATLAB source code ﬁles supplied with this book all have a legal contract within them. Typographic style variations are employed here to convey additional information about MATLAB functions. and their code is liberally sprinkled with comments.f]=fftrl(wavem.
06 0.14 0.plot(f.16 0.1. but the remainder are left for the reader to explore using MATLAB ’s interactive help facility.plot(f. (1.ylabel(’db down’) End Code The actual MATLAB code is displayed in an upright typewriter font while introductory remarks are emphasized like this.plot(t.2).1). The Code Snippet does not employ typographic variations to indicate which functions are contained in the NumMethToolbox as is done in the text proper.2 0.002 seconds.xlabel(’time (sec)’) subplot(3.1 time (sec) 0.abs(Amp)).1 wavemin creates a minimum phase wavelet sampled at .05 0 −0. Those germane to the current topic are discussed. with a dominant frequency of 20 Hz. “help ﬀtrl” at the MATLAB prompt.1.12 0.ylabel(’linear scale’) subplot(3.xlabel(’Hz’).1.3). Finally. dbAmp=20*log10(Amp/max(Amp)). subplot(3.02 0.5 0 0 dd down −20 −40 −60 0 50 100 Hz 150 200 250 0 50 100 Hz 150 200 250 Figure 1. . the amplitude spectrum is converted to decibels (db) using the formula Ampdecibels (f ) = 20 log Amp(f ) max(Amp(f )) . for example. type.05 −0. It has proven impractical to discuss all of the input parameters for all of the programs shown in Code Snippets. and a length of .04 0.4 CHAPTER 1.1: A minimum phase wavelet (top).18 0.1 0.xlabel(’Hz’).1 1 linear scale 0 0. Then fftrl computes the Fourier spectrum of the wavelet and abs constructs the amplitude spectrum from the complex Fourier spectrum.dbAmp).wavem).08 0.1) To ﬁnd out more about any of these functions and their inputs and outputs. and its amplitude spectrum plotted with a decibel scale (bottom). 3 4 5 6 7 Amp=abs(Wavem). INTRODUCTION 0. For example. its amplitude spectrum plotted on a linear scale (middle).2 seconds. in Code Snippet 1.
As mentioned previously. win=[linspace(0.. (One Hz is one cycle per second). Of course. where each trace occupies one column of a matrix.20.w). the reader is always free to examine the entire codes at leisure. For a multicomponent geophone. suppose a seismic trace s is to be windowed to emphasize its behavior in one zone and deemphasize it elsewhere. .wavem). two vectors will be used to describe a trace. The .length(s)n2)].n2) linspace(1.. This allows an easy transition to 2D trace gathers.2). and so each row is a time slice. there are often many lines of code that check input parameters and assign defaults.*win. The simplest way to do this is to create a window vector win that is the same length as s and use MATLAB’s . has a frequency coordinate vector f.*win(:). Seismic traces2 are discrete time series but the textbook convention of assuming a sample interval of unity in arbitrary units is not appropriate for practical problems. Seismic traces will always be represented by column vectors whether in the time or Fourier domains. Each column is a single trace.0. t.2. These tasks have nothing to do with numerical algorithms and so will not be presented or discussed. and a space coordinate vector. On line 6 ==> swin=s. This column vector preference for signals can lead to a class of simple MATLAB errors for the unwary user.. two dimensional seismic data gathers will be stored in ordinary matrices. For example. %make a synthetic reflectivity [w. which exploits the MATLAB feature that a(:) is reorganized into a column vector (see page 26 for a discussion) regardless of the actual size of a . For example.1. 2 A seismic trace is the recording of a single component geophone or hydrophone. This is because the code listings of these functions can span many pages and contain much material that is outside the scope of this book. such as source records and stacked sections.* operator requires both operands to be have exactly the same geometry. Similarly.t]=reflec(1.1 is created by simply cross plotting these two vectors: plot(t. Rarely will the entire code from a function such as wavemin or reflec be presented.2.002.002. it is the recording of one component. Thus wavemin returns two vectors (that they are vectors is not obvious from the Code Snippet) with wavem being the wavelet amplitudes and t being the time coordinate vector for wavem. The simplest ﬁx is to write swin=s.* Matrix dimensions must agree.*win.1. Milliseconds or radians/second speciﬁcations will never occur in code though both cyclical frequency f and angular frequency ω may appear in formulae (ω = 2πf ). Temporal values must always be speciﬁed in seconds and will be returned in seconds and frequency values must always be in Hz.* (dotstar) operator to multiply each sample on the trace by the corresponding sample of the window. The error occurs because the linspace function generates row vectors and so win is of size 1x501 while s is 501x1. Instead. MATLAB CONVENTIONS USED IN THIS BOOK 5 This example illustrates several additional conventions. one to give its amplitude and the other to give the temporal coordinates for the ﬁrst. The temptation is to write a code something like this: Code Snippet 1. A complete speciﬁcation of such a gather requires both a time coordinate vector. % make a synthetic seismic trace n2=round(length(s)/2).2.2). Thus the upper part of Figure 1. the Fourier spectrum. Wavem. % apply the window to the trace End Code MATLAB’s response to this code is the error message: ??? Error using ==> . x. % a triangular window swin=s. %make a wavelet s=convm(r. 1 2 3 4 5 6 [r.tw]=wavemin(. This code creates a synthetic seismogram using the convolutional model but then generates an error while trying to apply a (triangular) window.
called tracefar. which refers to the number of signiﬁcant digits used to represent a ﬂoating point number. Figure 1. In speaking of this. and then takes the absolute value.1) for both real and complex signals. 4 CREWES is an acronym for Consortium for Research in Elastic Wave Exploration Seismology at the University of Calgary. . the maximum amplitude for the decibel scale is the maximum absolute value of the signal. analytic trace ((Taner et al. The lower trace. 1. (In the latter case. tracefar would appear as a ﬂat horizontal line next to tracenear. an 11 bit mantissa. A fourbit gain word.1 Single trace plotting and dynamic range Figure 1. If they were plotted on the same axes. an enormous spread of possible values.13. For example. this may also be speciﬁed as the second input to todb .) The dynamite explosion was produced with 4 kg of explosives placed at 18 m depth. INTRODUCTION 1.6 CHAPTER 1. todb returns a complex signal whose real part is the amplitude in decibels and whose imaginary part is the phase. 3 Previous systems used a 16 bit word and variable gain. Function todb implements equation (1. 1979) and (Cohen. Such an explosive charge√ about 2 m long so the distance from the top of the charge is to the closest geophone was about 162 + 102 ≈ 19 m while to the farthest geophone was about √ 162 + 10002 ≈ 1000 m. current digital recording systems use ﬁxed instrument gain and represent amplitudes as a 24 bit integer computer word3 . (Both traces come from the shot record shown in Figures 1. was similar except that it was recorded only 10 m from the shot. The upper trace. the term dynamic range is used which refers to a span of real numbers. Thus the precision.) By default.3. steadily declines from the largest to smallest number in the dynamic range.12 and 1. called tracenear. the most important being the ambient noise levels at the recording site and the instrument gain settings. but. The range of numerical voltages that a seismic recording system can faithfully handle is called its dynamic range.. In a ﬁxedgain system. Function fromdb reconstructs the original signal given the output of todb . and a sign bit determined the recorded value. Using the deﬁnition of a decibel given in equation (1.1). A very strong signal should saturate 2223 bits while a weak signal may only eﬀect the lowest several bits. This type of plot is called a wiggle trace display. This usually means that some clipping will occur on events nearest the seismic source. A trace envelope is a mathematical estimate of a bounding curve for the signal (this will be investigated more fully later in this book) and is computed using hilbert.3 (also produced with Code Snippet 1.1) shows a more deﬁnitive comparison of the amplitudes of the two traces. the instrument gain settings are determined to minimize clipping by the analogtodigital converter while still preserving the smallest possible signal amplitudes. This 132db range is usually never fully realized when recording signals for a variety of reasons. Here the trace envelopes are compared using a decibel scale.3. 1995)). The conversion to decibels is done with the convenience function todb (for which there is an inverse fromdb ). The vertical axes for the two traces indicate the very large amplitude diﬀerence between them. A single seismic record can have a tremendous amplitude range.3 Dynamic range and seismic data display Seismic data tends to be a challenge to computer graphics as well as to computer capacity.3.1 and shows two real seismic traces recorded in 1997 by CREWES 4 .6 . The ﬁrst bit is used to record sign while the last bit tends to ﬂuctuate randomly so eﬀectively 22 bits are available.2 was produced with Code Snippet 1. this corresponds to about 132db. This means that the amplitude range can be as large as 222 ≈ 106. was recorded on the vertical component of a three component geophone placed about 1000 m from the surface location of a dynamite shot. that computes the complex.
max(envnear)).mat subplot(2.3. title(’10 m offset’). (Bottom) A similar trace recorded only 10 m from the same shot.02 seconds.1). This code loads near and far oﬀset test traces. title(’1000 m offset’). See Code Snippet 1. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 7 1000 m offset 0.02 0 0.01 −0.[envdbfar envdbnear]. %decibel conversion figure plot(t.tracefar).02 0. For tracefar this is about .xlabel(’seconds’) envfar = abs(hilbert(tracefar)).plot(t.xlabel(’seconds’).3.) Alternatively.5 3 1 0. %compute Hilbert envelope envdbfar=todb(envfar. load testtrace.plot(t. 1 2 3 4 5 6 7 8 9 10 11 12 clear. Code Snippet 1. %compute Hilbert envelope envnear = abs(hilbert(tracenear)).ylabel(’decibels’).3. energy before this time cannot have originated from the source detonation and is usually taken as .1 The close proximity of tracenear to a large explosion produces a very strong ﬁrst arrival while later information (at 3 seconds) has decayed by ∼72 decibels.’b’).01 0 −0.1.2: (Top) A real seismic trace recorded about 1000 m from a dynamite shot.1. %decibel conversion envdbnear=todb(envnear).3.5 1 1. On each trace. Thus 72 db represents about 72/6 ∼ 12 doublings or a factor of 212 = 4096.tracenear). (To gain familiarity with decibel scales.5 0 −0.380 seconds while for tracenear it is about .1.5 seconds 2 2.5 3 Figure 1.axis([0 3 140 0]) End Code The ﬁrst break time is the best estimate of the arrival time of the ﬁrst seismic energy. and produces Figures 1. grid.5 −1 0 0.7 ∼ 100) weaker than tracenear.5 1 1. tracefar shows peak amplitudes that are 40db (a factor of 26.5 seconds 10 m offset 2 2.1.xlabel(’seconds’) subplot(2. computes the Hilbert envelopes of the traces (with a decibel scale).2 and 1. it is useful to note that 6 db corresponds to a factor of 2.2).
It is apparent from Figure 1.5 1 1.2 this width is about 1 inch and the minimum discernible wiggle is about . This limitation is controlled by two factors: the total width allotted for the trace plot and the minimum perceivable trace deﬂection. in agreement with the earlier visual assessment.2 plotted on a decibel scale. This is an especially important concern for wiggle trace displays of multichannel data where each trace gets about 1/10 of an inch of display space.6 seconds. This means that whatyousee is not always whatyou’vegot.1 an indication of ambient noise conditions. In Figure 1. then the display does not allow the optimal use of the data.e. The far oﬀset trace is about 40 db weaker than the near oﬀset and the total dynamic range is about 120 db. This is very near the expected instrument performance. the average background noise level is about 120 to 130 db below the peak signals on tracenear.3. and other eﬀects outside the seismic experiment. it is due to seismic noise caused by wind. For example if a particular seismic display being interpreted for exploration has a dynamic range of say 20 db.2 that either signal fades below visual thresholds at about 1. Checking with the envelopes on Figure 1. frequencies in the Fourier spectrum) that are more than 20 db down will not aﬀect the display.5 seconds 2 2. This occurs because the recording system gain settings were set to just clip the strongest arrivals and therefore distribute the available dynamic range over an amplitude band just beneath these strong arrivals. .01 inches. It is very important to realize that seismic displays have limited dynamic range.0. If these weak spectral components are signal rather than noise.3. this suggests that the dynamic range of this display is about 4050 db. Dynamic range is an issue in seismic display as well as recording.3: The envelopes of the two traces of Figure 1. Thus the dynamic range is about 10−2 ∼ 40db. traﬃc. INTRODUCTION 0 −20 −40 −60 decibels −80 −100 −120 −140 0 0. indicating clipping. That is.5 3 Figure 1. In this case. at an amplitude level of 1. See Code Snippet 1. It is interesting to note that the largest peaks on tracenear appear to have square tops. then any spectral components (i.8 CHAPTER 1. Only for tracefar is the ﬁrst arrival late enough to allow a reasonable sampling of the ambient noise conditions.
01 −0.02.02 .4: A portion of the seismic trace in Figure 1.4 0.3.6 0.04]) End Code Clipping was mentioned previously in conjunction with recording but also plays a role in display. wtva works like MATLAB ’s lowlevel line in that it does not clear the ﬁgure before plotting. The return values of wtva are MATLAB graphics handles for the “wiggle” and the “variable area” that can be used to further manipulate their graphic properties. The same trace is plotted with wtva and plot.3. This allows wtva to be called repeatedly in a loop to plot a seismic section.03 0. Code Snippet 1. Doing this requires determining the zero crossings of the trace which can be expensive if precision is necessary. See Code Snippet 1.’k’.04 0.3 0.tracefar) [h.02 0.load testtrace.mat plot(t.2 0.5 0.7 0.8 . The WTVA display ﬁllsin the peaks of the seismic trace (or troughs if polarity is reversed) with solid color.1). axis([.2 is plotted in WTVA format (top) and WT format (bottom).3. the ﬁnal argument of wtva is a resampling factor which causes the trace to be resampled and then plotted.01 0 −0.. Also.3 and shows the eﬀect of plotting the . variablearea (WTVA) display.4 where the two display types are contrasted using tracefar.) The horizontal line at zero amplitude on the WTVA plot is not usually present in such displays and seems to be a MATLAB graphic artifact. 1 2 3 4 clear.3.1.2) was be used to create Figure 1.8 Figure 1. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 9 0. Figure 1. Function wtva (Code Snippet 1.3.2 . For more precision. Figure 1.02 0. Clipping refers to the process of setting all values on a trace that are greater than a clip level equal to that level. This can have the eﬀect of moving the dynamic range of a plot display into the lower amplitude levels.4 is the result.5 results from Code Snippet 1.1.1. Function wtva just picks the sample closest to each zero crossing. (For more information consult your MATLAB reference.2 More popular than the wiggletrace display is the wiggletrace.02.t.hva]=wtva(tracefar+.2.
2 and compute the envelopes as shown in Code Snippet 1. end flipy. Code Snippet 1. End Code Exercise 1.10 CHAPTER 1.3.3.2. The test trace is plotted repeatedly with progressively higher clip levels. it just shifts the available range to a diﬀerent amplitude band.’k’.1.1.mat amax=max(abs(tracefar)). What is the approximate velocity of the material between the shot and the geophone? (You may ﬁnd the function simplezoom useful.15 0.5.5)ˆ(k1)).5: The seismic trace in Figure 1.5 3 −0. plot both the wiggle trace and its envelope and show that the trace is contained within the bounds deﬁned by ±envelope.. 1 2 3 4 5 6 7 8 clear. Clipping does not increase the dynamic range.2 is plotted repeatedly with diﬀerent clip levels.2 and display them.4 Figure 1.3.35 0.2 0. By appropriately zooming your plot. type simplezoom at the MATLAB prompt and then use the left mouse mutton to draw a zoom box. Function clip produces the clipped trace that is subsequently rescaled so that the clip level has the same numerical value as the maximum absolute value of the original trace. The clip levels are annotated on each trace. Use MATLAB to load the test traces shown in Figure 1.) Exercise 1.t.1.1 0. The eﬀect of clipping is to make the weaker amplitudes more evident at the price of completely distorting the stronger amplitudes. For either trace. A doubleclick will unzoom.3. This code makes Figure 1.3. See Code Snippet 1. Use MATLAB to load the test traces shown in Figure 1. wtva(trace_clipped+(k1)*2*amax. text((k1)*2*amax.5)ˆ(k1))/((.3.amax*(.ylabel(’seconds’).05 0.load testtrace.5 1 seconds 1. estimate the ﬁrst break times as accurately as you can.3 same trace (tracefar at progressively higher clip levels. for k=1:10 trace_clipped=clip(tracefar.1).25 0.5 2 2. .1. INTRODUCTION 0 6db 12db 18db 24db 30db 36db 42db 48db 54db 60db 0.(k1)*2*amax.[int2str(k*6) ’db’]).3 0.05 0 0. After creating your graph.1.
8 0. A trace is plotted in a given plot segment by adding an appropriate constant to its amplitude. Figure 1. 1 2 3 4 5 6 7 8 9 10 11 global NOSIG.g. %a time shift for each trace %load the seismic matrix for k=1:ntr seis(1:ntshift(k)+1.4.9 1 0 100 200 300 400 500 600 700 800 900 1000 0.6 0.7 0. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 0 0.1.5 0 50 100 150 200 250 300 350 400 450 500 Figure 1. Figure 1.002.t]=reflec(1.5 0.%make wavelet s=convm(r.25 seconds 0. .002.tw]=wavemin(. Here we create a simple synthetic seismic section and plot it as a WTVA plot with clipping. change polarity. What is the dynamic range of a seismic wiggle trace display plotted at 10 traces/inch? What about 30 traces/inch? 1. and more.2).35 0..3.3. these segments may overlap. For hardcopy displays.15 0.3 0.1 0.4 Figure 1.45 0.6.%make reflectivity nt=length(t). Note the clipping indicated by squarebottomed troughs Exercise 1. the plot width is divided into ntr equal segments to display each trace.5 illustrates the basic idea of a multichannel WTVA display.2 0.k)=s(shift(k):nt).2 Multichannel seismic display Figure 1. After a clip level is chosen.%preallocate seismic matrix shift=round(20*(sin([1:ntr]*2*pi/ntr)+1))+1. near .3. See Code Snippet 1. and clipping was intentionally introduced.%make convolutional seismogram ntr=100.4 seconds) are the signature of clipping.4 seconds 0. In the general case.3.%number of traces seis=zeros(length(s)..2).3. the traces are plotted such that an amplitude equal to the clip level gets a trace excursion to the edges of the trace plot segment. the traces are usually plotted at a speciﬁed number per inch.3. Assuming ntr traces. Function plotseis provides facilities to control clipping.4 0.20. Code Snippet 1. allowing traces to overplot one another.6: A synthetic seismic section plotted in WTVA mode with clipping. Figure 1.w). produce either WT or WTVA displays.7 is a zoomed portion of the same synthetic seismic section.6 is a synthetic seismic section made by creating a single synthetic seismic trace and then replicating it along a sinusoidal (with x) trajectory.2 0.7: A zoom (enlargement of a portion) of Figure 1.NOSIG=1. [w.3 0. [r.ntr).1 11 0.3).6 is the result .. Function plotseis made the plot (see Code Snippet 1. The square troughs on several events (e.3.
In this technique.1 0. if the number of pixels exceeds the number of samples.1. plotimage adorns its ﬁgure window with controls to allow the user to interactively change the polarity. For these purposes.12 0 0.’k’).m ﬁle (see your MATLAB reference for further information).x. Compare with Figure 1. INTRODUCTION 0.3. the display area is divided equally into small rectangles (pixels) and these rectangles are assigned a color (or graylevel) according to the amplitude of the samples within them.6 12 13 14 Figure 1. Figures 1.2 0.x). It also falls short for display of multichannel Fourier spectra where the wiggle shape is not usually desired.5 0 50 100 150 200 250 300 350 400 450 500 Figure 1. then plotseis will annotate the date.3 0. The global NOSIG controls the appearance of a signature at the bottom of a ﬁgure created by plotseis . Compare with Figure 1.8 and 1.8 0.4 0.8.1. Conversely.6 0.7 end x=(0:99)*10. The user’s name is deﬁned as the value of another global variable.45 0.5 0.9 1 0 100 200 300 400 500 600 700 800 900 0.8: A synthetic seismic section plotted as an image using plotimage . then a single sample can determine the color of many pixels.2 0. On the computer screen. The popularity of the WTVA display has resulted partly because it allows an assessment of the seismic waveform (if unclipped) as it varies along an event of interest. NAME_ (the capitalization and the underscore are important). The syntax to invoke plotimage is plotimage(seis. brightness. If NOSIG is set to zero.1.1 CHAPTER 1.3.t.9 display the same data as Figures 1. %make an x coordinate vector plotseis(seis. then each pixel represents the average of many samples. color map.35 0.25 0.7 but used the function plotimage in place of plotseis in Code Snippet 1.4 illustrates the use of global variables to control plotting behavior. Unlike plotseis . if the number of samples is greater than the number of available pixels.5. time. An easy way to ensure that these variables are always set as you prefer is to include their deﬁnitions in your startup.ylabel(’seconds’) End Code Code Snippet 1. and data scaling . and user’s name in the bottom right corner of the plot.7 0.9: A zoom (enlargement of a portion) of Figure 1. image displays are more suitable.t. However.4. This is useful in classroom settings when many people are sending nearly identical displays to a shared printer. Display control through global variables is also used in other utilities in the NumMethToolbox (see page 14). leading to a blocky appearance.3 0. It may also be called like plotimage(seis) in which case it creates x and t coordinate vectors as simply column and row numbers. because its dynamic range varies inversely with trace spacing it is less suitable for small displays of densely spaced data such as on a computer screen.6 and 1.15 0.4 0.
.02.1) sb(:.else.1. Figures 1.’k’) axis([0 70 .’k’).6 graylevel 0. %darken it plot(1:64.10 and 1. in most cases in this book they will be suppressed). Normally. NOBRIGHTEN=0.8 0.1]) text(1.3.. deﬁned by seisclrs .’black’) xlabel(’level number’).1.tt).ylabel(’gray_level’).’white’).5.’black’) xlabel(’level number’).11 are created.02.ylabel(’gray_level’). for k=1:5 pct=max([100(k1)*20.5).1 1.1 1. Code Snippet 1.2 0.6 graylevel 0.s(:.’color’.1) sd(:.50).1)].. %make a 50% linear gray ramp sb=brighten(s.1).2 20 40 60 80 100 0 black 0 black 0 10 20 30 40 level number 50 60 70 0 10 20 30 40 level number 50 60 70 Figure 1.1). text(xt(1).4 0.1. 64 separate gray levels are deﬁned and a linear scheme would ramp linearly from 1 (white) .tt. global NOBRIGHTEN NOBRIGHTEN=1. figure.int2str(pct)) end axis([0 70 . line(1:64.3.8 0. Figure 1.1. %brighten it sd=brighten(s.1]) text(1.02.2.’white’).10: A 50% gray curve from seisclrs (center) and its brightened(top) and darkened (bottom) versions.[s(:.2))tt=.text(50.text(50. which is quite nonlinear. s=seisclrs(64. scheme (though these controls are shown in these ﬁgures. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 figure. plotimage uses a gray level scheme.tt=. s=seisclrs(64.02. The latter item refers to the system by which amplitudes are mapped to gray levels (or colors).11: Various gray level curves from seisclrs for diﬀerent gray pct values.1]). This example illustrates the behavior of the seisclrs color map. End Code By default.5).end xt=near(s(:.pct).. if(rem(k. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 13 1 white 1 white 0.4 0.
assigns this the color black.10 illustrates this. As a ﬁnal step. and the negative of this number is white. and the traces used in Figure 1.13 uses mean scaling (and very strong clipping) to show much more of the data character.5 2 2 2. All other values map linearly into bins in between. On the other hand.2 are the ﬁrst and last trace of this record.) The strong energy near the shot sets the scaling levels and is so much stronger than anything else that most other samples fall into neutral gray in the middle of the scale. Given a gray level or color scheme. INTRODUCTION meters 300 400 500 600 700 800 900 1000 0. of the 64 levels to the transition from white to black and splits the remaining levels between solid black and solid white.12: A raw shot record displayed using plotimage and maximum scaling Figure 1. s and standard deviation σs of the data and assigns the mean to the center of the gray scale.5 2. Data ¯ values outside this range are assigned to the ﬁrst or last graylevel bin thereby clipping them. ﬁgure 1. called gray pct.5 0. Figure 1.5 3 3 Figure 1. The alternative.mat.13: The same raw shot record as Figure 1. The central curve in Figure 1.12 but displayed using mean scaling with a clip level (parameter CLIP) of 4.12 displays a raw shot record using the maximum scaling method with plotimage . mean scaling centers the gray scale on the data mean and the extremes of the scale are assigned to a ﬁxed number of standard deviations from the mean. In addition to the user interface controls on its window. or wellbalanced real data. seisclrs brightens the curve using brighten to produce the upper curve in Figure 1. Figure 1. this was found to produce overly dark images with little event standout. at level 1 to 0 (black) at level 64. function plotimage has two diﬀerent schemes for determining how seismic amplitudes are mapped to the color bins. seisclrs assigns a certain percentage. However.10. (The shot record is contained in the ﬁle smallshot. neutral gray corresponds to zero (if the seisclrs color map is used). 17 through 48 transition from white to black. called mean scaling. In both of these schemes.14 meters 0 0 100 200 300 400 500 600 700 800 900 1000 0 0 100 200 CHAPTER 1. Instead. This works well for synthetics. For example. measures both the mean.5 1 1 seconds 1. Thus. Most variables deﬁned in MATLAB are local and have a scope that . and 49 through 64 are solid black.11 shows the gray scales that result from varying the value of gray pct. called maximum scaling determines the maximum absolute value in the seismic matrix.5 seconds 1. the behavior of plotimage can be controlled through global variables. by default this percentage is 50 which means that levels 1 through 16 are solid white. The simplest method. but often disappoints for noisy or raw data because of the data’s very large dynamic range. The ¯ ends of the scale are assigned to the values s ± CLIPσs where CLIP is a userchosen constant.
2 0.4 seconds seconds 0. a function like plotimage can have its own variable x that can be changed arbitrarily without aﬀecting the x in the base workspace.3 0.14 displayed with plotseis . DYNAMIC RANGE AND SEISMIC DATA DISPLAY 0 0 100 200 300 400 500 600 700 800 900 0 0 100 200 300 400 500 600 700 800 900 15 1000 0. Code Snippet 1. meaning that they are erased after the function ends.7 0.14: A synthetic created to have a 6db decrease with each event displayed by plotimage . End Code . Any such manipulations will not aﬀect the global variables so that the next plotimage window will launch in exactly the same way.3. is limited to the setting in which they are deﬁned.3 0. x is declared to be global. then the x in plotimage is still independent unless plotimage also declares x global.2 0. in the base workspace. Once declared (either in the base workspace or a function) they remain in existence until explicitly cleared. 1 2 3 4 5 6 7 8 9 global SCALE_OPT GRAY_PCT NUMBER_OF_COLORS global CLIP COLOR_MAP NOBRIGHTEN NOSIG SCALE_OPT=2.1 0.3.m ﬁle that illustrates the setting of global variables to control plotimage. Code Snippet 1. If.6 illustrates the assignment of global variables for plotimage as done in the author’s startup.7 0.5 0.4 0. The user can always manipulate the image as desired using the user interface controls.6 0.7. This is a portion of the author’s startup.1.8 0. For example. Global variables are an exception to these rules. at the MATLAB prompt ) can only be referenced by a command issued in the base workspace. Thus. Figure 1. COLOR_MAP=’seisclrs’. NUMBER_OF_COLORS=64. both the base workspace and plotimage address the same memory locations for x and changes in one aﬀect the other.6 0. NOBRIGHTEN=1.9 0. GRAY_PCT=20. the variables deﬁned in a function are transient.m ﬁle.3.e.9 1 1 Figure 1.6. These variables only determine the state of a plotimage window at the time it is launched. In addition.3. CLIP=4. NOSIG=1. Then.5 0.15: The same synthetic as Figure 1. a variable called x deﬁned in the base workspace (i.1 0. See Code Snippet 1.8 0.
plotimage(seis.002. for tk=. hot. Load the ﬁle smallshot.1). However. In particular. k=round(tk/dt)+1. in addition to displaying seismic data. The picks can then be used in any subsequent calculation or analysis.1. amp=1. Practice changing their values and observe the results. seis=s*ones(1.dt=.15).x).60. gray.002.GRAY_PCT=100.14 and 1. this facility simply allows the user to draw any number of straightline segments (picks) on top the the data display and aﬀords easy access to the coordinates of these picks. Recreate Figures 1.1.4. ﬂag. See Figures 1.1).3 The plotimage picking facility The function plotimage .1. bone. cool. The pick list is stored as the global variable PICKS that can be accessed from the base workspace. provides a rudimentary seismic picking facility.ntr). In concept. this menu has two picking settings: Pick(N) and Pick(O). 1.3. r(k)=(1)ˆ(round(tk/. This means that if one plotimage window has been used for picking and a second is then activated with the Pick(N) option.3.3. examine some of the color maps: hsv. Experiment with diﬀerent number of traces (ntr) and diﬀerent program settings to see how dynamic range is aﬀected. Initially in the zoom setting.1))*amp. r=zeros(501.’k’). summer. by declaring it there. the dynamic range of plotimage (≈30db) tends to be slightly greater than that of plotseis (≈20db). or within any function. s=convz(r.1. pink.7 as a guide.5.15 using Code Snippet 1.7. Each event decreases in amplitude by 6 db.3.3.1:1.t.15. The picking mechanism is activated by the popup menu in the lower left corner of the plotimage window. end w=ricker(.x. jet. winter. This is similar in concept to using MATLAB’s ginput (described in the next section) but is somewhat simpler to use. The ‘N’ and ‘O’ stand for New and Old indicating whether the picks about to be made are a new list or should be added to the existing list.t..ntr=100. (Be sure to specify the name of the color map inside single quotes.mat into your base workspace using the command load and display the shot record with plotimage. Study the online help for plotimage and deﬁne the six global variables that control its behavior.14 and 1..ylabel(’seconds’) End Code The dynamic range of image and WTVA displays is generally diﬀerent. the behavior of plotimage is nearly independent of the trace density while plotseis becomes useless at high densities. the picks .ylabel(’seconds’) plotseis(seis. This code creates a synthetic with a 6db decrease for each event and displays it without clipping with both plotimage and plotseis.1:. amp=amp/2. INTRODUCTION Code Snippet 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 % put an event every 100 ms. There is only one pick list regardless of how many plotimage windows are open. and autumn.) Exercise 1. white.w).16 CHAPTER 1. spring. t=(0:length(r)1)*dt. When both are displayed without clipping using a moderate trace spacing (Figures 1. x=10*(0:ntr1). copper.14 and 1. global SCALE_OPT GRAY_PCT SCALE_OPT=2. Exercise 1.
It is also quite feasible to implement a more complete picking facility on this base. The permanent color is controlled by the global variable PICKCOLOR. and possibly z .3. picks are drawn in red. made without dragging the mouse and within the bounds of the axes. most notably raytrace migration (see sections 5. ginput works with any MATLAB graphics display while the picking facility is only available with plotimage . In the example shown in Figures 1.8 loads the small sample shot record and displays it.1 0. The pick will be drawn on the screen in a temporary color and then drawn in a permanent color when the mouse is released. Figure 1.3.4 0. holding the button down while dragging to the second point. DYNAMIC RANGE AND SEISMIC DATA DISPLAY 0 0 100 200 300 400 500 600 700 800 900 1000 0 0 100 200 300 400 500 600 700 800 900 17 1000 0. Furthermore.16. the picks are drawn on top of the seismic data.8 before allowing the user to select points. Though it is a useful tool. If desired. xpick. This is quite easily done using MATLAB’s line and patchcommands. The return value from line is the graphics handle of the line.16 and 1. Nevertheless. Only line is discussed here. 1. This picking facility is rudimentary in the sense that the picks are established without any numerical calculation involving the data.6 0. The function line will accept vectors of the x. There.5 0.2 0.3.8. the cursor will be changed to a crosshairs and the user is expected to enter a sequence of mouse clicks to deﬁne a series of points. y.7 0.9 0. If this variable has not been set.8 0. A single mouse click. and a vector of t coordinates. and releasing the button. ginput does note provide a picking facility such as that described previously. for the ﬁrst window will be lost.4 Drawing on top of seismic data Often it is useful to draw lines or even ﬁlled polygons on top of a seismic data display.5 0.17: After the user picks the ﬁrst breaks in Figure 1.1 0. See Code Snippet 1.3. there is no facility to name a set of picks or to retain their values. six points were entered along the ﬁrst breaks.3 0.3. this can be avoided by copying the pick list into another variable prior to activating the second picking process. The six points are returned as a vector of x coordinates.2 0.9 1 1 Figure 1.2 and 5. Code Snippet 1.17. A pick is made by clicking the left mouse button down at the ﬁrst point of the pick. will delete the most recent pick. a number of very useful calculations.16: This ﬁgure is displayed by Code Snippet 1.7 0.4 0.3. ginput expects the points to be selected by simple mouse clicks and then the “enter” key is hit to signal completion. The command ginput halts execution of the script and transfers focus to the current ﬁgure.2. However.6 0. The call to line plots the points on top of the seismic image.3 0.3) are enabled by this.1.8 0. tpick.
There are many other possible attributes that can be set in this way.’ydata’. It is nothing more than a sequence of syntactically correct commands that have been typed into a ﬁle. Programming in MATLAB has similarities to other languages but it also has its unique quirks. Instead. This example displays the small sample shot record using plotimage and then uses ginput to allow the user to enter points. it is more robust to give the line a vector of z coordinates of unity so that it is guaranteed to always be in front of the seismic. End Code 1. its line thickness is set to twice normal. The results are in Figures 1. h=line(xpick. Once the line has been drawn. Code Snippet 1.16 and 1.18 CHAPTER 1.17. If no z coordinates are given. Plotting the line at z = 0 usually works but if more mouse clicks are done on the ﬁgure. In this case. For example. such as for zooming. issue the command get(h) where h is the handle of a line and MATLAB will display a complete property list. When you type the ﬁle name (without the . If you are in doubt about whether your script is the . 1 2 3 4 5 6 7 8 load smallshot global SCALE_OPT CLIP SCALE_OPT=1. you can alter any of its properties with the set command.2.’color’.’marker’. MATLAB has two basic programming constructs.m) at the MATLAB prompt.ones(size(xpick)). 1.m ﬁle with that name and executes the commands contained therein.. line accepts an arbitrary length list of (attribute.’r’.1 seconds. y.m and it must appear in the MATLAB search path.t. property) pairs that deﬁne various features of the line. z) coordinates. plotimage(seis.8. The ﬁle name must end in . INTRODUCTION coordinates of the nodes of the line to be drawn.tpick]=ginput.x) axis([0 1000 0 1]) [xpick. then it can happen that the line may get redrawn ﬁrst with the seismic on top of it. and program will be used to refer to both. This section discusses some strategies for using MATLAB eﬀectively to explore and manipulate seismic datasets.. However. To see a list of them. This is especially true if a long sequence of complex commands has been entered directly at the MATLAB prompt. A script is the simplest possible MATLAB programming structure. A much better approach is to type the commands into a text ﬁle and execute them as a script.’c’) changes the line color to cyan and set(h. This has the virtue that a permanent record is maintained so that the results can be reproduced at any time by simply reexecuting the script.’ydata’)+. This causes the line to “disappear”. These points are plotted on top of the seismic data using line. and markers are added to each point. it is very easy to create results that are nearly irreproducible.CLIP=1. MATLAB searches its path for the ﬁrst .1) shifts the line down . scripts and functions. ’linewidth’.get(h. its color is set to red.4. set(h.1 Scripts MATLAB is designed to provide a highly interactive environment that allows very rapid testing of ideas. they are assumed zero which causes them to be drawn in the same z plane as the seismic (MATLAB graphics are always 3D even when they appear to be only 2D). unless some care is taken.tpick.4 Programming tools It is recommended that a study course based on this book involve a considerable amount of programming.’color’. In addition to (x..’*’).3.
path([p ’. This shows more detail than will be shown in other examples in this book in order to illustrate function documentation. Functions execute in their own independent workspace that communicates with the base workspace through input and output variables. it is this line that alerts MATLAB to the fact that clip is not a script. a simple management scheme is to include something like 1 2 3 4 5 6 7 8 global MYPATH if(isempty(MYPATH)) p=path.C:\MatlabR11\toolbox\local\mytools’]).1. path([p ’.3.4. (Hint: plotseis allows its plot to be directed to an existing set of axes instead of creating a new one. Of course you could just add all of your projects to your base path but then you cannot have scripts with the same name in each project. When you launch MATLAB your startup. Whenever you want to work on project1. use the which command.2 Functions The MATLAB function provides a more advanced programming construct than the script. else path(MYPATH). A good practice is to maintain a folder in MATLAB’s search path that contains the scripts associated with each logically distinct project. Typing which foo causes MATLAB to display the complete path to the ﬁle that it will execute when foo is typed. Then.1. MYPATH=path.C:\My Documents\project1\scripts’]) and a similar script for project2. Since both scripts and functions are in . The function is declared with the basic syntax .4.4. end in your startup. The “current” axes can be referred to with gca. Write a script that plots wiggle traces on top of an image plot. The structure of a function A simple function that clips a seismic trace is given in Code Snippet 1. The latter is simply a list of MATLAB commands that execute in the base workspace. suppose that most of your MATLAB tools are contained in the directory C:\Matlab\toolbox\local\mytools and that you have project scripts stored in C:\My Documents\project1\scripts and C:\My Documents\project2\scripts. These script directories can be managed by creating a further set of control scripts that appropriately manipulate MATLAB’s search path. you simply type project1 and your base path is altered to include the project1 scripts.) 1.m ﬁle and then create a script called project1.1.4.m that contains 1 2 p=path.4. Exercise 1. Typing startup again restores the base path and typing project2 sets the path for that project.m establishes your base search path and assigns it to a global variable called MYPATH. The ﬁrst line of clip gives the basic syntax for a function declaration.m ﬁles. Test your script with the synthetic section of Code Snippet 1. PROGRAMMING TOOLS 19 ﬁrst sonamed ﬁle in the path. For example.
b]=foo(c). May 1991 % if(nargin˜=2) error(’incorrect number of input variables’). it may be legally invoked with any of [a. nonexecutable) as is indicated by the % sign that precedes each line. Though it is possible to call foo without specifying y2 there is no simple way to call it and specify y2 while omitting y1. both mandatory. ] are not required. foo’s x1 is returned to become the variable a in the calling workspace.F.e. a=foo(c. . % % trin= input trace % amp= clipping amplitude % trout= output trace % % by G. trout(indices)=sign(trin(indices))*amp. Typing help directory name. [a.d). The variable names in the function declaration have no relation to those actually used when the function is invoked. while regular parentheses enclose the input variables. where directory name is the name of a . and one output variable. .b]=foo(c. The ﬁrst contiguous block of comments following the function deﬁnition constitutes the online help. The ﬁrst line gives the function name and a simple synopsis. For example. and entries are separated by commas. when a=foo(c) is issued the variable c becomes the variable (y1) within foo’s workspace and similarly. The documentation for clip follows a simple but eﬀective style.amp).4. Code Snippet 1.x2]=foo(y1. a=foo(c). If an input variable is not supplied. given a function deﬁnition like [x1. Rectangular brackets [ . Either list can be of any length.amp) % % CLIP adjusts only those samples on trin which are greater % in absolute value than ’amp’. For example. . A simple MATLAB function to clip a signal. % clip them trout=trin.1. ] enclose the list of output variables. The next few lines after the function deﬁnition are all comments (i. Margrave. These are set equal to amp but % with the sign of the original sample. end % find the samples to be clipped indices=find(abs(trin)>amp).d). Typing help clip at the MATLAB prompt will cause these comment lines to be echoed to your MATLAB window. either at the command line or in a program. there is only one output variable and the [ . it is advisable to structure the list of input variables such that the most important ones appear ﬁrst. .y2). For clip . then it must be assigned a default value by the function. % CLIP performs amplitude clipping on a seismic trace % % trout=clip(trin. Therefore. When the function is invoked. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 function trout=clip(trin. End Code In the example of the function clip there are two input variables.20 CHAPTER 1. a choice may be made to supply only the ﬁrst n input variables or to accept only the ﬁrst m output variables. INTRODUCTION [output_variable_list]=function_name(input_variable_list).
suppose the amp parameter were to be allowed to default to 1.m ﬁles. Then a padded seismic matrix is computed as: 1 2 3 4 5 %pad with zero samples [nsamp. Lines 1618 illustrate the use of the automatically deﬁned variable nargin that is equal to the number of input variables supplied at calling. eventually you will produce code with in it. [ . this is valuable because it establishes who owns the code and who is responsible for ﬁxes and upgrades. Very often. seis=[seis. ] on lines 3 and 5 is key here.1.4. MATLAB would emit the error message: ??? All matrices on a row in the bracketed expression must have the same number of rows. Then comes a description of each input and output parameter and their defaults. end Lines 20. . if any. Finally. End Code The use of [ . Code Snippet 1.zeros(nzs. This can be accomplished quite simply with if(nargin<2) amp=1. More subtle errors only become apparent at runtime after correcting all of the syntax errors.5. it is good form to put your name and date at the bottom.1. and 23 actually accomplish the clipping.2. . seis is concatenated with a matrix of zeros that has the same number of traces as seis but nzs samples.4.nzt)]. The next block of comments gives a longer description of the tasks performed by the function. PROGRAMMING TOOLS 21 directory containing many . For example. The semicolon between the two matrices is crucial here as it is the row separator while a space or comma is the column separator. . causes the ﬁrst line of each ﬁle to be echoed giving a summary of the directory. ] generally indicate that a new matrix is being formed from the concatenation of existing matrices. . On line 3. The assignment of default values for input variables can also be done using nargin. 22.0. 1.2. They illustrate the use of vector addressing and will be discussed more thoroughly in Section 1. a prototype can be copied to the command line and edited for the task at hand. Next appears one or more function prototypes that give examples of correct function calls. The correct way to do this is show in Code Snippet 1. suppose we wish to pad a seismic matrix with nzs zero samples on the end of each trace and nzt zero traces on the end of the matrix.ntr]=size(seis). For example. Unless they are being used to group the return variables from a function. If the elements in [ ] on line 3 were separated by a space instead of a semicolon. If your code is to be used by anyone other than you.4. After viewing a function’s help ﬁle. clip requires both input variables so it aborts if nargin is not two by calling the function error. The simplest errors are usually due to mangled syntax and are relatively easy to ﬁx. .4. %pad with zero traces seis=[seis zeros(nsamp+nzs. A MATLAB language guide is essential for the beginner to decipher the syntax errors. Assume that a matrix seis already exists and that nzs and nzt are already deﬁned as the sizes of zero pads in samples and traces respectively. Following the online help is the body of the code.3 Coping with errors and the MATLAB debugger No matter how carefully you work.ntr)]. runtime errors are related to incorrect matrix sizes.
%extract the slice end End Code . plot(x. if a variable called plot is deﬁned. then it can no longer serve its if predeﬁned task as −1 in complex arithmetic. this can cause problems.k).hwid) [m. if a row separator is used on line 5. MATLAB allows variables to be “declared” by simply using them in context in a valid expression.3. As an example of the debugging facility. Especially when dealing with large datasets. Therefore some caution is called for in choosing variable names. then it will mask the command plot. This means that the entire power of MATLAB is available to help discover the problem. for k=1:n %loop over columns i1=max(1. consider the problem of extracting a slice from a matrix.3. These logical errors can be very diﬃcult to eliminate. The MATLAB debugger is a very helpful facility for resolving runtime errors. %output indices s(ind.n]=size(a).traj(k)hwid). dbquit. it must still be veriﬁed that it has produced the expected results. called a breakpoint. One rather insidious error deserves special mention. This is a fundamental requirement and calls attention to the basic MATLAB syntax: MatrixA = MatrixB. For example dbstop at 200 in plotimage will cause execution to pause at the executable line nearest line 200 in plotimage . dbup. and it is simple to use. but. A ﬁrst attempt at creating a function for this task might be like that in Code Snippet 1. The trajectory is deﬁned as a vector of row numbers. That is. or comparing it with other codes whose functionality overlaps with the new program. The most subtle errors are those which never generate an overt error message but still cause incorrect results.√ the letter i is used as the index of a loop. extract a submatrix consisting of those samples within a certain halfwidth of the trajectory. the common Fortran practice of choosing i as a loop index is to be discouraged.k) = a(i1:i2. At this point. Once a program executes successfully. such as dbstep which steps execution a line at a time. that cannot double back on itself. Code Snippet 1.22 CHAPTER 1. the entities on both sides of the equals sign must evaluate to matrices of exactly the same size. For example. you may choose to issue another debug command.ntr) sidebyside in a new matrix. More subtle. The only exception to this is that the assignment of a constant to a matrix is allowed. Though convenient.traj. Beware. this is only possible if the two items have the same number of rows. That is. it is often very helpful to issue plotting commands to graph the intermediate variables. There are just a few essential debugger commands such as: dbstop. or you may issue any other valid MATLAB command. 1 2 3 4 5 6 7 8 9 function s=slicem(a. Similarly. Another common error is an assignment statement in which the matrices on either side of the equals sign do not evaluate to the same size matrix. All further commands to plot data (e.g. Here is some code for slicing through a matrix along a trajectory. MATLAB will complain about “All matrices on a row in the bracketed expression must have the same number of columns”.traj(k)+hwid). INTRODUCTION This occurs because the use of the column separator tells MATLAB to put seis and zeros(nxs. dbstep. %start of slice i2=min(m.y)) will be interpreted as indexing operations into the matrix plot. Usually this means running it on several test cases whose expected behavior is well known. and especially. this code generates an error. and a trajectory through it. given a 2D matrix.4.4. A debugging session is typically initiated by issuing the dbstop command to tell MATLAB to pause execution at a certain line number. dbcont. onepercolumn. dbdown. %end of slice ind=(i1:i2)traj(k)+hwid.
k) = a(i1:i2. A more polished version of this code is found as slicemat in the NumMethToolbox . To investigate. prepare some simple data like this: a=((5:1:1)’)*(ones(1. Noting that line 8 is in a loop.m On line 8 ==> s(ind.1) generates the following error: ??? Index into matrix is negative or zero. Executing slicem with the command s=slicem(a.10)) a = 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 23 traj=[1:5 5:1:1] traj = 1 2 3 4 5 5 4 3 2 1 The samples of a that lie on the trajectory are 5 4 3 2 1 1 2 3 4 5. Thus it is apparent that the vector ind is generating an illegal index of 0. it seems possible that the error occurs on some further iteration of the loop (we are at k=1). make the change.4. PROGRAMMING TOOLS First. which includes an extra +1.1. execution is resumed with the command dbcont. Now. suspecting that the index vector ind is at fault we list it to see that it contains the values 1 2 and so does the vector i1:i2. So. . and rerun slicem to get the correct result: s = 0 5 4 5 4 3 4 3 2 3 2 1 2 1 0 2 1 0 3 2 1 4 3 2 5 4 3 0 5 4 The samples on the trajectory appear on the central row while the other rows contain neighboring values unless such values exceed the bounds of the matrix a. issue the command “dbstop at 8 in slicem” and rerun the program. we discover that ind contains the values 0 1 2 while i1:i2 is 1 2 3. Then MATLAB stops at line 8 and prints 8 K s(ind. we exit from the debugger with dbquit.k) = a(i1:i2. in which case a zero is returned. however.traj. Error in ==> slicem. this could be occurring either in indexing into a or s.k). Therefore. These are legal indices.k). This error message suggests that there is a problem with indexing on line 8. At k=2. Note that a simpler debugger procedure (rather than stopping at line 8) would be to issue the command “dbstop if error” but the process illustrated here shows more debugging features. A moments reﬂection reveals that line 7 should be coded as ind=(i1:i2)traj(k)+hwid+1.
end end trout=trin. This script compares the execution time of clip and fortclip 1 2 3 4 5 6 7 8 9 10 11 12 13 [r. for example. The loops are executed 100 times to allow minor ﬂuctuations to average out. end toc tic for k=1:100 r2=fortclip(t. The next line creates the output trace as a copy of the input.05).5. and π respectively. Code Snippet 1.5 1. MATLAB responds with . So. On the second execution of this script. Finally. and seventh entries to π. This is easily demonstrated using MATLAB’s built in timing facility.2).1 Programming for eﬃciency Vector addressing The actual trace clipping in Code Snippet 1.. end toc End Code In contrast to the vector coding style just described Code Snippet 1.4.5..05). 2 ∗ π.. This code is logically equivalent to clip but executes much slower. 1 2 3 4 5 6 7 8 9 function trout=fortclip(trin.1 shows how clip might be coded by someone stuckintherut of scalar addressing (a C or Fortran programmer).. ﬁfth. Code Snippet 1.5. In clip the function find performs a logical test and returns a vector of indices pointing to samples that satisfy the test. These lines employ an important MATLAB technique called vector addressing that allows arrays to be processed without explicit loop structures. then the statement a([3 5 7])=[pi 2*pi sqrt(pi)] √ sets the third. if a is a vector of length 10. INTRODUCTION 1. Vector addressing means that MATLAB allows an index into an array to be a vector (or more generally a matrix) while languages like C and Fortran only allow scalar indices.2 is a simple script that uses the tic and toc commands for this purpose.5. tic sets an internal timer and toc writes out the elapsed time since the previous tic. End Code Code Snippet 1. tic for k=1:100 r2=clip(t. A Fortran programmer new to MATLAB would probably code clip in this way.24 CHAPTER 1.002. This is a key technique to master in order to write eﬃcient MATLAB code.1.1 is accomplished by three deceptively simple lines.t]=reflec(1.2. the last line uses vector addressing to clip those samples identiﬁed by find.amp) for k=1:length(trin) if(abs(trin(k)>amp)) trin(k)=sign(trin(k))*amp.5.
5.1 by using the zeros function to preallocate trout.amp) for k=1:length(trin) if(abs(trin(k)>amp)) trout(k)=sign(trin(k))*amp. 1.col)=scales(col)*seis(row. Let scales be a vector of such factors whose length is equal to the number of columns in seis. On the other hand.4. The reason is that the output trace.5. MATLAB is designed to eliminate many of the loop structures found in other languages.1.e. This forces MATLAB to resize the vector each time through the loop.) A simple blunder that can slow down fortclip even more is to write it like Code Snippet 1. A Fortran programmer might write this code to scale each trace in the matrix seis by a factor from the vector scales 1 2 3 4 5 6 7 [nsamp. column) by a constant scale factor.5.3 can be made to run as fast as that in Code Snippet 1. Show that the version of fortclip in Code Snippet 1. An even slower version of fortclip 1 2 3 4 5 6 7 function trout=fortclip(trin.5.1. still produces correct results.5. Exercise 1.5. end end . (On the ﬁrst execution. Run time tests should always be done a number of times to allow for eﬀects like this. trout.0500 elapsed_time = 1. Such resizing is slow and may require MATLAB to make repeated requests to the operating system to grow its memory. Using scalar programming. PROGRAMMING FOR EFFICIENCY elapsed_time = 0. but is almost 50 times slower than clip .5. Vector addressing helps in this regard but even more important is the use of MATLAB’s linear algebra constructs.3. clip is only about 15 times faster because MATLAB spends some time doing internal compiling. Create a version of fortclip and verify the run time comparisons quoted here. Your computer may give diﬀerent results.col).ntr]=size(seis).4. end end End Code This version of fortclip . As an example. Code Snippet 1. coding in the scalar style can produce very slow programs that give correct results but lead to the false impression that MATLAB is a slow environment. In fact run times can approach that of compiled C or Fortran.2 Vector programming It is this author’s experience that MATLAB code written using vector addressing and linear algebra constructs can be quite eﬃcient. Programming eﬃciently in this way is called vector programming. is being addressed samplebysample but it has not been preallocated. a seasoned Fortran programmer might produce something like Code Snippet 1. suppose seis is a seismic data matrix and it is desired to scale each trace (i. for col=1:ntr for row=1:nsamp seis(row.5.6000 25 which shows that clip is 30 times faster than fortclip .
5. For example. Vector programming is also facilitated by the fact that MATLAB’s mathematical functions are automatically set up to operate on arrays. mean. This results in a row vector whose entries are [0 dt 2*dt 3*dt .5. For example.5. You can check this out for yourself by a simple MATLAB exercise: a=ones(4. log. if t is a time coordinate vector then sin(2*pi*10*t) is a vector of the same size as t whose entries are a 10 Hz.4 with the very simple single line in Code Snippet 1. atan.5. INTRODUCTION This works correctly but is needlessly slow. a*b to which MATLAB’s response is ans = 1 1 1 1 2 2 2 2 3 3 3 3 Thus the MATLAB programmer would write Code Snippet 1. (ntr1)*dt]. atan2. Some of MATLAB’s vectorized functions operate on matrices but return matrices of one dimension smaller.4. cumsum. main.. if trace is a vector and seis is a matrix. These functions all perform elementbyelement operations on matrices of any size. An experienced MATLAB programmer would know that the operation of ‘matrix times diagonal matrix’ results in a new matrix whose columns are scaled by the corresponding element of the diagonal matrix. the time coordinate vector for a trace with ntr samples and a sample interval of dt can be generated with the command t=(0:ntr1)*dt. Code Snippet 1. The functions sum.5. Code written in this way is actually more visually similar to the corresponding mathematical formulae than scalar code with its many explicit loops. log10. The mean value of the entire matrix. End Code Tests indicate that Code Snippet 1.4 in this way: 1 seis=seis*diag(scales).5. can be calculated with mean(mean(seis)). b=diag([1 2 3]).5.3 The COLON symbol in MATLAB Vector programming is also facilitated by a thorough understanding of the multiple uses of the colon (:) in MATLAB. A MATLAB programmer would write the example of Code Snippet 1. exp. For example.5 is about ten times as fast as Code Snippet 1.5. seis.3). sqrt and others.5.. sine wave evaluated at the times in t. std all behave in this manner. cos.26 End Code CHAPTER 1. Let seis be a two dimensional seismic matrix. More subtle is the use of the colon in indexing into a matrix. 1. then some sample indexing operations are: . max. This includes functions like sin. In its most elementary form the colon is used to generate vectors. tan. then mean(trace) results in a scalar that is the mean value of the vector while mean(seis) results in a row vector containing the mean value of each column of seis.
2) seis(2.10) refers to the 10th trace. Thus NaN’s can be used to temporarily turn oﬀ parts of a graphic. Regardless of the dimensions of a matrix.ncols)]. seis(:. mean.50:60) selects samples 100 through 500 on traces 50 through 60.4 Special values: NaN. This is possible because computer memory is actually a onedimensional space and MATLAB stores a matrix in this space in column order.seis(nrows. The colon indicates that all rows (samples) are desired.50:60) refers to traces 50 through 60. The occurrence of a NaN in your output data signals you that an unexpected arithmetic exception has taken place in your code. MATLAB allows any matrix to be entered into a formula as a equivalent column vector using the notation seis(:). This means that the ﬁrst sample of column two can be addressed either by seis(1. 1. This means that the actual storage pattern of seis is [seis(1. std and many others will also return NaN on this vector.4. This means that an expression such as find(v==NaN) will not correctly identify any NaN’s in the vector v.1) .icol) and as seis(ipos). can be indexed like seis(irow. Inf. The functions isinf and isfinite can be used by themselves or as input to find as discussed above . something that is especially useful in 3D.2) or by seis(nrows+1). seis(:. . The last item needs more explanation. the action is to blank that part of the display. Of course. 27 seis(520:2:720. This can cause unexpected results. For example. Inf±Inf. running fft on data with only a single NaN in it will produce a NaN for the entire output spectrum. This must be found and corrected. Thus the last sample of column one and the ﬁrst sample of column two are contiguous in memory. any arithmetic operator involving a NaN is required to produce NaN as an output.:) grabs very other sample between sample number 520 and number 720 on all traces.1) seis(1.) Inﬁnity is handled similarly to NaN’s in that certain operations generate inﬁnity that subsequently behaves in a deﬁned way. (Of course. When used in logical comparisons. max([1 2 3 NaN 4 5 6]) results in NaN and the functions min.) So. For example 0/0.1) seis(2. the two dimensional matrix.seis(nrows. NaN’s can also be used as convenient placeholders to mark some special point in a matrix because they can easily be found.1.. and Inf/Inf all result in NaN. Even worse.. Inf also must be handled specially in logical comparisons.. For example.2) . it can always be referred to as a single column vector using a single index. when a NaN occurs in graphics.. seis. PROGRAMMING FOR EFFICIENCY seis(:. NaN’s must be located using find(isnan(v)) that returns a vector of indices of any NaN’s in v. the result is almost always False. seis(100:500... Also. Despite these apparent complications. For example x/0 generates an Inf and x/Inf always returns zero (unless x is Inf when NaN results). the indices need not be entered as explicit numbers but could be a variable instead as in the case of the return from find in Code Snippet 1.90:1:50) selects traces 50 through 90 but in reverse order.5. Certain mathematical operations can cause these to arise and they then behave in deﬁned ways.5. (The function isnan returns a logical vector of 1’s and 0’s indicating vector elements are NaN’s. Inf*0. NaN’s have enough uses that they are well worth having around. and eps MATLAB supports the IEEE representations of NaN (NotaNumber) and Inf (Inﬁnity). it works just ﬁne if you want to ﬁnd a number such as find(v==5). such as NaN==5.1. In accordance with this formulation. seis(:) refers to the entire seismic matrix as a giant column vector. Furthermore.
Finally.28 CHAPTER 1. Also. extensive numerical toolbox.6 Chapter summary The scope of this book was deﬁned as a survey of the fundamental numerical methodologies used in seismic exploration.1:pi. tests for the equality of two ﬂoating point variables should be avoided. . computing a sinc function with x=0:. Reasons for the choice of the MATLAB language for the presentation of algorithms were given.y=sin(x+eps). Scripts and functions were discussed and their structure outlined.y=sin(x). Wiggle trace. For example. and the colon operator were discussed with an emphasis on how they relate to the creation of eﬃcient code. avoids the zero divide and results in y(1) of 1. with an emphasis on topics of importance when dealing with large datasets. 1. and builtin graphics. and their physical basis./x. However. MATLAB was suggested as a superior environment due to its vector language. interactive environment.1:pi. x=0:. the debug command dbstop if naninf is helpful to stop execution at the point that NaN or Inf occurs in any function. It was argued that the numerical range (dynamic range) of modern data is very large. Considerable time was spent discussing the display of seismic data. generates a zero divide and y(1) is NaN. MATLAB supplies the internal constant eps whose value is the smallest positive ﬂoating point number available on your machine. Instead of a test like if(x==y) consider something like if(abs(xy)<10*eps). Vector addressing. and this leads to the likelihood of clipping in display. Common programming blunders that lead to reduced performance were discussed. and image plots were discussed as display tools. a brief survey of MATLAB programming was presented. eps represents the machine “noise level” and is about 2. INTRODUCTION with isnan. In a loose sense. eps can also be useful in computing certain limits that involve a division by zero. WTVA. Most processing systems have been written in Fortran or C and use single precision arithmetic. This is actually a higher standard of precision than has traditionally been used in seismic data processing. and their relative merits were contrasted. MATLAB uses double precision ﬂoating point arithmetic for its calculations. MATLAB conventions for naming functions were explained and the use of numbered Code Snippets in a theoremlike environment code presentation was discussed. (How many decibels down from unity is eps?) As a general rule./(x+eps).2204x10−16 on the author’s computer. vector programming.
A variety of descriptions of convolution are given in this section. will be demonstrated. The ﬁlter is linear because the response to an input a(t) + b(t) is the sum of the responses to a(t) and b(t) taken separately. an acquaintance with the essential elements of the theory is so essential that this chapter is included as an introduction. when solving such equations in complex situations or in processing real seismic data. these are all merely diﬀerent perspectives on the same mathematical expression that is stated as equation (2. The continuous viewpoint arises naturally when developing models for physical eﬀects where the solutions to the relevant partial diﬀerential equations may be regarded as continuous signals. The scope of the present discussion is limited to fundamentals that have direct relevance to later chapters. it is meant that the ﬁlter response to an input impulse is independent of the time of the impulse. Then the ﬁlter output is g(t) = a0 f (t − t0 ) + a1 f (t − t1 ).Chapter 2 Signal Theory The theory of digital signal processing is a vast subject and its complete description would require much more space than the signal chapter available here. Such a linear. Fundamentally however. stationary ﬁlter is completely speciﬁed by its impulse response. Suppose the input to the ﬁlter is an impulse of magnitude a0 at time t0 and a second impulse of magnitude a1 at time t1 . They are all useful in diﬀerent contexts and some will appeal more to the intuition than others. This is deﬁned as the output of the ﬁlter when the input is a unit impulse at t = 0. Alternatively. concepts will be developed here for both continuous and sampled signals. f (t). Those requiring a more thorough exposition should consult a textbook such as Karl (1989).1. As a general theme. Therefore. However. and the reverse. 2. 2. (2.3) below. By stationary.1) 29 . Another name for this property of stationarity is translation invariance. both approaches will be explored where appropriate and the transformation of a continuous expression into a discrete one.1 Convolution The process of convolution is so fundamental to all of signal theory that its description is an excellent starting point. Often the phrase the ﬁlter will be used as a synonym for the impulse response of the ﬁlter. digital computations in a computer are the only practical approach.1 Convolution as ﬁltering Convolution is the name given to the process of applying a stationary linear ﬁlter to a signal.
2) approaches ∞ g(t) = −∞ a(τ )f (t − τ )dτ. (2. (2. and {gk } with k = 0. This is accomplished by the change of variables τ = t − τ that gives ∞ g(t) = −∞ a(τ )f (t − τ )dτ = −∞ ∞ a(t − τ )f (τ )d(−τ ) = ∞ −∞ a(t − τ )f (τ )dτ . . The deﬁning feature is the formation of a superposition of scaledanddelayed copies of a single function. In other words. an integration has replaced the summation. more commonly. stationary ﬁlters. . If the integral operation of equation (2. Suppose the input to the ﬁlter is an arbitrary sequence of impulses deﬁned by the magnitudes {ak }. Convolution arises in many parts of physical theory other than the application of linear. Let ∆t be the temporal sample interval and let each of a(t). . the interpretation given here of forming a superposition of scaled and timeshifted copies of a physical response (or impulse response) is appropriate.3) means that it is superﬁcially dimensionally inconsistent with equation (2. These appear in the equation as f (t − tk ) where k = 0 or k = 1.2). 1. then the lower limit may be altered to zero. f (t). as the sequence of input impulses approaches the continuous function a(t). If a completely general expression is desired. then it is elementary to show that a•f = f •a. The limits of integration are formally written from −∞ to ∞ to accommodate all possible input signals. Thus f (t = 0) appears at both t = t0 and t = t1 .2) by a constant with temporal dimensions.30 CHAPTER 2. SIGNAL THEORY The property of linearity has been used to form the scaled sum of two timeshifted copies of the impulse response. The diﬀerence between these sequences and that deﬁned previously for equation (2. This may be remedied either by assuming that {ak } and a(t) have diﬀerent units or. in comparison with equation (2. and the sequence of impulses {ak } has become the continuous function a(τ ). the integration extends over all relevant values of τ . a or f . and g(t) be represented by sequences of discrete samples {ak }. the integration variable τ has taken the place of the summation index k. The property of stationarity has been used in that the response to the input impulse at t = t1 is the same function f (t) as for the impulse at t = t0 . N and the corresponding times {tk }. then equation (2. The presence of the dt time diﬀerential in equation (2.2) is . k = 1.3) Here. If a(τ ) is causal.2) assumes too much about the nature of the input to be considered general.2) Both this equation and equation (2.2).1) places the ﬁrst value that is possibly nonzero at the times of the input impulses. Then equation (2. In a limiting procedure. If a(τ ) vanishes for τ > τmax then the upper limit may be set to τmax . 2. However. the choice of which function. {fk }. f (t). N − 1 so that t = k∆t ranges from 0 to (N − 1)∆t . equation (2. If f (t) is causal. by multiplying the righthandside of equation (2.1) generalizes to the onedimensional convolution integral n g(t) = k=1 ak f (t − tk ).1) are examples of convolution equations though even equation (2. to interpret as the impulse response is arbitrary.3) is symbolized abstractly as g = a•f .4) Thus convolution is said to be commutative and either function can be interpreted as the impulse response with the other being the input signal that provides the weighting. then it must accommodate an input that is a continuous function of time rather than a sequence of impulses. In all cases. . Filters that represent physical systems have the causality property that f (t) = 0 for t < 0. . .3). Now consider the digital sampling of all three of the functions involved in equation (2. (2.
2.1. CONVOLUTION
31
that these new sequences are all sampled at a regular interval. In the previous instance, a sequence of ﬁve impulses required only ﬁve samples regardless of the intervals between the samples. Now, if any of the ﬁve impulses are separated by an interval greater than ∆t then more than ﬁve samples will be needed though the additional samples will be zero. At this expense of possibly including many zero samples, a discrete version of equation (2.3) can be written as
N −1
gj = ∆t
k=0
ak fj−k
(2.5)
where the constant ∆t has been taken outside the summation. In most implementations of digital signal theory, ∆t is a constant throughout the application and it is customary to write equations like (2.5) with ∆t set to unity. Thus, more commonly discrete convolution will be written
N −1
gj =
k=0
ak fj−k .
(2.6)
Exercise 2.1.1. Show that convolution is distributive. That is a • (b + c) = a • b + a • c. Is it better to stack (sum) a series of traces and then ﬁlter the stacked trace or to ﬁlter each one and stack the ﬁltered traces? Why?
Exercise 2.1.2. Let u(t) = exp(iωt). For an arbitrary function v(t) show that the convolution u • v = a(ω)u where a(ω) is a function of frequency and of v. Determine the precise form of a to show how it depends on v.
Exercise 2.1.3. Study the example below and then compute the convolution of r = [1, −.3, 0, −.5, .8, −.8] with w = [.1, .3, .1]. Make a sketch of the process of reversing w and sliding it past r. Redraw this sketch for each output sample.
Example 2.1.1. A simple model of a seismic trace, sk is that it represents a reﬂectivity series, rk convolved with a wavelet, wk . That is sj = k rk wj−k . Let r = [1, .2, −.1, −.5, .5, 0, −1] and w = [1, −.5, .2, ] and compute sj . Assuming that both {r} and {w} begin with sample number 0, s0 is given by s0 = k rk w0−k . The only nonzero contribution to this sum is for k = 0 with the result s0 = r0 w0 = 1. Below, each element of {s} is worked out. In each case, the limits on the summation are adjusted to include only the terms that involve nonzero contributions from {w}. This means that a maximum of three elements occur in each sum. The entire process can be visualized by reversing
32
CHAPTER 2. SIGNAL THEORY
{w} and sliding it past {r}. At each position, the samples that align are multiplied and summed.
0
s0 =
k=0 1
rk w0−k = r0 w0 = 1 rk w1−k = r0 w1 + r1 w0 = −.5 + .2 = −.3
k=0 2
s1 =
s2 =
k=0 3
rk w2−k = r0 w2 + r1 w1 + r2 w0 = .2 − .1 − .1 = 0 rk w3−k = r1 w2 + r2 w1 + r3 w0 = .04 + .05 − .5 = −.41
k=1 4
s3 =
s4 =
k=2 5
rk w4−k = r2 w2 + r3 w1 + r4 w0 = −.02 + .25 + .5 = .73 rk w5−k = r3 w2 + r4 w1 + r5 w0 = −.1 − .25 + 0 = −.35
k=3 6
s5 =
s6 =
k=4 6
rk w6−k = r4 w2 + r5 w1 + r6 w0 = .1 + 0 − 1 = −.9 rk w7−k = r5 w2 + r6 w1 = 0 + .5 = .5
k=5 6
s7 =
s8 =
k=6
rk w8−k = r6 w2 = −.2
2.1.2
Convolution by polynomial multiplication  the Z transform
There is a convenient representation of discretely sampled signals that allows convolution to be done through a simple process of multiplication. Suppose that an Nlength sequence {a} = [a0 , a1 , a2 , . . . aN −1 ] is identiﬁed with a polynomial in a variable z by the relation a(z) = a0 + a1 z + a2 z 2 + . . . aN −1 z N −1 =
N −1
ak z k .
k=0
(2.7)
The resulting function, a(z) is called the z transform of the sequence {a}. Now, recall the rule for the multiplication of two polynomials, for example, let N=3 and multiply a(z)f (z) = a0 + a1 z + a2 z 2 f0 + f1 z + f2 z 2 (2.8)
= a0 f0 + a0 f1 z + a0 f2 z 2 + a1 zf0 + a1 zf1 z + a1 zf2 z 2 + a2 z 2 f0 + a2 z 2 f1 z + a2 z 2 f2 z 2 ; then, collecting terms of like powers of z gives a(z)f (z) = a0 f0 + [a0 f1 + a1 f0 ] z + [a0 f2 + a1 f1 + a2 f0 ] z 2 + [a1 f2 + a2 f1 ] z 3 + [a2 f2 ] z 4 .
(2.9)
2.1. CONVOLUTION
33
Examination of this result shows that the coeﬃcient of each power of z is composed of all combinations of the coeﬃcients of a(z) and f (z) whose subscripts sum to the value of the exponent of z. In fact, the general pattern for the coeﬃcient of z j is k ak fj−k where the sum extends over all relevant values. Comparison with equation (2.6) allows the conclusion: the product of the z transforms of two signals gives the z transform of the convolution of those signals. These concepts establish a link between the theory of discrete, digital ﬁlters and the algebra of polynomials. This link has far reaching implications in signal theory because it allows the many properties of polynomials to be used in signal processing. For example, if polynomial multiplication can perform a convolution, then polynomial division does deconvolution. Later in this chapter, it will be demonstrated that the z transform is a generalization of the discrete Fourier transform provided that z is a complex variable. This means that the result demonstrated above is an example of the convolution theorem that will be proven for Fourier transforms in a later section. It will also be demonstrated that the location of the roots or zeros of a(z) completely determines the behavior of {a} as a digital ﬁlter. Exercise 2.1.4. Use z transforms to repeat the convolution of exercise 2.1.1. Exercise 2.1.5. Given a sequence {a}, show that a(z)z m is the spectrum of the sequence delayed by m samples. Thus z is the unit delay operator. What is the meaning of z −1 ?
2.1.3
Convolution as a matrix multiplication
Usually the integral of the product of two continuous functions can be approximated in a computer as a matrixvector product. The convolution integral provides an important example. Consider the discrete convolution formula
N −1 k=0
gj =
aj−k fk
(2.10)
and compare it to the general formula for the product of a matrix, Mjk with a vector vk that is uj =
k
Mjk vk .
(2.11)
Examination of equations (2.6) and (2.11) shows that convolution can be done by deﬁning a matrix Ajk = aj−k . Written as a matrix operation, equation (2.10) becomes f0 a0 g0 a−1 a−2 . . . a−N +1 g1 a1 a0 a−1 . . . a−N +2 f1 g2 a2 a1 a0 . . . a−N +3 f2 . (2.12) = . . . . . . . . . . . . . . . . . . . . . gN −1 aN −1 aN −2 aN −3 ... a0 fN −1 (If {a} is causal, then the entries above the main diagonal of the matrix will all be zero.) This will be written as an abstract matrix equation as g = Af (2.13)
where the convention is that single underlined quantities are column vectors and a double underline denotes a matrix.
34
CHAPTER 2. SIGNAL THEORY
The matrix A in equation (2.12) has a special symmetry that is required to perform a convolution. Though the matrix has N 2 entries, there are only N independent numbers that all come from {a}. The elements along any diagonal are constant. Each column contains a copy of {a} that has been shifted to place a0 on the main diagonal. Equivalently, each row contains a timereversed and shifted copy of {a}. Matrices with this symmetry are called Toeplitz or sometimes convolution matrices. Since convolution is commutative, it follows that forming a Toeplitz matrix with {f } and a column vector with {a} must give an identical result. One way to visualize the matrixvector multiplication of equation (2.12) is called matrix multiplication by rows. In this process, each row of A multiplies f as a vector dot product. That is, the corresponding elements are multiplied and the resulting products summed to a scalar that becomes the corresponding element of g. This can be written as the set of equations g0 = a0 f0 + a−1 f1 + a−2 f2 + . . . a−N +1 fN −1 g1 = a1 f0 + a0 f1 + a−1 f2 + . . . a−N +2 fN −1 g2 = a2 f0 + a1 f1 + a0 f2 + . . . a−N +3 fN −1 ... = ... gN −1 = aN −1 f0 + aN −2 f1 + aN −3 f2 + . . . a0 fN −1 . (2.14)
This view of matrix multiplication shows how each sample of g (each output sample) is created as a linear superposition of the inputs. An alternate, but equally valid perspective comes from matrix multiplication by columns. Inspection of the equations (2.14) shows that each sample of f multiplies a corresponding column of A. Thus, a column oriented view of matrix multiplication suggests = f0 + f1 + gN −1 aN −1 aN −2 aN −3 g0 g1 g2 . . . a0 a1 a2 . . . a−1 a0 a1 . . . a−2 a−1 a0 . . . a−N +1 a−N +2 f2 + . . . a−N +3 fN −1 . . . a0
(2.15)
In this view, the formation of a convolution by a scaled superposition of impulse responses (the columns of A) is manifest. The ﬁnal result is obtained for all samples simultaneously after the superposition of the ﬁnal scaled column of A.
2.1.4
Convolution as a weighted average
Equation (2.15) shows that matrix multiplication by columns is equivalent to viewing convolution as the scaled superposition of impulse responses. However, equation (2.14) suggests an alternative, and equally valid, interpretation of convolution. This equation shows each element of g being formed as a weighted average of the samples of f with A providing the weights. Of course, since convolution is commutative, g can equally well be regarded as a weighted average of a with a Toeplitz matrix F providing the weights. This view of convolution is valuable since it is often desirable to smooth a physical dataset. For example, a time series that represents the measurement of a slowly changing physical quantity may ﬂuctuate more rapidly than is easily explicable. Such ﬂuctuations may be ascribed to contamination of the measurements by random noise. In this case, the data are often subjected to a running average whereby the k th output point is formed as the average of the input points on either side of sample k. This is also called smoothing. The averaging width, or number of points involved in the average,
such as the boxcar function. plays a central role in signal analysis. . . . a 3length running average uses an averaging operator deﬁned by ak = 1/3. (2. . For example. Fourier’s theory can be deﬁned on either a ﬁnite interval or an inﬁnite domain. ak = 0. These diagonals are ﬁlled with ones... a running average can be implemented as a convolution with a series of m ones. the mathematics community resisted Fourier’s ideas because of the diﬃcult challenges they posed for analysis. these basis functions are the trigonometric sines and cosines of diﬀerent frequencies. g2 = (f1 + f2 + f3 )/3. 2.. THE FOURIER TRANSFORM 35 is an important decision. Their superposition is a summation over a countable set of frequencies and the method is called Fourier series. Here an inﬁnite number of basis functions are required . the connection between averaging and lowpass ﬁltering will be illustrated. Then. 3 . Comparing with equation (2. More relevant to data processing is the case of an inﬁnite interval. Multidimensional averaging works the same way. For example. For a width of m. Thus the conclusion is that a running average is equivalent to convolution with a boxcar. Considered as a function of frequency. . 0 g1 f1 1 1 1 0 0 . the sines and cosines must have amplitudes and phases that depend on frequency. Usually. Later in this chapter. Despite this speciﬁc intent. Here the convolution matrix is nonzero only in the main diagonal and the two subdiagonals above and below the main. the amplitudes comprise the amplitude spectrum and the phases are the phase spectrum of the function being represented. Also problematic was the convergence of Fourier’s series of sines and cosines. . .2. the discrete Fourier transform. a discontinuous function. To construct a speciﬁc function. .2 The Fourier Transform The development of the Fourier transform is one of the most signiﬁcant developments in mathematical analysis.14) shows that. .1 The temporal Fourier transform and its inverse In essence. −1 ≤ k ≤ 1. . 0 f2 g2 1 = 0 1 1 1 0 . or an mlength boxcar. It is easily concluded that a running average using weights other than unity can be expressed as convolution with an appropriate averaging function. only a ﬁnite number of basis functions are required. .. . Fourier developed his ideas in the context of solving the heat equation to study heat dissipation while boring out canons. ... otherwise. On a ﬁnite interval.2. could be synthesized from the superposition of an appropriate set of sine and cosines that are everywhere continuous.. Despite the success of practical applications. weights that ramp linearly from zero to one and back zero can be expressed as a triangular averaging function. for example. f is smoothed by the matrix equation f0 g0 1 1 0 0 0 . The resolution of these and other similar questions is a fascinating chapter in the history of mathematics but is beyond the scope of this text. For example.. it soon became apparent that Fourier’s theory could be used to develop solutions to other partial diﬀerential equations such as Laplace’s equation or the wave equation. .. .2. .16) . Fourier’s theory provides a means to represent an arbitrary function as a superposition (sum or integral) of a set of simpler functions called basis functions. 0 . . Its digital counterpart..... . . it can always be expressed as a multidimensional convolution.. . 2.
An essential tool in Fourier theory is an orthogonality relation. interchange the order of integration of the right and use the orthogonality relation.21) by exp(iˆ t) and integrating over t. At this point. These functions must have unit area but the limit is taken as their support vanishes. There it is modelled as the limit of a sequence of ordinary functions.18) (2. For complex exponentials.17) 2π −∞ where δ(ω − ω ) is Dirac’s delta function that is deﬁned by ˆ ∞ δ(x)dx = 1 −∞ (2. Rather than treating sin(ωt) and cos(ωt) as separate basis functions. This is called the Fourier transform. over the domain −∞ < t < ∞ will integrate to zero. Both terms are simply periodic ˆ ˆ ˆ ˆ oscillatory functions that. If ω = ω .19) δ(x) = 0.36 CHAPTER 2. then exp(ωt − ω t) = 1 and the integral in equation (2. This result is called the sifting property of the Dirac’s delta function. x = 0 and has the fundamental property that s(x)δ(x)dx = s(0) − (2. Intuitively. Given the orthogonality relation. a boxcar of width a and height a−1 has unit area and converges to a delta function in the limit as a → 0. requires distribution theory and that is beyond the scope of this discussion. (2. it can be understood quite simply. the Fourier transform theorem can be derived by postulating an expansion of an arbitrary function s(t) in terms of the complex exponentials s(t) = 1 2π ∞ −∞ S(ω)e−iωt dω. On the other ˆ ˆ hand if ω = ω . this takes the form ∞ 1 ω ei(ω−ˆ )t dt = δ(ω − ω ) ˆ (2. For example. The delta function is actually not a function in the classical sense because it has vanishing support and takes on a singular value (inﬁnity) where the argument vanishes. SIGNAL THEORY and their superposition is accomplished by an integration over frequency. It has been given rigorous meaning through the branch of analysis known as distribution theory.17) is inﬁnite.21) This says that a representation of s(t) is sought as the superposition of an inﬁnite set of complex exponentials having weights S(ω). that does not assume the Fourier inversion theorem. Since Euler’s theorem says eiωt = cos(ωt) + i sin(ωt) and since real and imaginary parts of an equation are independent.22) Now.20) where > 0 and s(x) is any function. S(ω) is unknown but it can be calculated by multiplying equation (2. equation . then exp(ωt − ω t) = cos((ω − ω )t) + i sin((ω − ω )t). it is common to use exp(iωt) = eiωt . the complex exponential provides a decomposition equivalent to independent sin and cosine decompositions. (2.17). that is ω ∞ −∞ ω s(t)eiˆ t dt = ∞ −∞ ω eiˆ t 1 2π ∞ −∞ S(ω)e−iωt dω dt. A proof of equation (2.
24) and (2. however.2. the Fourier transform is always complexvalued. 2. the temporal Fourier transforms will always be written as in the equations (2. It is customary to call S(f ) either the Fourier transform or the spectrum. Also. then its Fourier transform is denoted by a capital letter. even and odd functions For a real or complexvalued function. f .27) In addition to the selection of frequency variables. These arbitrary choices appear in all possible combinations throughout the relevant literature. These terms will be used synonymously in this text. Things work equally well if the sign in the Fourier kernal (i. (2.2.26) and s(t) = ∞ −∞ S(f )e−i2πf t df. the spectrum has both real and imaginary parts that can be denoted in either of two equivalent ways S(f ) = SR (f ) + iSI (f ) S(f ) = Re(S(f )) + iIm(S(f )).2 Real and imaginary spectra. THE FOURIER TRANSFORM (2.25) is measured in radianspersecond. s(t). there are other arbitrary choices in the deﬁnition of a Fourier transform pair. this is just S(ω). exponent of the complex exponential) is negative for the forward transform and positive for the inverse transform.23) Upon renaming ω to ω. In geophysics. The practitioner must be aware of this and always check the deﬁnitions that are in eﬀect before using a particular theorem or result.25) ) can be replaced by (2π)−1/2 in front of both transforms. the Fourier transform pair in cyclical frequency is ∞ S(f ) = −∞ s(t)ei2πf t dt (2.2. which will be called the Fourier transform of s(t). Upon change of variables. the (2π)−1 factor in front of the inverse transform (equation (2. the choice of angular or cyclical frequency variables may vary as is convenient. As a complexvalued function. The variable ω. it is often desirable to use the frequency variable.24)(2.24) and the inverse Fourier transform is s(t) = 1 2π ∞ −∞ S(ω)e−iωt dω.17). ω ω (2.e. In this book. In ˆ summary. (2. Since there are 2π radians in one cycle of a sine wave.25) If a function is denoted by a lower case letter. ∞ −∞ ω s(t)eiˆ t dt = ∞ 37 S(ω) −∞ 1 2π ∞ −∞ ω eiˆ t−iωt dt dω = ∞ −∞ S(ω)δ(ˆ − ω)dω = S(ˆ ). the (forward) Fourier transform of s(t) is given by ∞ S(ω) = −∞ s(t)eiωt dt (2.28) . (2. in units of Hertz or cyclespersecond.27). these variables are related by ω = 2πf . called angular frequency in equations (2.
or the product of two even functions.2. The Fourier transform decomposes a function using the complex exponential.36). Furthermore. (2.2.30) (2. 2. The cosine functions all are even functions of t while the sines are odd functions.36) This means that the imaginary part of the spectrum of s(t) is the spectrum of the odd part of s(t).35) and (2.2. By Euler’s theorem. SIGNAL THEORY An alternate decomposition of the spectrum is employed more commonly than real and imaginary parts. exp(iωt) as a basis.28) and (2.3. the is equivalent to cos ωt + i sin ωt. φS (f ).33) (2. Equations (2. Either one can be used as convenient for whatever problem is at hand.34) Even functions have the property that −a se = 2 0 se while for odd functions −a s0 = 0. s(t) = se (t) + so (t) (2. Similarly.38 CHAPTER 2. An even function has the property that s(−t) = s(t) while an odd function has the property that s(−t) = −s(t).3 The convolution theorem and the diﬀerentiation theorem A very important property of the Fourier transform is that it converts convolution into multiplication. (2.2. Any function can be expressed as a sum of even and odd parts.29) SI (f ) ).32) where se (t) = and se (t) = 1 [s(t) + s(−t)] 2 1 [s(t) − s(−t)] . and the phase spectrum. Prove equations (2. SR (f ) (2. Exercise 2. That is. Show that the product of two odd functions or of two even functions is even.35) That is. the product of two odd functions. Show that a s (t)dt −a o = 0 where a is a positive constant and so is any odd function. 2 a a a 2 2 SR (f ) + SI (f ) (2. Exercise 2. if s(t) is the convolution of u(t) and v(t). the real part of the spectrum of s(t) is the Fourier transform of the even part of s(t).31) .2. Exercise 2.1. From these properties it follows directly that ∞ −∞ se (t)eiωt dt = Re ∞ −∞ s(t)eiωt dt = Re (S(ω)) .31) are equivalent and alternate representations of a spectrum. The amplitude spectrum. AS (f ). the spectrum of s(t) of equation (2. are deﬁned as AS (f ) = and φS (f ) = arctan( Thus the spectrum can be written S(f ) = AS (f )eiφS (f ) (2. it is also true that ∞ −∞ so (t)eiωt dt = Im ∞ −∞ s(t)eiωt dt = Im (S(ω)) . is even while an even function times an odd function is odd.3) is the product .
this is often faster than direct evaluation of the convolution integral because of the fast Fourier transform algorithm. ˆ (2. A careful derivation shows that a factor of (2π)−1 with the result ∞ −∞ u(t)v(t)eiωt dt = 1 2π ∞ −∞ U (ˆ )V (ω − ω )dˆ ω ˆ ω (2. The importance of this result is that it means that a ﬁlter can be applied to a signal in the Fourier domain by multiplying the spectrum of the signal by that of the ﬁlter.37)(2. For digital computations. The mathematics shown in equations (2.42) . Therefore the diﬀerentiation can be moved under the integration sign and performed analytically with the result ∂s(t) = ∂t ∞ −∞ −i2πf S(f )e−i2πf t df.39) Recognizing this integral as an inverse Fourier transform proves the basic result that S(f ) = U (f )V (f ) and this is called the convolution theorem. Thus is follows the the convolution theorem also works in reverse.37) Now.38) requires considerable eﬀort to justify with full mathematical precision. There are subtle but diﬃcult questions such as: ”For what class of functions do the various integrals converge?” and ”Under what circumstances may the order of integration be changed?”.40) Also of great importance is that the Fourier transform reduces diﬀerentiation to multiplication. there is more to this story that will be discussed after the discrete Fourier transform is introduced. These questions have been answered and the operations are valid for a very general class of functions and even distributions. To prove this. For example.41) = ∂t ∂t −∞ Examination of the righthandside of this expression shows that the t dependence occurs only in the exponent of the complex exponential. That is. THE FOURIER TRANSFORM 39 of the spectra of u(t) and v(t). (2. move the τ integral to the inside ∞ ∞ −∞ s(t) = −∞ ˆ U (f )V (f )e−i2πf t ∞ −∞ ˆ e−i2π(f −f )τ dτ df df . The interested reader should consult a treatise in harmonic analysis such as Korner (1988) or Stein (1993). ˆ (2.3) the deﬁnitions of u(t) and v(t) as inverse Fourier transforms of their spectra. For this book. (2. The symmetry of the Fourier transform means that the time and frequency domains are essentially similar. This gives ∞ ∞ −∞ s(t) = −∞ U (f )e−i2πf (t−τ ) df ∞ −∞ ˆ ˆ V (f )e−i2πf τ df dτ.2. it will be assumed that the convolution theorem is valid for all functions encountered. However. consider the calculation of ∂t s(t) given s(t) as an inverse Fourier transform of its spectrum ∞ ∂s(t) ∂ S(f )e−i2πf t df. substitute into equation (2.2. (2. the product u(t)v(t) is the convolution of the spectra of these functions in the frequency domain.38) ˆ ˆ The quantity in square brackets is δ(f − f ) and this then collapses the f integral to give ∞ s(t) = −∞ U (f )V (f )e−i2πf t df.
The phaseshift theorem is especially important with sampled data. 2 More general diﬀerentiation operators can also be computed. This observation means that the Fourier transform is of great importance in solving partial diﬀerential equations. Exercise 2. a linear term is added to the phase. If the sign convention is reversed so that the forward transform is done with exp−i2πf t. Let a(t. angular frequency leads to a simple formula. In this case. then a(t. One subtlety is that the overall sign on the phaseshift depends upon the sign convention used in the Fourier transform deﬁnition. Derive equation (2. Consider the Fourier transform of the timeshifted signal s(t + ∆t) ˆ S(f ) = ∞ −∞ s(t + ∆t)ei2πf t dt (2. That is. In this manner virtually any diﬀerential operator can be converted into an equivalent Fourierdomain multiplicative operator. then the sign of the phase shift required for a positive time shift will be reversed.4.2. if a theory is derived analytically with one sign convention and then implemented with software that uses the other sign convention.46) Thus. S(f ) is the Fourier transform of s(t). Let S(f ) = AS (f )eiφS (f ) and equation (2. confusing results can ensue. then it should be tested with the sign reversed on the phase. This shows that the spectrum of the timeshifted signal may be computed from the spectrum of the original signal by multiplication with e−i2πf ∆t .4 The phaseshift theorem Another important result involving Fourier transforms is the relationship between a time shift and a phase shift.45) becomes ˆ S(f ) = S(f )e−i2πf ∆t = AS (f )eiφS (f ) e−i2πf ∆t = AS (f )eiφS (f )−i2πf ∆t . (2.44) and make the change of variables τ = t + ∆t so that ˆ S(f ) = ∞ −∞ s(τ )ei2πf (τ −∆t) dτ = e−i2πf ∆t ∞ −∞ s(τ )ei2πf τ dτ = e−i2πf ∆t S(f ). That is. This operator has unit amplitude and a phase that is linear in f with a slope −2πf ∆t = −ω∆t.27). .43) α(t. ω) = −iωb1 (t) − ω 2 b2 (t) is called the symbol of the diﬀerential operator. SIGNAL THEORY Thus diﬀerentiation with respect to t can be performed by multiplying the spectrum of s(t) by −i2πf = −iω. ω)S(ω)e −iωt dω where α(t. 2.26)(2. (2.40).40 CHAPTER 2. Thus.46) results from the Fourier transform pair of equations (2. ∂t )s(t) = b1 (t) 1 = 2π ∂s(t) ∂ 2 s(t) 1 + b2 (t) = ∂t ∂t2 2π ∞ −∞ ∞ −∞ −iωb1 (t) − ω 2 b2 (t) S(ω)e−iωt dω (2. As a practical rule. This is because a timeshift that is not an integral number of samples required that new samples be interpolated from the signal. if a phaseshift program does not give the expected results.2.45) In the ﬁnal expression. The magnitude of the slope of the linear term is directly proportional to the magnitude of the time shift. ∂t ) = b1 (t)∂t + b2 (t)∂t be a diﬀerential operator. equation (2. the spectrum of the timeshifted signal is obtained from the spectrum of the original signal by a phase shift .
The complex ¯ ¯ conjugate may also be formed by replacing i by −i wherever it occurs in a complexvalued expression. and operated upon. 1 The complex conjugate of a complex number z is written as z and is deﬁned as z = Rez − iImz. This gives ∞ −∞ S(f )e−i2πf t df = −∞ ∞ ˆ ¯ ˆ S(−f )e−i2πf t d(−hatf ) = ∞ −∞ ˆ ˆ ¯ ˆ S(−f )e−i2πf t df .2. Exercise 2. (2.2.5.2. equation (2. This leads to relationships between the real and imaginary parts in both domains. This symmetry has importance in data processing because it means that only half of the Fourier transform need be computed. Rather. Consider a real signal written as the inverse Fourier transform of its spectrum ∞ s(t) = −∞ S(f )e−i2πf t df. it is achieved implicitly by the discrete Fourier transform.2. This is only possible if there is a relationship between the real and imaginary parts of the spectrum of a real signal. Put another way. and 0 ηdη are all equal to the same number. (2.47) Since a real signal is equal to its complex conjugate1 .50) This means that the negative frequencies are not independent of the positive ones. real function is an even function and that the phase spectrum is an odd function.49) shows that the spectrum of a realvalued signal has the symmetry ¯ S(f ) = S(−f ) or ¯ S(f ) = S(−f ). (2. Considering that the real and imaginary parts of a general complex function are independent. then this interpolation is not required.49) ˆ In the ﬁnal integral. stored. one may always be calculated from the other.5 The spectrum of a realvalued signal Fourier transform theory is developed such that both the timedomain signal and its spectrum can be complex valued. consider that 0 xdx. Show that the amplitude spectrum of a causal. 2. If this is surprising. 0 ydy. 8. f can be freely renamed to f because in a deﬁnite integral the name of the 4 4 4 variable of integration is irrelevant. . the spectrum must have a symmetry. data is inherently real valued but its spectrum is still complex. THE FOURIER TRANSFORM 41 If the time shift is done as a phase shift.48) ¯ where S denotes the complex conjugate of S. Substitution of f = −f will change it back to an inverse transform. The complex conjugation has changed the righthandˆ side from an inverse to a forward Fourier transform. then it must be true that ∞ −∞ S(f )e−i2πf t df = ∞ −∞ ¯ S(f )ei2πf t df (2. So. In a sense. this means that the spectrum of a real signal has two functions that are calculated from one. On the other hand.
56) The factor of i on the righthandside essentially switches the real and imaginary parts around. Since the Fourier transform of δ(t) is the constant 1.51) where h(t) is the Heaviside step function or unit causal function deﬁned by h(t) = 1. the step function would be recovered to within a possible additive constant. This requires the Fourier transform of the step function. it was demonstrated that a realvalued signal imposes a certain symmetry upon its spectrum.42 CHAPTER 2. π ω (2. if δ(t) were to be integrated. This symmetry can be derived from the timedomain requirement for a causal function that s(t) = h(t)s(t) (2.53) An informal justiﬁcation of this result begins with fact that the derivative of the step function is the delta function ∂h(t) = δ(t). this becomes S(ω) = i 1 S(ω) • . (What is the odd part?) Since the Fourier transform of 1/2 is πδ(ω). In section 2. (2. the spectrum of h(t) must be πδ(ω)+i/ω and this is just equation (2.51) is a product of two temporal functions. The development of this expression will lead to the desired symmetry.51) is 1 i S(ω) = S(ω) • πδ(ω) + (2. What is lacking from this result is the Fourier transform of the even part of h(t). A more formal proof can be found in Lancaster and Salkauskas (1996). It follows that integration must correspond to (−iω)−1 = i/ω. (2.55) 2π ω where • denotes a convolution over ω.2) and h(t) is not purely odd. Since S(ω) • δ(ω) = S(ω). t < 0. s(t). the analogous frequencydomain equation must involve a convolution of two spectra.57) . and that is known to be H(ω) = πδ(ω) + i . Using equation (2. ω (2. Decomposing equation (2.3 it was shown that diﬀerentiation in the time domain corresponds to multiplication by −iω in the frequency domain.53) and (2. the even part of h(t) is just the constant 1/2. it might be expected that the Fourier transform of h(t) is i/ω.33). a moments reﬂection shows that this cannot be the entire story since a purely imaginary spectrum corresponds to an odd function in the time domain (see section 2. However. t ≥ 0 0. It follows from the convolution theorem and equations (2. for which s(t) = 0.56) into its real and imaginary parts gives SR (ω) = −1 −1 1 SI (ω) • = π ω π ∞ −∞ SI (ˆ ) ω dˆ ω ω−ω ˆ (2.6 The spectrum of a causal signal In the previous section.2.52) Since. SIGNAL THEORY 2.40) that the Fourier transform of equation (2. equation (2. that is. a function.54) ∂t Thus.2. It is a similar story with a causal signal.53).2. otherwise .
this condition means that A−1 (ω) → ∞ and so equation (2. ω ≥ ωmax This is a very reasonable requirement for any physical system though it does exclude some interesting mathematical signals.7 Minimum phase Consider a physical signal. the Hilbert transform of a function u(x) is deﬁned as 1 ∞ u(ˆ) x H [u] (x) = dˆ x (2. THE FOURIER TRANSFORM and SI (ω) = ∞ −∞ 43 1 1 1 SR (ω) • = π ω π SR (ˆ ) ω dˆ . S (2. (2. The ﬁnite energy requirement for s(t) can be written ∞ total energy = 2 0 A2 (ω)dω < ∞.61) These are the ﬁnal results of this section. suppose AS (ω) > 0 for all ﬁnite ω.63) It is diﬃcult. s(t) with the properties that it has ﬁnite energy and that an inverse ﬁlter.60) 2. to satisfy both of these equations simultaneously.62) The inverse ﬁlter. So the energy for the inverse ﬁlter must be S ∞ total energy of inverse = 2 0 A−2 (ω)dω < ∞. can be constructed for it. then equation (2.2. if not impossible. However. This is deﬁned through AS (ω) = ˆ 1 AS (ω) . A causal signal has the symmetry that the real and imaginary parts of its spectrum are not independent but rather are Hilbert transforms of one another. an ωmax can be found such that > 0. ω < ωmax 0. s(t). Formally.62) is only satisﬁed if AS (ω) → 0 rapidly as ω → ∞. S (2. (2. ω < ωmax AS (ω) → .64) = 0.2. ω ≥ ωmax . Obviously. (2. is deﬁned by s(t) • s(t) = δ(t) from which it is clear that its amplitude ˆ ˆ spectrum must be A−1 (ω).57) and (2. (2. it seems prudent to relax the conditions demanded of s(t) while still maintaining suﬃcient generality to model all physical systems.58) can be written compactly as SR (ω) = −H [SI ] (ω) and SI (ω) = H [SR ] (ω). S Therefore. For example. for a causal s(t).58) The integrals on the righthandsides of these equations are explicit prescriptions for convolution with ω −1 and are called Hilbert transforms. the inverse ﬁlter cannot invert this amplitude spectrum for ω ≥ ωmax so a bandlimited inverse must be acceptable. also with ﬁnite energy.65) are called stable signals.64) and (2. ω ω−ω ˆ (2. It will be assumed that.65) Signals with ﬁnite energy such as those deﬁned by equations (2. .59) π −∞ x − x ˆ so that equations (2.2.63) will diverge.
44 Now consider the signal deﬁned by the spectrum Slog (ω) =
CHAPTER 2. SIGNAL THEORY
ln S(ω) = ln AS (ω) + iφS (ω), ω < ωmax 0, ω ≥ ωmax
.
(2.66)
If it can be shown that Slog (ω) corresponds to a causal signal in the time domain, then the results of section 2.2.6 apply and it can be concluded that ln AS = −H [φS ] and φS = H [ln AS ]. The inverse Fourier transform of equation (2.66) is slog (t) = 1 2π
∞ −∞
Slog (ω)e−iωt =
1 2π
ωmax −ωmax
[ln AS (ω) + iφS (ω)] e−iωt dω.
(2.67)
Equation (2.67) can be considered to be part of a contour integral in the complex ω plane. In addition to the real ω axis from −∞ to ∞ let the contour be closed by a semicircle of radius tending to ∞ either above the real axis, Im(ω) > 0, or below, Im(ω) < 0. For complex ω, the complex exponential becomes exp(iωR t − ωI t), so for positive t the contour is completed above the real axis in order that the real exponential is decaying. Similarly, for negative t, the contour is completed below the real axis. Call contour along the real axis C1, that around the lower semicircle C2, and that around the upper semicircle C3. Cauchy’s integral theorem says that a contour integral of a function of a complex variable around a closed contour is always zero if the function is everywhere analytic within the contour. An analytic function is one that is diﬀerentiable at every point. Thus, if Slog is analytic in the lower halfplane then its integral around C1+C2 is zero. Furthermore, if the integral along C2 vanishes, then so must that along C1. Since C1+C2 is the appropriate contour for t < 0, showing this would prove that slog is a causal function. ∞ By assumption, S(ω) is the spectrum of a causal function, therefore, the integral −∞ S(ω) exp iωtdω must be zero for t < 0. The integral along the contour C2 clearly vanishes because of the exponential attenuation caused by exp(−ωI t) for very large ω. Therefore, a necessary condition for S(ω) to be causal is that it is analytic in the lower halfplane. Now, does it follow that Slog is also analytic? This is true provided that AS (ω) does not vanish for ω < ωmax because the logarithm of 0 is −∞. Since this condition was assumed for invertibility, it follows that Slog is analytic in the lower halfplane. The integral along C2 vanishes for the same reason as for S(ω). Under the assumptions given previously, it follows that the spectrum deﬁned by equation (2.66) is the spectrum of a causal function. Therefore, it follows that Re (Slog ) (ω) = −H [Im (Slog )] (ω) therefore from equation (2.66) ln [AS (ω)] = −H [φS (ω)] and similar reasoning leads to the conclusion that φS (ω) = H [ln (AS (ω))] . (2.70) (2.69) (2.68)
In summary, for a causal, stable signal that has a causal, stable inverse, the log amplitude spectrum and the phase spectrum are a Hilbert transform pair. The phase spectrum deﬁned by equation (2.70) is given the special name of the minimum phase spectrum. In a theorem credited to Robinson (XXXXXXXX) it is shown that, of all causal signals with the amplitude spectrum As (ω), the phase spectrum given by the Hilbert transform of the logarithm of the amplitude spectrum is the smallest
2.2. THE FOURIER TRANSFORM
45
in absolute value at any frequency. In the time domain, the minimum phase signal is the most frontloaded signal possible that is both causal and has the given amplitude spectrum. If the phase is made smaller, then the signal becomes non causal.
Chapter 3
Wave propagation
3.1 Introduction
Seismic wave propagation in the upper layers of the earth’s crust is a complex physical process. For example, a wave emanating from an explosive charge in a shallow (5 to 20 m) hole generally undergoes an immediate and rapid spectral decay before it leaves the near surface1 . Theory predicts that this spectral decay is associated with minimum phase eﬀects that produce the characteristic source waveform (Futterman, 1962). In addition to the primary downgoing pulse, there is always upgoing energy from the source that reﬂects oﬀ of the earth’s free surface to produce a socalled source ghost. In fact, there will be an entire series of similar ghosts that are produced when either the primary or a particular ghost reﬂects oﬀ the base of the near surface and travels up again to reﬂect oﬀ the free surface. Thus, it must always be expected that the downgoing pulse that serves to illuminate the subsurface consists of a complex reverberatory series. The subsurface is commonly idealized as a stacked sequence of nearly homogeneous layers, called formations, whose geometry may be simple or complex. The contacts between the formations are called horizons and are assumed to be in welded contact. (Of course, slip does occur along faults in the subsurface but this is negligible over the timespan of a seismic experiment.) In the case of a sedimentary basin, the formations are assumed to be horizontal and hence their material description depends only on the vertical coordinate. This book adopts the common convention of a righthanded Cartesian coordinate system with the z coordinate oriented in the vertical and increasing downward. Thus it is common to describe the sedimentary basin environment as a v(z) setting by which it is meant that the propagation speed of seismic waves depends only upon the formation depth. (However, even in this setting, it is rarely a good model to assume that the base of the near surface is a horizontal boundary.) More complex settings are found near mountain belts, along passive continental margins, and near the boundaries of sedimentary basins. Here, formations can be greatly distorted from the horizontal due to tectonic compressional or extensional forces. Common jargon for such settings is to say that they are v(x, z) environments which means that seismic wave speed can depend arbitrarily upon position. As a wave propagates into the subsurface, a number of important physical eﬀects occur. When
1 The phrase near surface refers to a deliberately vague region just below the earth’s surface. It is generally considered to be a region of high attenuation where static delays occur. Near surface eﬀects are expected to be surface consistent.
46
3.2. THE WAVE EQUATION DERIVED FROM PHYSICS
47
a wave encounters a horizon (with diﬀerent material parameters on either side) both reﬂected and transmitted waves result. Regardless of the type of incident wave, reﬂections and transmissions are generally found of each possible type of waves called compressional or P , shear or S , and perhaps interface waves. Even if a source can be devised to produce only one type of wave, the propagating waveﬁeld rapidly evolves to contain all possible types going in all possible directions. For idealized elastic media and plane waves 2 the equations governing reﬂection and transmission at a plane interface are known exactly. These algebraically complex equations are given by Aki and Richards (1980) and many approximate forms are also known. Waves also lose energy as they propagate. Even in a perfectly elastic medium, a spherical wavefront suﬀers a 1/r amplitude loss that is a geometric consequence of spherical divergence (or spreading). In real media, there is always some additional loss due to anelasticity and typically quantiﬁed by the dimensionless quality factor Q. These anelastic eﬀects are often modelled by the constant Q theory (Kjartansson, 1980) which refers to a Q that is independent of frequency but may vary with position. All anelastic loss theories predict that attenuation is necessarily accompanied by dispersion or they violate causality. These introductory remarks only hint at the complexity of the true seismic wave propagation process in the earth’s crust. They are mentioned here to give the reader some idea of the drastic simpliﬁcations that will be seen in the theoretical discussions in this chapter. Producing realistic numerical models of seismic wave propagation is a blend of both science and intuition. The science must be pushed to limits dictated by the available computation power but then approximations must be made. The science can be dealt with logically; but, knowing which physical eﬀects are small and can be neglected or developing an approximate expression for a mathematical operator, is often a very subjective process. This chapter will examine computational methods of wave propagation based mostly on the scalar wave equation. Some initial eﬀort will be expended in justifying the mathematical form of the equation and understanding its range of validity. Then raytracing methods for simple media will be developed and used to illustrate fundamental eﬀects. Next methods for the formal solution of the wave equation will be developed. The Fourier method will be shown to emerge from the classical technique of separation of variables. Then Green’s theorem will be used to develop solutions which proceed by integrating over the boundary (or initial) values. Finally, ﬁnite diﬀerence methods will be explored to develop very general solution methods. (Note to the reader: this paragraph refers to the chapter as I hope it to be. It is far from that now. Sorry!)
3.2
The wave equation derived from physics
There are many diﬀerent ‘wave equations’ that arise from physical theory (and many more that 2 occur only in mathematics). The classical scalar wave equation, ∇2 ψ = v −2 ∂t ψ (where ψ is the 2 2 2 2 wave function, v is the wave propagation speed, and ∇ ψ = ∂x ψ + ∂y ψ + ∂z ψ is the Laplacian in 3D), is only one possibility. For example, pressure, P , in an inhomogeneous ﬂuid will be seen to 2 obey the wave equation ∇ · (ρ(x)∇P ) = k(x)∂t P where ρ(x) and k(x) are the heterogeneous density and bulk modulus and x is the position vector. Though apparently quite diﬀerent, what these wave equation have in common with all other wave equations is that they are hyperbolic partial diﬀerential equations (pde’s). A great body of literature exists concerning the solution of pde’s and they are
2 Plane waves are a mathematical idealization because they are necessarily inﬁnite in extent. A point source actually emits spherical wavefronts which may be approximately planar if the radius of the wavefront is large. A spherical wavefront may be mathematically decomposed into plane waves for analysis.
Taylor (1996). that acts to restore the string to it’s equilibrium position.1 A vibrating string Here we will examine the simplest secondorder hyperbolic pde that arises as the governing equation for transverse waves on a vibrating string. Consider the situation shown in ﬁgure 3.1: Tension. There are many excellent works and some that are particular favorites of this author are Morse and Feshbach (1953). T acts on a vibrating string whose displacement is ψ(x) to produce a restoring force F known to fall into three general classes: hyperbolic.1 where a snapshot (i.48 CHAPTER 3. at constant time) of a vibrating string is shown.1. some physical systems that lead to wave equations are examined. The presentation is adapted from that found in Morse and Feshbach (1953). always acts tangentially to this curve. (Here. T (x) is directed tangentially along the string and has a component. The tension on both ends of a diﬀerential element of the string from x to x + dx creates a net force. and elliptic. The solutions to this system are an instructive beginning for the more complex problems in two and three spatial dimensions. WAVE PROPAGATION 6 6 ψ(x) F equilibrium position x x+dx Figure 3. ψ(x) is shown as a dashed curve and the tension. and Durran (1999). In this section. 3. theta is the angle between the string and the horizontal. These books are very practical in their orientation and cannot be said to present the subject of pde’s with full mathematical rigor. It is assumed that the magnitude of ψ(x) is suﬃciently small at all points such that there is no signiﬁcant change in T or in the length of the string. T (x) sin θ. for the very brave. Zauderer (1989). that acts to restore the string to its equilibrium position. T . A discussion of the origin of this classiﬁcation and the meaning of these terms is beyond the scope of this book and the reader is invited to consult a more general reference. At position x in Figure 3. F . The displacement of the string from equilibrium.) The assumption that T (x) is small implies that θ is . For this purpose.e.2. Only systems that are relevant to the seismic exploration problem will be discussed. The one dimensional solutions can be considered as a basis for the common seismic processing step known as stretching that transforms a single seismic trace from time to depth or the reverse. parabolic. Ames (1992). the sophisticated reader may wish to consult Gustafson (1987) or.
It is customary to rearrange equation (3.1 and a negative force is downward. . When the second derivative is positive. that have particle oscillation in the direction of wave propagation. Also typical is the assumption of small displacements. then Newton’s second law (force = mass × acceleration) gives T ∂ 2 ψ(x. are discussed. Considering the tension acting at both ends of the string element between x and x + dx allows the total restoring force on the element to be written as T sin θ(x) T tan θ(x) = T F (x)dx = T ∂ψ(x + dx) ∂ψ(x) − ∂x ∂x (3. Since a positive force is directed upward in Figure 3. ∂x2 (3. In section ?? longitudinal waves. large displacements lead to nonlinear equations. the curvature is concave ( ) and when it is negative the curvature is convex ( ). Generally.3) This important result says that the restoring force (per unit length) depends on the local curvature of the string. that is when a displacement is initiated in a continuum. If there are external forces being applied to the string as speciﬁed by the force density 4 function 3 It is quite common to use velocity for this scalar quantity even though velocity is classically a vector quantity in physics.2) where F (x) is the force per unit length and the minus sign in the square brackets is needed because the tension acts at x and x + dx in opposite directions. The waves modelled here are known as transverse waves because the particle displacement is in a directional orthogonal to the direction of wave propagation.2. This book conforms with this common usage. t) − 2 =0 2 ∂x v ∂t2 (3. equation (3.2) leads to F (x) = T ∂ 2 ψ(x) . t) ∂ 2 ψ(x.5) where µ is the mass per unit length and the dependence of ψ on both space and time is explicitly acknowledged. Wave equations invariably arise in this context. = lim 2 dx→0 dx ∂x ∂x ∂x Thus in the limit as dx becomes inﬁnitesimal. THE WAVE EQUATION DERIVED FROM PHYSICS also small.3. it is easy to see that this force does act to restore the string to equilibrium.6) where v = T is the wave velocity 3 This analysis has shown that the scalar wave equation arises µ for the vibrating string as a direct consequence of Newton’s second law. t) 1 ∂ 2 ψ(x.5) to give the standard form for the onedimensional scalar wave equation as ∂ 2 ψ(x. If the string’s weight is negligible. t) =µ 2 ∂x ∂t2 (3.4) (3. This allows 49 ∂ψ(x) (3.1) ∂x where the last step follows from the geometric deﬁnition of the derivative. Now. recall that the deﬁnition of the second derivative of ψ(x) is ∂ 2 ψ(x) 1 ∂ψ(x + dx) ∂ψ(x) − .
Thus the total ﬂuid pressure is P (x) + P0 .7) are examples of onedimensional hyperbolic pde’s with constant coeﬃcients. (ψ1 (x+vt) means an arbitrary onedimensional function of x+vt and similarly for ψ2 (x − vt)).50 S(x. Hyperbolic pde’s can usually be recognized right away because they involve the diﬀerence of spatial and temporal partial derivatives being equated to a source function. Exercise 3.9) The quantity θ is the volume strain or dilatation and is a measure of local fractional volume change. WAVE PROPAGATION 1 ∂ 2 ψ(x.2 An inhomogeneous ﬂuid labelssec:ihf An inhomogeneous ﬂuid is one whose physical properties vary with position5 . The bulk modulus is a material property deﬁned by the relation P (x.7) Both equations (3. What values does the constant a take in each expression? Show that ψ(x. S(x. In other words. t) −a =0 ∂x ∂t where a is a constant.9) is Hooke’s law for a ﬂuid.8) 3. Equation (3. t) ∂φ(x. is unfortunate that inhomogeneous is used in at least two very diﬀerent contexts in this theory.6) and (3. Let P (x) represent a pressure ﬂuctuation from the ambient pressure P0 in the ﬂuid. t) ∂ 2 ψ(x. Here the word refers to physical parameters that vary with position. t) = ρ(x) dν(x. the motion of the ﬂuid is deﬁned by Newton’s second law −∇P (x. t).6) is usually modiﬁed to CHAPTER 3. though ∂t θ = ∇ · ν. As with the vibrating string. t). then equation (3. The minus sign in equation (3. Can you explain the physical meaning of this result? (3. a ﬁrst order wave equation known as the advection equation is ∂φ(x. t) = ψ1 (x + vt) + ψ2 (x − vt) is a solution to (3.6) is said to be homogeneous while the presence of the source term. equation (3.2.2. t) . 5 It 4 In . − 2 = ∂x2 v ∂t2 T (3.6) can be factored into two operators of the form of the left side of equation (3. t). t).1. in (3. t) S(x.6) by showing that the two factors annihilate ψ1 or ψ2 .10) This says that spatially changing pressure causes local forces in the ﬂuid that give rise to local this context this is just a fancy way of saying force per unit length.8). Let ρ(x) and K(x) be the density and bulk modulus of such a ﬂuid.7) gives it the label inhomogeneous. Wave equations can be second order in their derivatives as these are or any other order as long as the highest order of the time and space derivatives are the same. (3. t) = −K(x)θ(x.9) is needed because an increase in pressure causes a decrease in volume and viceversa. This is an example of a constitutive relation that deﬁnes how stress relates to strain. In the previous section the word referred to a pde with a source term and that usage has nothing to do with this. θ is related to particle velocity. For example. This relation says that the pressure ﬂuctuations are directly proportional to induced volume changes. dt (3. ν. t) . We assume that the ﬂuid is at rest except for those motions induced by the pressure disturbance P (x. Show that the left side of equation (3.
For this reason.13) to give ∇2 P (x.14) to develop an approximate solution to the more complex Equation (3.g.12) and substituting equation (3. it is possible to use a solution of (3. t) =0 v2 ∂t2 (3.14). t) ∂ ∇ · ν(x. such time derivadt tives consist of two terms as dT = ∂T + (ν · ∇)T where T denotes any scalar ﬂuid property such as dt ∂t temperature. it still has quite general application. the gradient points from low to high pressure but the ﬂuid will move from high to low pressure.11) into the ﬁrst term on the right side and ∂t of equation (3.10) is rewritten approximately as ∂ν(x. t) − ρ(x) ∂ 2 P (x.13). Show that the volume dilatation. θ also satisﬁes a scalar wave equation.13) 1 where ∇2 = ∇ · ∇ and ρ ∇ρ = ∇ln ρ have been used. Exercise 3. THE WAVE EQUATION DERIVED FROM PHYSICS 51 particle accelerations.9) into the second. This gives ∇2 P (x. In many other cases when ρ(x) varies slowly the term will be negligible. t) = ∇ρ(x) · ∂ν(x. t) but rather plays the role of a source term in scalar wave equation. This occurs exactly if ρ(x) is constant. (3. The minus sign is also necessary here because the local forces caused by the pressure gradient point in the direction opposite to the gradient.13) then we would have a classic scalar wave equation for pressure. −∇ · ∇P (x. then it can be used to approximately express the ∇ ln ρ · ∇P term in (3. t) −∇P (x. a nonlinear wave equation will result. . t) be a solution to equation (3. t).15) The term on the right does not depend upon the unknown P (x. If the term is included. Though a number of assumptions have been made in deriving this result.11) ∂t A wave equation for pressure can be derived by taking the divergence of (3. The ﬁrst term describes local temporal changes (e. ∂t2 (3. Neglecting the ∇ln ρ term then gives ∇2 P (x. Thus the eﬀect of strong density inhomogeneity introduces an approximate source term whose strength is proportional to the logarithmic gradient of density. t) = ρ(x) .11). Let ˆ P (x. The assumption that the ﬂuid is at rest except for the motions caused by the passing pressure wave allows the convective term to be neglected.2. local heating) while the second describes changes due to new material being transported to the analysis location by ﬂuid motion.14) is a scalar wave equation that approximately models the propaρ gation of pressure waves through an inhomogeneous ﬂuid. equation (3.2. t) − ∇ ln ρ(x) · ∇P (x. t) − 1 ∂ 2 P (x. Thus. t) ˆ = ∇ ln ρ(x) · ∇P (x. the second term is known as the convective term. Also. If the second term were absent in equation (3.14) where v = K . t) − 1 v 2 (x) ∂ 2 P (x. The interpretation of the dν requires some care. + ρ(x) ∂t ∂t (3. t) . This process can be repeated indeﬁnitely with the solution from iteration n1 being used to compute the eﬀective source term for iteration n.2. Generally in ﬂuid dynamics. That is. Equation (3. t) =0 K(x) ∂t2 (3.3.
Zhengsheng Yao. z. These functions both pad the entire boundary of the input matrix with extra rows and columns of zeros and this works better with absorbing boundaries. t) + ψ(x. z. t + ∆t) is estimated from the superposition of three terms: 2ψ(x.18) This is an expression for time stepping the waveﬁeld. for modelling with the variable velocity acoustic wave equation in two dimensions. del2 5pt and del2 9pt . It shows that estimation of the waveﬁeld at t + ∆t requires knowledge of the two earlier waveﬁelds at t and t − ∆t. in a computer simulation. t) = ψ(x + ∆x. and −ψ(x. Experimentation showed that del2 was not optimal for use with absorbing boundary conditions so two alternate Laplacians. z.19) . timestepping a waveﬁeld. Thus del 5pt computes the approximation ∇2 ψ(x. t + ∆t) − 2ψ(x. t − ∆t). source speciﬁcation.2. z. t − ∆t)] ∆t2 v 2 (x. they are all two dimensional matrices. t + ∆t) = 2 + ∆t2 v 2 (x. z)∇2 ψ(x. This expression can be solved for the waveﬁeld at t + ∆t to give ψ(x. t). were created. t) ∆x2 ψ(x. z. z. Sources and receivers can be positioned anywhere within the 2D medium (including on the boundaries) and absorbing boundary conditions are implemented. z.17) where ∆t is the time discretization interval. t) = 1 [ψ(x. t) + ψ(x − ∆x. z + ∆z. z. WAVE PROPAGATION Exercise 3. z. Subsequently it has been evolved by this author and Dr.16) A secondorder approximation for the time derivative may be implemented as ∇2 ψ(x.52 CHAPTER 3. Consider the variablevelocity scalar wave equation in two dimensions ∇2 ψ(x. Consider the 1D inhomogeneous ﬂuid. z. Write down the wave equation that approximately models pressure waves in a long narrow cylinder. the second requires the computation of the Laplacian (∇2 ) on the current waveﬁeld which is an expensive operation. t) − 2ψ(x. t) + ∆z 2 (3. using second order ﬁnite diﬀerence approximations. 3. seismogram creation. z. t) − 2ψ(x. z. z. z. Each of these waveﬁelds is called a snapshot and. t) 1 + = 2 . z. z. z) ∂t2 (3.3 Finite diﬀerence modelling with the acoustic wave equation This section describes a simple facility for ﬁnite diﬀerence modelling using the acoustic wave equation. z) (3. and making waveﬁeld movies. t) − ψ(x. z. t) ∂ 2 ψ(x. del2 5pt implements ∇2 using secondorder ﬁnitediﬀerence operators while del2 9pt uses fourthorder. z − ∆z.18) shows that ψ(x. MATLAB supplies the function del2 that computes . The facility provides tools for model building. z.3. This toolkit was originally developed by Carrie Youzwishen who was employed by this author for that purpose. z)∇2 ψ(x. t − ∆t). t). ∆t2 v 2 (x. The package provides a basic facility. z.25∇2 of a matrix using centered secondorder ﬁnite operators that are modiﬁed near the boundary. 2 2 ∂x ∂z v (x. t) ∂ 2 ψ(x. Equation (3. z. t) = ∂ 2 ψ(x. Of these. (3. t) + ψ(x.
z. t) − ψ(x − 2∆x.3. t) and similarly for δzz . 1980). the factor ∆t2 v 2 ∆x−2 is a possible ampliﬁcation factor if it becomes too large. all of the ψ terms can be considered to have similar magnitude. z.18). a = 8 while for equation (3. Typically. Function afd snap requires two input waveﬁelds representing ψ(x. t + ∆t) according to equation (3. a desired temporal frequency range is known. z.20) The core function in the ﬁnite diﬀerence toolbox is afd snap (the ‘afd ’ preﬁx stands for acoustic ﬁnite diﬀerence). In this expression. z. The use of equation (3. z.22) ∆x a where the constant a is the sum of the absolute values of the weights for the various waveﬁeld terms in the ﬁnitediﬀerence approximation for ∇2 . z. t)] ∆x2 (3. Then. t) = 1 [−ψ(x + 2∆x.20). z. t) − 30ψ(x. z. z.19). Thus the stability conditions are 1 vmax ∆t √2 secondorder Laplacian. t) + δzz ψ(x. Receivers are simulated by extracting samples at each receiver location from each ψ(x. The key to this behavior is the amplitude of the ∇2 ψ(x. ∆x 8 Thus. z. z. Thus. z. Technically. this is because the operators cause an artiﬁcial dispersion called grid dispersion. z. These extracted samples may be accumulated in vectors representing the recorded traces.19) (with ∆z = ∆x) in equation (3. in the creation of a model. Two initial waveﬁelds must be constructed to start the simulation and sources may be prescribed by placing appropriate impulses in these two waveﬁelds. z. t)] + 12∆x2 1 [−ψ(x + 2∆z. ≤ (3. z.3. t) term in equation (3. t) − 30ψ(x. Using the ﬁvepoint Laplacian of equation (3. Instability means that the amplitudes of the waveﬁeld grow without bound as it is stepped through time. z. t + ∆t) = 2ψ(x. This function is intended to be used in a computation loop that timeincrements a waveﬁeld any number of steps. t − ∆t) + ∆t2 v 2 [δxx ψ(x. FINITE DIFFERENCE MODELLING WITH THE ACOUSTIC WAVE EQUATION and del2 9pt computes 53 ∇2 ψ(x. For the Laplacian of equation (3. since v is a function of (x. t)] 12∆z 2 (3. t) + 16ψ(x − ∆z. z. t) − ψ(x. z. t) + 16ψ(x + ∆z. a = 128/12 = 32/3. ﬁnitediﬀerence operators need many more samples than the Nyquist criterion of two per wavelength. the minimum wavelength is given by λmin = vmin /fmax and the spatial sample rate can be chosen to achieve a desired number of . z. z. Generally. z. t) − ψ(x − 2∆z. t) − 2ψ(x. t) + 16ψ(x + ∆x.18) in a timestepping simulation is known to be unstable in certain circumstances (Mitchell and Griﬃths. (1999) show that the condition for stability is 2 v∆t ≤√ (3. t) + 16ψ(x − ∆x. t) and ψ(x. Grid dispersion preferentially aﬀects the shorter wavelengths so oversampling reduces the dispersion.18). t) as it is computed.23) 3 fourthorder Laplacian. t − ∆t) and computes ψ(x. Also. t) = ψ(x + ∆x. z. A good rule of thumb is about ﬁve to ten samples per wavelength.21) where δxx ψ(x. z) it suﬃces to use the maximum velocity in the model. z.18) leads to ψ(x. the time and space sample rates cannot be chosen independently. t) + ψ(x − ∆x. z. Lines et al. z.
1 illustrates the use of these ﬁnite diﬀerence facilities to model a single shot record. z) coordinates of the four vertices of a rectangle representing the ﬁrst layer.seis2.snap1.[5 10 30 40].zpoly).%time step dt=.004. In all of these ﬁnite diﬀerence codes. The velocity model is a matrix representing vins in (x. the velocity model has three layers with horizontal interfaces and layer velocities of 2000 m/s. . dtstep=.. 3.0.dt.nz).dtstep. First. The results are shown in Figures 3. afd shotrec is provided to create a source record and afd exreflector will create exploding reﬂector models.. 2800 m/s. Then the source conﬁguration is described by placing appropriate impulses in these two snapshots.dx=10. the receiver positions.xrec. This code illustrates the use of afd shotrec to model a shot record. Subsequently.xpoly. v1=2000.. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 %make a velocity model nx=128.nz=128. Finally the temporal sample rate is chosen to achieve stability.v3=3200. On line 6.. snap2=snap1.%velocities vmodel=v3*ones(nx.snap1.3.zrec. the wavelet. xpoly=[dx2 max(x)+dx2 max(x)+dx2 dx2].1.54 CHAPTER 3.tmax. and 3. The function afd vmodel is a convenience function that ﬁlls in a polygonal area in a matrix with a constant value. The model is built by ﬁrst deﬁning (x.xpoly. A property of the . . End Code Code Snippet 3. %basic geometry x=(0:nx1)*dx. the vertical and horizontal sample sizes must be identical.%receivers at zero depth snap1=zeros(size(vmodel)). Lines 111 build the velocity model and lines 1325 create a secondorder and a fourthorder seismogram. snap2(1. two polygons are deﬁned to represent the two upper layers.[5 10 30 40]. zpoly=[z1+dx2 z1+dx2 z2+dx2 z2+dx2]. Usually. the desired Laplacian (ﬁve point or nine point). afd shotrec requires inputs giving: the temporal and spatial sample sizes. the velocity matrix. the user will not invoke afd snap directly. the maximum record time. z1 and z2 are the depths to the bottom of the ﬁrst and second layers. z) coordinates of its nodes and the coordinate origin is assumed to be the upper left corner of the model. and 3200 m/s.%place the source %second order laplacian [seismogram2. vmodel=afd_vmodel(dx.snap2.%receiver locations zrec=zeros(size(xrec)).seis4. z) coordinates (lines 23) and ﬁlling the velocity matrix with 3200 m/s (line 5).vmodel.v1. vmodel=afd_vmodel(dx.zrec.dt. z1=(nz/8)*dx.snap2. The snapshots should be initialized to matrices of zeros the same size as the velocity model.0.tmax.1). The exploding reﬂector model and afd exreflector will be described in chapter 5 and only afd shotrec will be discussed here.v2=2800. Instead. %fourth order laplacian [seismogram4.z=(0:nz1)*dx. a threelayer velocity model is deﬁned on lines 1 through 11 by calling afd vmodel twice.%time sample rate and max time xrec=x.t]=afd_shotrec(dx. vmodel.2).v2.dtstep. A simple strategy is to leave snap1 as all zeros and simply place impulses in snap2.4. Line 8 deﬁnes the (x. vmodel. In this example.zpoly).length(x)/2)=1.2. WAVE PROPAGATION samplesperwavelength.tmax=1.z2=(nz/2)*dx. z) space.vmodel.t]=afd_shotrec(dx.zpoly=[dx2 dx2 z1+dx2 z1+dx2]. and the two initial snapshots of the waveﬁeld (snap1 and snap2).xrec. Code Snippet 3. The polygonal area is deﬁned by the (x.3.3. dx2=dx/2.001.
At this stage.004 seconds will attenuate frequencies above about half of Nyquist. The source is speciﬁed by placing appropriate nonzero samples in snap2. This ensures that the rectangle extends to the limits of the velocity matrix.1 creates two seismograms. This is sensible because it is a well known property of ﬁnitediﬀerence methods that the higher frequencies are physically inaccurate.. t = −∆t) and ψ(x.001 seconds is 1000 Hz while for . This plot was made using plotimage(vmodel3000. The resulting velocity model is shown in Figure 3. The preparation for the seismograms deﬁnes the time step (line 13). A constant is subtracted from the velocity model so that the resulting matrix has both positive and negative values as expected by plotimage .2. algorithm used by afd vmodel is that points that lie exactly on the boundary of the polygon are considered outside the polygon and so do not acquire the new velocity. In this case. maximum time (line 14). The variable dx2.z. afd shotrec internally calculates the seismogram at the sample rate of the time step and then resamples it to the desired temporal sample rate. In this case. Considering that the antialias ﬁlter for resampling to . all of the input parameters to afd shotrec have been described except for the ﬁnal three. a point source in the center of the x axis at z = 0 is simulated. Code Snippet 3..004 seconds it is 125 Hz. The raypaths shown in this ﬁgure correspond to traveltimes shown in Figures 3.3 and 3. In this case.3. Ormsby ﬁlter speciﬁcations are given as [5 10 30 40] and this means that the ﬁlter pass band begins at 5 Hz. The time step is generally chosen to be small enough to satisfy the stability requirement (equation 3. FINITE DIFFERENCE MODELLING WITH THE ACOUSTIC WAVE EQUATION 0 0 200 400 meters 600 800 1000 1200 200 400 meters 600 800 1000 1200 55 Figure 3. the ﬁrst (line 21) uses a secondorder Laplacian (equation 3. this example anticipates using only frequencies below about 60 Hz and that is less than 10% of the original Nyquist.3. z. t = 0) respectively.23) and the temporal sample rate is usually much more coarse.19) and the second (line 23) uses a fourthorder Laplacian (equation 3.x). temporal sample rate (line 14). the phase of the ﬁlter. the receiver locations (lines 1516) and the source strength and geometry (line 19). and the order of the Laplacian. reaches full amplitude at 10 Hz. is used on line 8 to deﬁne a rectangle that is half a grid spacing above depths 0 and z2 and half a grid spacing outside the minimum and maximum x coordinates.20). deﬁned on line 7 as half of the grid spacing. .1. Line 9 ﬁlls this rectangle with the velocity of 2000 m/s and then lines 10 and 11 repeat this process for the next layer.3. The variables snap1 and snap2 created on lines 1719 represent the waveﬁeld ψ(x. the Nyquist frequency for a sample rate of . They are created to be the same size as the velocity model and snap1 is a matrix of zeros.3.2: The velocity model created in Code Snippet 3.4. These specify the ﬁlter (or wavelet) to be convolved with the seismogram. z.
2.3: The secondorder seismogram created on line 21 of Code Snippet 3. the ﬁrstorder multiple in the top layer. the direct wave near the source would be the only visible arrival. and the primary reﬂection oﬀ the bottom of the second layer. frequency).4 0.6 seconds 200 400 600 800 meters 1000 1200 0. Both of these ﬁgures are plotted with a highly clipped display.8 0. See Figure 3. Figure 3. The seismograms are shown in Figures 3.3 for a description of the superimposed traveltimes.8 1 0 1 0 200 400 600 800 meters 1000 1200 Figure 3. This time lag occurs because the ﬁnite diﬀerence approximations to the derivative in the wave equation have a frequencydependent performance. The penultimate parameter speciﬁes the phase of the ﬁlter that is. Essentially. The reﬂections for these events lag signiﬁcantly behind the raytraced traveltimes but more so on the secondorder solution.4 respectively. the ﬁrstorder multiple reﬂecting between the bottom of the ﬁrst layer and the surface. The corresponding raypaths are shown in Figure 3.1. the approximation becomes very poor. meaning that the actual propagation speed of waves on the grid is not simply vins (x.2 0.2 seconds 0. the approximate derivatives are acceptable but. equivalently. z) but is a complex function of wavelength (or. begins to ramp down at 30 Hz.3. for wavelengths that are large compared to the computation grid. The traveltimes for these events are superimposed on the righthand sides of the ﬁgures and their raypaths are shown in Figure 3.6 0.4 0.. these two seismograms are signiﬁcantly diﬀerent. and the second primary reﬂection.2.4: The fourthorder seismogram created on line 23 of Code Snippet 3. Though similar at ﬁrst glance. It also makes the apparent wavelet appear more elongated (dispersed). Grid dispersion makes the reﬂections appear to lag behind the corresponding raytrace traveltimes. . and rejects frequencies above 40 Hz. Comparison of the ﬁrst reﬂection at far oﬀsets on both seismograms shows that the secondorder result has a more dispersed waveform.56 0 0 CHAPTER 3. Also.3 and 3.1. zero (a value of 1 gives minimum phase). WAVE PROPAGATION 0. or 2. indicating a secondorder Laplacian. The three hyperbolic reﬂections on each ﬁgure are (from the top) the primary reﬂection oﬀ the bottom of the ﬁrst layer. as the wavelength approaches the grid spacing. Superimposed on the righthand side are raytraced traveltimes for (from top to bottom) the ﬁrst primary reﬂection. meaning a fourthorder approximation. The result is a phenomenon known as grid dispersion. otherwise.3. The last parameter is either 1. the fourthorder result has a smaller lag behind the raytrace traveltimes than the secondorder for all reﬂections. in this case.
let the interface be at z = 0 and continuity of displacement is expressed by f z=0 + gz=0 = hz=0 . These are typical artifacts known as edge eﬀects. THE ONEDIMENSIONAL SYNTHETIC SEISMOGRAM 57 Careful inspection of both Figures 3. Comparison of 1D synthetic seismograms with seismic data. They arise because a computer simulation of wave propagation must always operate in a ﬁnite domain with deﬁnite boundaries. This is because the absorbing boundary conditions are optimized for a small range of wavefront incidence angles around normal incidence. The well logging is usually conﬁned to a certain depth zone beginning at the exploration target and extending upwards perhaps hundreds of meters. ρ2 are the velocities and densities of the upper and lower media. Typically. Here f.9). g. for an inhomogeneous ﬂuid. These boundary reﬂections would be much worse if afd shotrec did not incorporate absorbing boundaries (Clayton and Engquist. The estimation of the appropriate wavelet is a potentially complex task that is called wavelet analysis. 1977). That is. absorbing boundaries are not perfect but they do help. The ﬁrst condition is required so that the interface remains in welded contact during the passage of the wave. These 1D synthetic seismograms are a very important tool in seismic interpretation. a process called tieing. 3. The reﬂected and transmitted waves can be determined in terms of the incident waves by requiring that the total waveﬁeld satisfy continuity of displacement and continuity of pressure. the impulse response. velocity and density information are provided through well logging as ﬁnelysampled functions of depth. t). Hooke’s law relates the applied pressure to the negative of the diﬀerential .1 Normal incidence reﬂection coeﬃcients Consider a 1D displacement wave incident from above upon an interface where α1 .3 and 3. (3. After migration. or for nearly horizontal reﬂectors in any case. ρ1 and α2 . The boundary related artifacts can be seen to be generally quite steeply dipping in (x.4.3. The theory is also very ﬂexible in that it allows the explicit separation of the various physical eﬀects.31 meters. The theory presented here constructs the response of the 1D medium to a unit impulse. When a wave encounters such a boundary.4 The onedimensional synthetic seismogram For a onedimensional acoustic medium. and the transmitted wave by h(t − z/α2 ). Obviously. This is because the local force is determined by the pressure gradient and a discontinuous pressure means an inﬁnite force and that means inﬁnite acceleration. the 1D model is quite appropriate. As show in equation (3. For deﬁniteness. say.4. it behaves as though it has met a perfect reﬂector. 3. the reﬂected wave by g(t + z/α2 ). there exists an algorithm that can generate a complete synthetic seismogram that includes all multiples and the eﬀects of transmission losses.24) To develop a form for continuity of pressure. and this must be convolved with an appropriate wavelet before comparison with seismic data. andh represent arbitrary functions describing traveling waves. Hooke’s law can be used. allows reﬂections from key geologic markers to be identiﬁed. The near surface is rarely logged and is usually represented as a homogeneous layer whose velocity is selected to optimize the tie between the synthetic seismogram and the seismic data. A common sample rate is 1 foot or . 30◦ is partially reﬂected. The second condition is needed to ensure that local acceleration remains ﬁnite at the interface. Let the incident wave be described by f (t − z/α1 ). a wavefront that encounters the boundary at normal incidence is completely absorbed while one making an angle of.4 shows a set of events that originate where each reﬂection meets the sides of the seismogram and then cross in the center of the ﬁgures.
equations (3. Exercise 3.27) constitute two linear equations for the two unknowns g and h.28) shows. Deﬁning the acoustic impedance I = ρα the solution can we written as gz=0 = −Rf z=0 hz=0 = T f z=0 where the reﬂection coeﬃcient.14) it was shown that the wave velocity is given by the square root of the bulk modulus divided by the density. In 1D this reduces to p = −K∂z u where p is pressure. or equivalently. the reﬂected wave is actually −R times the incident wave. K = ρα2 . In the development of equation (3. In this case. then is the pressure a compression or a rarefaction? What about if the displacement is in the opposite direction to the direction of wave propagation. This is because these are displacement waves and the direction of particle displacement reverses at a positive impedance contrast. and the transmission coeﬃcient.25) becomes ρ1 α1 f z=0 + ρ1 α1 g z=0 = ρ2 α2 h z=0 which can be immediately integrated to give ρ1 α1 f z=0 + ρ1 α1 gz=0 = ρ2 α2 hz=0 .29) (3. and K is the bulk modulus. ?? By directly computing pressures. Thus continuity of pressure can be expressed by 2 ρ1 α1 ∂f ∂z 2 + ρ1 α1 z=0 ∂g ∂z 2 = ρ2 α2 z=0 ∂h ∂z . T → 0 and continuity of displacement requires that the reﬂected wave have equal and opposite displacement to that of the incident wave. WAVE PROPAGATION volume change.28) The reﬂection coeﬃcient is deﬁned such that a transition from lower to higher impedance is a positive R. This can be understood by considering the limiting case of I2 → ∞ corresponding to incidence upon a perfectly rigid material.4. T are given by I2 − I1 I2 + I1 2I1 . I= I2 + I1 R= (3. Also show that the transmitted pressure is +T times the incident pressure. u is displacement.58 CHAPTER 3. R. Explain these results with a physical description.1.25) −1 Since f = f (t − zalpha1 ). As the ﬁrst of equations (3.24) and (3. (3. Deﬁne I = (I1 + I2 )/2 and ∆I = I2 − I1 . It is easily shown that R + T = 1. Thus the displacement and pressure waves have the same transmission equation but there is a sign diﬀerence in their reﬂection expressions. equation (3. z=0 (3. With similar considerations for g and h. (Hint: If the particle displacement is in same direction as the wave propagation.30) (3. show that the reﬂected pressure is +R times the incident pressure.26) (3. then ∂z f = −α1 f where f is the derivative of f with respect to its entire argument. A wave incident from below on the same interface will experience a reﬂection coeﬃcient of −R and a transmission coeﬃcient of I2 T /I1 = 1 + R.27) Considering the incident waveﬁeld as known.? Is a compression a positive or negative pressure? Why? ) An alternative form for the reﬂection and transmission coeﬃcients involves writing them in terms of the contrast and average of impedance across the layer.
. The transmitted wave. 3. of amplitude 1 − R1 crosses the ﬁrst interface and reﬂects with reﬂection coeﬃcient −R2 . let the thicknesses be chosen such that ∆zk ∆t = = constant αk 2 (3. However.5∆I T = . . A primariesonly synthetic seismogram of displacement for N reﬂectors is . Given this discrete approximation to the desired model.31) Using I = ρα allows R to be reexpressed as R= 1 ∆α ∆ρ + 2 α ρ (3. k = 1. The minus sign arises from equation (3. The reﬂection from the ﬁrst interface will have magnitude −R1 and will arrive at the receiver at time ∆t. The constant ∆t becomes the temporal sample rate of the output seismogram. greater realism is obtained by choosing ∆t much smaller than the desired sample rate and resampling the seismogram after it is computed. α(z) and ρ(z) can be approximated with arbitrary accuracy. Furthermore. let α(z) and ρ(z) be approximated by a discrete sequences {αk } and {ρk }. This 2 second reﬂection has a z transform of −(1 − R1 )R2 (1 + R2 )z 2∆t = −(1 − R1 )R2 z 2∆t so the net 2 transmission eﬀect of twoway passage through the ﬁrst interface is 1 − R1 . In order to apply the results of the previous section. N representing a stack of homogeneous layers having thicknesses of {∆zk }. let the sequence {Rk } denote the reﬂection coeﬃcient at the layer bottom for incidence from above. A z transform expression conveniently expresses the ﬁrst arrival as −R1 z ∆t . This requirement is not strictly necessary for the theory but is convenient for algorithm development. Similar reasoning leads 2 2 to the z transform of the third reﬂection as −(1 − R1 )(1 − R2 )R3 z 3∆t and for the general j th arrival j−1 2 j∆t − k=1 (1 − Rk )]Rj z .33) where ∆t is a constant giving the twoway traveltime across any layer.32) which expresses the contributions of both α and ρ to the reﬂection coeﬃcient. 2. It recrosses the ﬁrst interface from below with a transmission coeﬃcient of 1 + R1 and then arrives at the receiver. it is possible to explicitly calculate all primary reﬂections. I 59 (3.4. For each layer. It is quite acceptable to have many layers with nearly zero impedance contrasts. By choosing ∆t suﬃciently small.4.28) become R= ∆I 2I I − .3. The condition means that homogeneous intervals of high velocity will be represented by more samples than corresponding intervals of low velocity.2 A ”primariesonly” impulse response Consider a layered 1D medium described by wave velocity α(z) and density ρ(z) for z ≥ 0. THE ONEDIMENSIONAL SYNTHETIC SEISMOGRAM and equations (3. Let a coincident sourcereceiver pair be placed at z = 0 and let the source emit a unit impulse of displacement at t = 0. .28) an occurs because the reﬂection reverses the direction of displacement.
.36) It may also be of interest to compute a pressure seismogram as this models what is measured by a hydrophone.g. .34) where the subscript imp indicates “impulse response” and the leading 1 represents a direct arrival. τn − τn−1 . Written with z transforms. . As in the previous section. it is assumed that the model has been sampled such that the layers all have the same interval traveltime. . Thus it is concluded that the source waveform is included in the synthetic seismogram by convolving it with impulse response (e. . If W (z) represents the z transform of the source waveform. W (z) simply multiplies the z transform of the impulsive arrival. equation (3. 1. WAVE PROPAGATION 2 2 2 uimp (z) = 1 − R1 z ∆t − (1 − R1 )R2 z 2∆t − (1 − R1 )(1 − R2 )R3 z 3∆t − . This expression has the compact representation N j−1 2 (1 − Rk ) Rj z j∆t . j−1 N −1 2 (1 − Rk ) Rj z j∆t − · · · − k=1 k=1 2 (1 − Rk ) Rn z n∆t − (3. t. 2. (3.28) should be modiﬁed to read N j−1 2 (1 − Rk ) Rj z j∆t . The result is the simplest model of a seismogram as reﬂection coeﬃcients arriving at the twoway traveltime to each reﬂector. N with 0 denoting the recording surface. . 3. . . As discussed in exercise ??. this is just a physical way of visualizing a convolution. the essential diﬀerence is that the pressure does not change sign upon reﬂection as pressure does. Thus.60 represented by the sum of these z transform terms as CHAPTER 3. the second reﬂection is given by (1 − 2 R1 )R2 W (z)z 2∆t . . j=1 k=1 pimp (z) = 1 + (3. .4. . Often seismic data has had a correction applied for transmission loss. Of course. 2. . .37) 3.3 Inclusion of multiples Waters (1981) gives a computational scheme that allows the calculation of all primaries and multiples up to any desired order. j=1 k=1 uimp (z) = 1 − (3. the diagonals that slant up to the right denote upward traveling waves using the index k = 1. . . this is simply S(z) = uimp (z)W (z). for example. Then the reﬂection and transmission eﬀects scale each sample of W (z) equally and the later samples simply arrive superimposed on top of later reﬂections. 3. then. The diagonal lines slanting down to the right correspond to downward traveling waves that are indexed by j = 1.35) The term in square brackets is called the transmission loss. and hence are of variable thickness in z. equation (3.35)) of the layered medium. A source waveform other than a unit impulse is easily accounted for. . τ . in which case it is useful to construct a synthetic seismogram without transmission losses by setting these terms to unity. Similarly. That is. . while the horizontal axis is event arrival time. The vertical axis of this diagram is model traveltime. This is essentially a bookkeeping method that uses the diagram of Figure 3.5 to keep track of all waves. for a the pressure response to a unit impulse of pressure. The transmission eﬀect is the same for both pressure and displacement. For example consider a causal waveform with W (z) = w0 + w1 Z ∆t + w2 z 2∆t + . Layer boundaries are indicated by horizontal lines and indexed by the integer n = 0. 2.
3.5: The computation triangle for a 6 layer synthetic seismogram. For interface n. k) is j = k − n + 1. denoting the reﬂection coeﬃcient for incidence from above by Rn . The incident waves enter the node from the left and 4 3 3 4 are U4 and D2 while the scattered waves exit the node from the right and are U4 and D2 . k) are related to the incident waves by the equations n+1 n n Uk = [1 + Rn ] Uk − Rn Dk−n+1 n+1 n+1 n Dk−n+1 = [1 − Rn ] Dk−n+1 + Rn Uk . Considering a particular node (n. 1) the upward incident wave. n. diagonals slanting down from lefttoright are downgoing waves. 4). k) that denote its interface number and the upward traveling wave index. the scattered waves of displacement at node (n. k= (3. k) = (3. The algorithm description requires that the upward and downward traveling waves be described by both their wave indices and the layer number. The layer number is the same as the interface number for the layer bottom. The downward wave index at node (n. and their upgoing wave index k. Computation begins with a unit impulse in the upper left corner. 1 The displacement seismogram algorithm begins by assuming D1 = 1 as is appropriate for an 2 impulse response. Though these waves are symbolized by diagonal lines.39) where U pn is the kth upward traveling pressure wave in the nth layer and Dpn is a similar downward k k traveling pressure. For example. the second node on Uk the third layer in Figure 3. U1 is zero and so the scattered waves . this is a 1D model so all wave motion is actually vertical. A node will be designated by the pair (n. there are two incident waves. THE ONEDIMENSIONAL SYNTHETIC SEISMOGRAM t t=0 t= t 1 U1 1 D2 2 U2 1 U2 61 2 t 1 D3 2 U3 1 U3 3 t 1 D4 2 U4 1 U4 4 t 1 D5 2 U5 1 U5 5 t 1 D6 t 1 D1 1 interface 1 j= k= 6 2 D1 2 D2 3 U3 2 D3 3 U4 2 D4 3 U5 2 D5 k= 2 interface 2 j= 5 3 D1 3 D2 4 U4 3 D3 4 U5 3 D4 interface 3 j= k= 3 4 4 D1 4 D2 5 U5 4 D3 4 interface 4 j= k= 5 D1 5 D2 5 interface 5 3 j= k= 6 D1 6 interface 6 2 j= 1 Figure 3. Uk and Dk−n+1 . Thus the upward traveling wave in layer n with wave index k will be n n denoted Uk while the jth downward wave in the same layer will be Dj .4. At node (1.38) For pressure waves. n+1 n+1 n n and Dk−n+1 . and diagonals slanting up from lefttoright are upgoing waves. Nodes are denoted by their interface number. The highlighted node is (n. k). and two scattered waves. Horizontal lines are interfaces between layers. The intersection of a downward wave and an upward wave occurs at a node that corresponds to a scattering event. the corresponding equations are U pn = [1 + Rn ] U pn+1 + Rn Dpn k k−n+1 k n+1 Dpn+1 = [1 − Rn ] Dpn k−n+1 − Rn U pk k−n+1 (3.5 is node (3. 4). The fourth upward wave in 1 the ﬁrst layer is U4 and so on.
and D3 3 are all computed in preparation for propagation of U3 to the surface. If surfacerelated multiples are to be included. Though the pressure seismogram of equation (3. In equation (3. Of course. more importantly. These details . Using z transform notation. the upward wave U2 can be 2 2 2 calculated and propagated to the surface.41) The displacement and pressure seismograms have diﬀerence physical units that are not reﬂected in equations (3.40) and (3. (3. . If the two seismograms are added. is calculated. Since all of the layers have the same 2way traveltime. ∆t.41) the surfacerelated multiple is included via the term 1 − R0 . Then 1 2 1 2 1 at node (1. The wave Uk = −Rk D1 is propagated to the surface using equations (3. WAVE PROPAGATION 2 1 1 n are D1 = [1 − R1 ] D1 = 1 − R1 and U1 = −R1 .62 CHAPTER 3.40) The equivalent pressure seismogram is given by 2 2 2 2 pimp (z) = 1+[1 − R0 ] R1 z ∆t +[1 − R0 ] R2 (1 − R1 ) − R1 R0 z 2∆t +[1 − R0 ] R3 (1 − R2 )(1 − R1 )− 2 2 3 2 R2 R1 (R2 + R0 )(1 − R1 ) − R2 R1 R0 (1 − R1 ) + R1 R0 z 3∆t + . In general.41).40). the expression can be used to draw a valuable observation in comparison with the displacement seismogram of equation (3. . this observation overlooks the fact that the pressure and displacement seismograms have diﬀerent physical dimensions. 3 2 1 Thus the second sample on the seismogram is determined and the downgoing waves D1 .40). the ﬁrst few samples of the displacement seismogram can be shown to be 2 2 2 2 uimp (z) = 1−[1 + R0 ] R1 z ∆t −[1 + R0 ] R2 (1 − R1 ) − R1 R0 z 2∆t −[1 + R0 ] R3 (1 − R2 )(1 − R1 )− 2 2 3 2 R2 R1 (R2 + R0 )(1 − R1 ) − R2 R1 R0 (1 − R1 ) + R1 R0 z 3∆t + . . The propagation of Uk to the surface results in the k+1 calculation of all of the downgoing waves that are required for Uk+1 . This is correct and consistent with the boundary condition of a liquid free surface that calls for the pressure to vanish. In each term. the waves arrive at interface 0 at regular intervals where they are accumulated into the seismogram. In practice. there are many possible multiples that also contribute to each term. there are inﬁnitely many arrivals from an N layered system because there can be inﬁnitely many multiple bounces. k k The pattern should now be clear. D2 and U2 are incident and the scattered waves are U2 = [1 + R1 ] U2 − R1 D2 and 2 1 2 1 1 D2 = [1 − R1 ] D2 + R1 U2 . this could be accounted for by scaling the ﬁrst arrivals to have the same magnitude. . In general. the seismograms can be subtracted to cancel all of the surfacerelated multiples. In principle. Uk = 0 if n < k or n < 1 and n 1 Dj = 0 if n < 1 or j < 1. .41) vanishes identically on a free surface. (3. 2 In equation (3. Or. If the surface is modelled as a free surface then it has R0 = 1 (recall that these reﬂection coeﬃcients are deﬁned for incidence from above) so each term in the displacement seismogram is doubled while the pressure seismogram is identically zero. 1 2 1 2 Having propagated U1 to the surface and calculated D1 and D2 . U2 is easy and is just U2 = −R2 D1 = −R2 [1 − R1 ]. each term 2 after the leading one contains the common factor 1 + R0 that includes the surfacerelated multiple. then the signs are such that the primaries cancel and only the surfacerelated multiples remain. the kth sample of the seismogram is 1 1 1 1 Uk + Dk+1 = [1 + R0 ] Uk .38) to include the contributions from all of the downgoing multiples and to calculate k the upgoing and downgoing scattered waves. D2 . The last step in bringing U2 to the surface is to calculate D3 = R0 U2 . the primary arrival can be identiﬁed by comparison with equation (3. The increasing complexity of each term is apparent even with only four samples written explicitly. 2). a surfacerelated multiple. otherwise it is just Uk .35). . The process then continues for as long as is desired. Then U1 can be propagated up to the surface where the scattered wave 1 1 D2 = R0 U1 .
A termbyterm comparison of these upgoing wave expressions shows that a particular upgoing displacement wave is opposite in sign for every term when compared with the corresponding pressure wave. it is of interest to explicitly detail a few downgoing and upgoing waves for 3 both displacement and pressure. if the initial downgoing displacement and pressure pulses are in phase.38) and (3. the sign diﬀerences are a simple consequence of the scattering equations (3. the pressure wave will not trivially vanish and the upgoing waves will have the polarity relationships just described. Though these calculations can be complex. Called OBC recording.3.42) = −R2 R1 (1 − 2 R1 ) + 2 2 R1 R0 and the corresponding pressure waves identical in form Dp3 = (1 − R2 )(1 − R1 ) 1 Dp2 = −R1 (1 − R1 )(R0 + R2 ) 2 Dp3 1 = −R2 R1 (1 − 2 R1 ) (3. There. Thus. propagation of the third upgoing wave to the surface gives.45) 2 R1 ) U p1 3 = R3 (1 − 2 R2 )(1 − 2 R1 ) − R2 R1 (1 − 2 R1 )(R0 + R2 ) − R2 R1 R0 (1 − + 3 2 R1 R0 . In a later section. the important conclusion is that downgoing waves. For example. this method includes a paired hydrophone and geophone at each recording position.001 seconds.43) + 2 2 R1 R0 . 3 U3 = −R3 (1 − R2 )(1 − R1 ) 2 2 U3 = −R3 (1 − R2 )(1 − R1 ) + R2 R1 (1 − R1 )(R0 + R2 ) 1 U3 (3. More speciﬁcally. This observation is the basis of the modern technique of marine seismic surveying with a cable laid on the ocean bottom. the downgoing waves needed to propagate U3 to the surface are 3 D1 = (1 − R2 )(1 − R1 ) 2 D2 = −R1 (1 − R1 )(R0 + R2 ) 3 D1 (3. can be eliminated by subtracting a scaled pressure seismogram from a displacement seismogram. However. like the surface related multiple. this can mean a great many layers that serve no purpose other than to give the correct traveltime. for displacement.44) 2 R1 ) = −R3 (1 − 2 R2 )(1 − 2 R1 ) + R2 R1 (1 − 2 R1 )(R0 + R2 ) + R2 R1 R0 (1 − − 3 2 R1 R0 and for pressure U p3 = R3 (1 − R2 )(1 − R1 ) 3 2 U p2 = R3 (1 − R2 )(1 − R1 ) − R2 R1 (1 − R1 )(R0 + R2 ) 3 (3. then the only upgoing waves are generated by reﬂections and these have opposite polarity for pressure versus displacement. Then. for a deep water layer and a typical seismogram sample rate of . OBC recording can be modelled using the onedimensional seismogram theory by calculating the recorded wave at the particular interface representing the ocean bottom. This can be done with the present algorithm by representing the water layer as many thin layers of equal traveltime and no impedance contrast. a synthetic seismogram algorithm will be given that allows the layers to have arbitrary thicknesses.39) and of the fact that the source was placed above the entire model.4. Then it will be possible to model a . THE ONEDIMENSIONAL SYNTHETIC SEISMOGRAM 63 aside.
For example. Alternatively.40) the eﬀect of the free surface is to cause every term after the direct arrival to have the same 1+R0 multiplicative factor. cannot readily deal with a nonstationary multiple sequence.4.4. in equation (3.5. no multiples. sketch the raypath for each multiple that arrives at t = 3∆t. This means that the multiple content of the seismogram generally increases with time. This means that the free surface multiples can be modelled as a convolution and that deconvolution might be expected to remove them. This computation is algebraically tedious.1 Wavelet utilities Once an impulseresponse seismogram has been created. . D2 . There are a number of diﬀerent wavelets available including ormsby Creates an Ormsby bandpass ﬁlter. Exercise 3. How many multiples are there in total? 1 Exercise 3. The intended purpose of the synthetic usually dictates which facility to use. and a zero phase wavelet. Ordinary deconvolution theory. All reﬂections from beneath the bright reﬂector will have the same characteristic multiple while those from above it will not. a synthetic seismogram intended for comparison with processed seismic data will usually be created using a welllog reﬂectivity.64 CHAPTER 3. and a minimum phase wavelet while testing predictive deconvolution will usually involve the inclusion of some form of multiples. For example.4. 1 Exercise 3.5 MATLAB tools for 1D synthetic seismograms There are a number of diﬀerent possibilities for creating synthetic seismograms in MATLAB. 3. On a replica of Figure 3. there are certain classes of multiples that have the desired stationarity.5 and the results of the previous exercise. and D4 in preparation for the next exercise. no multiples. which assumes a stationary seismogram. As a ﬁnal comment.2. Verify the expression given for U3 in equation (3.5. The answer is 1 2 2 2 2 2 2 U4 = −R4 (1 − R3 )(1 − R2 )(1 − R1 ) + (1 − R2 )(1 − R1 ) 2R3 R1 R0 + 2R3 R2 R1 + R3 R2 + 2 2 2 2 2 2 2 3 2 4 3 (1 − R1 ) R2 R0 (1 − R1 ) − 3R2 R1 R0 − 2R2 R1 R0 − R2 R1 + R1 R0 . WAVE PROPAGATION water layer with a single algorithmic layer.40). this theory makes clear that the eﬀect of multiple reﬂections is generally nonstationary. the testing of spiking deconvolution algorithms usually is done with a random reﬂectivity. D3 . Verify the downgoing waves to be 4 D1 = (1 − R3 )(1 − R2 )(1 − R1 ) 3 D2 = −R1 (1 − R2 )(1 − R1 )(R0 + R2 ) − R3 R2 (1 − R2 )(1 − R1 ) 2 2 2 2 2 2 D3 = −R2 R0 (1 − R1 )(1 − R1 ) + R1 R0 (1 − R1 ) − R3 R1 (1 − R2 )(1 − R1 ) + R2 R1 (1 − R1 )(R0 + R2 ) 1 2 2 2 2 2 3 3 D4 = −R3 R0 (1 − R2 )(1 − R1 ) + R2 R1 R0 (1 − R1 )(R0 + R2 ) + R2 R1 R0 (1 − R1 ) − R1 R0 . Also compute the downgoing 4 3 2 1 waves D1 .3. Calculate U4 using the method described above with Figure 3. The point of the exercise is to improve understanding of the complexity of the seismogram. 3. it is usually convolved with a wavelet to simulate the bandlimiting imposed by the seismic source.4. However. A similar eﬀect is true for a bright reﬂector that occurs deeper in a model.
and the sample rate.50.1 ricker Creates a Ricker wavelet.2 −50 −50 −100 0 20 40 60 Hertz 80 100 120 140 −100 0 50 100 Hertz 150 200 Figure 3.7: A Ricker wavelet with a 40 Hz dominant frequency is shown in the time domain (top) and its amplitude spectrum on a decibel scale is shown in the bottom frame.2 0.5.1 −0.5. the wavelet length.15.1 0 −0.2 0. The inputs to ormsby are the four frequencies deﬁning the passband.1 0. sweep Generate a linear Vibroseis sweep.2 0.3 0. Figure 3. End Code The ormsby command. used in Code Snippet 3.6.2 0 db down db down −0.tw]=ormsby(10. This code creates the Ormsby wavelet shown in Figure 3.f]=fftrl(w.46) 2 . The analytic expression for the Ormsby wavelet is w(t)ormsby = 2 sin πf4 t πf4 f4 − f3 πf4 t 2 − 2 sin πf3 t πf3 f4 − f3 πf3 t 2 − 2 sin πf2 t πf2 f2 − f1 πf2 t 2 + 2 sin πf1 t πf1 f2 − f1 πf1 t (3. wavevib Creates a vibroseis (Klauder) wavelet..1 0 seconds 0.1 65 0. 40.40. is shown in the time domain (top) and its amplitude spectrum is shown against a decibel scale in the bottom frame.3. %compute spectrum [W. W=todb(W). These functions all have a similar interface in that they accept a number of input parameters describing the construction of the wavelet and return only two outputs: the wavelet and its timecoordinate vector.3 amplitude amplitude 0. This was created by Code Snippet 3.tw). 1 2 3 4 5 %make ormsby wavelet [w.4. 15.002).1 0 seconds 0.5.5. wavez Creates a zero phase wavelet with a dominant frequency.1.1.6: An Ormsby wavelet for the passband 10. 50Hz. Since only wavemin and sweep generate causal responses.1 −0..1 0 −0.5.2 0 −0. Code Snippet 3. the timecoordinate vector is essential to properly position the wavelet.2 wavemin Creates a minimum phase wavelet for impulsive sources. produces a popular zerophase wavelet that has an easy speciﬁcation of its passband. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 0. This ﬁgure was created by Code Snippet 3.
15. This may be an annoyance in that any time series that is convolved with such a wavelet will have a large change in overall amplitude. However.7. (3.002.5. less controlled. WAVE PROPAGATION where f1 < f2 < f3 < f4 are speciﬁcations of the frequency passband in Hertz. An important consideration when creating wavelets is the question of normalization.5.40. if other behavior is desired. and the sixth parameter is the temporal sample rate also in seconds. it is always a good idea to plot the wavelet before using it and assess the adequacy of the temporal length. Less obviously. passband. It is obviously important to ensure that the Nyquist frequency. how should the overall amplitude of the wavelet be determined. the wavelet can always be renormalized after it is created. 40. then truncation eﬀects will distort the desired spectrum. f4 ) = (10. The Ricker wavelet is given analytically by 2 w(t)ricker = 1 − 2π 2 fdom t2 e−π 2 2 fdom t2 (3. 1995) 2 2 2f 2 W (f ) = √ 2 e−f /fdom . However.4). The inputs to ricker are the temporal sample rate (seconds). If the length is chosen too short.66 CHAPTER 3. This code creates the Ricker wavelet shown in Figure 3.6 shows the desired passband. the passband begins at f1 and increases to full amplitude at f2 . It remains at full amplitude until f3 and ramps down to the stopband at f4 . On line 2 in Code Snippet 3. f3 . These criteria are not identical with the ﬁrst tending to preserve the peak values of the signal before and after convolution and the second preserves the amplitude of the signal near the wavelet’s dominant frequency. %compute spectrum [W.1 computes the wavelet’s spectrum using fftrl and line 5 computes the decibel amplitude spectrum using the utility todb . If equation (??) is used directly. the wavelet is often felt to have an unacceptable level of ripple. the maximum amplitude of the wavelet can be quite large. End Code Though the amplitude spectrum of the Ormsby wavelet of Figure 3.tw). f2 .2.1 the wavelet passband is speciﬁed as the ﬁrst four input parameters. the dominant frequency (Hz)..47) which can be shown to be the second derivative of a Gaussian. Approximately. a narrow passband wavelet will be temporally long and viceversa. In this expression. the ﬁfth parameter is the desired wavelet length in seconds. 50) in the time domain and its Fourier amplitude spectrum. The function wavenorm is useful for this purpose. is greater than f4 .f]=fftrl(w. W=todb(W). The Ricker wavelet has a simpler from in the timedomain though this comes at the expense of a broader. 1 2 3 4 5 %make ricker wavelet [w. and the temporal length (seconds). Figure 3.48) πfdom . the temporal length of the wavelet must be suﬃcient to ensure that the character of the wavelet is captured.6 shows an Ormsby wavelet with (f1 . fdom is the dominant frequency of the wavelet.tw]=ricker(. fN yquist = 1/(2∆t). Plotting the real part of the output from todb versus f creates the spectrum shown in Figure 3. Code Snippet 3. Since the frequency bandwidth and the temporal width are inversely proportional. That is.6. With any of these wavelet tools. Line 4 of Code Snippet 3.5. The Fourier transform of this wavelet is known to be (Sheriﬀ and Geldart. another possibility is to scale the wavelet such that a sinusoid of the dominant frequency is passed at unit amplitude under convolution. The wavelets presented here all use the second method of normalizing with respect to the dominant frequency. An easy solution might seem to be to scale the wavelet such that its maximum absolute value is unity.
it is not necessarily easy to control the spectral shape.3.ˆ2/(fdom1ˆ2)).8: Three Ricker wavelet spectra are shown against a linear scale for fdom = 40.25 0. This code calculates the Ricker wavelet spectra shown in Figure 3.45 0.ˆ2)/(sqrt(pi)*fdom3ˆ2).8 using equation (3. and 120 Hz.25 0.15 0. The eﬀect is demonstrated by Code Snippet 3.49).9: Six amplitude spectra are shown illustrating the behavior of equation (3. It is discussed more completely in the conjunction with Wiener deconvolution in Chapter ??.ˆ2/(fdom2ˆ2)). it is just presented as an abstract numerical technique.3.5. End Code The Ormsby and Ricker wavelets are zero phase (i.35 0. an analytic model for the amplitude spectrum should resemble the observed spectrum for the dynamite blast that is common .3 2 This is a Gaussian multiplied by f 2 /fdom . an alternative is presented here that speciﬁes the wavelet’s amplitude spectrum and calculates the minimumphase wavelet using the Levinson recursion. 1 2 3 4 5 f=0:250. Three dominant frequencies are shown.3 using equation (3. R2=exp(f.3 and shown in Figure 3. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 0.5.15 0. Since a minimumphase wavelet is meant to model an impulsive source. R3=exp(f. fdom = 40. An alternative are minimumphase wavelets that are suitable for models to be compared with raw seismic data or to be used for deconvolution testing. The Levinson recursion is an eﬃcient way to solve a system of linear equations that has Toeplitz symmetry. Code Snippet 3.05 0 0 50 100 Hertz 150 200 250 0. symmetric) and are most suitable for models to be compared to fully processed seismic images. This is the approach taken by Claerbout in ? and has the advantage that the minimum phase property is easily assured.*(2*f.*(2*f. It is characteristic of Ricker wavelets that the higher the dominant frequency.05 0 0 0.5. For now.1 0.fdom2=80.5. 120 and the bold curves correspond to m = 2 while the dashed curves are for m = 3.5.8. One eﬀective way to design minimumphase wavelets is to specify the locations of the poles and zeros of the wavelet’s ztransform directly. This is evident from equation (3.35 0. 80. With this in mind. R1=exp(f.ˆ2)/(sqrt(pi)*fdom1ˆ2).48) Figure 3.4 0. This was created by Code Snippet 3.3 Amplitude Amplitude 0. On the other hand.fdom3=120.48). the broader the bandwidth.3 67 50 100 Hertz 150 200 250 Figure 3. fdom1=40.48) in that the eﬀective width of the Gaussian is seen to be fdom .e.ˆ2/(fdom3ˆ2)).ˆ2)/(sqrt(pi)*fdom2ˆ2).2 0.1 0. This ﬁgure was created by Code Snippet 3.*(2*f. 80.2 0.
2). When using m > 2.2.2). . Finally line 11 builds the timecoordinate vector and line 13 normalizes the ﬁnal wavelet.68 CHAPTER 3. % now normalize the wavelet wavelet=wavenorm(wavelet. End Code Function wavemin invokes tntamp to create a minimum phase wavelet as is shown in Code Snippet 3.2. This code is an excerpt from wavemin and illustrates the calculation of a minimumphase wavelet.10 1 2 3 4 %make wavemin wavelet [w1. the desired wavelet is found by inverting the inverse.3). the intended length of the wavelet is tlength. [w2. There amplitude spectra are also calculate and the result is shown in Figure 3. On line 4.m).9 was created using tntamp and shows the behavior of this equation for m = 2 and m = 3. Code Snippet 3. This linear system is derived in Chapter ?? where it is shown to specify the minimumphase inverse to a minimumphase wavelet. the dominant frequency is fdom.twave. 1 2 3 4 5 6 7 8 9 10 11 12 13 % create the power spectrum powspec=tntamp(fdom. b=[1.5. This is done in the Fourier domain on line 10.4. winv=levrec(auto(1:nlags). This code calls wavemin twice with m = 2 and m = 3 to create two diﬀerent minimumphase wavelets with the same dominant frequency.002.tw]=wavemin(. The column vector of frequencies is f.0 zeros(1. and b is a column vector of zeros except for a one in the ﬁrst place.. Solving this system with levrec does not require the formation of the matrix A but needs only the ﬁrst n lags of the autocorrelation and the vector b. Since the result from solving this linear system is the minimumphase inverse. % invert the wavelet wavelet=real(ifft(1. The model spectrum adopted here is given by 1 − e−(f /fdom ) A(f ) = m 1 + (f /fdom ) 2 (3.b).002.20.5. This spectrum is produced by tntamp . larger m gives a more sharply bandlimited spectrum and this means a longer temporal wavelet.5. Line 2 creates the desired power spectrum by squaring the output from tntamp .4. WAVE PROPAGATION in exploration seismology. x is the unknown minimumphase inverse.f). Lines 68 set up a linear system and solve it using the Levinson recursion. twave=(dt*(0:length(wavelet)1)’.ˆ2. Figure 3.5. %compute spectrum . and the temporal sample rate is dt. Such spectra have a dominant frequency below about 30 Hz with larger charges giving lower dominant frequencies and show slow decay towards the high frequencies.49) where m determines the rate of decay at high frequencies.. % run this through Levinson nlags=tlength/dt+1.f. % create the autocorrelation auto=ifftrl(powspec. It is of the form Ax = b where A is a Toeplitz matrix formed from the autocorrelation. Code Snippet 3. Clearly.nlags1)]’.tw]=wavemin(. care must be taken that a suﬃcient temporal length is selected because truncation eﬀects can destroy the minimumphase property.20. the power spectrum is inverse Fourier transformed to create the autocorrelation of the desired wavelet./(fft(winv)))).
If all roots are outside the unit circle. W2=todb(W2). This function factors the ztransform of the wavelet and measures the radius vector for all of the roots. Given any particular amplitude spectrum there are inﬁnitely many wavelets that can be created with diﬀerent phase spectra. wavemin(. W1=todb(W1). Figure 3.2 0. ismin returns 0. however. Their amplitude spectra are shown in the lower frame. then a nonminimum phase wavelet can result due to truncation eﬀects.tw).f]=fftrl(w1.10: Two minimum phase wavelets are shown (top) and their amplitude spectra (bottom).11: In the upper frame. This is due to their relative richness in high frequencies compared with the Ricker wavelet. The utility function ismin is provided to test a wavelet for the minimumphase property. The wavelets were created with Code Snippet 3.1 0 −0. in the time domain.5. This is accomplished by wavez .02 0 0 0.04 −0.2 0 −0.3) produces a wavelet that does not. The Ricker spectrum is the one that runs oﬀ the bottom of the axes at 70Hz.5 and is not shown. The two wavelets in Figure 3. is more front loaded. [W2.5 and correspond to m = 2 and m = 3 in equation (3.1 0 0 0. The code that created this Figure is a simple modiﬁcation of Code Snippet 3. It is not certain that the result from wavemin will be truly minimum phase.08 −0.15 0.2.05 0. End Code The example shown in Code Snippet 3. Relative to the Ricker.001.06 −0. The wavelets have the same dominant frequency of 20 Hz and have m = 2 and m = 3.06 db down −50 db down −20 −40 −60 −100 0 50 100 Hertz 150 200 250 0 50 100 Hertz 150 200 250 Figure 3.5.02 seconds 0.49) can also be used to create a zerophase wavelet.10 pass the minimum phase test. The m = 2 wavelet has a broader spectrum and is more frontloaded in the time domain. [W1. a 20 Hz Ricker wavelet (top) is compared to wavez wavelets corresponding to m = 3 (middle) and m = 2 (bottom).5. The wavelet with m = 2 shows less highfrequency decay and.49).3 69 amplitude amplitude 0. If any root is inside the unit circle. The upper wavelet is a 20Hz..04 0. The spectral model of equation (3.2 0.f]=fftrl(w2. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 0. .10.1 seconds 0. the wavez wavelets are considerably more spikelike at the origin. So far. 5 6 7 8 Figure 3.11 shows three zerophase wavelets with the same dominant frequency of 20 Hz.tw). only minimum phase and zero phase have been discussed.5 uses wavemin to create two diﬀerent minimumphase wavelets.4 0.3. Ricker while the middle and lower were created by wavez with m = 3 and m = 2 respectively.5. If the parameters are chosen such that the requested temporal length is substantially shorter than what is implied by the spectrum. then ismin returns unity.
4 −0.4 0.5.ynot+.ynot=.40. 135◦ .1 0 −0. This code creates a zerophase Ricker wavelet and then calls phsrot four times to create a set of phase rotated wavelets. it is useful to model seismic data with a wavelet that has a constant phase other than zero.%number of phases and increment figure for k=1:nrot theta=(k1)*deltheta.12.2 −0.wrot+ynot). the 45◦ wavelet is a polarityreversed version of a 135◦ wavelet. It is good practice to note the basic features of each phase rotation. For example.2 −0. WAVE PROPAGATION 135° 180 ° 0.12: A 40 Hz zerophase Ricker wavelet is shown for four phase rotations of θ = [45◦ .5.1.1*(k1). This was created with Code Snippet 3. it is often desirable to use an artiﬁcial reﬂectivity function so that the deconvolution assumption of a .theta). In this context.005. Since eiπ = −1. 90◦ .5 Figure 3.3 −0. Often.1 0.2).%plot each wavelet text(xnot+.2 seconds 0.3 0° 45° 90° CHAPTER 3. Code Snippet 3. This can be seen in the 0◦ and 180◦ wavelets and it also means that a 45◦ rotation is the same as a polarityreversed 135◦ wavelet. line(tw+xnot.002. the 90◦ rotation has antisymmetry about the wavelet’s center with a major leading peak and a trailing trough.6 −0.5. This is easily accomplished by creating a zerophase wavelet and then using phsrot to rotate the phase from zero to the desired constant value. 1 2 3 4 5 6 7 8 9 10 [w.6.%phase rotated wavelet xnot=.[int2str(theta) ’ˆ\circ’]) end End Code 3. The resulting plot is in Figure 3.1 0 0. 180◦ ]. Similarly.1 −0.2 Seismograms Convolutional seismograms with random reﬂectivity A common use for synthetic seismograms is to test deconvolution algorithms.5.tw]=ricker(.deltheta=45.2 0.70 0.6.12 is shown in Code Snippet 3. An example of this that creates Figure 3.1*(k1). wrot=phsrot(w.5 −0.. The 45◦ rotation is similar but the major leading peak is about 50% larger than the trailing trough.%make Ricker wavelet nrot=5.6. a 180◦ phase rotation is just a ﬂip in polarity.
13: Seven reﬂectivity functions are shown. m (3.5. however. A useful test of randomness is to calculate the autocorrelation of the reﬂectivity. This is a hint that the real reﬂectivity is not white. Generally.14: Seven twosided autocorrelations are shown corresponding to the seven reﬂectivities in Figure 3. not truly random. a normal distribution is preferable. this requires an inﬁnite length signal and so is never exactly fulﬁlled in practice.5 3 2. randn. Figure 3.3. distributed random numbers.8 m=6 m=5 m=4 m=3 71 9 8 7 6 5 4 3 2 1 0 −1 −0.7 seconds on the real reﬂectivity. Thus rref lec will appear more spiky than rrandn . All . a truly random signal has an autocorrelation that is exactly zero everywhere except at zero lag where it is unity.6 m=2 m=1 well 0.13.5 2 1. Then raising them to any power will not change them while the smaller numbers will get smaller. white reﬂectivity is fulﬁlled as nearly as possible. in either case such random numbers do not display the spikiness typically found in real well logs. i. Figure 3. Clearly.4 to . and randn that generates normally.2 0.2 m=2 m=1 well 0. The command reflec supplies such a reﬂectivity function by using MATLAB’s random number generator. The most obvious is the lowamplitude zone from . The bottom one comes from a real well log and the other six are synthetic reﬂectivities that were generated by reflec . This means that given the same starting point.5 0 0. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 4 3. MATLAB has two random number generators. as in rref lec = sign(rrandn ) rrandn  . However.e. The default in reflec is 3.4 −0. a low frequency amplitude variation can be perceived throughout the real reﬂectivity while the synthetic ones show a very uniform amplitude distribution with time. numerical random number generators like randn generate pseudorandom numbers.2 0 lag time (seconds) 0. the real reﬂectivity has features that are present in none of the synthetic ones. rand that generates uniformly distributed random numbers.50) Suppose that the maximum values in rrandn are near unity. This is addressed in reflec by raising the output from randn to an integral power.4 m=6 m=5 m=4 m=3 Figure 3.13 compares a real reﬂectivity derived from well logs with six outputs from reflec using values of of m from 1 to 6. Technically.13.4 seconds 0. Figure 3.14 shows the central portion of the autocorrelations of the reﬂectivities of Figure 3. m. In theory. It is a subjective decision about which value of m gives the most realistic reﬂectivity estimate. but rather shows spectral color . or Gaussian. the generator will return the same set of apparently random numbers. More generally.5 0 −0. called the seed.5 1 0.
tmax=1.16: Decibel amplitude spectra of the seismograms of Figure 3. a 40 Hz Ricker and a 20 Hz minimum phase. %20 Hz min phs [wr. autocorrelations have a large spike at zero lag and only small values elsewhere. are convolved with the same reﬂectivity to generate two synthetic seismograms.4 0.5.15: (bottom) reﬂectivity.1).wr). Figure 3.tmaxw). %convolve and balance s1=convz(r.7.1 0 −0.t]=reflec(tmax.40.6 0. The result is shown in Figure 3.2 0. WAVE PROPAGATION 0 −50 0 0 50 100 150 200 250 −50 0 0 50 100 150 200 250 −50 0 50 100 Hz 150 200 250 Figure 3.4 db down db down db down CHAPTER 3.zeros(ntw/2. The middle trace is a convolutional seismogram that uses a 20 Hz minimum phase wavelet convolved with the ﬁrst trace.twr]=ricker(dt.8 seconds 1 1.2 0. See Code Snippet 3.. It is also interesting that rref lec shows the same degree of randomness regardless of the value of m.2.6 0.tmaxw=. This again indicates that the real reﬂectivity is not white but has spectral color.5. Lines 34 generate a 40 Hz Ricker wavelet and a 20 Hz minimumphase wavelet .2 0 0. t=dt*(0:length(r)1).5.7.r). Code Snippet 3. s2=convm(r.twm]=wavemin(dt.1)]. r=[r. End Code The calculation of a synthetic seismogram using reflec to generate the reﬂectivity is illustrated in Code Snippet 3.2.15: The lower trace is a random reﬂectivity generated by reflec with an extra spike on the end. The top trace is a similar seismogram except that a 20 Hz minimumphase wavelet was used.tmaxw). [wm. (middle) minimumphase seismogram and wavelet (smooth curve). s2=balans(s2.15.2 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %make wavelet dt=.72 0. only the real well log shows signiﬁcant negative side lobes of the zero lag sample.wm).002.r).3 0. s1=balans(s1.5 0.7.4 0. %pad spike at end ntw=tmaxw/dt. However.2).zeros(ntw. %40 Hz Ricker %make reflectivity [r.dt.1 −0. and (top) Ricker seismogram and wavelet (smooth curve).. Here two wavelets.20.
This is useful because. This example assumes that Code Snippet 3. where the sum is over samples in the time domain. Line 10 rebuilds the timecoordinate vector to be compatible with the lengthened reﬂectivity. The function rnoise is designed for this purpose. In addition to returning a reﬂectivity series. Then. The rms amplitude of rn .5. and another column vector of ntw zeros. Lines 810 place an extra isolated spike on the end of the reﬂectivity.twr).50).16. 1 2 3 4 5 6 7 8 9 10 [R. Here the spectra are computed and displayed. and the maximum reﬂection coeﬃcient. the time sample rate. rn. The resulting spectra are displayed in Figure 3. Line 6 invokes reflec to create a random reﬂectivity. Line 9 is simply the concatenation of the reﬂectivity with: a column vector of ntw/2 zeros. That is.5. an impulse of . the slowlyvarying. then rn=rnoise(s1.1. after convolution. gives m in equation (3. each spectrum relative to its own maximum.t).fwr]=fftrl(wr. that is defaulted here. One thing that is immediately apparent from these seismograms is that the zerophase seismogram is more interpretable than the minimumphase. average behavior of the seismogram spectrum is essentially similar to the wavelet spectrum. such that s1+rn will have a signaltonoise ratio of 5. Line 12 convolves the reﬂectivity with the zerophase Ricker wavelet using the convenience function convz while line 14 convolves the reﬂectivity with the minimumphase wavelet using convm .t). After each convolution.5. A fourth argument.3. This is because the larger peaks on the former coincide temporally with the major reﬂection coeﬃcients. The signaltonoise ratio is deﬁned by assuming that s1 is pure signal and measuring its rms amplitude 2 as arms = j s1j . [S1. If s1 is a time series. Function convz truncates evenly from the beginning and the end of the convolved series as is appropriate if a zerophase wavelet was used. lines 610 use the convenience function todb to compute the amplitude spectrum in decibel format.8 has already been run. the shape of the wavelet will be immediately apparent. Code Snippet 3. [S2. the function balans is invoked to balance the amplitudes of the seismogram with the original reﬂectivity to aid in the comparison. reflec also returns an appropriate timecoordinate vector.t). [Wr.5) creates a vector of normallydistributed random noise. The three input parameters are the maximum time. the major peaks are displaced to later times relative to the reﬂectivity.5.f]=fftrl(s1.2. End Code Code Snippet 3. t. The result is Figure 3. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS 73 as described in section 3. With the minimumphase seismogram. r. Function convm truncates entirely oﬀ the end of the convolved series as would be expected for a causal wavelet.5.7 has already been run. The fact that the Ricker wavelet spectrum departs from that of the seismogram in the upper panel is an artifact caused by the truncation of the convolution. S2=real(todb(S2)).twm). (The imaginary part of the return from todb is the phase spectrum). These convenience functions invoke conv and then truncate the result to be the same length as the ﬁrst input argument. Lines 15 use fftrl to compute the spectrum of each component of the seismogram construction exercise.8 assumes that Code Snippet 3. Wr=real(todb(Wr)).fwm]=fftrl(wm.8. [Wm. S1=real(todb(S1)).f]=fftrl(r.5. Wm=real(todb(Wm)). R=real(todb(R)). It is apparent that the spectra of the seismograms are shaped by that of the wavelets.16. It is often desirable to add some level of background random noise to a synthetic to simulate a noisy recording environment or perhaps the limited precision of recording.f]=fftrl(s2.
5 and 1 are used in the rms amplitude calculation.4 0.2 0 0.4 −150 0 50 100 150 frequency (Hz) 200 250 Figure 3. Develop a script that remakes and displays the seismograms and spectra of Figures 3.1. Also. Then only those samples between .0)) uses the function near to determine the range of indices that span the time zone from . rnoise can be given a third argument that deﬁnes the range of indices over which the signaltonoise ratio is to be computed. Make the wavelets the same in all respects except for their phase.8 seconds 1 1.4 s/n=2 db down −50 s/n=2 s/n=5 0. Close inspection shows that the spectra at frequencies below the corner frequency are also altered by the addition of noise.18 with the spectrum of the wavelet superimposed. and 10 respectively.15 is shown with four diﬀerent levels of added noise. It is very diﬃcult to recover the signal spectrum beyond this point in data processing.17 is about 2030 decibels and they are all clearly altered by the noise. Exercise 3.6 0.17 are shown with the spectrum of the wavelet superimposed on each.15 as signal.5.1.5.74 0. then rn=rnoise(s1.8 0 CHAPTER 3. In using rnoise it is important to remember that rn must be added to the input time series after calling rnoise . Which . is then set as σarms where σ is the desired signaltonoise ratio. The maxima of the spectra acutally coincide but have been shifted vertically for clarity.5.5 to 1. this must be the case because the dynamic range of the wiggle trace plots in Figure 3. the method of calculating the signaltonoise ratio may not be exactly what was desired as there is no standard way of doing this.17: The minimumphase seismogram of Figure 3.near(t. Comparison with Figure 3. An interpretive assessment of the corner frequencies would put them near 75 Hz. The Fourier amplitude spectra of these noisy seismograms are shown in Figure 3. 2. From another perspective.0 seconds. WAVE PROPAGATION 0. For example.2 1. Modify the script to demonstrate that truncation eﬀects are the reason that the seismogram spectrum and the Ricker wavelet spectra depart from one another near 110 Hz (top Figure 3. Also. and 220 Hz for signaltonoise ratios of 1. Figure 3. Figure 3. 150 Hz.6 s/n=1 s/n=1 amplitude 0. This is useful for nonstationary signals whose signal level may change strongly with time.2 s/n=5 −100 0 s/n=10 s/n=10 −0.18: The spectra of the seismograms of Figure 3. Create a script that builds two seismograms from the same reﬂectivity using wavelets from wavemin and wavez. 5. if t is the time coordinate vector for s1. Other possibilities include deﬁning the ratio between peak amplitudes or in the frequency domain.2 0.17 shows four diﬀerent noisy seismograms computed using rnoise and the minimumphase seismogram of Figure 3.5..16.2.15 and 3. Exercise 3.16 shows that the noise causes a corner in the spectrum deﬁned by where it departs from the shape of the wavelet’s spectrum. 100 Hz.16.
5.3. MATLAB TOOLS FOR 1D SYNTHETIC SEISMOGRAMS seismogram is more interpretable? Why? Synthetic seismograms with multiples The 75 .
and almost certainly others. weathering velocity. interval velocity. Ultimately. together with the geometry of the seismic acquisition and the shapes of the reﬂectors. velocity measures are typically quantities derived from data analysis that have the physical dimensions of velocity but are related to physical velocities in some indirect (and possibly unknown) fashion. Examples are instantaneous velocity. and migration velocity. Just to name a few. P. Using the measured data for the analysis of velocity and the application to the data of corrections that depend upon velocity are fundamental to seismic processing. stacking velocity. and these distortions must be accounted for in processing. On the other hand. causes the characteristic traveltime shapes (such as hyperbolae) in the data. A careful discussion of the deﬁnitions of these measures is essential to gain understanding of the complexities of velocity inversion. consider the case of Pwave propagation in a heterogeneous earth. phase and group velocity. For simplicity. mean velocity. instantaneous velocity. Swave velocity. This chapter is meant to bring some order to this chaos of velocities. there is a fundamental distinction between physical velocities and velocity measures. (Swaves can be treated similarly. In contrast to physical velocities. migration velocity.Chapter 4 Velocity Exploration seismology is literally overﬂowing with velocities. Sometimes velocity information can be obtained from supporting data such as well logs. and geologic maps but this information is inherently sparse with respect to the coverage of the seismic data itself. Pwave velocity. canonical shapes. it cannot generally be expected that a physical wave actually propagates at the speed of one of these velocity measures. The interpretation of the velocity measures such that they can be converted into measurements of physical velocities is called velocity inversion and is an ongoing problem. apparent velocity. mean. and rms velocities. apparent velocity. horizontal velocity. group velocity. 76 . there are interval velocity. stacking velocity. Velocity. rms velocity. For starters. The former refers to velocities that are actually the speed at which some physical wave propagates.) A velocity measure will be deﬁned by either relating it mathematically to the actual Pwave speed or by describing how it can be derived from seismic data. vertical velocity. core measurements. average velocity. Spatial variations in velocity cause distortions from the simple. phase velocity.and Swave velocities. the only way to obtain the spatially dense velocity information required in processing is from the data itself. Examples of velocity measures include average. This is known as velocity analysis and is the source of some of the velocity measures such as stacking and migration velocities.
Only rarely can it be assumed to be spatially constant but often there is signiﬁcant variation in one direction only. but this will be ignored for now. The word instantaneous refers to the local wave speed as the wave evolves from one instant of time to the next. it also depends upon direction. Thus the possibility of a universal function was quite attractive. surface. For example. it actually works quite well in many sedimentary basins. The name originates in the days of analog computing (the 1950s and 1960s) when changing a velocity function was a considerable labor. This is commonly the case in sedimentary basins where velocity varies strongly with depth but only weakly in the horizontal direction. However. INSTANTANEOUS VELOCITY: VIN S OR JUST V 0 500 1000 depth(m) 1500 2000 2500 3000 1500 77 2000 2500 3000 velocity(m/s) 3500 4000 Figure 4. (4. normal moveout was removed by a “computer” (who was a human being) who “traced the trace” (hence the name trace for a seismic recording) with a stylus that was connected to a pen by a lever arm driven by an eccentric cam.1 Instantaneous velocity: vins or just v Instantaneous velocity generally refers to the speed of propagation of seismic waves in the earth. The term can be applied to any wave type (P. In the most general case of anisotropic media. S. The pen would redraw the trace with normal moveout removed.1: The universal velocity function is linear with depth 4.6 sec1 . etc) though here we specialize to Pwaves for clarity. the shape of the cam was determined by the velocity function and changing functions often meant going to the machine shop to cut a new cam.1 shows this function for a depth range of 0 to 3000 m. . And. vins must be acknowledged to be a highly variable function of position in the earth.1. Rather it is a scalar which can be thought of as the magnitude of a velocity vector.4. Like most seismic “velocities” vins is not usually a vector quantity and so is not a velocity as physicists would use the term. It is not a function of time as that would imply that the earth’s properties changed during the seismic experiment. Figure 4. For practical seismic experiments.1) The universal velocity function is the name given to this function when v0 = 1800 m/sec and c = . Consider the instantaneous velocity function that is linear with depth z vins = v0 + cz.
vins (z) (4.1. vins (x. Continuing with the universal velocity function of Equation 4. for the calculation of vertical traveltime. For this purpose. if a special path is chosen. It is a simple matter to invert Equation 4.4) = ln 1 + v(˜) z c v0 ξ c v0 0 Thus a linear variation of velocity with depth yields a logarithmic timedepth curve.3) becomes z 1 v0 +cz dξ cz d˜ z 1 τ (z) = = . is the time coordinate for migrated time sections. it is common to relate depth. z. y. to ﬁrst order. every depth. 4. Therefore. Therefore. is the time coordinate of ﬁnal stacked sections and. instantaneous velocity will now be written vins (z) with the understanding that the calculations can be done for any and all (x. Vertical traveltime is calculated by considering a small depth interval. it can be considered as a function of depth alone because the calculation at each (x. Even though vins is a general function of position. As such it is guaranteed to have an inverse.3 vins as a function of vertical traveltime: vins (τ ) In the preceding sections it has been shown that for any ﬁxed (x. given τ (z) it is always possible to ﬁnd z(τ ) and viceversa. then such a relation can be developed. c (4. dz over which vins can be considered to be approximately constant. Since there are inﬁnitely many possible paths between any two points (of course. The graph of z(τ ) is just the transpose of the graph of τ (z). VELOCITY 4.3 respectively. That is. y) is independent.5) For the case of the universal velocity function. τ (z) is a function that increases monotonically with z. z. y) location. This vertical traveltime is a useful quantity that.2 and 4. Deﬁned in this way. has a unique vertical traveltime associated with it. not all are Snell’s law paths but all are possible routes for scattered energy). However.4 for z(τ ) to get z(τ ) = v0 cτ [e − 1] . vins . traveltimes over any path can be computed. y). vins (˜) z (4. z). to the traveltime along the vertical path from 0 to z. the vertical traveltime of equation (4. Function τ (z) is called a timedepth curve and can be used to ﬁnd depth given vertical traveltime or the reverse. which is physically a function of z . z.2 Vertical traveltime: τ Given a complete speciﬁcation of vins as a function of position.2) The total oneway traveltime from the surface to depth. it is unreasonable to expect that there could be an unambiguous relation between traveltime and depth. the curves τ (z) and z(τ ) are shown in Figures 4. In the limit as dz → 0 this becomes the integral z τ (z) = 0 d˜ z .3) The z dependence appears as the upper limit of the integral while z is just a dummy variable of ˜ integration. The vertical traveltime over this interval is simply dτ = dz . to higher accuracy.78 CHAPTER 4. is simply the sum of many such small contributions. (4.
4) and z(τ ) is given by equation (4. z0 ) and vave is the slope of the line connecting the origin with the point (τ0 . Thus vins (τ ) becomes vins (τ ) = vins (z(τ )) = v0 + c which reduces to vins (τ ) = v0 ecτ . vins (z) might be directly obtained from a sonic well log while vins (τ ) can be estimated from the analysis of stacking velocities. Given any z(τ ) curve.8 1 1.1) the vertical traveltime results in the logarithmic expression given in equation (4.4) for the case of v0 = 1800m/sec and c = .2 0 depth (m) 0 500 1000 1500 2000 2500 3000 0 79 time (s) 500 1000 1500 2000 depth (m) 2500 3000 0. an expression for z(τ ) follows as τ (4. τ τ (4. AVERAGE VELOCITY: VAV E 0 0.3: The depthtime curve (z(τ )) of equation (4. v0 cτ (e − 1) c (4.9) Thus.7) Comparing equations (4.2 0. (4.4.4.6/sec Figure 4.4 Average velocity: vave The typical industry deﬁnition of vave is that it is a particular depth divided by the vertical traveltime from the surface to that depth.5).2 Figure 4.4) for the case of v0 = 1800 m/sec and c = . pick a point (τ0 . For the universal velocity function of equation (4.8) 4.8 1 1. when vins is linear with depth it is actually exponential with vertical traveltime. That is vins (τ ) = vins (z(τ )) Given vins (τ ) in equation (4.4 0.7) shows that knowledge of vins (z) allows computation of τ (z) and knowing vins (τ ) enables computation of z(τ ). vins (τ ) is plotted in Figure 4.4 0.2).6 sec1 may always be expressed as a function of τ (z). z0 ) while vins is the tangent to the curve at that .6 time (s) 0.3) and (4.2: The timedepth curve (τ (z)) of equation (4.4.6) z(τ ) = 0 vins (˜)d˜. For case of the universal velocity function.6 0.2 0. In practice.
vmean is deﬁned as vmean (z) = 1 z z vins (˜)d˜. vave (z) becomes vave (z) = cz ln 1 + and vave (τ ) is the given by cz v0 (4.5 Mean velocity: vmean Since vave is a mathematical average of vins over traveltime and not depth. vave (z) is expressed as vave (z) = while vave (τ ) is vave (τ ) = 1 z(τ ) = τ τ 0 z = τ (z) z z d˜ z z 0 vins (˜) (4.12) v0 cτ [e − 1] . For the running example of linear variation of velocity with depth.5 and 4.11) Equation (4.13) 4. z z 0 (4.2 0.6 0.10) τ vins (˜)d˜. point.) When considered as a function of depth.8 1 1.1.14) . that the average (or mean) value of a function f (x) over x the interval from 0 → x is x−1 0 f (x )dx . vins is an exponential function of vertical traveltime. τ τ (4. it is useful to deﬁne another velocity measure that is a depth average.80 0 0. cτ These equations are graphed in Figures 4.4 time (sec) 0. (Recall from calculus.6.2 CHAPTER 4. The mean velocity. the average velocity is not a mathematical average. Mathematically.11) shows that the average velocity is a mathematical average only with respect to vertical traveltime.4: For the universal velocity function shown in Figure 4. VELOCITY 2000 2500 3000 velocity (m/s) 3500 Figure 4. vave (τ ) = (4.
vrms . Also.1)) with v0 = 1800 m/s and c = . vmean (z) and vins (z) are both linear but vave (z) is not.15) which shows that the mean velocity increases at half the rate of vins (z).6 sec1 For the linear variation of vins (z).6 RMS velocity: vrms The mean velocity. RMS VELOCITY: VRM S 0 500 1000 depth (m) 81 0 0.4.2 v 2000 ave v 2000 ins ave 2500 3000 velocity (m/s) 3500 2500 3000 velocity (m/s) 3500 Figure 4. vmean (z) can be reexpressed as a function of τ by substituting z(τ ).1)) with v0 = 1800 m/s and c = .15) is compared with vave (z) and vins (z) in Figure 4.6: vave and vins are shown versus time for the case of the universal velocity functions (equation (4.2 0. The reason is that another velocity measure. this results in vmean (τ ) = v0 [1 + ecτ ] . and vrms are independent.5: vave and vins are shown versus depth for the case of the universal velocity functions (equation (4. and vrms .6. is not commonly used in seismology.16) Equation (4. First.6 0. is used and only two of vave . vmean . vmean (z) is always greater than vave (z) which will be proven true in the next section.6 sec1 Figure 4. τ τ 0 (4. vmean (z) becomes vmean (z) = 1 z z 0 1 [v0 + c˜] d˜ = v0 + cz z z 2 (4. 4. Of course. The rootmeansquare velocity is deﬁned as 2 vrms (τ ) = 1 τ τ 2 vins (˜)d˜. they are linked by the relation 2 vrms = vave vmean (4.17) Two important relationships exist between the three velocity measures: vave .7. vmean . 2 (4. discussed previously.18) .8 1500 2000 v 2500 3000 ins v 1 1.4 time (sec) 0.
Exercise 4. Compute both the mean and the rms average of these numbers. For the continuing example of vins linear with depth. an interval velocity can be deﬁned that is simply the particular average applied across a small interval rather than from the surface (z = 0) to depth z. Show that if the velocity vector has identical entries then the rms average and the mean are equal but if one value diﬀers from the rest.9) showed that vint was exponential. This result is quite general and conﬁrms the intuition that the square root of the average of the squares of a set of numbers is always greater than the direct average of the numbers themselves.8 compares vrms vave and vins for the universal velocity function. The proof z 1 z 1 2 2 is straight forward vrms = τ −1 vins dτ = τ z vins [vins dτ ] = τ [ z vins dz] = vave vmean .7: vmean and vave are compared with vins for the case of the linear increase of vins with z. . The second relationship follows from a mathematical inequality known as Schwartz’s Inequality. Repeat your work using random numbers that are all positive with a mean value somewhere near that expected for seismic velocities. then n−1 k x2 ≥ n−1 k xk where the k equality only occurs if all xk are identical.82 0 500 1000 depth (m) 1500 2000 2500 3000 CHAPTER 4. 4. Plot a graph of these two averages versus length.1. which means that only two of the three velocity measures can be considered independent. VELOCITY v vmean v 2000 ave ins 2500 3000 velocity (m/s) 3500 Figure 4. let {xk } be an arbitrary set of n real numbers.7 Interval velocity: vint Corresponding to any of the velocity averages. Though vrms is always greater than vave the diﬀerence is not greater than 2%. 2cτ (4. Thus vrms becomes 2 vrms (τ ) = 1 τ τ 2 τ v0 e2c˜ d˜ = τ 0 2 v0 e2cτ − 1 . Use MATLAB to numerically demonstrate Schwartz’s inequality. equation (4.19) Figure 4. then the rms average exceeds the mean. That is. Use rand to generate a vector of random numbers with zero mean.6. Repeat the process for many diﬀerent vectors with steadily increasing length.
2 rms v 2000 vins ave 2500 3000 velocity (m/s) 3500 Figure 4.21) These quantities are functions of both the upper and lower bounds of the integrals. zn−1 . zn (where z0 = 0 and zn = z) then vave (τ ) = z(τ ) = τ n k=1 [zk − zk−1 ] 1 = τ τ n [τk − τk−1 ]vave (τk . In the limit.20) 2 vins (˜)d˜. τ1 ) = and 2 vrms (τ2 .4 time (sec) 0. Deﬁning ∆τk = τk − τk−1 then gives vave (τ ) = n 1 τ n vk ∆τk k=1 (4.24) with equation (4. the average and rms velocities across an interval deﬁned by τ1 and τ2 are simply vave (τ2 . That is z2 − z1 ∆z vave (τ2 . z2 .8 83 v 1 1. as the interval shrinks so small that vins (τ )can be considered constant. However. (4. z1 .10)) that the average velocity across a depth interval is just the ratio of the depth interval to the vertical traveltime across the interval. τk−1 ) k=1 (4. τ1 ) = 1 τ2 − τ1 1 τ2 − τ1 τ2 vins (˜)d˜ τ τ τ1 τ2 τ1 (4. .11) suggests that the former is just a discrete version of the latter. τk−1 ) and τ = k=1 ∆τk .24) where vk ≡ vave (τk .2 0.4. both interval velocities approach the instantaneous velocity. if the range from 0 to z is divided into n ﬁnite intervals deﬁned by z0 .6 0. It follows directly from the deﬁnition of average velocity (equation (4. τ1 ) = .23) where τk = τ (zk ).7. INTERVAL VELOCITY: VIN T 0 0.22) = τ2 − τ1 ∆τ Thus. Comparing equation (4. . τ τ (4. . the velocity vk in equation .8: vrms and vave are compared with vins for the case of the linear increase of vins with z. . For example.
Only in the case when vins does not vary signiﬁcantly across an interval can the vk in equation (4. follows from equation (4.25) works perfectly.28) should be thought of a combining interval rms velocities into a macro rms velocity. Rather than repeating the derivation just given with ‘rms’ in place of ‘ave’. This diﬀerence is then divided by the time interval of the local average. τk−1 ) and. τ0 ) and similarly for the other integral) leads to τ τ 2 vrms (τ2 . The entire derivation above can be repeated for rms velocities with similar results but a few more subtleties arise in interpretation. the squared velocities are added and each must be weighted by its time interval. in a real case.26) Recognizing the integrals in [ . τ2 − τ0 (4. . The discussion so far has been only for average velocities across an interval. ∆τk = τk − τk−1 and τ = k=1 ∆τk . With noisy data. τ2 − τ1 (4. Of course.17) results in 2 vrms (τ2 .27) is the addition rule for rms velocities. ] as rms interval velocities squared multiplied by their interval τ 2 2 times (i. from z1 → z2 or equivalently from τ1 → τ2 . VELOCITY (4. equation (4. there is no guarantee that the term [τ2 vave2 − τ1 vave1 ] will always be positive leading to the possibility of negative velocity estimates. τ0 ) + (τ2 − τ1 )vrms (τ2 . τ01 vins (˜)d˜ = [τ1 − τ0 ]vrms (τ1 . it can be used to estimate a local average velocity given two macroaverage velocities.24) can be used in a number of ways. Suppose the average velocities vave1 and vave2 from z = 0 to depths z1 and z2 are known.e. Then an expression for the average velocity. τ0 ) = 1 2 2 (τ1 − τ0 )vrms (τ1 . However. then this process (i. Equation (4. If vave1 . Equation (4. errors in the measurements can lead to wildly incorrect estimates of vave (τ2 . andτ2 are all measured without error.e. .25) The two macro averages are each weighted by their time intervals and then the shallower average is subtracted from the deeper. it shows how to combine a set of local average velocities to obtain the macro average velocity across a larger interval. as before. vave2 .27) For the case of n subdivisions between τ2 and τ0 this generalizes to 2 vrms (τ2 . if vins (τ ) is constant across each interval then vk is an instantaneous velocity and this distinction vanishes. τ1 . Most obviously.24) and all of the comments made previously about vave apply here for vrms . This is the rms equivalent to equation (4.27) can be rearranged . Also.24) and is vave (τ2 . τ1 ) . In particular. Also. τ0 ) 1 = τ2 − τ0 n 2 vk ∆τk k=1 n (4. τ1 ).84 CHAPTER 4. τ1 ) = 1 [τ2 vave2 − τ1 vave1 ] . τ0 ) = 1 τ2 − τ0 τ1 τ0 2 vins (˜)d˜ + τ τ τ2 τ1 2 vins (˜)d˜ .28) be considered to be instantaneous velocities.28) where vk = vrms (τk . τ τ (4. Equation (4. Given τ0 < τ1 < τ2 and applying this rule to equation (4. the division by τ2 − τ1 can be unstable if the two times are very close together.24) is the average velocity of the kth ﬁnite interval and is thus the time average of vins across the interval. it is c b c instructive to consider an alternative approach. To combine rms velocities. It is a property of integrals that a = a + b where a < b < c. equation 4.
Under the assumption that stacking velocities are well approximated by rms velocities (Dix (1955) or Taner and Koehler (1969)). Consider the interval velocities deﬁned by vint = z2 − z 1 τ2 − τ1 and vint = ˜ 2 2 vrms2 τ2 − vrms1 τ1 . and that the rms velocities to the reﬂectors are also known. this is a constraint upon how fast vrms estimates can decrease with increasing time.H. the rms velocity of the interval is then estimated with equation (4.7.8 MATLAB velocity tools To this point.31) τ2 Since τ1 /τ2 < 1. τ0 ) − (τ1 − τ0 )vrms (τ1 . velocity functions are inherently numerical because they are derived from experiment. the discussion of velocity measures has been illustrated with an instantaneous velocity whose form is a known analytic function.30) is often called the Dix equation for interval rms velocities because it was C. say τ1 . If the term τ2 vrms2 − τ1 vrms1 becomes negative then imaginary interval velocity estimates result.2.1. τ1 ). z1 .32) is always greater than vrms1 provided that vmax > vrms1 so that this is a constraint on the rate of increase of vrms .29) or. Exercise 4. Why? 4. as with average velocities. τ1 ) = 85 1 2 2 (τ2 − τ0 )vrms (τ2 . Show that the righthandside of inequality (4. 1955) who ﬁrst recognized the connection between stacking velocities and rms velocities and showed how to calculate an interval velocity from two stacking velocity measurements. errors in 2 2 measurement lead to problems with the estimation of vrms (τ2 . Suppose that the times and depths to two reﬂectors are known.30) In this expression τ0 has been set to 0 and vrms2 = vrms (τ2 . Since Pwave seismic velocities are not expected to exceed some vmax (say 7000 m/s) a constraint would be 2 2 vrms2 < vrms1 τ1 τ2 − τ1 2 + vmax . (4. τ0 ) and similarly for vrms1 . τ2 − τ1 (4. Dix (Dix. with simpliﬁed notation 2 vrms (τ2 .7. The application of equation (4. Thus one essential condition for the use of this technique is that τ1 2 2 vrms2 > vrms1 . More realistically. say vrms1 and vrms2 . τ2 . τ2 − τ1 Under what condition(s) will these interval velocity estimates be similar? If the interval between the reﬂectors is highly heterogeneous. which estimate will be larger.30) in practice requires the measurement of stacking velocities and vertical traveltimes to two closely spaced reﬂectors. There is no mathematical basis to constrain the rate at which vrms can increase. MATLAB VELOCITY TOOLS to give an expression for estimating a local rms velocity from two macro velocities 2 vrms (τ2 .4. However. Equation (4. however. τ0 ) τ2 − τ1 (4.8. and z2 . τ1 ) = 1 2 2 τ2 vrms2 − τ1 vrms1 . τ2 τ2 (4.30).32) Exercise 4. The conversion of such numerical velocities . it is reasonable to formulate a constraint on physical grounds.
suppose that vins (z) is a piecewise linear function with ﬁve “knees” prescribed by (v. 500 m).8. drawvint Plots interval velocity curves as piecewise constant functions. The variation between the knees is no longer linear. VELOCITY 0 0. vave2vint Converts average velocity to interval velocity. (2700 m/s.2 CHAPTER 4.7 c 2000 1000 2000 3000 meters/sec 4000 0.8 b 1000 0. 1600 m).9. Therefore. Two alternate approaches are (1) ﬁt the numerical velocity functions with an nth order polynomial and perform the necessary integrations using polynomial integration rules. 2000 m). (c) desampled vrms (τ ).2 0. vint2t Computes vertical traveltime given interval velocity versus depth.8 1000 2000 3000 meters/sec 4000 d 3500 4000 0. or (2) implement a numerical integration scheme for the conversion formulae.3 meters 0. Five functions are available to convert velocity functions from one form to another. The second approach is taken here. vk prescribed at depth zk . (4000 m/s.86 0 0 0. velocity functions are speciﬁed by prescribing two vectors. There is also a utility plotting function to draw piecewise constant lines.1 0. No utility is provided to deal with instantaneous velocity since this can be treated simply by generating a ﬁnely sampled interval velocity.1 500 seconds 0. z) pairs as (1200 m/s.6 0. the last velocity in a velocity vector applies for all z greater than the last entry in the depth vector. (Right) The curve on the left has been converted to vins (τ ).3 seconds 0. vint2vave Converts interval velocity to average velocity.4 0.5 0. (d) ten legged interval rms approximation to vins (τ ). vint2vrms Converts interval to rms velocity.4 0.9: (Left) A ﬁve legged vins (z) with linear variation between the knees. Figure 4.7 0.6 0.1 shows how to compute vins (τ ) for . Code Snippet 4. vrms2vint Converts rms velocity to interval velocity.5 a 1500 0. Interval velocities are inherently piecewise constant and the convention used here is that the kth velocity. one for the velocities and the other for the depth or time that they apply. from one form to another is often necessary in data processing and software tools are required for this purpose. (3000 m/s.10: (a) vins (τ ) from Figure 4.9 1000 1500 2000 2500 3000 meters/sec Figure 4. (b) ﬁnely sampled vrms (τ ). As a ﬁrst example of the use of these functions. 0 m). 1400 m). persists as a constant until depth zk+1 . (3500 m/s. Like seismic traces.
v. Therefore the computation of τ (z) from z = 0 requires that some initial velocity be used for the depth range above the log.v. Essentially. Line 5 computes τ (z) by calling vint2t and thus deﬁning vins (τ ).ˆ2) just adds the squares of the integers from 1 to 5 to get 55. This is a discrete approximation to the deﬁnite integral of the function y = x2 from .1 to compute: vrms from the surface for every point in vins (τ ) a ten point sparse vrms (τ ) and a tenlegged rmsinterval velocity approximation to vins (τ ).z). in the form of a constant time shift τ0 .3) is done within vint2t with the single command t1(2:nz)=cumsum(dz. 30. 4. Thus. The vector t1 is τ (z) and has been initialized to zero.) Often velocity functions from well logs do not begin at z = 0.z2). browse the source code ﬁle.ˆ2) has the result [1. that is the ﬁrst depth divided by the ﬁrst velocity.8.53 )/3 ≈ 55. . 3.v2=pwlint(z.ylabel(’meters’). t2=vint2t(v2. This code deﬁnes a ﬁve legged. 2. End Code The computation of τ (z) requires the numerical computation of the integral in equation (4.z2.5. Given a densely sampled function. Line 2 uses piecewise linear interpolation (pwlint ) to resample the ﬁve legged function to a ﬁne interval so that the piecewise constant interval velocity approximates the desired piecewise linear instantaneous velocity. and vint is the interval velocity vector. t=interp1(z2.5.5. and 5. Then vint2t can be run once with the initial velocity set to zero. The diﬀerence between these is that the ﬁrst does a deﬁnite integral while the second does an indeﬁnite integral. It makes Figure 4. τ0 defaults to τ0 = z(1)/v(1).z.8. MATLAB VELOCITY TOOLS 87 this vins (z) and displays its results in Figure 4.flipy xlabel(’meters/sec’).plot(v2.5 2 x x dx and is just a single number while cumsum approximates . This is done in Code Snippet 4.ylabel(’seconds’).5 for which the analytic answer is (5. 5. This can be input to vint2t .5 and ﬁve successive upper limits of 1. (Note that the vint2t returns oneway time so these values must be doubled for twoway time. 1 2 3 4 5 6 7 8 v=[1200 2700 3500 3000 4000].) Finally line 6 creates the interval rms approximation to vins (τ ) by sending the coarse vrms (τ ) to vrms2vint .9.1. Code Snippet 4. dz is a vector of the depth intervals.t2. subplot(1. 14. Thus sum approximates 5.4167. the simplest way to do a numerical integration is with the functions sum and cumsum.flipy.53 −.9. and the time to the marker can be observed to be oﬀ by some ∆τ in oneway time.5 x2 d˜ and results in a vector the ˜ x . This can be estimated if the depth and time to some marker formation top are already known. this is just a desampled version of the ﬁnely sampled vrms (τ ). This carries on after Code Snippet 4. the command sum([1:5]. Line 2 creates the dense vrms (τ ) function using vint2vrms shown as curve ‘b’ in the ﬁgure.10 is the result.2. Figure 4.8.5.8.2). subplot(1. 55] which gives the value of the integral of y = x2 for a lower limit of .8.5 same length as the input.2.) Code Snippet 4.z2).t2.1). Line 3 deﬁnes a blocky ten legged time vector and line 4 creates the coarse vrms (τ ) (curve ‘c’) by calling vint2vrms with a third argument. Now consider the computation of vrms (τ ) and the construction of a ten layer approximation to vins (τ ) using interval rms velocities. z2=0:10:2000.5 to 5. as the fourth argument. piecewise linear vins (z) and then computes vins (τ )./vint(1:nz1)).2.z=[0 500 1400 1600 2000]. xlabel(’meters/sec’).v.4. For example.5 .2 and the result is shown in Figure 4. (For more details.’r*’). (It was not necessary to create the ﬁnely sampled vrms (τ ) as this was done to demonstrate the software.plot(v2.3). Alternatively cumsum([1:5].10.t.’r*’). the traveltime integration of equation (4.
For simplicity.drawvint(tblock.11: An impulsive plane wave approaches horizontal and vertical receiver arrays 1 2 3 4 5 6 7 8 plot(v2. Is there any signiﬁcant diﬀerence? Exercise 4.2. . Then use MATLAB’s random number generator.∆z Figure 4.8. Exercise 4.11 except that the plane wave is monochromatic.11). drawvint(t2.tblock). rand.t2. use only two dimensions. vint=vrms2vint(vrmsblock.9 Apparent velocity: vx . (For time to depth conversions.v. compute average velocities from both interval velocity functions). Then create the inverse function vave2vrms. Load the ﬁle vp_from_well.tblock).flipy vrms=vint2vrms(v2.12: Similar to Figure 4.8. drawvint(tblock. tblock=linspace(min(t2). Finally calculate vins (τ ) from the perturbed vrms (τ ) function and determine the percentage error in the vins (τ ) estimates caused by the 2% error in vrms (τ ).8. create vrms (τ ) for the depth range of 0 to 3000 m.t2). Working with the universal velocity function. Create two tenleg intervalvelocity approximations to vins (z) one using average velocities and one using rms velocities. If the medium av ro ef a nt e im tt t z . What does this say about the sensitivity of interval velocity calculations to noise? 4. The detectors are spaced at intervals of ∆x at z = 0 (Figure 4.mat that contains a vector of Pwave velocities and a corresponding vector of depths.vint).ylabel(’seconds’). and let the wavefront make an angle θ with respect to the horizontal (θ is called the emergence angle of the wave). End Code Exercise 4.∆z θ t z z Figure 4. Compare the accuracy of time to depth conversion using these two alternate approximations.max(t2).1. to add a 2% random ﬂuctuation to the vrms (τ ) function. Test your codes with the universal velocity function by comparing with the analytic forms for vrms and vave .t. vy .10). (x.88 CHAPTER 4. z). vz Consider a wavefront arriving at an array of detectors.t2.vrmsblock).3.’r*’). Create a function called vrms2vave that converts average velocities to rms velocities. xlabel(’meters/sec’).vrms). vrmsblock=vint2vrms(v2. VELOCITY x θ w x + ∆x tim e Receivers Receivers x θ x + ∆x λx λ Receivers t + ∆ λz z .
In 2D for example. the fk transform represents a seismic record on a grid of horizontal wavenumber. sx .38) 2 = v2 + v2 + v2 . Each point in the (kx . ∆t cos θ (4. f . by simply choosing an event of interest on a seismic record and measuring the slope. Reasoning similar to that used before shows that the arrival at z − ∆z is delayed from that at z by cos θ ∆z. kx . The apparent velocity is never less than the real velocity and can range up to inﬁnity. APPARENT VELOCITY: VX . It will be seen shortly that this is a measurement of the ray parameter of the ray associated with the chosen event.36) If this argument is extended to 3D. (4.2. the others being position. the result is that there is an apparent velocity in the y direction as well and that the sum of the inverse squares of the apparent velocities is the inverse square of the real velocity: 1 1 1 1 (4. Apparent velocities are one of the four fundamental observables in seismic data. enlarge the thought experiment to include an array of receivers in a vertical borehole and spaced at ∆z.34) The quantity vx is called an apparent velocity because the wavefront appears to move at that speed even though its true speed is v0 .4. These waves are inﬁnite in extent so they have no speciﬁc arrival time. it does make sense to ask when a particular wave crest arrives at a particular .2.33) v0 Thus it appears to move along the array at the speed vx ≡ ∆x v0 .35) ∆t = v0 Therefore. vz . Since inﬁnities are cumbersome to deal with it is common to work with the inverse of vx . However.9. v0 x y z We observe apparent velocity. ∆t/∆x. Knowledge of the ray parameter essentially determines the raypath. a single f ) plane waves so in 3D or 2D they are called Fourier plane waves. This allows the ray to be projected down into the earth and to possibly determine it’s reﬂection point.f ) plane has a complex number associated with it that gives the amplitude and phase of a fundamental Fourier component: e2πi(kx x−f t) . and temporal frequency. In 3D these fundamental components are monochromatic (i. Another way to measure apparent velocities is with a multidimensional Fourier transform. the vertical apparent velocity. Another common convention for horizontal slowness is to call it p which signiﬁes the ray parameter . Now. provided that the velocities in the subsurface are known. ∆t/∆x or horizontal slowness. (4. is vz ≡ Using simple trigonometry. it results that 1 1 1 2 = v2 + v2 . called the timedip. called raytrace migration. That is v0 ≤ vx ≤ ∞. time and amplitude. then the wavefront arrives at x + ∆x later than it does at x by the delay sin θ ∆t = ∆x. = ∆t sin θ (4. This technique. will be discussed in section 5. v0 . or equivalently timedip. VZ 89 immediately beneath the receivers has the acoustic velocity.e.37) v0 ∆z = . v0 x z (4. VY .
An important property of the wavenumber vector is that it points in the direction of wave propagation (for an isotropic.39) (4. The motion of a point of constant phase is tracked by equating the phase at (x. using k = λ−1 . homogeneous medium). (kx . (4.41) Now.45) ∇φ = kx x + ky y + kz z = k. If equation (4. z). Radial lines (from the origin) in the (kx . y. for any monochromatic wave. VELOCITY location.) as x 1 1 1 1 = 2 + 2 + 2. etc. that is the direction of a raypath. then the Fourier plane wave at that point is Ae2πi(kx x−f t)+iφ . then equation (4.f ).38) is evaluated for the Fourier plane wave e2πi(kx x+ky y+kz z−f t) the result is 2 ky 1 k2 k2 = x + 2 + z. k. The advantage of the Fourier domain lies in this simultaneous measurement of apparent velocity for the entire seismic section.ky .43) 2 λ λx λy λz which shows that.41) leads to 2 2 2 k 2 = kx + ky + kz . ˆ ∂r (x2 + y 2 + z 2 ) and r ˆ (4. An easy way to see this is to take the gradient of the phase of a Fourier plane wave.g. y . are the components of a wavenumber vector.f ) plane connect points of a common apparent velocity. r = (x.42) This very important result shows that the coordinate wavenumbers.40) Thus the ratio of f to kx determines the horizontal apparent velocity of the Fourier plane wave at (kx . This gradient is ˜ ˜ ˜ ˜ ∂φ x + ∂φ y + ∂φ z ∇φ = ˆ ˆ ˆ (4. we have λf = v and.46) . If the Fourier transform has the value Aeiφ at some (kx . The disadvantage is that the notion of spatial position of a particular apparent velocity measurement is lost. so that ˜ ˆ ∇φ = r ∂k · r = r k = k. ∆t kx (4. the apparent wavelengths are always greater than the true wavelength. 2 2 v f f f2 (4.f ). Using a position vector. This equation can be achieved more simply by writing ∇ = r ∂r . a wave crest is identiﬁed as a point of constant phase where phase refers to the entire argument of the complex exponential. then wavefronts can be visualized as contours of the phase function φ = πi(k · r − f t). Mathematically.kz ). like apparent velocities.90 CHAPTER 4. and z are unit vectors in the coordinate directions. Calculating the indicated partial ˆ ˆ ˆ derivatives leads to ˜ ˆ ˆ ˆ (4. kx = λ−1 . Equation (4. The gradient of this phase function points in the direction normal to the wavefronts. Since the wavefront is deﬁned as a surface of constant ˜ phase. t) with that at (x + ∆x.44) ∂x ∂y ∂z where x. (4. where r = ˆ∂ is a unit vector pointing to a particular location. the Fourier plane wave can be written compactly as e2πi(k·r−f t) .42) can be expressed in terms of apparent wavelengths (e. t + ∆t) as in 2πi(kx x − f t) + iφ = 2πi(kx (x + ∆x) − f (t + ∆t)) + iφ from which it follows that ∆x f = .
Working in the rotated coordinates (x . The only way for the two wavefront systems to maintain continuity across the interface. f. sin θ sin φ (4. Physically. In the ﬁrst medium.47) This result is called Snell’s law. Here. and still have diﬀerent wavelengths. To understand its origins. The derivation of Snell’s law given here makes it clear that it applies to reﬂected as well as . z ).13: Snell’s law results from the physical requirement that the apparent velocity along an interface be conserved. Either possibility violates considerations of causality. So. the inverse apparent velocities are proportional to the components of the wavenumber vector that points in the direction of wave propagation. The angles involved in Snell’s law can be considered as the angles between the wavefronts and the interface or between the raypaths and the normal to the interface. Snell’s law can be derived in other ways. As the wavefronts cross the interface. Since the frequency.10. otherwise. Thus v1x ≡ v1 v2 = v2x ≡ . the wavelength is λ1 = v1 /f while in the second medium it is λ2 = v2 /f . the apparent velocities measured along the interface must be the same in both media. Fermat’s principle says that the most important paths are those for which the traveltime is stationary with respect to slight variations of the path. Then the requirement of wavefront continuity means that the wavelength component measured along the interface must be the same when evaluated in either medium. perhaps the most common being to demonstrate that it is a consequence of requiring the raypaths correspond to stationary traveltimes. consider Figure 4. The relationship between these angles follows from a consideration of apparent velocity.10 Snell’s Law Snell’s law is the relation that governs the angles of reﬂection and refraction of wavefronts (or equivalent raypaths) at velocity interfaces. the wavefronts in the second medium would either lead or lag those in the ﬁrst medium. waves can propagate energy from point A to point B along inﬁnitely many diﬀerent paths. the apparent velocity vx must give the same result when evaluated using v1 and θ as when using v2 and φ. 4.13 that shows a periodic plane wave propagating across a planar interface between two media of velocity v1 and v2 . does not change (this is a property of linear wave propagation). SNELL’S LAW 91 z z y + ˆ x ∂ = φ ˜ ∇ z δ x x medium 1 θ λ1 θ ϕ ϕ δ λ2 medium 2 Figure 4. is for them to have diﬀerent angles with respect to the interface. they must do so in a continuous fashion.4. Suppose an array of receivers were placed along the interface. This is known as Fermat’s principle. stationary most often means a minimum though there are important physical situations for which traveltime is maximized.
vj−1 vj Since all of the velocity interfaces are horizontal. vj−1 vj (4. in the case of an incident Pwave reﬂecting as an Swave. p is generally referred to as the ray parameter since it is a unique constant for any ray and so parameterizes (or names) the possible rays. For example. φj = θj so that sin θj sin θj−1 = . VELOCITY z φ θ φ θ v v φ θ φ v z v z z Figure 4. for the jth interface. all velocity interfaces are horizontal and ray propagation is especially simple. this results in the angle of incidence and the angle of reﬂection being equal. in elastic media. where there is only one mode of wave propagation. as sin θj−1 sin φj = . The conservation of p and its identiﬁcation as the horizontal apparent slowness is a direct consequence of Snell’s law. this holds for arbitrary wave types and for nonplanar wavefronts and interfaces. Though it is not proven here. v(z) (4. vp vs (4.48) As a ﬁnal summary statement. Using the notation of Figure 4.92 CHAPTER 4. Snell’s law states that wavefront propagation across a velocity interface always conserves the apparent velocity along the interface. Snell’s law states sin θp sin θs = . transmitted energy. Snell’s law says that the horizontal apparent velocity of the wavefront associated with the ray is conserved. However. 4. the incident and reﬂected waves can be either Pwaves or Swaves.51) . Thus the quantity p = sin θj /vj is conserved throughout the entire wave propagation. In this case.14 this may be stated.11 Raytracing in a v(z) medium A v(z) medium is one where ∂x v = ∂y v = 0 and all velocity interfaces are horizontal. In an acoustic medium. This analysis generalizes to a continuous variation of v with z such that p≡ sin (θ(z)) = a constant for any particular ray.14: In a v(z) medium.50) (4.49) This analysis may be repeated at any other interface with a similar conclusion.
From the geometry. at depth z. (4. and travelling at an angle θ(z) with respect to the vertical. Then a new. v(z) v(z) cos (θ(z)) (4.15 shows a diﬀerential element of a ray. p values) are examined and hopefully two p values will be found that bracket the desired oﬀset. the horizontal distance travelled becomes z2 x(p) = z1 pv(z) 1 − p2 v 2 (z) dz dz (4. Figure 4. then summation forms . it follows that dx = tan (θ(z)) dz (4. The diﬃculty is that it is usually desired to trace a ray with a speciﬁc oﬀset and there is no simple way to determine the ray parameter that will do this. RAYTRACING IN A V (Z) MEDIUM 93 dx dz θ(z) ds Figure 4.55) Expressions for macroscopic raypaths are obtained by simply integrating these results.52) and dt = ds dz = . (4.57) Given a velocity function and a ray parameter we can compute exactly the horizontal distance (oﬀset) and traveltime for a ray that traverses between two depths.11.56) and the total traveltime is t(p) = z2 z1 v(z) 1 − p2 v 2 (z) .54) . If the v(z) medium is discretely layered rather than continuously variable. reﬁned fan of rays can be constructed and the process repeated until a ray is found that produces the desired oﬀset within a speciﬁed tolerance (called the capture radius).e.15: A diﬀerential ray element ds.53) Snell’s law is incorporated by replacing the trigonometric functions using pv(z) = sin (θ(z)) so that dx = and dt = pv(z) 1 − p2 v 2 (z) dz v(z) 1 − p2 v 2 (z) dz (4. For a ray travelling between depths z1 and z2 . Generally the process is iterative. The oﬀsets produced by a fan of rays (i. General expressions for the traveltime and horizontal distance travelled by any ray in a v(z) medium can be easily derived.4.
have a ray parameter of 0. and ∆t is the time delay between the wavefront arrival at r and r+∆r.51). 2 1 − p2 vk (4. the ray parameter is given by sin θ0 /v0 so ∆t 1 sin θ0 = = = p.16: The ray parameter can be measured directly by measuring the delay between wavefront arrivals at successive receivers.58) and t(p) = n k=1 vk (4.e.11. According to equation (4. ∆r vr v0 (4. Waves travelling horizontally across the array have a ray parameter of 1/v0 and on a seismic (x. the emergence angle.56) and (4.61) where vr is the horizontal apparent velocity of the wave at the measurement location. it is expected that p changes with position due to changes in emergence angle and due to lateral variations in the instantaneous velocity. of equations (4. In arriving at this expression. ∆r is the receiver spacing. θ0 of a ray arriving at a particular pair of receivers is v0 ∆t sin θ0 = (4.57) are more appropriate.1 Measurement of the ray parameter Given a seismic source record. VELOCITY ZOOM ∆r θ Emergent Ray ∆s θ θ Figure 4. the ray parameters for the upcoming waves arriving at the receiver spread may be estimated by measuring the horizontal apparent velocity of each wave (see section 4. As shown in Figure 4. Horizontal events. waves travelling vertically when they reach the receiver array. any wavefront curvature has been assumed to be inconsequential at the local site of measurement.59) 4.60) ∆r where v0 is the instantaneous velocity immediately beneath the receivers.94 s Receivers r CHAPTER 4. Generally.9). i. t) plot have the maximum possible .16. These are easily seen to be n x(p) = k=1 pvk ∆zk 2 1 − p2 vk ∆zk .
p) = and 1 pc 2 1 − p2 v0 + 1 − p2 {v0 + cz} 2 (4. Thus the fan of allowed p values in (kx . t) and (kx . f ) space as f /kx (equation (4. the range of possible values for the ray parameter is −v0 ≤ p ≥ v0 . Since velocity is always increasing in this case. p) = ln c v0 1+ 1+ 2 1 − p2 v0 2 . RAYTRACING IN A V (Z) MEDIUM A t x B kx 95 f Figure 4. Even though the wavefronts are vertical. f ) space. f ) space into allowed and forbidden regions (B). when θ(z) = sin−1 (pv(z)) = 90◦ .) The shaded portion of Figure 4. .4. Manifestly. t) space (A) and segment (kx . t) space is a fundamental property of a seismic time section.g. −1 −1 Taking sign into account. p values are found only along radial lines emanating from the origin. the results are x(z. though such events may exist all (x. Since apparent velocities can also be expressed in (kx .62) describes a ray as it goes from zero to some depth z.56) and (4.63) 1 − p2 {v0 + cz} Slotnick shows that equation (4. f ) space. In (x. This maximum possible steepness in (x. f ) space corresponding to kx /f  < v0 (i.11. 4.11. the zero ray parameter plots vertically down the f axis while it is horizontal in (x. f ) space that is available for seismic imaging. The portion −1 of (kx . and z2 = z. In (kx .17: The physical considerations that place limits upon ray parameter manifest as limits on the maximum timedip in (x. f ) space is segmented into allowed and forbidden regions. outside the shaded region in Figure 4. t) space. this phenomenon means that (kx . f ) forms a symmetric shape about the f axis. the fan of allowed time dips forms a bowtie when plotted at a speciﬁc point.62) 1 v0 + cz t(z.) In (kx .40)).62) describes an arc of a circle. slope. Letting v(z) = v0 + cz.17B) is “forbidden” to simple rays and is called the evanescent region. Figure 4.17 shows this situation for both (x. (It will be seen later that certain exponentially decaying wave types can occur here. the Snell’s law angles are always getting larger as a ray goes deeper. the slope on the time section cannot exceed 1/v0 .17B is called the body wave region and is the portion of (kx . The details can be found in Slotnick (1959) pages 205211. (4. t). (Only one half of the bow tie is shown here because negative frequencies are generally redundant for realvalued data. having radius 1/(pc) and centered 2 at x0 = 1 − p2 v0 /(pc) and z0 = −v0 /c. the universal velocity function). f ) spaces. t) locations. Eventually the ray ﬂattens out. not along lines of the same slope emanating from some other point. Assuming a value for v0 in the course of data processing means that any events with slopes steeper −1 than v0 are interpreted as nonphysical and must be rejected.e. z1 = 0.57) for the case of instantaneous velocity that increases linearly with depth (e.2 Raypaths when v = v0 + cz It is not diﬃcult to integrate equations (4. equation (4.
Then. This code implements equation (4. z(x) is still single valued so the complete raypath is most easily computed by solving equation (4. Equation (4. VELOCITY 5 10 15 20 x kilometers 25 30 35 5 10 15 20 x kilometers 25 30 35 Figure 4.18. for k=1:nrays . called its turning point. This was created with Code Snippet 4.65) and makes Figure 4.thetamax=80. However.65) to create the raypath display shown in Figure 4. 1 2 3 4 5 6 x=1:50:35000.11.65) returns a complex number for an x distance that cannot be reached by a particular ray. Therefore. Figure 4. thetamin=5. is found from 1 − pv0 .c=.65) 1 − {pcx − cos θ0 } − pv0 .) Also.1.length(x)). and turns upward.19: A set of wavefronts associated with the raypaths of Figure 4.6.62) for z to get 1 2 z= (4.nrays=10. in looping over the desired rays.1 created this plot.96 0 5 10 10 z kilometers 15 20 25 30 35 0 25 30 0 z kilometers 15 20 0 5 CHAPTER 4. pc Code Snippet 4. the code generates z values that are negative so lines 1518 set these to NaN.2. This code establishes a horizontal distance range and a set of takeoﬀ angles on lines 13.11. (4.18. zraypath=zeros(nrays.11.64) zmax = pc The complete raypath for a ray that reaches its turning point and then returns to the surface must have two values of x for each z so the function x(z) is mathematically double valued. Code Snippet 4.1. (Recall that NaN’s do not display when plotted.18. it calculates a depth for each element of the vector x.18: A selection of raypaths are shown for the universal velocity function of Figure 4.18 is much more realistic than a simple constant velocity calculation using straight rays. Code Snippet 4.1 implements equation (4. vo=1800. the depth at which a ray bottoms out. It shows that most of the energy of a seismic source cannot penetrate to great depths because it is turned around by refraction. deltheta=(thetamaxthetamin)/nrays.11. many of these rays will not cover the full range of x. However. Lines 1114 search for these points and replace their depths with NaN. The ray bending in Figure 4. All of the raypaths are obviously circular arcs whose centers move to the right as the ray parameter decreases.
r=vo*sinh(c*times(k))/c. This code assumes that Code Snippet 4.:) = real(z). Clearly the raypaths are normal to the wavefronts.ˆ2(zwzo(k)).nwaves). Code Snippet 4. ind=find(real(xw)<0.zraypath/1000).plot(x/1000.20 superimposes the raypaths and wavefronts and uses the command axis equal to ensure a 1:1 aspect ratio. being more closely spaced at shallow depths than when deeper. end ind=find(real(z)<0. xwavefront=zeros(nwaves. z = (sqrt( 1/(pˆ2*cˆ2) .). c (4.ˆ2). Figure 4.11. Figure 4. cs=cos(pi*theta/180).1 has already been run and proceeds from there to calculate and plot the wavefronts. Each circular wavefront has a radius of r= v0 sinh(cT ). end figure.ˆ2) vo/c).2. for a predeﬁned set of depths (line 1) the horizontal positions are calculated from the equation of a circle (line 9). ind=find(imag(z)˜=0. for k=1:nwaves zo(k)=vo*(cosh(c*times(k))1)/c.). The resulting wavefronts clearly show the eﬀects of increasing velocity with depth. As in the case of the raypaths.11. if(˜isempty(ind)) z(ind)=nan*ones(size(ind)).0).flipy.(xcs/(p*c)).4. zo=zeros(1. RAYTRACING IN A V (Z) MEDIUM 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 97 theta=thetamin+(k1)*deltheta. p=sin(pi*theta/180)/vo. if(˜isempty(ind)) xw(ind)=nan*ones(size(ind)).ylabel(’z kilometers’) End Code Slotnick also derives expressions for the wavefronts (surfaces of constant traveltime) and shows them to be circles whose centers are along the z axis at zw0 = v0 [cosh(cT ) − 1] c (4.19 is the result.2 calculates and plots 10 wavefronts for a set of traveltimes from 0 to 5 seconds. if(˜isempty(ind)) z(ind)=nan*ones(size(ind)).nwaves).%radius xw=sqrt(r. if(˜isempty(ind)) xw(ind)=nan*ones(size(ind)). end zraypath(k. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 zw=0:50:30000. .tmax. nwaves=10.11. end ind=find(imag(xw)˜=0. xlabel(’x kilometers’).11.0). Then.length(zw)). the strategy is to calculate the center of the wavefront circle (line z) and its radius (line 8).tmax=5. For each wavefront. this results in both complex and negative values which are found and set to NaN (lines 1017).66) where T is the traveltime deﬁning the wavefront. times=linspace(0.67) Code Snippet 4.
plot(xwavefront/1000. There is no known solution technique that solves this two point raytracing problem in one step.11.3 MATLAB tools for general v(z) raytracing The analytic expressions in the previous section produce ﬁrstorder realism by including the eﬀects of ray bending when v(z) is a linear function of depth. 0).63) from equations (4. more accurate results are often desired for complicated v(z) such as those that result from well log measurements. or more properly.3.11.56) and (4.ylabel(’z kilometers’) End Code Exercise 4.zw/1000).20: This ﬁgure superimposes the raypaths of Figure 4. Use equations (4.63) to calculate and plot the (x. it is suﬃcient to trace a ray from . In this case the only way to proceed is through a numerical implementation of equations (4. z) = (0.11.11. must be used. For deﬁniteness. Usually.19. a source at (x.1.62) and (4. end figure. xlabel(’x kilometers’). Since a PP ray follows a completely symmetric path (if source and receiver are at the same depth). Derive equations (4. it is desired to trace rays between two speciﬁc points such as a source and receiver.57).58) and (4. and considering transmitted rays only.:) = real(xw). VELOCITY 5 10 15 20 x kilometers 25 30 Figure 4. is there a unique p for each point in the (x. Instead. an iterative procedure.18 onto the wavefronts of Figure 4.flipy.98 0 5 10 z kilometers 15 20 25 30 0 CHAPTER 4. 17 18 19 20 21 end xwavefront(k.59). z) plane? Will your conclusion remain valid for more general v(z)? 4. For the linear increase of velocity with depth. perhaps via a reﬂection at a speciﬁc depth. what is the maximum sourcereceiver oﬀset for which a reﬂection is expected? Exercise 4. t) curve for a PP reﬂection from 2000 meters depth. In each case.2.56) and (4. Assume the universal velocity function and a source and receivers at depth 0.62) and (4. suppose it is desired to raytrace a PP reﬂection from a reﬂector at zr = 2000m in an arbitrary v(z) medium and for oﬀsets from 100 to 2000 m. Repeat your calculations for a PS reﬂection assuming a constant vp /vs of 2. as alluded to on page 93. Exercise 4. equations (4. However.57).
shootray Similar to rayfan but with less error checking (faster). we have four m × n matrices. If velocity were constant. Thus. the velocity model is assumed to be piecewise constant.3. only the latter is actually used in the twopoint raytracers. Code Snippet 4. v(iprop) is an m length column vector and p is an n length row vector. and traceray .11. z. Lines 4 through 8 are key to the eﬃciency of shootray . and line 3 establishes an index vector to the relevant velocities. However. and p that are (respectively) column vectors of velocity and depth and a row vector of ray parameters. . Lines 7 and 8 build the m × n matrices vprop and thk that represent v(z) and ∆z for each ray. The kth column of sn represents the product pv(z) for the kth ray parameter. rayfan a . As discussed in section 4. shootray has three inputs: v. RAYTRACING IN A V (Z) MEDIUM 99 z = 0 to z = zr at oﬀset x/2 and then double the results. raytrace demo Interactive demonstration of v(z) raytracing capabilities. traceray pp . this iteration will shoot many fans of rays so the ray fan algorithm needs to be very eﬃcient. with velocity v(k) beginning at z(k) and persisting as a constant until z(k+1).3. traceray ps . then simple geometry would predict the takeoﬀ angle of θ0 = arctan(x/(2zr )) and thus the ray parameter is trivially found.8. The function shootray shoots a fan of rays as deﬁned by the row vector p from z(1) to z(end) through the velocity model deﬁned by the column vectors v and z. traceray pp Traces a PP (or SS) reﬂection for v(z).56) does not easily facilitate this since the value of p that will do the job is not known. For a general case. These are rayfan Shoots a fan of rays given their ray parameters for v(z).4. Since these quantities are the same for each ray. Not all of these combinations of z and p can correspond to physical rays since the depth of penetration of a ray is limited. drawray Plots rays given their ray parameters. with z as the row coordinate and p as the column coordinate. However. The functions rayfan . In the general case. rayfan a Similar to rayfan but the rays are speciﬁed by angle. As shown in Code Snippet 4. However.11. traceray Traces an arbitrary ray given its raycode for v(z). On line 4. the takeoﬀ angle and hence the ray parameter and cannot be found analytically. There are seven functions and one demonstration script provided for v(z) raytracing. and shootray all performs this task in s similar fashion. because it is the most eﬃcient. For increasing velocity with depth. equation (4. The vector of rays deﬁned by p is traced from z(1) to z(end) using the velocities in v. traceray ps Traces a PS (or SP) reﬂection for v(z).11. they are represented by matrices with identical columns. This product of an m × 1 matrix representing v(z) with an 1 × n matrix representing p is an m × n matrix of sin θ = pv(z) called sn. the takeoﬀ angle will be smaller than that predicted with constant velocity while for decreasing velocity with depth the situation is reversed. The approach taken here is to shoot a fan of rays and to iteratively reﬁne the fan until a convergence criterion is met. Line 5 detects these nonphysical combinations by ﬁnding any values of pv(z) that are greater than one. the eﬃciency of shootray is achieved at the sacriﬁce of some ﬂexibility so rayfan and rayfan a are provided as well. the last velocity in v is irrelevant for shootray . Accordingly. Line 6 builds the matrix cs that represents cos θ(z) = 1 − p2 v 2 (z).
.. The codes are quite intricate and will not be displayed./cs). thk=abs(diff(z))*ones(1. sn = v(iprop)*p. This makes rayfan easier to use but slower.8.*sn).58) by using 2 the . Then. cs. The layers containing the source. sum produces a row vector that is the sum of each column of the matrix. sn. All three codes use similar schemes of building an equivalent layered model that allows the problem to be addressed by shooting rays in one direction only. see shootray. if(size(sn.t]=shootray(v. lines 17 through 20 assigns Inf to those nonphysical values that were ﬂagged earlier on line 5.length(p)). and traceray all work similarly with an iterative scheme involving multiple calls to shootray .1)>1) x=sum( (thk.) Instead of this twoway problem. the function sum is used to compute the discrete sum that approximates the integral in equation (4. The ﬁnal step. shootray is intended to be used within a larger raytracing scheme while rayfan is more easily used from the command line. The if statement is required for the single layer case also because of the behavior of sum. it lacks ﬂexibility to specify the start and end depths and always shoots the rays from z(1) to z(end). end End Code The ray tracing is completed in lines 9 through 15 and an if statement is used to handle the single layer case. cs=sqrt(1sn.length(p)). For example. traceray ps .*sn). The function shootray does not check for consistency of the inputs to ensure that v and z are column vectors and p is a row vector. else x=(thk..* operator to form the expression pvk ∆zk / 1 − p2 vk as an m × n matrix. line 10 computes equation (4. [ichk. vprop=v(iprop)*ones(1.m iprop=1:length(z)1. If there is only one layer. When applied to a matrix. traceray pp and traceray ps are constructed to trace PP and PS primary reﬂections and nothing else.*cs).. t=sum(thk. end %assign infs if(˜isempty(ichk)) x(pchk)=inf*ones(size(pchk))./(vprop. Using the m × n matrices thk. then the m × n matrices are all 1 × n row vectors. When given a row vector. Also. rayfan traces rays with the same scheme as shootray but incorporates error checking and allows the start and end depths to speciﬁed. The twopoint ray tracing functions traceray pp . This behavior dictated the construction of the m × n matrices with p constant in each column.*cs)). a oneway problem is set up by determining the layers for the upgoing leg and placing them beneath the reﬂector in the order that they are encountered (Figure 4. (It will be exactly the same set if the source and receiver depths are the same. The if statement circumvents this behavior by omitting the sum entirely in the single layer case.z.pchk]=find(sn>1). receiver.56). t(pchk)=inf*ones(size(pchk)). code not displayed . the PP reﬂection problem requires a ray to be traced down through a set of layers to a speciﬁed depth and then back up again though nearly the same set of layers. VELOCITY function [x. traceray is more general and can trace an arbitrary ray that has multiple bounces (reﬂections) and mode conversions.100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CHAPTER 4.*sn). and reﬂector are adjusted in thickness so that shootray can . t=thk. as discussed in section 4./cs.21).p) ./(vprop. sum adds its entries to get a single value instead of “summing” the columns of length 1.
receivers. A similar equivalent layering can always be constructed for a ray that changes mode (between P and S) and that takes any number of extra bounces. For example. they are vectorized to produce simple source gathers.4. This is a technically simple scheme for computing any ray in v(z). (B) The equivalent oneway raypath to the twoway ray shown in (A). Though the source depth need not equal the receiver depth. All three programs iterate until all receivers have a ray traced within a capture radius of their position or until a maximum number of iterations is reached.11. it allows the common (and very practical) practice of separating the reﬂectivity from the propagation model. A capture radius is the radius of an imaginary circle around each receiver which. The dashed line is the reﬂector in both cases. the user who disagrees with this approach is free to prescribe reﬂections at actual velocity layer boundaries. and reﬂector. the codes here can reﬂect.23. the equivalent layering simply must use the correct velocities. Reﬂections are assumed to come from a level of detail beyond that required for the traveltime calculations. RAYTRACING IN A V (Z) MEDIUM v v v v v v v v v v source 101 v source v v v v v v v v v v v v v v v v v A receiver B receiver Figure 4. That is. The results are shown in Figures 4. The call to traceray pp is on line 7 and the ﬁnal parameter dflag instructs the . then the captured ray is used directly. if multiple receivers are speciﬁed. The idea is that the rays are traced through a simpliﬁed background medium which is chosen to give suﬃciently accurate traveltimes for the task at hand. If optflag is zero. or mode convert. Of course. Lines 2 and 3 establish the basic geometry of source. The twopoint raytracing functions can all trace rays from a single starting point to multiple receivers at once. a linear variation of v(z) may be used with locally determined constants as a background velocity function. If the ﬂag optflag is set to 1. In the former case. then the actual traveltime and ray parameter returned are linearly interpolated between the captured ray and the next closest ray. This means that geometries like that of a VSP must be handled by calling the ray tracer separately for each receiver depth.4 exhibits the use of traceray pp and traceray ps to model PP and PS reﬂections with the universal velocity function as the background medium.11.21: (A) A PP reﬂection between a source and receiver at diﬀerent depths. is considered “good enough” for that receiver. if a ray falls within it. Line 1 deﬁnes the vp and vs velocity models with a vp /vs of 2.22 and 4. be used to trace rays from z(1) to z(end). Unlike many raytracers. Though this may not be physically correct. a ray at any depth not just at a layer boundary. they must all be at the same depth. the equivalent layering can contain many repeats of a section. Code Snippet 4. The capture radius is set to 10% of the receiver spacing and the maximum number of iterations is set to 4 which is adequate for smooth media. In the latter case.
An SP reﬂection could be created by reversing the order of the velocity arguments (i.pflag=1.’marker’.xlabel(’meters’).4 program to draw the rays into the current ﬁgure window. See Code Snippet 4.dflag). See Code Snippet 4.optflag. Lines 9 and 10 draw symbols indicating the source and receiver and line 12 plots the traveltime in the bottom half of the ﬁgure.102 Vertical gradient simulation.dflag).4.caprad...’color’.vs=.3z.)).11.’marker’.’r’.zsrc.zrec. [t.zsrc.zsrc..1 2.’none’.%source receiver and reflector depths xoff=1000:100:3000.’r’.4 1000 500 1000 1500 meters 2000 2500 3000 500 1000 1500 meters 2000 2500 3000 1500 2000 meters 2500 3000 1500 2000 meters 2500 3000 Figure 4.zrec=500.’linestyle’.zd.6zm/s.’linestyle’.xlabel(’meters’).grid.t).1.traceray ps(vs.1. Figure 4. .2 2. VELOCITY Vertical gradient simulation.%offsets.23.zsrc. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 zp=0:10:4000.’marker’.3 1000 seconds CHAPTER 4.’marker’. PS mode zsrc=’ . This example raytraces a PP and a PS reﬂection in a linear gradient medium. Lines 1522 are very similar except that traceray ps is called to create a PS reﬂection.zs.flipy..zrec*ones(size(xoff)).11...’b’.2 3.zp..11.22 and 4.. and max iter pfan=1. P−P mode zsrc=100 zrec=500 0 meters meters 1000 2000 3000 0 2 seconds 2.vp.22: A PP reﬂection is shown for a background medium of vp (z) = 1800 + . subplot(2. pflag.23: A PS reﬂection is shown for a background medium of vs (z) = 900 + .caprad=10.subplot(2.4..’v’) line(0.caprad.zp..flipy % PS reflection figure.’none’.subplot(2.’b’.p]=traceray_pp(vp.zrec. an SS reﬂection can be modelled using traceray pp and providing it with the Swave velocity functions. xlabel(’meters’).zd.e.itermax=4.1.xoff. title([’Vertical gradient simulation.itermax.itermax.ylabel(’seconds’).p]=traceray_ps(vp.vs.% default ray fan.flipy.5*vp.ylabel(’meters’).pfan.8 3 3.vp=1800+. num2str(zsrc) ’ zrec=’ num2str(zrec)]) line(xoff..zs=zp.. Similarly.zrec*ones(size(xoff)).% velocity model zsrc=100.’linestyle’. title([’Vertical gradient simulation.dflag=2.xoff. [t. num2str(zsrc) ’ zrec=’ num2str(zrec)]) line(xoff.’color’. optflag.6*zp.1). P−S mode zsrc=100 zrec=500 0 1000 2000 3000 0 2.’linestyle’.optflag=1.zd=3000.’color’.plot(xoff.2).’*’) grid.zp. It creates Figures 4.pfan.’color’.pflag. and various flags % create PP reflection figure. Code Snippet 4. cap radius.1).’*’) grid.ylabel(’meters’).zs.’none’.’v’) line(0. PP mode zsrc=’ ..’none’.
Code Snippet 4. P−S mode 103 500 meters 1000 1500 500 meters 1000 1500 Figure 4. itermax.1.’v’) line(0.11.itermax=4. for kk=1:length(zrec).24: A PP reﬂection is shown for an oﬀset VSP.dflag=2.5. Though not as eﬃcient in this mode.subplot(2.flipy t=zeros(size(zrec)).zsrc=0.plot(t.dflag=2.zsrc.caprad.%velocity model zrec=500:100:2500. The modelled events are shown in Figures 4.grid.1.zs=zp.1).zd. PP mode ’]) line(xoff..xlabel(’meters’).pflag.5*vp. See Code Snippet 4.’linestyle’.5 3 VSP Vertical gradient simulation.24 and 4. xlabel(’seconds’). The parameter pfan is set to 2 in this case which causes the ray tracer to start with the ﬁnal ray fan determined the last time it was called.’linestyle’.xoff.’b’.’*’) grid. figure.8 seconds 2 2. It creates Figures 4. subplot(2. . End Code Often very interesting calculations can be done by calling these functions in a loop.ylabel(’meters’).’none’.1.end [t(kk).1.optflag=1.vp=1800+.dflag).’color’. However.25.grid.t). since the receivers are required to be at a constant depth on each call to traceray pp a VSP cannot be modelled with a single call. This code traces PP and PS reﬂections for an oﬀset VSP by looping over receiver depth. P−P mode 0 meters meters 1000 2000 3000 0 500 depth (meters) 1000 1500 2000 2500 1.11.flipy.5.4 1.4.%cap radius.ylabel(’depth (meters)’). xlabel(’meters’).’color’.11.11.1).zrec).else.xoff=1500.p]=traceray_pp(vp.6 1. the calculation is still simple and accurate.zsrc. See Code Snippet 4. For example.zrec(kk)..11.subplot(2.2 depth (meters) 0 1000 2000 3000 0 500 1000 1500 2000 2500 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 zp=0:10:4000.5 2 seconds 2.2).plot(xoff.% default ray fan.flipy.ylabel(’seconds’).’marker’. end title([’ VSP Vertical gradient simulation.zp. the desired results can be obtained by looping over receiver depth.25. 25 26 Figure 4.%geometry caprad=10..zrec.6*zp. if(kk==1)dflag=gcf.’none’. subplot(2. and various flags figure.optflag. and max iter pfan=2.24 and 4.’r’.25: A PS reﬂection for an oﬀset VSP is shown.5.’marker’.pfan.flipy. RAYTRACING IN A V (Z) MEDIUM VSP Vertical gradient simulation.pflag=1. as Code Snippet 4.zd=3000.vs=.2).5 shows.
VELOCITY A P−S−S−S−S−P−P−P−P−S mode in vertical gradient media 1500 meters 2000 2500 3000 3..25 3. however. PS mode ’]) line(xoff.11.end [t(kk). subplot(2. end title([’ VSP Vertical gradient simulation.zp.pfan.flipy.’marker’.45 1000 4.zsrc.75 4.27: A complicated ray is shown that converts back and forth from P to S as it bounces.1000 2.else.e.85 4. There are many more possible ways to use these raytracing facilities. See Code Snippet 4.’none’.3 3. itermax.xoff.zsrc.65 4. For example.6 20 21 22 23 24 25 26 27 28 29 30 31 Figure 4.8 4.’b’. it might be expected that signiﬁcant rays like this will be symmetric (i.104 A P−P−P−P−P−P−P−P−P−P mode in vertical gradient media 0 500 1000 meters 1500 2000 2500 3000 0 500 1000 1500 meters 2000 2500 3000 meters 0 500 1000 1500 2000 2500 3000 0 500 1000 CHAPTER 4.6 demonstrates this facility by creating a complicated multiple bounce Pray (no mode conversions) on line 8 and a multimode ray on line 17...1. At 1000 m it converts to an Sray and travels back up to 800 m and then back down to 1000 m while remaining an Sray. For more examples. On the second reﬂection at 1000 m it converts back to a Pray and travels up to 100 m where it ends. for kk=1:length(zrec). xlabel(’seconds’).pflag.’color’.2 3.6.zrec.2). The ﬁnal entry in column two is meaningless. the ray code [0 1. The code of this script is similar to the examples presented here and should be comprehensible. the same bounce pattern on both the up and down legs).26: A complicated multiple is shown that remains a Pray throughout. . execute the script raytrace demo and follow the onscreen instructions.’marker’.100 1] speciﬁes a Pray from depth 0 to 1000 m.zd.’v’) line(0.zrec(kk).vs.800 2. See Code Snippet 4.9 1000 time 1200 1400 1600 1800 2000 offset 2200 2400 2600 2800 3000 time 1200 1400 1600 1800 2000 offset 2200 2400 2600 2800 3000 Figure 4. Code Snippet 4.ylabel(’meters’).’color’.35 3.11.7 4.’*’) grid. The key idea here is to use a ray code that deﬁnes the depths and mode types of the diﬀerent legs of the raypath.11.’linestyle’.11. End Code As a ﬁnal example of these raytracing facilities. creating an asymmetric ray is perhaps a better demonstration.zs.ylabel(’depth (meters)’). This calculation can be done with traceray and is shown in Code Snippet 4.6 t=zeros(size(zrec)).caprad.grid. Generally.’none’.p]=traceray_ps(vp. if(kk==1)dflag=gcf.zrec).4 3. A ray code is an n × 2 matrix with the ﬁrst column being a list of depths and the second containing either the integer 1 (Pwave) or 2 (Swave).xlabel(’meters’).’linestyle’.plot(t. consider the calculation of a complicated mode that takes multiple bounces and converts back and forth between P and S modes.dflag=2.dflag).’r’.optflag.1000 1.
what is the largest oﬀset that can be successfully raytraced for the reﬂector at z = 2500m for both PP and PS reﬂections.flipy [t.1000 1.2000 1. title(’A PSSSSPPPPS mode in vertical gradient media’).1500 2.6*zp.vp=1800+.t).plot(xoff. figure.optflag=1.vs=.27.’*’). grid.11.raycode. and max iter pfan=1.flipy [t. figure.t).dflag).pflag.zp. This code creates Figures 4.p]=traceray(vp. grid.’v’) line(0. How do these conclusions change if the reﬂector is at 1500 m? 4.pflag.4. .optflag.optflag.itermax.grid subplot(2.raycode.’none’.zp.3000 1.xlabel(’offset’).plot(xoff.26 and 4.ylabel(’meters’) line(xoff.caprad. 1000 ≤ z < 1550m 2750 + .1).’none’.11.2).vs. 0 1].zs=zp. constant velocity layers).1000 1.zs.pfan. Let the source and receivers be a z = 0 Make another plot showing the angle of incidence on the reﬂector (in degrees) versus oﬀset for both PP and PS reﬂections.%cap radius.1.caprad.7(z − 1550) . xoff=1000:100:3000.1.’marker’.4(z − 1000) .grid subplot(2.flipy. The ray trajectories are found by solving a certain diﬀerential equation that can be derived from the wave equation. 0 1].2300 1.flipy.0.2).1300 1.1.1).’*’).subplot(2. xlabel(’meters’).3000 1.subplot(2.1800 2. For the velocity model in the previous exercise. Explain why the ray tracing fails.’none’. and various raycode=[0 1.’color’. RAYTRACING FOR INHOMOGENEOUS MEDIA 105 Code Snippet 4.zs. .’r’. 1550 ≤ z and vp /vs of 2. xlabel(’meters’).11.2000 1. title(’A PPPPPPPPPP mode in vertical gradient media’).ylabel(’meters’) line(xoff.2000 2. .’linestyle’.’color’.1500 1.4.5*vp.’v’) line(0. Exercise 4. . Create a display showing the PP and PS raypaths for sourcereceiver oﬀsets from 10 to 3010 at 100 meter intervals for a reﬂector at a depth of 2500 m.dflag).1800 1.1300 2.5.pflag=1.’marker’.ylabel(’time’) raycode=[0 1. An alternative to the gridded velocity model is to specify the geometry of geologic interfaces between diﬀerent velocity units (layers) and then to prescribe the velocity of each unit by a simple analytic function (e.’linestyle’. .’none’.xlabel(’offset’). Rays are then traced through the model by using analytic results within with layers and explicit Snell’s law . 1500 1.2300 1.’b’. Consider the velocity model deﬁned by 1860 + .vs.’marker’.p]=traceray(vp.itermax=4.2000 1. caprad=10.itermax.6z .xoff. .zeros(size(xoff)).’marker’.zeros(size(xoff)).12 Raytracing for inhomogeneous media Raytracing for more general settings that the v(z) method described in the previous setting can be done by detailing the velocity ﬁeld on a grid in two or three dimensions and then shooting rays through it.g.’r’.% default ray fan.6.12.’linestyle’. 0 ≤ z < 1000m vp (z) = 3100 + .’linestyle’.ylabel(’time’) End Code Exercise 4.pfan.xoff.’color’.1.dflag=2.’b’.’color’. 1500 2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 zp=0:10:4000. Here is a demonstration of the use of traceray to compute multiplebounce and multiplemode raypaths.0.
In the second approach.69) where A(x) and T (x) are unknown functions describing amplitude and traveltime that are expected to vary with position. (4. the gridded model approach can rapidly consume a great deal of computer memory and can rapidly become impractical. using this result and ∂t ψ(x.106 CHAPTER 4. Furthermore. In this book. it is generally a complex matter to determine the next interface that a ray will encounter. t) = A(x)e2πif (t−T (x)) (4. the grid must be made quite small for the complex structure which results in too much detail for the upper medium. 4. In this case. The ﬁrst approach is generally simpler because the raytracing can be reduced to the solution of an ordinary diﬀerential equation that implicitly incorporates Snell’s law.12. t) = ∇2 A − 4πif ∇A · ∇T − 4π 2 f 2 A ∇T 2 (4. However. However. these results are exact and no simpliﬁcation has been achieved. A becomes constant while T still varies rapidly which leads to the expectation that variation in A will often be negligible compared with variation in T . only the gridded approach in two dimensions will be explored. (4.70) − 2πif A∇2 T e2πif (t−T (x)) .1 The ray equation A reasonable expectation for inhomogeneous media is that individual temporal frequencies can be represented with a mathematical form that is similar to that for a Fourier plane wave. In two or three dimensions. Substitution of equation (4.72) A 2 ∇ T − ∇A · ∇T = 0. for three dimensional simulations. a Fourier plane wave has the form Ae2πi(f t±k·x) where k and x are the wavenumber and position vectors. t) = ∇ · ∇ A(x)e2πif (t−T (x)) = ∇ · e2piif (t−T ) ∇A − 2πiAe2πif (t−T ) ∇T which can be expanded as ∇2 ψ(x.69) into equation (4.71) 2 Then. t) = −4π 2 f 2 Ae2πif (t−T (x)) in equation (4. for the variablevelocity scalar wave equation ∇2 ψ − 1 ∂2ψ =0 v 2 (x) ∂t2 (4.72) is expected to be negligible when velocity gradients are weak or when frequencies . the second term in equation (4. VELOCITY calculations at the interfaces. By analogy.68) and equating real and imaginary parts gives the two equations ∇T and 2 − ∇2 A 1 =0 − 4π 2 f 2 A v(x)2 (4.73) 2 So far. In the constant velocity limit.68) will require computation of the Laplacian of the assumed solution.68) an approximate planewave solution will now be assumed in the form ψ(x. the description of the geologic interfaces must be done with great care to ensure that they connect without overlap or voids and this can require complex geometric calculations. This is done as ∇2 ψ(x. This is especially true if rays are to be traced through a complex structure that lies far beneath a simple one.
The diﬀerential equation for raypaths is the vector equation that is implied by the eikonal equation (4. are high regardless of the velocity gradient. RAYTRACING FOR INHOMOGENEOUS MEDIA 107 T P T dx P Figure 4. partialdiﬀerential equation called the eikonal equation ∇T 2 − 1 = 0.28: A diﬀerential raypath element dx extends from a point P1 on a wavefront at time T1 to a point P2 on a wavefront at time T2 .28). a solution to the eikonal equation gives accurate traveltimes through complex media. Combining equations (4.74) Though not exact. for many realistic situations. If dx is the diﬀerential vector pointing from P1 to P2 then s may be written ˆ s= ˆ dx ds (4.75) and (4.4.74). raypaths are normal to the wavefronts and the latter are described as surfaces where T (x) = constant. Then ∆s = (T2 (P2 )−T1 (P1 ))/v(P1 ) is an estimate of the perpendicular distance between these wavefronts. Therefore. in other words. s points along the ˆ raypath. Equation (4.76) where ds = dx and s is the arclength along the raypath. Let P1 be a point on the surface T1 and P2 be the corresponding point on T2 along the normal from P1 (Figure 4.78) ds ds v ds . v(x)2 (4. the result is the nonlinear. ∇T must be a vector that points in the direction of the raypath and the eikonal equation shows that ∇T = v −1 .77) by calculating its derivative with respect to arclength. Consider a wavefront at time T1 (x1 ) and another at a slightly later time T2 (x2 ) where T2 − T1 is very small. (4.77) v(x) v(x) ds The traveltime T can be eliminated from equation (4.12.73) is called the geometrical spreading equation because its solution can be shown to describe the ﬂow on energy along a raypath.75) ∇T (P1 ) = lim P2 →P1 ∆s v(P1 ) ˆ where s is a unit vector that is normal to the surface T1 (P1 ) or. When this term is discarded. which is d ∇T d 1 dx = .76) gives the raypath equation 1 dx s ˆ = ∇T (x) = . For isotropic media. The ray segment is perpendicular to both wavefronts and has length dx = ∆s. (4. and s ˆ T2 (P2 ) − T1 (P1 ) s= ˆ (4.
gives the full magnitude of ∇T . This result can be further recast into a system of ﬁrstorder equations by modifying the righthandside using d dt d 1 d = = ds ds dt v(x) dt and deﬁning the slowness vector.86) dt dt The ﬁrst of equations (4.79) The last step in this equation is justiﬁed using equation (4.85) .1.108 The lefthandside of this equation can be simpliﬁed as follows d ∇T dT =∇ ds ds =∇ 1 .81) These last two equations allow equation (4.83) (4. VELOCITY (4.84). p = ∇T . let x = [x. Thus the ray equation is recast as 1 d 1 dx (4.77) p= 1 dx 1 dx = 2 . that is the scalar derivative with respect to arclength along the raypath. v(x) CHAPTER 4. (4.83) is dx dz = v 2 (z)px and = v 2 (z)pz . Using this result in the ﬁrst of equations (4.86) together with v −2 (z)dx/dt = v −1 (z)dx/ds results in px = sin θ 1 dx = = constant v(z) ds v(z) (4.80) to be recast as the ﬁrstorder system dx = v 2 (x)p dt and dp ∇v(x) =− . dt v(x) (4. it is instructive to show that they reduce to the v(z) case considered previously.83) and (4.80) ∇v(x) = − 2 (x) v ds v(x) ds which is a second order ordinary diﬀerential equation for the raypath vector x.84) becomes dpx =0 dt and equation (4.87) and dpz 1 ∂v(z) =− dt v(z) ∂z (4.84) are equivalent to equation (4. v(x) ds v (x) dt (4. If v(x) = v(z).84).83) for p and substituting it into equation (4. ˆ Intuitively.12. As an illustration of the validity of equations (4.84) Veriﬁcation that these two equations (4. this step is valid because ∇T points along the raypath and therefore dT /ds. pz ] so that equation (4. that is (from equation (4.83) and (4.80) can be done by solving equation (4.85) immediately integrates to px = constant. Example 4. z] and p = [px . then in two dimensions.82) (4.77) and the identity d/ds = s · ∇.
dt (4. The MATLAB implementation requires a velocity matrix giving v(x.12.1. dt ∂ ln v dr(3) =− . 4.6z + . dt ∂x dr(4) ∂ ln v =− . RAYTRACING FOR INHOMOGENEOUS MEDIA 0 500 1000 1500 meters 2000 2500 3000 3500 4000 0 2000 4000 6000 meters 8000 10000 12000 109 Figure 4. To proceed.90) Then.85) and (4.83) and (4. In two dimensions. (1992) chapter 16) that will be used here. the ray vector is r = [x z px pz ] and the time derivative of r is deﬁned through equations (4. dt ∂z (4. That is. the fourthorder RungeKutta (RK4) method is invoked to integrate equation (4. equation (4.12. however.4. in n dimensions r is a 2n dimensional vector formed by concatenating the position and slowness vectors.89) Deﬁning the vector a = [v 2 p − ∇(ln v)]. this is Snell’s law for the v(z) medium. This and other general methods are available in MATLAB. where sin θ = dx/ds has been used.12.4x using ode45 as shown in Code Snippet 4. the ﬁrst is redundant because p2 + p2 = x z v −2 (z) and the second gives dt = dz dz dz = . Of the remaining two equations in the system (4. it is often useful to implement a speciﬁc RungeKutta scheme to gain improved ﬂexibility.86). p is the same as px here.84) as dr(1) = v 2 r(3). z) = 1800 + . In that equation.2 A MATLAB raytracer for v(x.89) becomes dr = a.57).29: A ray is shown traced through v(x.84) can be done using welltested and very general methods for solving ﬁrstorder ordinary diﬀerential equations. this will result in equation (4. given this prescription for dr/dt and initial values for r. dt dr(2) = v 2 r(4). = v 2 (z)pz v(z) cos θ v(z) 1 − v 2 (z)p2 x (4. p]. deﬁne the abstract ray vector r = [x. Of course.83) and (4.88) When integrated. z) on a grid with ∆x = .90) for r(t). z) The numerical solution of equations (4. An example is the fourthorder RungeKutta method (Press et al.
z = 0) is in the upper left corner.tstep. It creates Figure 4.1). To avoid indexing into the velocity array beyond its bounds. Prior to raytracing. It is then cleared to save space because rayvelmod has established the required velocity information in global matrices. This function creates a number of global variables that will be used repeatedly in the raytracing.0.1 illustrates the tracing of a single ray in a medium with both vertical and horizontal velocity gradients. VELOCITY ∆z ≡ ∆g and uses the convention that (x = 0. By default. For a particular velocity model. that is apparent upon close inspection of Figure 4. even though equation (4. %time step vector x=0:dg:10000.12.004:3.29.cos(theta)/1800]’. For more accuracy.90) does not require the value of t to compute dr/dt.sin(theta)/1800.z=x’. This code builds a velocity matrix representing v(x. and ∂z ln v that are needed in equation (4.flipy%plot End Code Code Snippet 4.r(:. Finally. 1 2 3 4 5 6 7 8 9 dg=10. The calculated ray is shown in Figure 4. Thus the estimation of the velocity terms in equations (4. %x and z coordinates v=1800+.12.6z + . Smaller timesteps will improve accuracy but will also lengthen the computation.6*(z*ones(1.length(x)))+.89) requires some form of interpolation. drayvec requires t as input but does not use it. A similar strategy is used to cope with rays that go beyond the minimum or maximum depths. however.dg).29. the cost is three times the memory overhead of the simple velocity matrix.4x and then uses ode45 to trace a ray. drayvec has been constructed to use the ﬁrst (or last) column to represent a simple v(z) medium for rays than go beyond the beginning (or end) of the model.2)).4*(ones(length(z).89). This function is designed with the interface required by MATLAB’s builtin ODE solver ode45.110 CHAPTER 4.1)*x). Thus. In the computation of dr/dt it is generally true that the ray coordinates at a particular time will not coincide with grid points in the model. rayvelmod need only be called once at the beginning of the raytracing unless the velocity model is changed. The takeoﬀ angle and initial values for r are calculated on lines 7 and 8. The velocity matrix is built on line 4 and then passed to rayvelmod on line 5. These include matrices of v 2 . Code Snippet 4.89). is that the ray has been traced beyond the bounds of the velocity model. z) = 1800 + .1. ∂x ln v.%solve for raypath plot(r(:. This latter function implements an RK4 scheme by calling a userdesigned function like drayvec that computes the time derivative of the solution vector. the components of p are not independent of one another since p·p = v −2 and this is illustrated in the calculation of the initial values. The timestep vector is established on line 2 and a .1.12.r]=ode45(’drayvec’. some testing may be required to determine the optimal time step for the problem at hand.%initial value of r [t. ode45 is invoked to integrate equation (4.%initialize the velocity model theta=pi*45/180. Though this allows . A problem with the use of ode45. bilinear interpolation is also available and its use is controlled through a global variable that is explained in the drayvec help ﬁle. As mentioned in exercise 4.004 second timestep is used.clear v. The function drayvec implements the computation of dr/dt according to equation (4. The general interface required by ode45 for such a function is that it must have two input arguments that are the current time and the current value of the solution vector r. drayvec uses nearest neighbor interpolation because this is the fastest method. the function rayvelmod is invoked with arguments being the velocity matrix and the grid spacing ∆g. This precomputation speeds the raytracing and is especially beneﬁcial if a great many rays are to be traced.r0). %grid spacing tstep=0:.29.%takeoff angle r0=[0.90) and thus compute r for the vector of times established on line 2.%velocity rayvelmod(v.
r0) replaces [t. the ray is tested at each time step to determine if it is within the model bounds and raytracing is halted before the maximum time if the ray leaves the model. If nearestneighbor interpolation is satisfactory. Another useful raytracer is shootraytosurf . RAYTRACING FOR INHOMOGENEOUS MEDIA 111 the solution to proceed. an RK4 solver has been built as described in Press et al. (1992) and is incorporated in the functions shootrayvxz and shootrayvxz g . a better approach would be to detect when a ray has reached the boundary of the model and stop the raytracing. then shootrayvxz should be preferred because it is much faster. .tstep.r0) on line 8. The functions shootrayvxz and shootrayvxz g diﬀer in that the latter calls drayvec to compute dr/dt while the former does this computation directly without the function call.r]=shootrayvxz(tstep. For this purpose. The syntax to trace a ray with either program is essentially the same as with Code Snippet 4. In these functions.4.r]=ode45(’drayvec’. The result is that shootrayvxz is much more eﬃcient but does not oﬀer bilinear interpolation as does shootrayvxz g .12.1 except that the command [t.12. This is useful in normal incidence raytrace modelling that will be discussed in chapter 5 in connection with normal incidence raytrace migration. This function works similarly to shootrayvxz but the ray is traced until it reaches z = 0 or a maximum time limit is exceeded.
This is called an inverse problem because it is opposite to the classical forward modelling problem of predicting the seismic waveﬁeld response of a known elastic earth model. For example.1) requires two surface measurements. inverse problem. inversion problems are generally nonlinear and practical schemes are typically linearized approximations. Just as the construction of a camera lens requires knowledge of the physics of light propagation. migration refers to a multichannel processing step that attempts to spatially reposition events and improve focusing. It is very much like looking through an unfocussed camera lens.4. it is usually more easily accomplished than the corresponding inverse problem. migration algorithms incorporate the physics of acoustic and elastic wave propagation. migration algorithms perform amplitude and phase adjustments that are intended to correct for the eﬀects of the spreading (or convergence) of raypaths as wave propagate. all along the surface. Often. Despite this mathematical requirement. 1997). Migration can be viewed as an approximate solution to the general elastic waveﬁeld inversion problem (Gray. Though often this is a very diﬃcult process. Generally. nonlinear. This means that dipping reﬂections are systematically mispositioned in the lateral coordinate and the vertical time axis needs a transformation to depth. given speciﬁcations of the coeﬃcients of the equation as functions of position and given appropriate boundary conditions.Chapter 5 Elementary Migration Methods In exploration seismology. In addition to being illposed. The term is essentially synonymous with imaging (though the latter term has a speciﬁc secondary meaning as a substep in a migration process). seismic data is usually displayed with traces plotted at the surface location of the receivers and with a vertical time axis. The need to ﬁnd approximate solutions has lead to a large number of diﬀerent 112 . In addition to spatial positioning and focusing. for many reasons. a forward problem can be reduced to ﬁnding the solution to a partial diﬀerential equation. in this case the elastic wave equation. these inverse problems are illposed which is a mathematical term for a problem whose inputs are insuﬃcient to determine all of its expected outputs. migration amounts to a very approximate solution to a general. Before migration. This means that they are very sensitive to an assumed initial model. Also problematic is the unfocussed nature of seismic data before migration. there is no feasible technology for measuring ∂z ψ so methods must be found to deal with only ψ. Full elastic inversion uses the entire seismic waveﬁeld as input into a mathematical process that seeks to estimate the elastic parameters of the earth. Thus. the solution to the constantvelocity migration problem (section 5. This is unfortunate because knowledge of the subsurface is very limited and the construction of initial models is extremely diﬃcult. the waveﬁeld (ψ) and its vertical derivative (∂z ψ). The inverse problem usually amounts to estimating the coeﬃcients of a partial diﬀerential equation given its response to a known source.
Potentially. and adjust amplitudes. is conveniently described by r(x. overlapping ways to categorize migration algorithms. or background. y. In a one dimensional layered medium. z) is estimated from z − ∆z. This chapter will discuss “elementary” migration methods. there are: ﬁnite diﬀerence algorithms that oﬀer great ﬂexibility with spatial variations of velocity but suﬀer from grid dispersion and angle limitations. focus.1) can only be an expression for normal incidence reﬂectivity. reﬂectivity must be acknowledged to be a function of the angle of incidence as well as spatial position. equation (5. this assumption allows ∂z ψ to be calculated from ψ. depth migration is the only currently available imaging technology that is accurate when ∂x v varies strongly. reﬂectivity means the normalincidence reﬂection coeﬃcient of Pwaves.1. . to downward continue measurements made at z = 0 into the subsurface. Kirchhoﬀ methods that can easily accommodate arbitrary variations in seismic recording geometry but require raytracing to guide them. it requires a very accurate speciﬁcation of the velocity model. In the simplest context. reﬂectivity of a small earth element. recursive methods. (Or equivalently. In order to be a useful process. the construction of the velocity model is the central diﬃculty in achieving a successful result. and Fourier (or spectral) techniques that oﬀer high ﬁdelity but have diﬃculty coping with rapid variations in either velocity or recording geometry. As a result there are many diﬀerent. More generally. These really all turn out to be the same thing. it should be true that migration requires only an approximate. This refers to techniques designed to migrate stacked seismic data (poststack migration) in simple velocity variations. More complex topics including prestack migration will be discussed in the next chapter. STACKED DATA 113 migration algorithms that are generally distinguished by the kind of approximations made. A true inversion technique would derive the velocity model from the data as part of the inversion. in some manner.5. These last remarks hint at the general chickenandegg nature of modern migration methods. or whether R(x.5 ∇(log(I(x. 5.1. On the other hand. y. perhaps the most common categorization comes under the confusing labels of time migration and depth migration. The former is an earlier technology that remains viable because it is very insensitive to velocity errors even though it is known to be accurate only if ∂x v ∼ 0. This is generally the case though it can be very diﬃcult to achieve in structurally complex areas. Especially for depth migration. z) = .1 5.1) At best. For example. Given that oneway waves will be considered. y. Migration requires the velocity model as input and merely attempts to reposition. however. allows the solution to proceed without knowledge of ∂z ψ. this can be written as rδz (z) = . z))) δvol (5. velocity model and that more detailed velocity information can be extracted from a successful migration than was input to it.5∂z ln(I(z))δz where δz is a small increment of depth. There are also useful distinctions about whether the estimation of R(x. Pwave reﬂectivity is given by rk = 2(Ik − Ik−1 )/(Ik + Ik−1 ) where Ik = ρk vk is the Pwave impedance of the kth layer. it can be shown that an assumption that waves are traveling only upward at the earth’s surface. All of these techniques attempt. direct methods.) This approach is called the oneway wave assumption and is very common.1 Stacked data Bandlimited reﬂectivity The ultimate goal of a migration is to transform the seismic data into bandlimited reﬂectivity. In a 3D context. z) is made directly from z = 0. every point in the subsurface has a reﬂectivity value associated with it. though physically incorrect. In the continuous case. Finally. δvol. y.
is of interest and that a stacked seismic section provides a bandlimited estimate of r(x. Ideally.1. Unless some sort of nonlinear or modelbased inversion is done. Each stacked trace represents a separate physical experiment that can be approximately described by the scalar wave equation (assuming acoustic energy only). Taken together. Trace balancing: This might be considered optional but some step is needed to correct for source strength and geophone coupling variations. and the degree of anelastic attenuation (Q loss). this signal band is determined by the power spectrum of the source. Residual statics correction: Residual time delays (small) are sought and removed. Usually this is a surfaceconsistent step. the types of coherent and random noise. h (Figure 5.2) where w(t) is a zero phase wavelet whose amplitude spectrum is white over some limited passband. x. The estimate of reﬂectivity must always be bandlimited to some signal band of temporal frequencies. Deconvolution: The source signature and the average Q eﬀect is estimated and removed. . The major steps the in the estimation of the signal enhanced ZOS are Spherical spreading correction: A time dependent amplitude scaling that approximately corrects for spherical divergence. For the current discussion. (A nearly synonymous term is amplitude variation with angle or AVA. r(x. y. z). 5. AVO analysis should be conducted simultaneously with migration or after migration. Statics correction: Near surface static time delays are estimated and removed.geophone) coordinates and then sorted to midpoint. The Zoeppritz equations are highly complex and nonlinear and the estimation of their approximate parameters from seismic data is called the study of amplitude variation with oﬀset or AVO. 1980) are an exact prescription of this variation.2 The zero oﬀset section A discussion of poststack migration greatly beneﬁts from a ﬁrm theoretical model of the CMP (common midpoint) stack. embedded wavelet. and halfoﬀset. h) coordinates: The data is considered to be gathered in (s. The optimal stacked section will have a zerophase. They should be dealt with before migration. coincident soure/receiver pair at each CMP. This is the frequency range over which signal dominates over noise. y. g) (source. the ensemble of stacked traces has a more complicated basis in physical theory. This means that it should obey the simple convolutional model s(t) = r(t) • w(t) (5.) Such complex reﬂectivity estimates are key to true lithology estimation and are a subject of much current research. ELEMENTARY MIGRATION METHODS For the case of plane elastic waves in layered media. it is assumed that only the normalincidence reﬂectivity. z). A simple model of stacked seismic data is the zerooﬀset section or “ZOS” model.1). the Zoeppritz equations (Aki and Richards. white. If w(t) has residual phase or spectral color then these will adversely aﬀect the resolution of the ﬁnal migrated image. the data fold.114 CHAPTER 5. Sort to (x. This model asserts that the prestack processing and CMP stack estimates a signalenhanced version of what we would have recorded had there been a single. NMO removal: The data is taken through stacking velocity analysis and the resulting velocities are used to remove normal moveout time delays.
it is possible to have zerooﬀset paths that are not normalincidence paths (Figure 5.2).1: A 2D seismic line is depicted in the (s. the normalincidence reﬂection will send energy back up along the path that it traveled down on.3 The spectral content of the stack The sort from (s.1. h) coordinates are deﬁned by x= of which the inverse transformation is s=x−h and g = x + h. Figure 5. it is a logical transition that must occur somewhere before stack. h coordinates are depicted. CMP stacking: All traces with a common midpoint coordinate are summed.1. ψ(s.2: Most. g) and (x. However. STACKED DATA Common offset 24 22 115 Source coordinate 20 18 16 14 12 10 8 6 4 0 5 10 15 20 25 30 s/r s/r s/r s/r s/r s/r s/r s/r Common midpoint Velocity lens Receiver coordinate Figure 5. t). g. Events which have been ﬂattened on CMP gathers are enhanced. g) to (x. 5. However.4) s+g 2 and h = g−s 2 (5. (5. g. kg . Common midpoint. x. (x. This dataset can be written as an inverse Fourier transform of its spectrum through ψ(s. Mathematically. Quite obviously. The simplest (and dominant) raypath which returns energy to its source is called the normalincidence raypath.5. h) is depicted graphically in Figure 5. Other events and random noise are reduced. t) = V∞ φ(ks . a 2D prestack seismic dataset is a 3D function.1.5) . g) plane. zerooﬀset raypaths are also normalincidence raypaths. Each shot is represented as having eight receivers with a central gap. h) marks the transition from single channel to surface consistent processing.3) The relationship between (s. Where it actually takes place is somewhat arbitrary because a seismic processing system can always resort the data whenever required. f )e2πi(ks s+kg g−f t) dks dkg df (5. The ZOS is said to be signal enhanced because the stacking process has been designed to select against multiples. but not all. and common oﬀset.
5 and 5. h) coordinate transformation. t) = V∞ φ(ks .9) φ(kx .9. kg . 2 (5. kg . g) to (x.9 about how the spectral content of the prestack data gets mapped into the poststack data.9 are the correct ones corresponding to the (s. (5.3: These curves show the maximum spatial sample rate required to avoid aliasing of kg on shot records (assuming point receivers) as a function of the maximum signal frequency. possibly inﬁnite. h. f )e2πi(ks (x−h)+kg (x+h)−f t) dks dkg df (5.4 gives ψ(x. f )e2πi(kx x+kh h−f t) dkx dkh df.15).116 35 30 25 ∆ g (meters) 20 15 10 5 0 CHAPTER 5. kxmax comes . The maximum midpoint wavenumber.8) and kg = (5. Both of equations 5. ELEMENTARY MIGRATION METHODS 2500 m/s 2000 m/s 1500 m/s 1000 m/s 500 m/s 50 100 150 maximum frequency (Hertz) 200 Figure 5.10 are proper inverse Fourier transforms which shows that the wavenumber relationships given in equations 5. f ) space. (5. f )e2πi((ks +kg )x+(ks −kg )h−f t) dks dkg df.7 to be written ks = ψ(x. portion of (ks . kh . kg . where the notation V∞ indicates the integration covers the entire relevant.6) or ψ(x.8 and 5. h.7) This motivates the deﬁnitions kx = ks + kg or the inverse relationship kx + kh 2 This allows equation 5. h. t) = V∞ φ(ks . This is based on expression (5. Quite a bit can be learned from equations 5. Imposing the coordinate transform of equations 5. t) = 1 2 V∞ and kh = ks − kg kx − kh .10) where the factor of 1/2 comes from the Jacobian of the coordinate transformation given in equation 5. A curve is drawn for each of ﬁve near surface velocities.
STACKED DATA 117 from the sum of ksmax and kgmax . So. kxN yq can be formed with unaliased data from ksN yq + kgN yq but it can also be formed from the sum of ks = 0 and kg = 2kgN yq and there are many more such aliased modes. This limiting unaliased wavenumber is 1 1 1 1 n+1 kxlim = + = + = .9.13) So. (5.14) where v0min is the slowest near surface velocity found along the receiver spread. Thus ksmax ≤ ksN yq = 1/(2∆s) and kgmax ≤ kgN yq = 1/(2∆g). Even if n = 1.12) kg sin θ0 which means that kg = f sin θ0 . if coarser sampling than suggested in these curves is planned. the apparent velocity of a wave as it moves across a receiver array is given by the ratio of frequency to wavenumber. there will still be aliased contributions to kx if the ks and kg spectra are aliased as they normally are. wavenumbers less that kxlim can be formed by a wide variety of aliased combinations. the better the resolution). assuming point receivers.1. then a portion of the kg spectrum will be aliased.11) 2∆g 2∆s 2∆g 2n∆g 2n∆g For n=3. The meaning of the maximum wavenumbers is that they are the largest wavenumbers that contain signal.15) allows the maximal sampling curves in Figure 5. to avoid any aliasing of kg .e. For a source record (common source gather ). kxlim = 2 kxN yq so that shooting every third group will result in a conventional stack with 3 the upper third of the kx spectrum being completely useless. the greater the wavenumber. The only way to generate unaliased wavenumbers up to kxN yq in the stacking process is if ∆s = ∆g so that kxN yq = ksN yq + kgN yq . 2fmax (5. An array can be designed to suppress the aliased . This means that there must be a shotpoint for every receiver station which is very expensive acquisition. It is customary to sample the x coordinate at ∆x = . it must be expected that wavenumbers higher than Nyquist will be present in both the ks and kg spectra. Further analysis is helped by having a more physical interpretation for ks and kg so that their potential spectral bandwidth can be estimated. Alternatively. this has the easy interpretation that f v0 = (5. For example.8. Normal 2D land shooting puts a shotpoint for every n receiver stations where n ≥ 3. because spatial antialias ﬁlters (source and receiver arrays) are not very eﬀective. As explained in section 4. They typically are less than the Nyquist wavenumbers but they cannot be greater. However. Similarly. if fmax is the maximum temporal frequency and (sin θ0 )max = 1 then kgmax = fmax v0min (5. the receiver sampling must be such that kgN yq ≥ kgmax which leads to the antialiasing condition ∆g ≤ v0min . the maximum wavenumber is directly proportional to horizontal resolution (i. v0 (5. As will be shown formally later.5∆g so that kxN yq = 1/(2∆x) = 2kgN yq which means that the stacking process will generate kx wavenumbers up to this value from combinations of ks and kg according to equation 5. This means that kx wavenumbers greater than a certain limit will be formed from completely aliased ks and kg wavenumbers.5.15) Assuming the equality in expression (5.3 to be calculated.
t) = e2πikh h dh φ(kx .16 leads to the conclusion that the potential bandwidth of ks is just as broad as that of kg .18) 2 V∞ all h The integral in square brackets is δ(kh ) which. (5. Comparing equations 5. For the kh wavenumber. in turn. of a monochromatic wave.17) If equation (5. (5.4: (A) Wavenumber kg is measured on a common source gather and estimates the emergence angle. t) = all h ψ(x. wavenumbers though this is not as eﬀective as temporal antialias ﬁltering. Since the relationship between apparent velocity and frequencywavenumber ratios is a based on traveltimes.4). h.12 and 5. The wavenumbers ks are those which would be measured by an f k analysis on a common receiver gather. The interpretation is that f /ks gives the apparent velocity of a monochromatic wave as it leaves a source such that it will arrive at the common receiver.16) where α0 is the takeoﬀ angle required to reach the common receiver and v0 is as before. Reciprocity suggests that a common receiver gather is similar to a common source gather with the source and receiver positions interchanged (Figure 5. it results that 1 ψ0 (x. Stacking can be modelled by an integral over h as ψ0 (x. not amplitudes. θ0 . (B) Wavenumber ks is measured on a common receiver gather and estimates the takeoﬀ angle α0 of the ray that arrives at the common receiver.10) is substituted into equation (5. the stacking process rejects all but kh = 0. ELEMENTARY MIGRATION METHODS receivers θ A receiver θ sources α B Figure 5.118 source α CHAPTER 5.17) and the order of integration reversed. Thus f v0 = ks sin α0 (5. f )e2πi(kx x−f t) dkx dkh df. t)dh. collapses the kh integral by evaluating it at . kh . the arguments just made for the interpretation of kg also apply to ks . It cannot be expected that the amplitudes will be completely reciprocal on such gathers but the traveltimes should be.
0. this eﬀect will be timevariant in a complicated way because of two competing eﬀects. If the prestack data input into the stacking process has been spectrally whitened. the fold in any stacked section is actually timevariant because of the frontend mute.4 The Fresnel zone The zerooﬀset rays shown in Figure 5. it is virtually guaranteed that the poststack data will need further spectral whitening. So far. However. Typically these deconvolution techniques are not capable of distinguishing signal from noise and so whiten (and phase rotate) both. Moreover. This is because the stacking process improves the signaltonoise ratio √ by f old. f k ﬁltering of source and receiver gathers can have a dramatic eﬀect. 5.1. the ideal stacked section should have all spectral color removed except that attributable to the reﬂectivity. the signaltonoise ratio in any single prestack trace must decrease with both increasing time and increasing frequency due to attenuation (i. The kh = 0 component is the average value over the CMP gather and corresponds to horizontal events.5: The zerooﬀset Fresnel zone is deﬁned as the width of a disk on a subsurface reﬂector from which scattered energy arrives at R with no more than a λ/2 phase diﬀerence. As a result. the stacking eﬀect is therefore time variant. Figure 5.5 illustrates the concept of the zerooﬀset Fresnel zone. f )e2πi(kx x−f t) dkx df.e.19) So the CMP stacking process passes only the kh = 0 wavenumber which is a very severe f kﬁlter applied to a CMP gather. kh = 0 to give ψ0 (x. Most prestack processing ﬂows rely on one or more applications of statistical deconvolution to achieve this. First. t) = 1 2 V∞ φ(kx . this is done after normal moveout removal that is designed to ﬂatten those events deemed to be primaries.1. It is for this reason that f kﬁltering applied to CMP gathers does not typically improve the stack. w of the Fresnel zone is deﬁned as the diameter of a .2 are only a high frequency approximation to what really happens. Bearing in mind the goal to estimate bandlimited reﬂectivity. Second. Q eﬀects).5. The width. (5. Until the time at which nominal fold is reached. STACKED DATA R Surface depth=0 119 Q Reflector P S depth=z w Figure 5. It is also highly likely that some sort of wavelet processing will be required to remove residual phase rotations. it will always suﬀer some attenuation of high frequencies due to the stacking out of noise. Of course. This contrasts with the highfrequency raytracing concepts that suggest the reﬂection occurs at a point. the discussion has been about wavenumber spectra with nothing being said about the eﬀect of stacking on temporal frequencies. The zerooﬀset recording at a point on the earth’s surface actually contains scattered waves from a very broad zone on each subsurface reﬂector.
That the Fresnel zone does not shrink to zero is another way of understanding why reﬂectivity estimates are always bandlimited. ELEMENTARY MIGRATION METHODS 20Hz. Therefore.6: The width of the Fresnel zone (based on equation (5. much seismic data is collected along lines so that only 2D migration is possible. Assuming constant velocity. The Fresnel zone only collapses in the inline direction and remains at its unmigrated size in the crossline direction (Figure 5. Thus the reﬂectivity shown on a 2D migrated seismic line must be viewed as a spatial average in the crossline direction over the width of the Fresnel zone.120 1200 CHAPTER 5. All paths intermediate to P and Q will show a lesser phase diﬀerence. Figure 5. it is expected that path Q will interfere destructively with P and is taken to deﬁne the diameter of the central disk from which scattered energy shows constructive interference at R. 140Hz. In this case.21)) is shown versus depth for a variety of frequencies and an assumed velocity of 3000 m/s. However. Roughly speaking. This is one of the most compelling justiﬁcations for 3D imaging techniques. If z λ. from a diameter of w to a diameter of λ/2. λf = v. then the approximate form √ w ∼ 2zλ is often used. The equation deﬁning the Fresnel zone diameter is therefore z 2 + (w/2)2 − z = which is easily solved for w to give w = 2 (λ/4 + z)2 − z 2 = √ 2zλ 1 + λ/(8z) = 2zv/f 1 + v/(8f z) (5. 180Hz. R. this means that scattered energy that travels downandback along path Q will be λ/2 out of phase at the receiver. the eﬀective Fresnel zone for broadband data can be taken as the average of the individual Fresnel zones for each frequency.7: A 3D migration collapses the Fresnel zone to a disk of diameter λ/2 while a 2D migration only collapses the Fresnel zone in the inline direction disk whose center is marked by the ray P and edge by the ray Q. The 3D Fresnel disk collapses. even in the case of sedimentary . has been used. Ray P is a simple zerooﬀset ray while ray Q is deﬁned to be λ/4 longer than ray P. 100Hz. Migration can be conceptualized as lowering the source and receiver to the reﬂector and so shrinks the Fresnel zone to its theoretical minimum of λ/2. in the third expression. under 3D migration.20) where. 1000 Fresnel zone (meters) 800 Original Fresnel zone 600 400 200 60Hz.21) λ 4 (5. However. seismic data is a bit more complicated than this in that it possesses signal over a bandwidth while the Fresnel zone concept is monochromatic. The size of a Fresnel zone can be very signiﬁcant in exploration as it is often larger than the target (Figure 5. compared with that which travels along path P.6). w λ/2 after 3D migration after 2D migration 1000 2000 depth (meters) 3000 4000 0 0 Figure 5.7).
because raytrace migration was very popular before 1980.23) where vins is the instantaneous velocity or. If ∆tef f > ∆t then aliasing will occur as the depth trace is constructed unless an antialias ﬁlter is applied. If fmax is the maximum signal frequency (presumed to be less than the Nyquist frequency) in s(t). As is often true.22) and from depth to time by τ (z) = 0 z dz vins (z ) (5.1 Fundamental migration concepts One dimensional timedepth conversions It is quite common to convert a single trace from time to depth. 121 5. 1989) assures that s(t) can be resampled to ∆t ≤ 1/(2fmax ) (with antialias ﬁltering to prevent noise aliasing) without loss of signal. vmin is used to ensure that all signal frequencies are preserved in the worst case. by a simple one dimensional conversion that is called a stretch. however. This leads to the condition vmin ∆z ≤ . The depth sample interval should be chosen with knowledge of the maximum signal frequency.2 Raytrace migration of normalincidence seismograms Most modern migration techniques are based on waveﬁeld concepts that treat the recorded data as a boundary value.24) 4fmax In this expression. then the sampling theorem (Karl. a particular depth sample of s(z) ˆ at z = n∆z must be interpolated from s(t) at t = 2n∆z/v. These considerations are true for multidimensional migrations as well as simple stretching. Understanding raytrace migration can help considerably in understanding the corresponding waveﬁeld technique. (5. raytrace methods provide a great deal of insight into the problem and can be adapted to almost any setting. Furthermore the temporal data should be highcut ﬁltered to reject frequencies larger than the maximum frequency used to compute the depth sample interval. A form of aliasing is possible in all such operations (including migrations) though it is most easily analyzed in one dimension.2. FUNDAMENTAL MIGRATION CONCEPTS basins with ﬂatlying structures. or the reverse. 5. equivalently. Thus.2. Consider the conversion of a trace s(t) to a depth trace s(z) with ˆ a desired depth sample interval of ∆z. This was not always the case. Assuming constant velocity for simplicity.2.2 5. This is accomplished as a simple mapping of samples from the time trace to the depth trace. the local wave speed. Though not migrations. For example.5. the time to depth conversion will eﬀectively extract samples from s(t) at the interval ∆tef f = 2∆z/v. Thus it is possible to have time or depth displays both before and after migration and the interpreter must be careful to understand what is being presented. The depth trace will usually be constructed by a loop over the desired depth samples. This is a form of resampling. the depth sample interval should not be chosen arbitrarily but should be chosen to ensure that ∆tef f preserves signal. Therefore. these onedimensional operations are very useful for converting from migrated depth to migrated time (or the reverse) or from unmigrated time to unmigrated depth (or the reverse). The mapping from time to depth is deﬁned by τ z(τ ) = 0 vins (τ )dτ (5. the very word “migration” .
using equation (5.26) allows an immediate calculation of the reﬂector’s dip. ELEMENTARY MIGRATION METHODS Datum (recording surface) φ θ φ θ φ θ φ θ v v v v ∆x ∆l δ δ δ δ v Figure 5. and very pervasive. they would measure a traveltime delay. If there were receivers on the interface between layers three and four. A better view is that an unmigrated time section and a migrated depth section are independent (in fact orthogonal) representations of a waveﬁeld. view that the process just “moves events around” on a seismic section. Raytrace migration emphasizes this latter view and makes the role of the velocity model very clear. In the v(z) medium above the reﬂector. Also. The delay between the rays allows the ray parameter to be estimated. of ∆t = 2∆x sin δ v4 (5.8: Two normalincidence rays from a dipping reﬂector beneath a v(z) medium. From the geometry. this extra segment has a length ∆x sin δ where ∆x is the horizontal distance between the rays. though somewhat incorrect.26) can be rewritten as ∆t = 2pn ∆x (5. this just simpliﬁes the discussion. in addition to the reﬂector dip. then for the upcoming rays.26) =2 ∆x v4 Inspection of the geometry of Figure 5.8 illustrates the link between reﬂector dip and the measurable traveltime gradient (for normalincidence rays) on a ZOS.8 shows that equation (5. Thus. Figure 5.27) where pn is the ray parameter of the normalincidence ray. from left to right. The ﬁgure shows two rays that have normal incidence on a dipping reﬂector beneath a v(z) medium. More general media are also easily handled. comes from a popular. a measurement of ∆t/∆x at the surface of a normalincidence seismogram completely speciﬁes the raypaths provided that the velocity model is also known. confusion that time and depth sections are somehow equivalent. Of course. In fact.122 CHAPTER 5. (5.25) where the factor of two accounts for twoway travel. Snell’s law ensures that pn will remain equal to twice the horizontal slowness at all interfaces including the surface at z = 0. the spatial position’s of the reﬂection points of the normal rays are also required. The two rays are identical except for an extra segment for the lower ray in the bottom layer. it must be expected that more general velocity distributions . This implies a horizontal traveltime gradient (horizontal slowness) of ∆t sin δ . This encourages a fundamental.
Before presenting the algorithm. 3. the following materials are required: 1. . z) media. The picks are made at a the locations xi and at each location a number of t0ij and ∆t/∆xij values are measured. one or more of: a calculator. horizontal gradient of normalincidence traveltime measured at (x. protractor. FUNDAMENTAL MIGRATION CONCEPTS θ Datum (recording surface) φ θ φ θ φ θ φ θ θ 123 v v v v v δ δ Figure 5.5. . . compass. ∆t/∆x . t0 . To perform a raytrace migration. t0 . . ∆t/∆x)measured from a ZOS having the following meaning x . a velocity model is required. computer. This migration algorithm will be described here for 2D but is easily generalized to 3D. .9: The migration of a normalincidence ray is shown. . . . inline coordinate at which the measurement is made. y. n then each ray must be taken through the following steps: Step 1 . For all locations xi . . 2. . . i = 1. . ∆t/∆xij ) . the link between reﬂector dip and horizontal slowness is not as direct but knowledge of one still determines the other.28) Step 2 . 2. In v(x. Computation aids. z) . a set of picks to be migrated. It must be deﬁned for the entire range of coordinates that will be encountered by the rays. than v(z) will be encountered. Finally. .9. t0ij . .2. . v(x. a formal deﬁnition of a pick is helpful: A pick is deﬁned to be a triplet of values (x0 . Normalincidence raytrace migration provides a general algorithm that handles these complications. Project the ray down to the next interface and determine the incident angle φhij . . . the algorithm is presented as a series of steps with reference to Figure 5. Knowledge of the ray parameter allows the ray to be traced down through the velocity model. . t0 ). Denote the current layer by the number h. . normalincidence traveltime (two way) measured at x. (xi . . Determine the emergence angle at the surface of the ijth ray according to the formula sin θ0ij = v0 (xi ) ∆t 2 ∆x ij (5.
. Today. It also resulted. The normal ray from the crest of the structure is generally not the ray of minimum traveltime even though it has the shortest path to the surface.29) vh Step 4 . As a result approximations were sought which could reduce the numerical eﬀort required.10 suggests the problem. lhij and compute the layer traveltime lhij δthij = (5.2. Repeat steps 2 → 4 for each velocity layer until the stopping condition is fulﬁlled n tij = h=1 δthij = t0ij 2 (5. . When the ﬁnite diﬀerence machinery was implemented with this approximate equation the resulting migrated images had a