Class Arrival

java.lang.Object
edu.sc.seis.TauP.Arrival
Direct Known Subclasses:
ScatteredArrival

public class Arrival extends Object
convenience class for storing the parameters associated with a phase arrival.
  • Field Details

  • Constructor Details

  • Method Details

    • findNearDistance

      public double findNearDistance(double deltaRadian)
      Finds a distance near the arrival distance at which the phase still exists.
      Parameters:
      deltaRadian - max delta distance in radians
      Returns:
      a distance in radians
    • nearbyArrival

      public Arrival nearbyArrival()
    • nearbyArrival

      public Arrival nearbyArrival(double deltaDistRadian)
    • getTurnCount

      public int getTurnCount()
      Count number of turns in phase. Depending on the ray parameter, some of the turns could be critically reflected instead of true turning rays.
      Returns:
      number of internal caustics
    • getInternalCausticCount

      public int getInternalCausticCount()
      Count internal caustics, places where neighboring rays cross and reverse sense of relative orientation, like a bowtie.
      Returns:
      number of internal caustics
    • sortArrivals

      public static void sortArrivals(List<Arrival> arrivals)
      Sorts arrivals by time in place.
      Parameters:
      arrivals - sorted
    • sortArrivalsBySourceReceiverDepth

      public static void sortArrivalsBySourceReceiverDepth(List<Arrival> arrivals)
      Sorts arrivals by source and receiver depth in place. Used when calc rel phases for efficiency.
      Parameters:
      arrivals - sorted
    • onlyFirst

      public static List<Arrival> onlyFirst(List<Arrival> arrivalList)
    • getCommentLine

      public String getCommentLine()
    • getPhase

      public SeismicPhase getPhase()
      Returns:
      the phase used to calculate this arrival.
    • getSimpleContigSeismicPhase

      public SimpleContigSeismicPhase getSimpleContigSeismicPhase()
      Returns the contiguous part of the phase that generated this arrival. Usually the same as getPhase(), except in the case of CompositeSeismicPhase where several contiguous phases are separated by shadow zones.
      Returns:
    • isFromCompositePhase

      public boolean isFromCompositePhase()
    • listPhaseSegments

      public List<SeismicPhaseSegment> listPhaseSegments()
    • getTauModel

      public TauModel getTauModel()
      Returns:
      TauModel used to generate the phase that this arrival came from
    • getTime

      public double getTime()
      Returns:
      travel time in seconds
    • getDuration

      public Duration getDuration()
      Returns:
      travel time as a Duration
    • getDist

      public double getDist()
      The actual travel distance in radians. May not match the search distance if long way around or laps.
    • getDistDeg

      public double getDistDeg()
      returns actual travel distance in degrees. May not match the search distance if long way around or laps.
    • getModuloDist

      public double getModuloDist()
      returns distance in radians and in the range 0-PI. Note this may not be the actual distance traveled.
    • getModuloDistDeg

      public double getModuloDistDeg()
      returns distance in degrees and in the range 0-180. Note this may not be the actual distance traveled.
    • setSearchValue

      public void setSearchValue(RayCalculateable searchVal)
    • getSearchDistDeg

      public double getSearchDistDeg()
      returns search distance in degrees.
    • getModuloSearchDistDeg

      public double getModuloSearchDistDeg()
      returns search distance in degrees and in the range 0-180. Note this may not be the actual distance traveled.
    • isLongWayAround

      public boolean isLongWayAround()
    • getRayParam

      public double getRayParam()
      returns ray parameter in seconds per radian
    • getRayParamDeg

      public double getRayParamDeg()
      returns ray parameter in seconds per deg
    • getDRayParamDDelta

      public double getDRayParamDDelta()
    • getDRayParamDDeltaDeg

      public double getDRayParamDDeltaDeg()
    • calcAmplitude

      Throws:
      SlownessModelException
      TauModelException
    • getAmplitudeGeometricSpreadingFactor

      public double getAmplitudeGeometricSpreadingFactor()
      Geometrical spreading factor for amplitude, sqrt of energy spreading. See Fundamentals of Modern Global Seismology, ch 13, eq 13.19.
    • getEnergyGeometricSpreadingFactor

      public double getEnergyGeometricSpreadingFactor()
      Energy Geometrical spreading factor. See Fundamentals of Modern Global Seismology, ch 13, eq 13.10. Note that eq 13.10 has divide by zero in case of a horizontal ray arriving at the receiver.
    • getEnergyFluxFactorReflTransPSV

      public double getEnergyFluxFactorReflTransPSV() throws TauModelException, SlownessModelException
      Calculates the product of the reflection and transmission coefficients for all discontinuities along the path of this arrival in the P-SV plane. Note that this may not give accurate results for certain wave types, such as head or diffracted waves.
      Returns:
      Throws:
      VelocityModelException
      SlownessModelException
      TauModelException
    • getEnergyFluxFactorReflTransSH

      public double getEnergyFluxFactorReflTransSH() throws TauModelException, SlownessModelException
      Calculates the product of the reflection and transmission coefficients for all discontinuities along the path of this arrival for transverse, SH, waves. If any segment on the path is a P wave, the result will be zero. Note that this may not give accurate results for certain wave types, such as head or diffracted waves.
      Returns:
      Throws:
      VelocityModelException
      SlownessModelException
      TauModelException
    • getReflTransPSV

      Calculates the product of the reflection and transmission coefficients for all discontinuities along the path of this arrival in the P-SV plane. Note that this may not give accurate results for certain wave types, such as head or diffracted waves.
      Returns:
      Throws:
      VelocityModelException
      SlownessModelException
      TauModelException
    • getReflTransSH

      Calculates the product of the reflection and transmission coefficients for all discontinuities along the path of this arrival for transverse, SH, waves. If any segment on the path is a P wave, the result will be zero. Note that this may not give accurate results for certain wave types, such as head or diffracted waves.
      Returns:
      Throws:
      VelocityModelException
      SlownessModelException
      TauModelException
    • getAmplitudeFactorPSV

      public double getAmplitudeFactorPSV() throws TauModelException, SlownessModelException
      Calculates the amplitude factor, 1/sqrt(density*vel) times reflection/tranmission coefficient times geometric spreading, for the arrival. Note this is only an approximation of amplitude as the source radiation magnitude and pattern is not included, and this may not give accurate results for certain wave types, such as head or diffracted waves.

      See FMGS eq 17.74

      Throws:
      TauModelException
      SlownessModelException
    • getAmplitudeFactorPSV

      public double getAmplitudeFactorPSV(double momentRate, double attenuationFrequency, int numFreq) throws TauModelException, SlownessModelException
      Throws:
      TauModelException
      SlownessModelException
    • getAmplitudeFactorSH

      public double getAmplitudeFactorSH() throws TauModelException, VelocityModelException, SlownessModelException
      Calculates the amplitude factor, 1/sqrt(density*vel) times reflection/tranmission coefficient times geometric spreading, for the arrival. Note this is only an approximation of amplitude as the source radiation magnitude and pattern is not included, and this may not give accurate results for certain wave types, such as head or diffracted waves.
      Returns:
      Throws:
      TauModelException
      VelocityModelException
      SlownessModelException
    • getAmplitudeFactorSH

      public double getAmplitudeFactorSH(double momentRate, double attenuationFrequency, int numFreq) throws TauModelException, SlownessModelException
      Throws:
      TauModelException
      SlownessModelException
    • getRadiationPatternPSV

      public double getRadiationPatternPSV()
    • getRadiationPatternSH

      public double getRadiationPatternSH()
    • getIncidentAngleDegree

      public double getIncidentAngleDegree()
    • getIncidentAngleRadian

      public double getIncidentAngleRadian()
    • getTakeoffAngleDegree

      public double getTakeoffAngleDegree()
    • getTakeoffAngleRadian

      public double getTakeoffAngleRadian()
    • velocityAtSource

      public double velocityAtSource()
    • sourceRadius

      public double sourceRadius()
    • radialSlownessAtSource

      public double radialSlownessAtSource()
    • velocityAtReceiver

      public double velocityAtReceiver()
    • receiverRadius

      public double receiverRadius()
    • radialSlownessAtReceiver

      public double radialSlownessAtReceiver()
    • getRayParamIndex

      public int getRayParamIndex()
    • getName

      public String getName()
      returns phase name
    • getPuristName

      public String getPuristName()
      returns purist's version of name. Depths are changed to reflect the true depth of the interface.
    • getSourceDepth

      public double getSourceDepth()
      returns source depth in kilometers
    • getReceiverDepth

      public double getReceiverDepth()
      returns receiver (station) depth in kilometers
    • getShallowestPierce

      public TimeDist getShallowestPierce()
      returns shallowest point on path, in kilometers
    • getDeepestPierce

      public TimeDist getDeepestPierce()
      returns deepest point on path, in kilometers
    • getFurthestPierce

      public TimeDist getFurthestPierce()
      returns furthest distance point module pi/180 on path, in radians
    • getPierce

      public TimeDist[] getPierce()
      returns pierce points as TimeDist objects.
    • calcFreeFactor

      public double calcFreeFactor() throws VelocityModelException
      Throws:
      VelocityModelException
    • calcAttenuation

      public double calcAttenuation()
      Calculate attenuation over path at the default frequency. See eq B13.2.2 in FMGS, p374.
    • calcAttenuation

      public double calcAttenuation(double maxfreq, int N)
      Calculate attenuation over path at the given frequency. See eq B13.2.2 in FMGS, p374. Averages over N+1 frequencies from 0 to maxfreq.
    • calcTStar

      public double calcTStar()
      Calculate t* over path at the given frequency. See eq B13.2.2 in FMGS, p374.
    • calcRadiationPattern

      public RadiationAmplitude calcRadiationPattern()
      Calculate radiation pattern terms, Fp, Fsv, Fsh for the given fault orientation and az,takeoff.
      Returns:
      Fp, Fsv, Fsh
    • calcRadiationTerm

      public double calcRadiationTerm()
    • calcPathLength

      public double calcPathLength()
      Calculates the path length.
      Returns:
      path length in kilometers
    • getPath

      public TimeDist[] getPath()
      returns path points as TimeDist objects.
    • getPathSegments

      public List<ArrivalPathSegment> getPathSegments()
    • negateDistance

      public Arrival negateDistance()
      Negates the arrival distance. Primarily used when printing a scatter arrival that is at negative distance. No other fields are changed.
      Returns:
      new Arrival with dist and search dist negated
    • isRelativeToArrival

      public boolean isRelativeToArrival()
    • getRelativeToArrival

      public Arrival getRelativeToArrival()
    • setRelativeToArrival

      public void setRelativeToArrival(Arrival relativeToArrival)
    • toStringHeader

      public static String toStringHeader()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getSourceTimeDist

      public TimeDist getSourceTimeDist()
      Create TimeDist point for source, first point in pierce or path.
    • getNumPiercePoints

      public int getNumPiercePoints()
    • getNumPathPoints

      public int getNumPathPoints()
    • getPiercePoint

      public TimeDist getPiercePoint(int i)
    • getFirstPiercePoint

      public TimeDist getFirstPiercePoint(double depth)
      finds the first pierce point at the given depth.
      Throws:
      ArrayIndexOutOfBoundsException - if depth is not found
    • getLastPiercePoint

      public TimeDist getLastPiercePoint(double depth)
      finds the last pierce point at the given depth.
      Throws:
      ArrayIndexOutOfBoundsException - if depth is not found
    • getEarliestArrival

      public static Arrival getEarliestArrival(List<Arrival> arrivals)
    • getLatestArrival

      public static Arrival getLatestArrival(List<Arrival> arrivals)
    • headerNames

      public static List<String> headerNames(boolean tableStyle)
    • headerNames

      public static List<String> headerNames(boolean tableStyle, boolean withAmp, boolean withRelPhase, boolean withDerivative)
    • CSVHeader

      public static String CSVHeader()
    • CSVHeader

      public static String CSVHeader(boolean withAmp, boolean withRelPhase, boolean withDerivative)
    • asStringList

      public List<String> asStringList(boolean tableStyle, String phaseFormat, String phasePuristFormat, boolean withAmp, boolean withRelPhase, boolean withDerivative)
      Creates a List of Strings, each corresponding to the headers via headerNames() for this arrival.
      Returns:
      arrival for printing
    • asCSVRow

      public String asCSVRow()
    • asCSVRow

      public String asCSVRow(boolean withAmp, boolean withRelPhase, boolean withDerivative)
    • getRayCalculateable

      public RayCalculateable getRayCalculateable()
    • isLatLonable

      public boolean isLatLonable()
    • getLatLonable

      public LatLonable getLatLonable()