Go to the list of seismic processes.      Go to SIOSEIS introduction.
```                              PROCESS FDFMOD

Document Date:  25 July 1990

Finite-Difference Forward Modelling using the 45-degree algorithm

The finite-difference migration technique is an effective way to handle
many types of migration problems.  Often it is necessary to do the
reverse problem -- given a subsurface structure and velocity field,
calculate its response on a zero-offset section, or unmigrated section
( a zero-offset section is a good approximation to a stacked section
in regions of small dip).   This technique is very similar to migration
except that the receivers are upward continued to the surface P(x,z=0,t),
whereas the migration process downward continues the receivers - via a
finite-difference approximation to the scalar wave equation - into the
subsurface and collecting terms at P(x,z,t=0).   Input to FDFMOD can be
generated by process SYN and FILTER, and should represent the structure
you care to model (or unmigrate).  Therefore, point sources should become
diffractors, interfaces should increase both dip and length, etc...

This process will most likely be used in conjunction with processes SYN
and FILTER which generate seismic traces for modelling.

Limitations

see process FDMIGR

Some Important Parameters

The parameter Rho is inserted into the expression for the discretization
of the time derivative. This serves to counteract any potential growing
waves from the expression for migration, as an explicit damping with time.
It can be thought of as a "numerical viscosity".  A value of Rho less
than 1 reinforces stability.  However, any deviation of Rho away from 1,
by at most 1 percent,  results in some loss of signal as well as noise.

In the discretization of depth, the parameter Theta is introduced, with
the most natural value being .500.  If Theta = 0 is used, there is a
tendency to overshoot on variations, whereas   Theta = 1 will produce an
overdamping of change.

To discretize the horizontal distance component, an approximation to the
second derivative is found by an iterative method.  When the iteration is
truncated, the parameter Gamma is introduced, which is allowed to vary
between .08 and .17, based primarily on the look of migrated sections.
If Gamma is allowed to increase too much more, spurious noise results.

In the ideal case, Tau would equal the sample rate of the data, meaning
that the entire section would be migrated exactly one sample rate step
at each pass through the section. While this scheme reduces the errors,
it is impractical due to the huge run-time needed. In practice, Tau should
be chosen in the range of 20 to 200 ms. (.02 to .2 secs), with the smaller
Tau values producing greater accuracy.  It is possible to vary Tau
vertically (not recommended), and should be done in order to save run-time.
Generally, the value of Tau should decrease from shallow to deep data
times. This is because greater accuracy is needed in the migration of the
deeper events where the greatest movement is taking place.

More detailed explanation of the origin of these parameters, and some
results of allowing them to vary, may be found in the paper published
by H. Brysk (Geophysics: May 1983).

PARAMETER DICTIONARY
--------- ----------

DX     - Trace separation distance.  This is the distance between
reflection points.  DX is a constant for the entire seismic line.
REQUIRED.  range 1.0 to 500.0 e.g.  dx 25

FNO    - The first shot/rp number the parameter list applies to.
Preset = the first shot/rp received.    e.g.   FNO 101

LNO    - The last shot/rp number the parameter list applies to.
Preset = the last shot/rp received.     e.g.   LNO 101

VTP    - The rms velocity to use in migration.  The rms velocity function
is the same as the velocity function used to moveout the data.
Given as velocity-time pairs.  Velocities not specified are
calculated through interpolation and "straight-lining" from the
ends.  Times must be given in seconds.
Preset = none    velocity range 350 to 32000

VDIX   - The interval velocities to use in migrating, given as interval
velocity-time pairs.  Time must be in seconds.
Preset = none    range 350 to 32000

BPAD   - The number of zero amplitude traces to insert prior to the first
trace.
Preset = 1   range 1 to 500   e.g. bpad 10

EPAD   - The number of zero amplitude traces to append after the last trace.
Preset = 1   range 1 to 500   e.g. epad 10

OPAD   - A switch indicating that the pad traces (both bpad and epad)
should be output in addition to the migrated input.
Preset = no   range yes/no    e.g.   opad yes

NRHO   - A parameter used to control the Tau step interpolation.
Preset = 2.0   range 0. to 10000

FCRHO  - A parameter used to control the Tau step interpolation.
Preset = .99   range .0001 to 1.

RHO    - A "hidden" migration parameter discussed above.
Preset = .9990   range  0 to .9999

THETA  - A "hidden" migration parameter discussed above.
Preset = .501  range  0 to 1.0

GAMMA  - A "hidden" migration parameter discussed above.
Preset = .125   range  .08 to .17

TSTEPS - A set of time-delta-tau pairs governing the tau step size
(delta-tau) in the time interval terminating with the time given.
Up to 7 pairs of time and delta-tau may be given.  The user must
give the max time modelled in last pair. e.g. 8.0 0.10 with 8.0
secs being last sample modelled. It is HIGHLY suggested that the
user use only one time-delta-tau pair and vary the size of the
step to conserve cpu time.  Units are in seconds.
Preset = REQUIRED

NX     - The total number of traces, including pads, to migrate.  The
entire seismic line must be transformed from TX (time-space) to
XT (space-time).  FDDIFF requires much extra disk I/O if the
entire seismic line (nx*maxsam) is larger than the computer
memory allocated for the transformation.  NX does not have to
be a power of 2.
Preset = 4096 e.g. nx 500

MAXSAM - The maximum number of samples per trace, including the deep
water delay, to migrate. A trace exceeding MAXSAM will be
truncated.
Preset = the number of samples plus delay of the first trace.

PATH   - The pathname (filename) of a scratch file FDDIFF should use for
the intermediate transposed data.  The purpose of this parameter
is to allow the user to specify the exact disk partition to use
in case the "current" partition does not have enough space.
Preset = a scratch file in the current directory
e.g.    path /user/scratch/moreroom

EXAMPLES:

1)   Generate a constant velocity hyperbola.
(Script file examples/c_hypcvel)
sioseis << eof
procs syn filter diskoa fdfmod diskob end
syn
FNO  1 LNO 49  ntrcs 1 secs 3.0 tva 3.1 2500 1 end
FNO 50 LNO 50
tva .3 2500 1 .7 2500 1  1.0 2500 1 1.3 2500 1 1.8 2500 1 end
FNO 51 LNO 100  tva 3.1 2500 1 end
end
filter
pass 10 20 end
end
diskoa
opath impulsecvel.segy fon 1 end
end
fdfmod
nx 102 bpad 1 epad 1 opad no maxsam 751 dx 25 maxdip .001
path scratch vtp 2500 0.0 2500 3.0 tsteps 3.00 .1 end
end
diskob
opath impulsecvel.fddiff fon 1 end
end
end

2)   Generate a hyperbola with laterally varying velocity.
See script file examples/c_hypvlat.

3)   Generate a hyperbola with rms velocity.
See script file examples/c_rms.fddiff.

4)   Generate a hyperbola with dip.
See script file examples/c_mod.dip.refl

Copyright (C) by The Regents of The University of California, 1988
Written by Paul Henkart and Graham Kent,
Scripps Institution of Oceanography, La Jolla, Ca.
ALL RIGHTS RESERVED.
```
Go to the list of seismic processes.      Go to SIOSEIS introduction.