Ray Tracing facilities are available for tracing rays through gridded velocity models and through smaller, smoother, (B-Spline) velocity models, A suite of programs trace rays through large, complex, gridded (2d or 3d ) velocity structures using a workstation or supercomputer. They allow for the display and manipulation of rays, surfaces, and traveltimes. Rays may be traced from a subsurface horizon (or horizons), z(x,y), to the surface, z=0. (That is, z(x,y) can can have multiple values at x,y.) The resulting rays, surfaces, and traveltimes may be displayed. Rays may also be traced from picked arrival times at the surface downward through a complex velocity model until the travel time along the ray is equal to 1/2 of the surface arrival time. The intent is to provide an interactive facility for testing and designing velocity models and data acquisition plans. Surfaces may be modeled through one velocity model and migrated through another to find a hypothetical location for the surface in the new model. Rays may be propagated up and down through a model to study illumination. Areas of a surface for which normal rays cannot make a round trip may be poorly illuminated. Illumintion via matched pairs of incident and reflected rays may be studied.
A table of the usage information (man pages) for ray tracing and surface manipulation programs is available.
Dead rays are flagged by changing the sign of the vertical component of the propagation vector (the last column of the PtNorms file). Dead rays can be filtered out of the data by either setting flags on the command line or using filters provided (PtNorms_up and PtNorms_down).
Rays that wander outside of the region of definition of the velocity model are propagated through an extrapolated velocity model. The model is extrapolated by assuming that the velocity is constant in the horizontal direction. That is, the vertical gradient is the same everywhere outside of the region of definition and it is equal to the gradient at the edge. In the vertical direction, the velocity is extrapolated by assuming that the vertical gradient is the same everywhere below the region of definition as it is at the bottom edge of the region.
Filters are available to filter windows of the ray attributes such as position, and direction (cPtNorms_Filter), and total distance travelled (PtNorms_Filter).
The flag "save_rays=y" causes ray paths to be saved during the computation. Rays are stored in binary gocad format or simple gocad ascii format. The rayfile may be VERY large if you have many rays and many layers in the velocity model. The size of the rayfile varies as the product of the number of rays and the number of layers and thus can get very big very fast! And it stores the entire rayfile in memory until done with the raytracing! So, you can easily use all available memory by storing ray paths. It would be an easy modification for the raytracer to create the output rayfile a layer at a time instead saving all of the data in memory until the raytracing is completed. Let us know if you need this enhancement.
Example 1: Rays traced from a line along a complex salt surface
The program
usp2PtNorms
was used to create ray starting positions and
directions in
PtNorm
format.
Then PtNorms_win was used to select rays starting
on a thin slice through the salt surface. The slice contained one value of y
and all values of x. Then d3depth2time
was used to trace rays from this
starting line to the surface. The resulting rays were then displayed using a
prototype ray/surface display program.
Movie of a line of rays and a salt surface rotating.
Perspective view of a line of rays and a salt
surface.
Example 2: Rays traced from a patch of a large complex salt surface. This was created using essentially the same procedure as was used for the line traced from a salt surface except that the xmax, xmin, ymax, ymin window allowed a large number of x and y values to pass through the PtNorms_win filter. And the number of rays was reduced by using the Filter_by_Factor program.
Gocad view of surface arrival times
xsd view of surface arrival amplitudes from fx modeling
for comparison to ray coverage.
xsd view of ray arrival times from ray tracing
for comparison to fx modeling. Notice how the black regions (regions
with no rays) correspond to areas having low amplitude in the fx model.
Checking the Raytracer
In order to verify that the ray tracer traces rays correctly, rays were traced
from depth to the surface and back down to depth. The rays returned to within
18 inchs of the original horizontal location and returned exactly to the
original depth. Travel time for rays traveling in a constant velocity
gradient agree with
analytical travel times
with discrepancies of about
50 microseconds in a 1 second travel time.
In the following programs, command line arguments control essential
parameters like the names of the input files, output files, accuracy,
and yes/no decision on storage of ray paths.
The velocity is specified by an arbitrarily complex,
gridded model of the subsurface.
Velocity is assumed to obey a trilinear interpolation between grid points.
Each program has a help facility triggered by a command line flag
of the form "help=" or "-help".
For more information contact:
Dan Vasicek, 918-660-3082, or 422-3082,
dvasicek@trc.amoco.com
or
Dan Whitmore, 918-660-3351, 422-3351,
dwhitmore@trc.amoco.com
d3time2depth - Migrates events to depth horizons by tracing rays downward from a surface until travel time along the ray is equal to the input ray travel time.
depth2time_ray and depth2time - Model events by tracing rays from a subsurface horizon upwards to the surface z=0. The input and output horizons are specified by xsd segments. The initial ray directions may be computed by the program to be normal (perpendicular) to the starting horizon or supplied to the program as extra information in the xsd file.
depth2time_ray writes an output xsd segment file giving the ray position and traveltime as a function of depth. The program depth2time does not write the xsd ray segment file.
PtNorms2grid (under construction)- Translates a PtNorms file into a seismic "grid" in any dds supported format (usp, segy, disco, ...).
PtNorms2list - Converts 3d PtNorm files to ascii list format files. Then program putsis can be used to translate the resulting list into a usp data file. Thus surface arrival times may be displayed by xsd. Positions in the usp grid without data are given zero values.
PtNorms2usp
- Interpolates and converts 3d
PtNorm files
to usp format data files. Positions in the usp grid without data are interpolated by averaging nonzero values in
adjacent grids.
PtNorms2dds -translates PtNorms data into any dds syupported format. Any of the properties in the PtNorms data can be used to create a surface in dds format.
PtNorms_Filter_by_Factor - Passes 1/n of the input points from a PtNorm file into the output file. The input filename, output filename, and "n" are determined by command line arguments. Starting with the first PtNorm value every "n'th" PtNorm is passed to the output PtNorm file.
PtNorms_win - Passes input points from a PtNorm file that fit into a x,y window into the output PtNorms file. Processing parameters defining the window, xmin, xmax, ymin, and ymax are determined by command line arguments of the form xmax= 1000.
usp2PtNorms - Takes a surface defined by a usp file (z(x,y)) and creates a PtNorms file describing a normal at each node of the usp grid. The input file and output files are specified by command line arguments. data= uspfilename out_norms=file_name_out
grid2PtNorms
- Takes a surface defined as a dds
"grid"
consisting of a surface and a mask.
The mask is zero at places where the surface is not defined. And no normal is
computed at points where the mask indicates that the surface is not defined.
And if there are not enough defined points adjacent to an existing point
no normal will be computed.
Last Modified: . Document access count: