Package edu.sc.seis.TauP
Class TauP_Time
- java.lang.Object
-
- edu.sc.seis.TauP.TauP_Tool
-
- edu.sc.seis.TauP.TauP_Time
-
- Direct Known Subclasses:
TauP_Curve,TauP_PhaseDescribe,TauP_Pierce,TauP_SetSac,TauP_Table
public class TauP_Time extends TauP_Tool
Calculate travel times for different branches using linear interpolation between known slowness samples.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<Arrival>arrivalsprotected doubleazimuthprotected doublebackAzimuthprotected doubledegreesprotected doubledepthprotected doubledistKilometersFor when command line args uses --km for distance.protected doubleeventLatprotected doubleeventLonprotected booleanGUIprotected java.lang.StringmodelNameprotected booleanonlyPrintRayPprotected booleanonlyPrintTimeprotected java.util.List<PhaseName>phaseNamesnames of phases to be used, ie PKIKP.protected doublereceiverDepthprotected ArrivalrelativeArrivalprotected java.lang.StringrelativePhaseNameprotected doublestationLatprotected doublestationLonprotected doubletakeoffAngleprotected TauModeltModTau model calculated previously.protected TauModeltModDepthTauModel derived from tMod by correcting it for a non-surface source.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidappendPhaseName(PhaseName phaseName)voidappendPhaseName(java.lang.String phaseName)voidcalcTakeoff(double takeoffAngle)voidcalcTime(double degrees)voidcalculate(double degrees)voidclearArrivals()voidclearPhaseNames()voidclearPhases()voiddepthCorrect(double depth)Deprecated.use setSourceDepth insteadvoiddepthCorrect(double depth, double receiverDepth)In general, this is called by each tool's calculate methods, and so should not need to be called by outside code.voiddestroy()ArrivalgetArrival(int i)java.util.List<Arrival>getArrivals()double[]getDisconDepths()intgetNumArrivals()intgetNumPhases()java.lang.String[]getPhaseNames()static java.util.List<java.lang.String>getPhaseNames(java.lang.String phaseName)java.lang.StringgetPhaseNameString()doublegetReceiverDepth()java.util.List<SeismicPhase>getSeismicPhases()doublegetSourceDepth()TauModelgetTauModel()TauModelgetTauModelDepthCorrected()Gets depth corrected TauModel.java.lang.StringgetTauModelName()voidinit()preforms intialization of the tool.static doublelinearInterp(double xa, double ya, double xb, double yb, double x)solves the equation (yb-ya)/(xb-xa) = (y-ya)/(x-xa) for y given x.voidloadTauModel(java.lang.String modelName)static voidmain(java.lang.String[] args)Allows TauP_Time to run as an application.protected java.lang.String[]parseCmdLineArgs(java.lang.String[] origArgs)static java.util.List<java.lang.Double>parseDegreeList(java.lang.String degList)Parses a comma separated list of distances and returns them in an array.voidparsePhaseList(java.lang.String phaseList)parses a comma separated list of phase names and adds them to the phaseNames vector.voidprintHelp()voidprintResult(java.io.PrintWriter out)voidprintResultJSON(java.io.PrintWriter out)voidprintResultText(java.io.PrintWriter out)voidprintStdUsage()Prints the command line arguments common to all TauP tools.voidprintStdUsageHead()voidprintUsage()protected voidreadPhaseFile(java.lang.String filename)Reads in list of phase names from a text file.protected voidreadTauModel()Reads the velocity model, slowness model, and tau model from a file saved using Java's Serializable interface.protected voidrecalcPhases()recalculates the given phases using a possibly new or changed tau model.voidsetPhaseNames(PhaseName[] phaseNames)voidsetPhaseNames(java.lang.String[] phaseNames)voidsetReceiverDepth(double receiverDepth)voidsetSourceDepth(double depth)voidsetTauModel(TauModel tMod)voidsortArrivals()voidstart()-
Methods inherited from class edu.sc.seis.TauP.TauP_Tool
dashEquals, endGmtAndCleanUp, getOutFile, getOutFileBase, getOutFileExtension, getOutputFormat, getWriter, parseCommonCmdLineArgs, printNoComprendoArgs, printScriptBeginning, printStdUsageHead, printStdUsageTail, setOutFileBase, setOutFileExtension, setOutputFormat, setWriter, toolNameFromClass
-
-
-
-
Field Detail
-
modelName
protected java.lang.String modelName
-
tModDepth
protected transient TauModel tModDepth
TauModel derived from tMod by correcting it for a non-surface source.
-
phaseNames
protected java.util.List<PhaseName> phaseNames
names of phases to be used, ie PKIKP.
-
depth
protected double depth
-
receiverDepth
protected double receiverDepth
-
degrees
protected double degrees
-
distKilometers
protected double distKilometers
For when command line args uses --km for distance. Have to wait until after the model is read in to get radius of earth.
-
azimuth
protected double azimuth
-
backAzimuth
protected double backAzimuth
-
takeoffAngle
protected double takeoffAngle
-
stationLat
protected double stationLat
-
stationLon
protected double stationLon
-
eventLat
protected double eventLat
-
eventLon
protected double eventLon
-
arrivals
protected java.util.List<Arrival> arrivals
-
GUI
protected boolean GUI
-
onlyPrintRayP
protected boolean onlyPrintRayP
-
onlyPrintTime
protected boolean onlyPrintTime
-
relativePhaseName
protected java.lang.String relativePhaseName
-
relativeArrival
protected Arrival relativeArrival
-
-
Constructor Detail
-
TauP_Time
public TauP_Time()
-
TauP_Time
public TauP_Time(TauModel tMod)
-
TauP_Time
public TauP_Time(java.lang.String modelName) throws TauModelExceptioncreates a TauP_Time object with the tau model specified by modelName already loaded.- Throws:
TauModelException- if the file can't be found or is corrupted in some way.
-
-
Method Detail
-
getPhaseNames
public java.lang.String[] getPhaseNames()
-
getPhaseNameString
public java.lang.String getPhaseNameString()
-
setPhaseNames
public void setPhaseNames(java.lang.String[] phaseNames) throws TauModelException- Throws:
TauModelException
-
setPhaseNames
public void setPhaseNames(PhaseName[] phaseNames)
-
getPhaseNames
public static java.util.List<java.lang.String> getPhaseNames(java.lang.String phaseName)
-
appendPhaseName
public void appendPhaseName(java.lang.String phaseName) throws TauModelException- Throws:
TauModelException
-
appendPhaseName
public void appendPhaseName(PhaseName phaseName)
-
getNumPhases
public int getNumPhases()
-
clearPhaseNames
public void clearPhaseNames()
-
getSourceDepth
public double getSourceDepth()
-
setSourceDepth
public void setSourceDepth(double depth)
-
getReceiverDepth
public double getReceiverDepth()
-
setReceiverDepth
public void setReceiverDepth(double receiverDepth)
-
getTauModelName
public java.lang.String getTauModelName()
-
getTauModel
public TauModel getTauModel()
-
getTauModelDepthCorrected
public TauModel getTauModelDepthCorrected()
Gets depth corrected TauModel.
-
setTauModel
public void setTauModel(TauModel tMod)
-
loadTauModel
public void loadTauModel(java.lang.String modelName) throws java.io.FileNotFoundException, java.io.InvalidClassException, java.io.IOException, java.io.StreamCorruptedException, java.io.OptionalDataException, TauModelException- Throws:
java.io.FileNotFoundExceptionjava.io.InvalidClassExceptionjava.io.IOExceptionjava.io.StreamCorruptedExceptionjava.io.OptionalDataExceptionTauModelException
-
getDisconDepths
public double[] getDisconDepths()
-
clearPhases
public void clearPhases()
-
clearArrivals
public void clearArrivals()
-
getNumArrivals
public int getNumArrivals()
-
getArrival
public Arrival getArrival(int i)
-
getArrivals
public java.util.List<Arrival> getArrivals()
-
getSeismicPhases
public java.util.List<SeismicPhase> getSeismicPhases()
-
readTauModel
protected void readTauModel() throws TauModelExceptionReads the velocity model, slowness model, and tau model from a file saved using Java's Serializable interface. Performs a depth correction if the current depth is not 0.0- Throws:
TauModelException
-
readPhaseFile
protected void readPhaseFile(java.lang.String filename) throws java.io.IOExceptionReads in list of phase names from a text file. So long as each phase name is separated by some whitespace, " " or newline or tab, it should read them fine. Also, comments are allowed, either # or // are comments to the end of the line while c style slash-star make a block a comment.- Throws:
java.io.IOException
-
parsePhaseList
public void parsePhaseList(java.lang.String phaseList)
parses a comma separated list of phase names and adds them to the phaseNames vector. Each phase can have an optional argument after a dash. This would be used for specifying which sac header to put the time in, or for other unforeseen uses. This may be called multiple times to append more phases. For example: P-0,PcP-1,ScP-4,Sn,SS,S^410S would, assuming no previous phases have been added, put P in T0, PcP in T1, ScP in T5, Sn in T2, SS in T3, and S^410S in T5.
-
parseDegreeList
public static java.util.List<java.lang.Double> parseDegreeList(java.lang.String degList)
Parses a comma separated list of distances and returns them in an array.
-
parseCmdLineArgs
protected java.lang.String[] parseCmdLineArgs(java.lang.String[] origArgs) throws java.io.IOException- Specified by:
parseCmdLineArgsin classTauP_Tool- Throws:
java.io.IOException
-
sortArrivals
public void sortArrivals()
-
calculate
public void calculate(double degrees) throws TauModelException- Throws:
TauModelException
-
calcTime
public void calcTime(double degrees) throws TauModelException- Throws:
TauModelException
-
calcTakeoff
public void calcTakeoff(double takeoffAngle) throws TauModelException- Throws:
TauModelException
-
depthCorrect
@Deprecated public void depthCorrect(double depth) throws TauModelExceptionDeprecated.use setSourceDepth insteadcorrects the TauModel for the given source depth. It only performs the correction of the model is not already corrected to that depth. In general, this is called by each tool's calculate methods, and so should not need to be called by outside code. Most of the time calling setSourceDepth is preferred, allowing the tool to choose when to call depthCorrect.- Throws:
TauModelException
-
depthCorrect
public void depthCorrect(double depth, double receiverDepth) throws TauModelExceptionIn general, this is called by each tool's calculate methods, and so should not need to be called by outside code. Most of the time calling setSourceDepth and setReceiverDepth is preferred, allowing the tool to choose when to call depthCorrect.- Parameters:
depth- the source depthreceiverDepth- the receiver depth- Throws:
TauModelException
-
recalcPhases
protected void recalcPhases()
recalculates the given phases using a possibly new or changed tau model. This should not need to be called by outside classes as it is called by depthCorrect, and calculate.
-
printResult
public void printResult(java.io.PrintWriter out) throws java.io.IOException- Throws:
java.io.IOException
-
printResultText
public void printResultText(java.io.PrintWriter out) throws java.io.IOException- Throws:
java.io.IOException
-
printResultJSON
public void printResultJSON(java.io.PrintWriter out)
-
init
public void init() throws TauPExceptionpreforms intialization of the tool. Properties are queried for the the default model to load, source depth to use, phases to use, etc. Note that because of the IO inherent in these operations, this method is not appropriate for Applets. Applets should load TauModels themselves and use the setTauModel(TauModel) method.- Specified by:
initin classTauP_Tool- Throws:
TauPException
-
printHelp
public void printHelp()
-
start
public void start() throws java.io.IOException, TauModelException, TauPException- Specified by:
startin classTauP_Tool- Throws:
java.io.IOExceptionTauModelExceptionTauPException
-
destroy
public void destroy() throws TauPException- Specified by:
destroyin classTauP_Tool- Throws:
TauPException
-
printStdUsageHead
public void printStdUsageHead()
-
printStdUsage
public void printStdUsage()
Prints the command line arguments common to all TauP tools.
-
printUsage
public void printUsage()
- Specified by:
printUsagein classTauP_Tool
-
linearInterp
public static final double linearInterp(double xa, double ya, double xb, double yb, double x)solves the equation (yb-ya)/(xb-xa) = (y-ya)/(x-xa) for y given x. Useful for finding the pixel for a value given the dimension of the area and the range of values it is supposed to cover. Note, this does not check for xa == xb, in which case a divide by zero would occur.
-
main
public static void main(java.lang.String[] args) throws java.io.IOExceptionAllows TauP_Time to run as an application. Creates an instance of TauP_Time. ToolRun.main should be used instead.- Throws:
java.io.IOException
-
-