The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

SYNOPSIS

PERL PROGRAM NAME:

AUTHOR: Juan Lorenzo (Perl module only)

DATE:

DESCRIPTION:

Version:

USE

NOTES

Examples

SYNOPSIS

SEISMIC UNIX NOTES SUGOUPILLAUD - calculate 1D impulse response of

     non-absorbing Goupillaud medium                                    



 sugoupillaud < stdin > stdout [optional parameters]                    



 Required parameters:                                                   

        none                                                            



 Optional parameters:                                                   

l=1 source layer number; 1 <= l <= tr.ns

                        Source is located at the top of layer l.        

        k=1             receiver layer number; 1 <= k                   

Receiver is located at the top of layer k.

tmax number of output time-samples; default:

tmax=NINT((2*tr.ns-(l-1)-(k-1))/2) if k < tr.ns

                        tmax=k                          if k >=tr.ns    

pV=1 flag for vector field seismogram

        (displacement, velocity, acceleration);                         

=-1 for pressure seismogram.

verbose=0 silent operation, =1 list warnings

 Input: Reflection coefficient series:                                  



         impedance[i]-impedance[i+1]                                    

 r[i] = -----------------------------                                   

         impedance[i]+impedance[i+1]                                    



        r[0]= surface refl. coef. (as seen from above)                  

r[n]= refl. coef. of the deepest interface

 Input file is to be in SU format, i.e., binary floats with a SU header.



 Remarks:                                                               

 1. For vector fields, a buried source produces a spike of amplitude 1  

 propagating downwards and a spike of amplitude -1 propagating upwards.

 A buried pressure source produces spikes of amplitude 1 both in the up

 and downward directions.                                               



 A surface source induces only a downgoing spike of amplitude 1 at the  

 top of the first layer (both for vector and pressure fields).          

 2. The sampling interval dt in the header of the input reflectivity file

 is interpreted as a two-way traveltime thicknes of the layers. The sampling

 interval of the output seismogram is the same as that of the input file.



 

 Credits:

        CWP: Albena Mateeva, May 2000, a summer project at Western Geophysical





 ANOTATION used in the code comments [arises from the use of z-transforms]:

                Z-sampled: sampling interval equal to the TWO-way 

                        traveltime of the layers; 

                z-sampled: sampling interval equal to the ONE-way

                        traveltime of the layers;



 REFERENCES:



        1. Ganley, D. C., 1981, A method for calculating synthetic seismograms 

        which include the effects of absorption and dispersion. 

        Geophysics, Vol.46, No. 8, p. 1100-1107.

 

        The burial of the source is based on the Appendix of that article.



        2. Robinson, E. A., Multichannel Time Series Analysis with Digital 

        Computer Programs: 1983 Goose Pond Press, 2nd edition.



        The recursive polynomials Q, P used in this code are described

        in Chapter 3 of the book: Wave Propagation in Layered Media.



        My polynomial multiplication and division functions "prod" and

        "pratio" are based on Robinson's Fortran subroutines in Chapter 1.



        4. Clearbout, J. F., Fundamentals of Geophysical Data Processing with

        Applications to Petroleum Prospecting: 1985 Blackwell Scientific 

        Publications.



        Chapter 8, Section 3: Introduces recursive polynomials F, G in a 

        more intuitive way than Robinson.

        

        The connection between the Robinson's P_k, Q_k and Clearbout's 

        F_k, G_k is:

                                P_k(Z) = F_k(Z)

                                Q_k(Z) = - Z^(k) G_k(1/Z)

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 k

sub l

sub pV

sub tmax

sub verbose

sub get_max_index

max index = number of input variables -1