SYNOPSIS

PERL PROGRAM NAME:

AUTHOR: Juan Lorenzo (Perl module only)

DATE:

DESCRIPTION:

Version:

USE

NOTES

Examples

SYNOPSIS

SEISMIC UNIX NOTES NORMRAY - dynamic ray tracing for normal incidence rays in a sloth model

   normray <modelfile >rayends [optional parameters]			



Optional Parameters:							

caustic=	 0: show all rays 1: show only caustic rays		

nonsurface=	 0: show rays which reach surface 1: show all rays      

surface=	 0: shot ray from subsurface 1: from surface               

nrays= 	 number of location to shoot rays                       

dangle= 	 increment of ray angle for one location                

nangle= 	 number of rays shot from one location                  

ashift= 	 shift first taking off angle                           

xs1= 	         x of shooting location                                 

zs1= 	         z of shooting location                                 

nangle=101     number of takeoff angles				

fangle=-45     first takeoff angle (in degrees)			

rayfile        file of ray x,z coordinates of ray-edge intersections	

nxz=101        number of (x,z) in optional rayfile (see notes below)	

wavefile=       file of ray x,z coordinates uniformly sampled in time	

nt=101         number of (x,z) in optional wavefile (see notes below)	

infofile=       ASCII-file to store useful information 		

fresnelfile=    used if you want to plot the fresnel volumes. 		

               default is <fresnelfile.bin> 				

outparfile=     contains parameters for the plotting software. 	

               default is <outpar> 					

krecord=        if specified, only rays incident at interface with index

               krecord are displayed and stored			

prim           =1, only single-reflected rays are plotted 		",     

               =0, only direct hits are displayed  			

ffreq=-1       FresnelVolume frequency 				

refseq=1,0,0   index of reflector followed by sequence of reflection (1)

               transmission(0) or ray stops(-1).			

               The default rayend is at the model boundary.		

               NOTE:refseq must be defined for each reflector		

NOTES:								

The rayends file contains ray parameters for the locations at which	

the rays terminate.  							



The rayfile is useful for making plots of ray paths.			

nxz should be larger than twice the number of triangles intersected	

by the rays.								



The wavefile is useful for making plots of wavefronts.		

The time sampling interval in the wavefile is tmax/(nt-1),		

where tmax is the maximum time for all rays.				



The infofile is useful for collecting information along the		

individual rays. The fresnelfile contains data used to plot 		

the Fresnel volumes. The outparfile stores information used 		

for the plotting software.						

Author: Dave Hale, Colorado School of Mines, 02/16/91

 MODIFIED:  Andreas Rueger, Colorado School of Mines, 08/12/93

	Modifications include: functions writeFresnel, checkIfSourceIsOnEdge;

		options refseq=, krecord=, prim=, infofile=;

		computation of reflection/transmission losses, attenuation.

 MODIFIED: Boyi Ou, Colorado School of Mines, 4/14/95



 Notes:

 This code can shoot rays from specified interface by users, normally you

need to use gbmodel2 to generate interface parameters for this code, both

code have a parameter named nrays, it should be same. If you just want to

shoot rays from one specified location, you need to specify xs1,zs1,

otherwise, leave them alone. If you want to shoot rays from surface, you need

to define surface equal to 1. The rays from one location will be

approximately symmetric with direction Normal_direction - ashift.(if nangle is

odd, it is symmetric, even, almost symmetric. The formula for the first take

off angle is: angle=normal_direction-nangle/2*dangle-ashift. If you only want to

see caustics, you specify caustic=1, if you want to see rays which does not

reach surface, you specify nonsurface=1.

/

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 angle

sub ashift

sub caustic

sub dangle

sub fangle

sub ffreq

sub fresnelfile

sub infofile

sub krecord

sub nangle

sub nonsurface

sub nrays

sub nt

sub nxz

sub outparfile

sub prim

sub refseq

sub surface

sub wavefile

sub xs1

sub zs1

sub get_max_index

max index = number of input variables -1