usage: raytrace3d keyword arg1 arg2 ... valid keywords: dump_model grid interface_depth Iinvert invert Qinvert locate perturb_model point point_list shoot_arc shoot_arc_refl shoot_star shoot_star_refl shoot_star_p shoot_turf source_to_receivers source_to_receivers_refl teleseismic_invert teleseism_to_receivers velocity Vinvert VIinvert Raytrace3d, by William Menke. Copyright 2000 by Columbia University. This version complied on Tue_Feb__5_16:05:34_EST_2002 Warning: This is prototype software intended for research purposes only. Use at your own risk! Raytrace3d implements raytracing in an isotropic medium described by a set of velocity nodes, with the nodes being organized into adjoining tetrahedra. Within any tetrahedron, the velocity varies linearly with position, and the raypaths are therefore arcs of circles. The traveltime along along the ray is a known, analytic function of arc-length along the ray. Thus the major effort in raytracing is the bookkeeping necessary to continue rays between adjacent tetrahedra. The basic raytracing methodology used in Raytrace3d works on arbitrary sets of tetrahedra. However, I have chosen to make the model specification much more restrictive: a warped cartesan grid of LxMxN nodes. I chose this simplification because it makes the design of a model by a human being easier and more comprehensible. Furthermore, it allows one to easily name some interesting subhorizontal interface with the model (which can be useful in the raytracing). Internal to Raytrace3d, each rectangular parallelipiped in the warped cartesian grid is subdivided into several tetrahedra. I use a cartesian, right-handed, (x,y,z) coordinate system with z down. Angle of incidence is measured from +z, and azimuth is measured from +x to +y. You are of course free to align x with whatever geographic direction you choose. But if you make (x,y,z) = (N,E,Down) then azimuth will be degrees east of north. With one exception, Raytrace3d only permits you to work with a a single velocity model at a time, so there is no mechanism for simultaneously raytracing through distinct compressional and shear wave models. However, it does provide a method of specifing a compressional-to-shear wave velocity ratio, so that both compressional and shear wave data can be used in, say, an inversion. The one exception is a joint inversion of P and S traveltimes for compressional velocity and compressional-to-shear wave velocity ratio (see below). Point-to-point (and planewave-to-point) raytracing is accomplished in a two-step process. First, you compute an exhaustive set of rays from a specific point (or planewave) to a specific interface in the model on which the receivers reside. I call the resulting ray set a star (or, in the case of the planewave, a turf). A second step uses the star (or turf) to home-in on the ray that hits a specific receiver. The advantage of this approach is that it allows the systematic discovery of the several different rays that might reach a single station. Raytrace3d thus allows you to work with data from both first and later-arriving waves. The disadvantage of the two step process is that it is computationally inefficient, especially if only a few rays share a common source point (or planewave). Raytrace3d is a command-line oriented program that uses simple text file for input and output. It must be combined with a good graphics package (such as the GMT Generic Mapping Tools) to produce comprehensible results. Raytrace3d is implements these functions: Model Examination. You always need to plot the model. raytrace3d velocity ... evaluates the velocity model along a plane. The results can be used an input to a program that makes color images. raytrace3d grid ... samples the boundaries of the tetrahedra along a plane. These data can be overlain onto a color image of the model. raytrace3d interface_depth ... determines the depth of a named, subhorizontal interface at a particular horizontal position. raytrace3d interface_grid ... determines the depth of a named, subhorizontal interface on a grid of (x,y) points. raytrace3d point ... evaluates the velocity model a a single point. raytrace3d point_list ... evaluates the velocity model a list of points. raytrace3d dump_model ... writes out model tetrahedralization. raytrace3d perturb_model ... adds elliptical perturbations to a model. Point-to-interface raytracing, handy to quickly generate a plot of some rays. raytrace3d shoot_arc ... shoots rays at a suite of angles of incidence and a specified azimuth from a specific point to an interface Point-to-point raytracing, from a point source like an earthquake or explosion. raytrace3d shoot_star ... shoots a suite of rays at a wide range of angles of incidence and azimuths, from a single source to a single named interface. The results, a star file, are the first step in point-to-point raytracing. raytrace3d shoot_star_p ... a slighty different version of shoot_star. raytrace3d source_to_receivers ... Uses the star file to trace rays from the point source to receivers on the named interface. Point-to-point raytracing with one reflecting interface is implemented with commands analagous to those above. These commands allow one to work with PmP, PP and pP phases. Unfortunately, more complicated senarios senarios involving multiple reflectors have not been implemented). raytrace3d shoot_arc_refl ... shoots an arc of rays raytrace3d shoot_star_refl ... shoots a star of rays raytrace3d source_to_receivers_refl ... performs point-to-point raytracing Planewave-to-point raytracing, from a planewave (e.g. a teleseism). raytrace3d shoot_turf ... shoots a suite of rays at a wide range of starting locations, from the planewave to a single named interface. The results, a turf file, are the first step in planewave-to-point raytracing. raytrace3d teleseism_to_receivers ... Uses the turf file to trace rays from the planewave to receivers on the named interface. Inversion using local (point) sources. raytrace3d invert ... implements one iteration of a linearized inversion. for perturbations to nodal velocities. The results are a new model file. You must run the inversion successive times to achieve multiple iterations. raytrace3d Vinvert ... a synonym for invert raytrace3d Iinvert ... like Vinvert, but for perturbations to reflector position raytrace3d Qinvert ... like Vinvert, but for perturbations to Q raytrace3d VIinvert ... joint nodal velocity and reflector node position inversion raytrace3d PSinvert ... joint nodal P-velocity and P:S ratio inversion Velocity inversion using teleseismic (planewave) sources. raytrace3d teleseismic_invert ... implements one iteration of a linearized inversion, of a type that is insensitive to the origin time of the teleseism (see usage for more details). The results are a new model file. You must run the inversion successive times to achieve multiple iterations. Hypocentral location. raytrace3d locate ... implements Geiger's method.