next up previous
Next: Array Sizes Up: rayinvr Previous: Inversion parameters (INVPAR namelist)

Additional Notes

Array defaults: if  a single  default value is  indicated for  an 
   array parameter, all elements of the array  have that default 
   value.

Layer boundaries: must begin at xmin and end at xmax even  if the 
   layer above and/or below is pinched out  (unless the boundary 
   is defined by only one point, then it is specified at xmax).

Bottom layer boundary: should consist of at most ten points.

Near-vertical layer boundaries:  should be  avoided because  they 
   may result in large velocity gradients  nearby. If necessary, 
   the adjacent trapezoids should have zero velocity gradient.

Shot point locations: may be anywhere in the model,  but locating 
   them directly on a model boundary may cause problems.

Ray group: is defined as a set of rays specified by a ray code in 
   the  array  ray,   possibly  modified  to   include  multiple  
   reflections and/or  conversions,  whose take-off  angles  are  
   determined by an  iterative search mode  or specified  by the 
   user using ray=1.0 and the arrays amin and amax.

Zero velocity gradient: if the four corner velocities of  a model 
   trapezoid are equal, then  there is a zero  velocity gradient 
   inside and no  ray bending  will occur.  It is preferable  to 
   have a zero gradient in all or part of a  layer rather than a 
   very small gradient  so that the  Runge Kutta routine  can be 
   avoided and straight ray paths are used.

Large velocity gradients: ray  tracing becomes inaccurate if  the 
   velocity gradient is  large and  the ray  step length is  not 
   small enough. In this case a warning message is given and the 
   value of smin and/or step should be reduced.

Ray code:  listed in  the  file r1.out  for  each ray  traced  is 
   supplied as an internal check to ensure that the correct rays 
   specified in the array ray  or the arrays amin and  amax have 
   been traced. This  ray code is  determined by the  program as 
   follows: the number to the left of the decimal  refers to the 
   deepest layer encountered by the ray; the number to the right 
   of the decimal will be one, unless (1) the  ray was reflected 
   upward from a layer boundary, in which case it will be two, or 
   (2) the ray travelled as a head wave, in which case it will be 
   three (assuming the ray was not reflected upward from a layer 
   boundary after traveling as a head wave).

Shot point located at depth: in  this case, the array ray  should 
   not contain ray codes corresponding to layers  above the shot 
   point.

Ray step length:  a very small  value of step  may not result  in 
   increased ray tracing accuracy due to round-off error

Ray changes direction: a ray traveling left to right  can reflect 
   or refract and change direction and travel right  to left, or 
   vice versa.

Terminating a ray:  if istop=0,  a ray  will be  traced until  it 
   encounters the top, bottom, left or right of the model, unless 
   it is reflected off the top of the model using nrbnd and rbnd.

Ray stopped warning: the warnings which begin "ray stopped -" are 
   included in  the  file  r1.out  directly before  the  summary  
   information for that particular ray is listed.

Failure of ray  search mode:  it is possible  that the  iterative 
   shooting/bisection algorithm used in the ray  search mode may 
   fail, or find  a limited range  of take-off angles  that only 
   sample a part of a  layer, if either (1) the  model has large 
   lateral variations, (2) the range of take-off angles defining 
   the desired ray group is very small, (3) the value of nsmax is 
   too small or stol is too large, or (4) it  is not possible to 
   trace the desired type of  rays through a particular  part of 
   the model (i.e., violates Snell's law). In any case, increase 
   the value of nsmax first and then decrease the  value of stol 
   if necessary and this should work (unless the problem is case 
   4). If this fails,  take-off angles can be  supplied manually 
   using ray=1.0 and  the arrays amin  and amax. Use  irays=1 to 
   see why the search mode is failing.

Travel time curves: join successive  points of the same ray  code 
   in the same ray group. Prograde and  retrograde branches will 
   be separated if ibreak=1.

Ray  search  mode  and  multiple  reflections:  for   ray  groups  
   specified by  L.2  in  the  array ray,  the  take-off  angles  
   determined in the search  mode will correspond to  rays which 
   reflect off the Lth  layer boundary only  and may or  may not 
   give rise to the multiple reflections specified  by nrbnd and 
   rbnd .

Integer code in the file tx.out: is used to identify  each travel 
   time to allow  for the appropriate  comparison with  the rays 
   traced  during  inversion  It  will  begin  at   one  and  be  
   incremented one for each ray group if  itxout=1. In addition, 
   the integer will be  incremented by one  for a change  from a 
   prograde to retrograde branch or vice versa if ibreak=1. 
   This may  be  undesirable  if  the  prograde  and  retrograde  
   branches should be identified by a single number for inversion 
   or if more than one ray group should be identified by the same 
   number, in which case itxout=2 or 3 and the array  ivray should 
   be used when writing to the file tx.out.

Laterally homogeneous  layer:  if  a  layer  boundary  is  to  be  
   horizontal or the upper or lower velocity of a layer is to be 
   constant, then only a single point is required in the velocity 
   model and it should be specified at an  x-coordinate equal to 
   xmax. If two or more points are required, then  the first and 
   last point must be specified at xmin and xmax, respectively.

Constant  velocity  layer:  to  specify  a  layer  with  constant  
   velocity, assign a  single upper layer  velocity at  xmax and 
   assign a lower layer velocity of zero at xmax.

Zero vertical velocity  gradient layer: to  specify a layer  with 
   zero vertical  velocity gradient,  assign one  or more  upper 
   layer velocities as usual and assign a lower layer velocity of 
   zero at xmax.

Zero velocity discontinuity across  layer boundary: to specify  a 
   layer boundary  with  no associated  velocity  discontinuity,  
   assign an upper layer velocity of zero at xmax  for the layer 
   directly beneath the boundary.

Fixed  vertical  velocity  gradient:  if  the  vertical  velocity  
   gradient is to remain fixed in all  or part of a layer during  
   the inversion, then the x-coordinates  at which the upper and  
   lower layer velocities are defined must be the same. Note that 
   if the x-coordinates of  the velocity values  are not all  the 
   same as the location of the upper and lower layer boundary 
   nodes, then it is possible for the velocity gradient to vary at 
   these nodes since there are  no velocities specified at these  
   points  and  the   upper  and  lower   layer  velocities  are   
   interpolated from values on either side, or at xmax if only one 
   velocity point is used.

Fixed layer thickness: if the  thickness of a layer  is to remain 
   fixed in all or part of a layer during the inversion, then the 
   x-coordinates at which the upper and lower layer boundaries are 
   defined must be the same.

Multiple ray paths to a single observation: if more than one pair 
   of ray paths brackets the location of an observed travel time  
   pick, then the pair  of ray paths  corresponding to the  least 
   interpolated travel time is used to calculate the travel time  
   residual and the partial derivatives for the inversion.

Inversion of  zero-velocity-discontinuity  boundary:  it  is  not  
   possible to invert  for a  layer boundary  with an associated  
   zero-velocity discontinuity if only  refracted rays cross  the 
   boundary, i.e.,  rays  must  be  reflected  off  the boundary  
   (although  the  physical   meaning  of   reflections  from   a  
   zero-velocity discontinuity must be considered).

Boundaries crossing after inversion: check  that layer boundaries 
   do not cross after inversion; if they do, re-do the inversion  
   with increased  damping or  re-do  the ray  tracing  with the  
   appropriate boundary nodes held fixed or the thickness of the  
   layer held fixed.

Inversion of layer pinchouts:  for a few special  cases there are  
   bugs in the  inversion code  when attempting  to invert model  
   parameters associated with a layer pinchout.

S-waves and inversion: although rays corresponding to S-waves and 
   conversions can  be  traced, they  should  not  be traced  if  
   partial derivatives are being  calculated for the  purpose of 
   inversion since  the appropriate  code to  invert for  S-wave 
   velocity or Poisson's ratio has not yet been included.

External plot routines: RAYINVR is self-contained except  for the 
   graphics calls inside the following CALCOMP or CALCOMP-like plot 
   routines: PLOTS, PLOT, NUMBER, SYMBOL, LINE, EMPTY, ERASE, PLOTND. 
   The file pltlib.f contains ALL these routines (and a few other 
   less important ones used by the graphics system where the 
   code was developed) and it will be necessary to replace the "call" 
   statements within each of these with their equivalents in the 
   local graphics package.



Ingo Pecher
Sat Mar 7 19:13:54 EST 1998