Hypocenter Determination with error checking and adjustments.

1 2 3 4 5 6 7 8 9 10 11 12 |

`Ldat` |
list, must inlude: lat, lon ,err, sec, cor (see details) |

`EQ` |
list, must inlude: lat,lon,z, t |

`vel` |
list, 1D velocity structure |

`distwt` |
distance weighting factor |

`lambdareg` |
regularization parameter for damping |

`REG` |
logical, TRUE=use regularization |

`WTS` |
logical, TRUE==use weighting |

`STOPPING` |
logical, TRUE=use stopping criteria |

`tolx` |
numeric, tolerance in km in x direction |

`toly` |
numeric, tolerance in km in y direction |

`tolz` |
numeric, tolerance in km in z direction |

`RESMAX` |
vector, residual max for P and S, default=c(4,5) |

`maxITER` |
vector, Maximum number of iterations for each section of the location routine, default=c(7,5,7,4) |

`PLOT` |
logical, plot results during iterations |

This is a wrapper for XYlocate, only here the lat-lon of the stations is passed and the code does the projection internally.

There are 3 main loops, each controled by differing input params: first event is located only in XY keeping the depth fixed (7 iterations). Then an initial free solution is estimated using robust elimination of residual based on RESMAX (5 iterations). Finally a set of 7 iterations is applied providing the final estimate, along with error bars, elliposids, etc.

In the event no good solution is derived, the regularization parameter is doubled and a loop with 4 iterations is applied, and the result returned.

list:

`EQ` |
Hypocenter lcoation |

`ERR` |
Error Analysis |

`its` |
number of iteration |

`Ksolutions` |
list of matrices, each with intermediate x,y,z,t locations |

The schedule may be adjusted by duplicating this function and changing the maxit parameters.

Jonathan M. Lees<jonathan.lees@unc.edu>

Lee and Stewart

XYlocate, Klocate, DoRLocate

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | ```
## Not run:
library(RSEIS)
data(GH)
g1 = GH$pickfile
data(VELMOD1D)
vel= VELMOD1D
w1 = which(!is.na(g1$STAS$lat))
sec = g1$STAS$sec[w1]
N = length(sec)
Ldat = list(
name = g1$STAS$name[w1],
sec = g1$STAS$sec[w1],
phase = g1$STAS$phase[w1],
lat=g1$STAS$lat[w1],
lon = g1$STAS$lon[w1],
z = g1$STAS$z[w1],
err= g1$STAS$err[w1],
yr = rep(g1$LOC$yr , times=N),
jd = rep(g1$LOC$jd, times=N),
mo = rep(g1$LOC$mo, times=N),
dom = rep(g1$LOC$dom, times=N),
hr =rep( g1$LOC$hr, times=N),
mi = rep(g1$LOC$mi, times=N) )
wstart = which.min(Ldat$sec)
EQ = list(lat=Ldat$lat[wstart], lon=Ldat$lon[wstart], z=6, t=Ldat$sec[wstart] )
AQ = Vlocate(Ldat,EQ,vel,
distwt = 10,
lambdareg =100 ,
REG = TRUE,
WTS = TRUE,
STOPPING = TRUE,
tolx = 0.01,
toly = 0.01 ,
tolz = 0.05, maxITER = c(7,5,7,4) , RESMAX = c(0.1, 0.1), PLOT=FALSE)
## End(Not run)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.