• Antelope Release 5.5 Linux 2.6.32-220.el6.x86_64 2015-04-21

 

NAME

ggnloc - generic Gauss-Newton location procedure and location error analysis

SYNOPSIS

#include "stock.h"
#include "arrays.h"
#include "location.h"
int ggnloc(Hypocenter *h0, Tbl *ta, Tbl *tu, Location_options o,
	Tbl **history, Tbl **reasons, Tbl **residuals);
void predicted_errors(Hypocenter h, Tbl *ta, Tbl *tu,
        Location_options o, float **C, float *emodel)

SUPPORT


Contributed code: NO BRTT support.
THIS PIECE OF SOFTWARE WAS CONTRIBUTED BY THE ANTELOPE USER COMMUNITY. BRTT DISCLAIMS ALL OWNERSHIP, LIABILITY, AND SUPPORT FOR THIS PIECE OF SOFTWARE.

FOR HELP WITH THIS PIECE OF SOFTWARE, PLEASE CONTACT THE CONTRIBUTING AUTHOR.

DESCRIPTION

This pair of functions implement the standard Gauss-Newton (Geiger's method) single event location method and provide error estimates of the resulting solution.

ggnloc is a general purpose location procedure for locating seismic events using an arbitrary mix of arrival times and array slowness vector measurements. The algorithm is designed to work with any seismic phase for which one can supply a suitable method for calculating theoretical travel times and array slowness vectors. ggnloc implements the standard method of seismic event location based on the well known Gauss-Newton method commonly called Geiger's method in seismology. However, the range of options that are available are rich and a huge variation in behavior of the algorithm is possible depending upon the inputs supplied to it.

The behavior of ggnloc is primarily controlled by a long list of parameters passed through the control structure Location_options o. Inputs that build this structure are described in greater detail under genloc_intro(3), but major features of the procedure are as follows:

generalized inverse. Two fundamentally different algorithms can be invoked; a least squares solution based on the pseudoinverse with possible singular value truncation (similar to HYPOELLIPSE) or an implementation of the Marquardt algorithm (similar to LOCSAT). In addition, the procedure supports the use of so called recentering which treats the origin time independently from the spatial coordinates of the hypocenter. A minor variant of this procedure that has not been used before is that I use the median travel time residual (slowness vectors are not used in recentering) to adjust the origin time when recentering is turned on. This is sensible, although not standard practice, because the median is less sensitive to outliers. In the same spirit, the scale factor for residual weighting functions (see below) is also determined using the interquartiles rather than rms because the interquartile distance is well know to be a more robust measure of error scale.

weighting. A range of complex weighting schemes is supported. This includes a number of options for residual weighting schemes, a completely general distance weighting scheme that requires the user to enter a discrete representation of weight as a function of epicentral distance, and a variable weight assigned to control the relative importance of arrival time and slowness vector measurements. In addition, each datum is weighted by an input estimate of expected measurement error. Because ggnloc assumes a mix of units (slowness and travel time measurements) the uncertainty weight cannot be turned off. Weighted rms residual is than always a nondimensional number scaled to units of nominal measurement error. In contrast, the raw rms residual ignores slowness residuals so it can be in the correct units of seconds.

earth model. A novel feature of ggnloc is that it utilizes a highly flexible travel time interface that has virtually unlimited capabilities for supporting arbitrarily complex earth models and any combinations of seismic phases. For further details see genloc_intro(3).

ggnloc arguments:

INPUTS

Hypocenter *h0 = starting guess to use for location. (The typedef for the Hypocenter and other objects referred to below are found in location.h)

Tbl *ta = Arrival time table returned by the related function read_arrivals.

Tbl *tu = Slowness vector returned by function read_slowness_vectors

Location_options o = control structure (see genloc_intro(3)).

OUTPUTS

Tbl **history = table of hypocenter objects containing the entire convergence history of this event. The first entry in the Tbl is the initial location, and the last entry is the ending solution.

Tbl **reasons = table of strings containing human readable description of why the iteration sequence terminated.

Tbl **residuals = table of strings containing residual and weighting information about the final solution. For a description of the quantities in this table see sgnloc(1) which dumps this table directly to an output parameter file.

The companion function predicted_errors computes two different error estimates for an earthquake location computed by ggnloc: (1) the standard covariance matrix used to compute conventional error ellipses, and (2) a velocity model error bound (defined in the following paper: Pavlis, G. L. (1986). Appraising earthquake hypocenter errors: a complete practical approach for single-event locations, Bull. Seism. Soc. Amer., 76, 1699-1717. ).

The covariance matrix computed by predicted_errors has three features the user must recognize.

The model error return (emodel) is a different measure described in the Pavlis (1986) paper. It is computed by a modification of equation (25) of that paper. There are two differences.

DIAGNOSTICS

These functions both use Dan Quinlan's library error functions (die, complain, and register_error) to post warning messages. They will only die from malloc failures.

SEE ALSO

genloc_ttinterface(3), sgnloc(1), genloc(3), arr(3), tbl(3)

AUTHOR

Gary L. Pavlis
Antelope User Group Contributed Software
Printer icon