SYNOPSIS
PERL PROGRAM NAME:
AUTHOR: Juan Lorenzo (Perl module only)
DATE:
DESCRIPTION:
Version:
USE
NOTES
Examples
SYNOPSIS
SEISMIC UNIX NOTES SUNMO_a - NMO for an arbitrary velocity function of time and CDP with
experimental Anisotropy options
sunmo <stdin >stdout [optional parameters]
Optional Parameters:
tnmo=0,... NMO times corresponding to velocities in vnmo
vnmo=1500,.. NMO velocities corresponding to times in tnmo
anis1=0 two anisotropy coefficients making up quartic term
anis2=0 in traveltime curve, corresponding to times in tnmo
cdp= CDPs for which vnmo & tnmo are specified (see Notes)
smute=1.5 samples with NMO stretch exceeding smute are zeroed
lmute=25 length (in samples) of linear ramp for stretch mute
sscale=1 =1 to divide output samples by NMO stretch factor
invert=0 =1 to perform (approximate) inverse NMO
upward=0 =1 to scan upward to find first sample to kill
Notes:
For constant-velocity NMO, specify only one vnmo=constant and omit tnmo.
NMO interpolation error is less than 1 0.000000or frequencies less than 600f
the Nyquist frequency.
Exact inverse NMO is impossible, particularly for early times at large
offsets and for frequencies near Nyquist with large interpolation errors.
The "offset" header field must be set.
Use suazimuth to set offset header field when sx,sy,gx,gy are all
nonzero.
For NMO with a velocity function of time only, specify the arrays
vnmo=v1,v2,... tnmo=t1,t2,...
where v1 is the velocity at time t1, v2 is the velocity at time t2, ...
The times specified in the tnmo array must be monotonically increasing.
Linear interpolation and constant extrapolation of the specified velocities
is used to compute the velocities at times not specified.
The same holds for the anisotropy coefficients as a function of time only.
For NMO with a velocity function of time and CDP, specify the array
cdp=cdp1,cdp2,...
and, for each CDP specified, specify the vnmo and tnmo arrays as described
above. The first (vnmo,tnmo) pair corresponds to the first cdp, and so on.
Linear interpolation and constant extrapolation of 1/velocity^2 is used
to compute velocities at CDPs not specified.
Anisotropy option:
Caveat, this is an experimental option,
The anisotropy coefficients anis1, anis2 permit non-hyperbolicity due
to layering, mode conversion, or anisotropy. Default is isotropic NMO.
The same holds for the anisotropy coefficients as a function of time and
CDP.
Moveout is defined by
1 anis1
--- x^2 + ------------- x^4.
v^2 1 + anis2 x^2
Note: In general, the user should set the cdp parameter. The default is
to use tr.cdp from the first trace and assume only one cdp.
Caveat:
Nmo cannot handle negative moveout as in triplication caused by
anisotropy. But negative moveout happens necessarily for negative anis1 at
sufficiently large offsets. Then the error-negative moveout- is printed.
Check anis1. An error (anis2 too small) is also printed if the
denominator of the quartic term becomes negative. Check anis2. These errors
are prompted even if they occur in traces which would not survive the
NMO-stretch threshold. Chop off enough far-offset traces (e.g. with suwind)
if anis1, anis2 are fine for near-offset traces.
Credits:
SEP: Shuki, Chuck Sword
CWP: Shuki, Jack, Dave Hale, Bjoern Rommel
Modified: 08/08/98 - Carlos E. Theodoro - option for lateral offset
Modified: 07/11/02 - Sang-yong Suh -
added "upward" option to handle decreasing velocity function.
CWP: Sept 2010: John Stockwell
replaced Carlos Theodoro's fix
and added the instruction in the selfdoc to use suazimuth to set
offset so that it accounts for lateral offset
note that by the segy standard "scalel" does not scale the offset
field
Technical Reference:
The Common Depth Point Stack
William A. Schneider
Proc. IEEE, v. 72, n. 10, p. 1238-1254
1984
Trace header fields accessed: ns, dt, delrt, offset, cdp, scalel
User's notes (Juan Lorenzo) untested
CHANGES and their DATES
Import packages
instantiation of packages
Encapsulated hash of private variables
sub Step
collects switches and assembles bash instructions by adding the program name
sub note
collects switches and assembles bash instructions by adding the program name
sub clear
sub anis1
sub anis2
sub cdp
sub invert
sub lmute
sub smute
sub sscale
sub tnmo
sub upward
sub vnmo
sub get_max_index
max index = number of input variables -1