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