Class SimpleSeismicPhase

java.lang.Object
edu.sc.seis.TauP.SimpleSeismicPhase
All Implemented Interfaces:
SeismicPhase, java.io.Serializable, java.lang.Cloneable

public class SimpleSeismicPhase
extends java.lang.Object
implements SeismicPhase
Stores and transforms seismic phase names to and from their corresponding sequence of branches.
See Also:
Serialized Form
  • Field Summary

    Fields
    Modifier and Type Field Description
    protected java.util.List<java.lang.Integer> branchSeq
    Array of branch numbers for the given phase.
    boolean DEBUG
    Enables debugging output.
    protected double[] dist
    Array of distances corresponding to the ray parameters stored in rayParams.
    protected java.util.List<java.lang.Boolean> downGoing
    true if the current leg of the phase is down going.
    protected java.util.List<java.lang.Integer> headOrDiffractSeq
    Array of branchSeq positions where a head or diffracted segment occurs.
    protected java.util.List<PhaseInteraction> legAction
    records the end action for the current leg.
    protected java.util.ArrayList<java.lang.String> legs
    ArrayList containing Strings for each leg.
    protected double maxDistance
    The maximum distance that this phase can be theoretically observed.
    protected double maxRayParam
    Maximum ray parameter that exists for this phase.
    protected int maxRayParamIndex
    Index within TauModel.rayParams that corresponds to maxRayParam.
    protected int maxRecursion  
    protected double minDistance
    The minimum distance that this phase can be theoretically observed.
    protected double minRayParam
    Minimum ray parameter that exists for this phase.
    protected int minRayParamIndex
    Index within TauModel.rayParams that corresponds to minRayParam.
    protected java.lang.String name
    The phase name, ie PKiKP.
    protected java.lang.String puristName
    name with depths corrected to be actuall discontinuities in the model.
    static boolean PWAVE  
    protected double[] rayParams
    Array of possible ray parameters for this phase.
    protected double receiverDepth
    The receiver depth within the TauModel that was used to generate this phase.
    protected double refineDistToleranceRadian  
    protected java.util.List<SeismicPhaseSegment> segmentList
    Description of segments of the phase.
    protected double sourceDepth
    The source depth within the TauModel that was used to generate this phase.
    static boolean SWAVE  
    protected double[] time
    Array of times corresponding to the ray parameters stored in rayParams.
    protected TauModel tMod
    TauModel to generate phase for.
    boolean verbose
    Enables verbose output.
    protected java.util.List<java.lang.Boolean> waveType
    ArrayList of wave types corresponding to each leg of the phase.
  • Constructor Summary

    Constructors
    Constructor Description
    SimpleSeismicPhase​(java.lang.String name, TauModel tMod)
    Deprecated.
    use SeismicPhaseFactory.create()
    SimpleSeismicPhase​(java.lang.String name, TauModel tMod, double receiverDepth)
    Deprecated.
    use SeismicPhaseFactory.create()
    SimpleSeismicPhase​(java.lang.String name, TauModel tMod, double receiverDepth, boolean debug)
    Deprecated.
    use SeismicPhaseFactory.create()
    SimpleSeismicPhase​(java.lang.String name, TauModel tMod, double receiverDepth, java.util.ArrayList<java.lang.String> legs, java.lang.String puristName, double[] rayParams, double[] time, double[] dist, double minRayParam, double maxRayParam, int minRayParamIndex, int maxRayParamIndex, double minDistance, double maxDistance, java.util.List<java.lang.Integer> branchSeq, java.util.List<java.lang.Integer> headOrDiffractSeq, java.util.List<SeismicPhaseSegment> segmentList, java.util.List<PhaseInteraction> legAction, java.util.List<java.lang.Boolean> downGoing, java.util.List<java.lang.Boolean> waveType, boolean debug)  
    SimpleSeismicPhase​(java.lang.String name, java.lang.String modelName, double depth)
    Deprecated.
    use SeismicPhaseFactory.create()
  • Method Summary

    Modifier and Type Method Description
    static java.util.List<TimeDist> adjustPath​(java.util.List<TimeDist> inPath, Arrival arrival)
    Adjust path so the end point lines up.
    double calcIncidentAngle​(double arrivalRayParam)  
    java.util.List<Arrival> calcPath​(double deg)
    Deprecated.
    Use the getPath() method on each Arrival from calcTime()
    Arrival calcPath​(Arrival currArrival)
    Deprecated.
    use the getPath() method on the arrival.
    java.util.List<TimeDist> calcPathTimeDist​(Arrival currArrival)  
    java.util.List<Arrival> calcPierce​(double deg)
    Deprecated.
    Use the getPierce() method on each Arrival from calcTime()
    Arrival calcPierce​(Arrival currArrival)
    Deprecated.
    Use the getPierce() method on each Arrival from calcTime()
    java.util.List<TimeDist> calcPierceTimeDist​(Arrival currArrival)  
    double calcRayParamForTakeoffAngle​(double takeoffDegree)  
    double calcTakeoffAngle​(double arrivalRayParam)  
    java.util.List<Arrival> calcTime​(double deg)
    calculates arrival times for this phase, sorted by time.
    java.util.List<Arrival> calcTimeExactDistance​(double searchDist)
    Calculates arrivals for this phase, but only for the exact distance in radians.
    java.lang.String describe()  
    void dump()  
    double[] getDist()  
    double getDist​(int i)  
    boolean[] getDownGoing()
    Direction of the leg between pierce point i and i+1, true is downgoing, false if upgoing
    Arrival getEarliestArrival​(double degrees)  
    int[] getLegAction()
    Leg type i layer interaction, one of TURN, REFLECTTOP, REFLECTBOT, TRANSUP, TRANSDOWN
    java.util.List<java.lang.String> getLegs()  
    double getMaxDistance()  
    double getMaxDistanceDeg()  
    double getMaxRayParam()  
    int getMaxRayParamIndex()  
    double getMinDistance()  
    double getMinDistanceDeg()  
    double getMinRayParam()  
    int getMinRayParamIndex()  
    java.lang.String getName()  
    java.util.List<SeismicPhaseSegment> getPhaseSegments()  
    java.lang.String getPuristName()  
    double[] getRayParams()  
    double getRayParams​(int i)  
    double getReceiverDepth()  
    double getSourceDepth()  
    double[] getTau()  
    double getTau​(int i)  
    TauModel getTauModel()  
    double[] getTime()  
    double getTime​(int i)  
    boolean[] getWaveType()
    Wave type of the leg between pierce point i and i+1, true is P, false if S
    boolean hasArrivals()  
    static void main​(java.lang.String[] args)  
    boolean phasesExistsInModel()  
    Arrival refineArrival​(int rayNum, double distRadian, double distTolRadian, int maxRecursion)  
    Arrival refineArrival​(Arrival leftEstimate, Arrival rightEstimate, double searchDist, double distTolRadian, int maxRecursion)  
    Arrival shootRay​(double rayParam)  
    java.lang.String toString()  

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • DEBUG

      public transient boolean DEBUG
      Enables debugging output.
    • verbose

      public transient boolean verbose
      Enables verbose output.
    • tMod

      protected TauModel tMod
      TauModel to generate phase for.
    • sourceDepth

      protected double sourceDepth
      The source depth within the TauModel that was used to generate this phase.
    • receiverDepth

      protected double receiverDepth
      The receiver depth within the TauModel that was used to generate this phase. Normally this is 0.0 for a surface stations, but can be different for borehole or scattering calculations.
    • dist

      protected double[] dist
      Array of distances corresponding to the ray parameters stored in rayParams.
    • time

      protected double[] time
      Array of times corresponding to the ray parameters stored in rayParams.
    • rayParams

      protected double[] rayParams
      Array of possible ray parameters for this phase.
    • minRayParam

      protected double minRayParam
      Minimum ray parameter that exists for this phase.
    • maxRayParam

      protected double maxRayParam
      Maximum ray parameter that exists for this phase.
    • maxRayParamIndex

      protected int maxRayParamIndex
      Index within TauModel.rayParams that corresponds to maxRayParam. Note that maxRayParamIndex < minRayParamIndex as ray parameter decreases with increasing index.
    • minRayParamIndex

      protected int minRayParamIndex
      Index within TauModel.rayParams that corresponds to minRayParam. Note that maxRayParamIndex < minRayParamIndex as ray parameter decreases with increasing index.
    • minDistance

      protected double minDistance
      The minimum distance that this phase can be theoretically observed.
    • maxDistance

      protected double maxDistance
      The maximum distance that this phase can be theoretically observed.
    • branchSeq

      protected java.util.List<java.lang.Integer> branchSeq
      Array of branch numbers for the given phase. Note that this depends upon both the earth model and the source depth.
    • headOrDiffractSeq

      protected java.util.List<java.lang.Integer> headOrDiffractSeq
      Array of branchSeq positions where a head or diffracted segment occurs.
    • name

      protected java.lang.String name
      The phase name, ie PKiKP.
    • puristName

      protected java.lang.String puristName
      name with depths corrected to be actuall discontinuities in the model.
    • legs

      protected java.util.ArrayList<java.lang.String> legs
      ArrayList containing Strings for each leg.
    • segmentList

      protected java.util.List<SeismicPhaseSegment> segmentList
      Description of segments of the phase.
    • legAction

      protected java.util.List<PhaseInteraction> legAction
      records the end action for the current leg. Will be one of SeismicPhase.TURN, SeismicPhase.TRANSDOWN, SeismicPhase.TRANSUP, SeismicPhase.REFLECTBOT, or SeismicPhase.REFLECTTOP. This allows a check to make sure the path is correct. Used in addToBranch() and parseName().
    • downGoing

      protected java.util.List<java.lang.Boolean> downGoing
      true if the current leg of the phase is down going. This allows a check to make sure the path is correct. Used in addToBranch() and parseName().
    • waveType

      protected java.util.List<java.lang.Boolean> waveType
      ArrayList of wave types corresponding to each leg of the phase.
    • refineDistToleranceRadian

      protected double refineDistToleranceRadian
    • maxRecursion

      protected int maxRecursion
    • PWAVE

      public static final boolean PWAVE
      See Also:
      Constant Field Values
    • SWAVE

      public static final boolean SWAVE
      See Also:
      Constant Field Values
  • Constructor Details

    • SimpleSeismicPhase

      @Deprecated public SimpleSeismicPhase​(java.lang.String name, java.lang.String modelName, double depth) throws TauModelException
      Deprecated.
      use SeismicPhaseFactory.create()
      Parameters:
      name -
      modelName -
      depth -
      Throws:
      TauModelException
    • SimpleSeismicPhase

      @Deprecated public SimpleSeismicPhase​(java.lang.String name, TauModel tMod) throws TauModelException
      Deprecated.
      use SeismicPhaseFactory.create()
      Parameters:
      name - String containing a name of the phase.
      tMod - Tau model to be used to construct the phase. This should be corrected for the source depth.
      Throws:
      TauModelException
    • SimpleSeismicPhase

      @Deprecated public SimpleSeismicPhase​(java.lang.String name, TauModel tMod, double receiverDepth) throws TauModelException
      Deprecated.
      use SeismicPhaseFactory.create()
      Parameters:
      name -
      tMod -
      receiverDepth -
      Throws:
      TauModelException
    • SimpleSeismicPhase

      @Deprecated public SimpleSeismicPhase​(java.lang.String name, TauModel tMod, double receiverDepth, boolean debug) throws TauModelException
      Deprecated.
      use SeismicPhaseFactory.create()
      Parameters:
      name -
      tMod -
      receiverDepth -
      debug -
      Throws:
      TauModelException
    • SimpleSeismicPhase

      public SimpleSeismicPhase​(java.lang.String name, TauModel tMod, double receiverDepth, java.util.ArrayList<java.lang.String> legs, java.lang.String puristName, double[] rayParams, double[] time, double[] dist, double minRayParam, double maxRayParam, int minRayParamIndex, int maxRayParamIndex, double minDistance, double maxDistance, java.util.List<java.lang.Integer> branchSeq, java.util.List<java.lang.Integer> headOrDiffractSeq, java.util.List<SeismicPhaseSegment> segmentList, java.util.List<PhaseInteraction> legAction, java.util.List<java.lang.Boolean> downGoing, java.util.List<java.lang.Boolean> waveType, boolean debug) throws TauModelException
      Throws:
      TauModelException
  • Method Details

    • phasesExistsInModel

      public boolean phasesExistsInModel()
      Specified by:
      phasesExistsInModel in interface SeismicPhase
    • getEarliestArrival

      public Arrival getEarliestArrival​(double degrees)
      Specified by:
      getEarliestArrival in interface SeismicPhase
    • getTauModel

      public TauModel getTauModel()
      Specified by:
      getTauModel in interface SeismicPhase
    • getMinDistanceDeg

      public double getMinDistanceDeg()
      Specified by:
      getMinDistanceDeg in interface SeismicPhase
    • getMinDistance

      public double getMinDistance()
      Specified by:
      getMinDistance in interface SeismicPhase
    • getMaxDistanceDeg

      public double getMaxDistanceDeg()
      Specified by:
      getMaxDistanceDeg in interface SeismicPhase
    • getMaxDistance

      public double getMaxDistance()
      Specified by:
      getMaxDistance in interface SeismicPhase
    • getMaxRayParam

      public double getMaxRayParam()
      Specified by:
      getMaxRayParam in interface SeismicPhase
    • getMinRayParam

      public double getMinRayParam()
      Specified by:
      getMinRayParam in interface SeismicPhase
    • getMaxRayParamIndex

      public int getMaxRayParamIndex()
      Specified by:
      getMaxRayParamIndex in interface SeismicPhase
    • getMinRayParamIndex

      public int getMinRayParamIndex()
      Specified by:
      getMinRayParamIndex in interface SeismicPhase
    • getName

      public java.lang.String getName()
      Specified by:
      getName in interface SeismicPhase
    • getPuristName

      public java.lang.String getPuristName()
      Specified by:
      getPuristName in interface SeismicPhase
    • getSourceDepth

      public double getSourceDepth()
      Specified by:
      getSourceDepth in interface SeismicPhase
    • getReceiverDepth

      public double getReceiverDepth()
      Specified by:
      getReceiverDepth in interface SeismicPhase
    • getLegs

      public java.util.List<java.lang.String> getLegs()
      Specified by:
      getLegs in interface SeismicPhase
    • getPhaseSegments

      public java.util.List<SeismicPhaseSegment> getPhaseSegments()
      Specified by:
      getPhaseSegments in interface SeismicPhase
    • getRayParams

      public double getRayParams​(int i)
      Specified by:
      getRayParams in interface SeismicPhase
    • getRayParams

      public double[] getRayParams()
      Specified by:
      getRayParams in interface SeismicPhase
    • getDist

      public double getDist​(int i)
      Specified by:
      getDist in interface SeismicPhase
    • getDist

      public double[] getDist()
      Specified by:
      getDist in interface SeismicPhase
    • getTime

      public double getTime​(int i)
      Specified by:
      getTime in interface SeismicPhase
    • getTime

      public double[] getTime()
      Specified by:
      getTime in interface SeismicPhase
    • getTau

      public double getTau​(int i)
      Specified by:
      getTau in interface SeismicPhase
    • getTau

      public double[] getTau()
      Specified by:
      getTau in interface SeismicPhase
    • getDownGoing

      public boolean[] getDownGoing()
      Direction of the leg between pierce point i and i+1, true is downgoing, false if upgoing
      Specified by:
      getDownGoing in interface SeismicPhase
    • getWaveType

      public boolean[] getWaveType()
      Wave type of the leg between pierce point i and i+1, true is P, false if S
      Specified by:
      getWaveType in interface SeismicPhase
    • getLegAction

      public int[] getLegAction()
      Leg type i layer interaction, one of TURN, REFLECTTOP, REFLECTBOT, TRANSUP, TRANSDOWN
      Specified by:
      getLegAction in interface SeismicPhase
    • hasArrivals

      public boolean hasArrivals()
      Specified by:
      hasArrivals in interface SeismicPhase
    • calcTime

      public java.util.List<Arrival> calcTime​(double deg)
      calculates arrival times for this phase, sorted by time.
      Specified by:
      calcTime in interface SeismicPhase
    • calcTimeExactDistance

      public java.util.List<Arrival> calcTimeExactDistance​(double searchDist)
      Calculates arrivals for this phase, but only for the exact distance in radians. This does not check multiple laps nor going the long way around.
    • refineArrival

      public Arrival refineArrival​(int rayNum, double distRadian, double distTolRadian, int maxRecursion)
    • refineArrival

      public Arrival refineArrival​(Arrival leftEstimate, Arrival rightEstimate, double searchDist, double distTolRadian, int maxRecursion)
    • shootRay

      public Arrival shootRay​(double rayParam) throws SlownessModelException, NoSuchLayerException
      Specified by:
      shootRay in interface SeismicPhase
      Throws:
      SlownessModelException
      NoSuchLayerException
    • calcRayParamForTakeoffAngle

      public double calcRayParamForTakeoffAngle​(double takeoffDegree)
      Specified by:
      calcRayParamForTakeoffAngle in interface SeismicPhase
    • calcTakeoffAngle

      public double calcTakeoffAngle​(double arrivalRayParam)
      Specified by:
      calcTakeoffAngle in interface SeismicPhase
    • calcIncidentAngle

      public double calcIncidentAngle​(double arrivalRayParam)
      Specified by:
      calcIncidentAngle in interface SeismicPhase
    • calcPierce

      @Deprecated public java.util.List<Arrival> calcPierce​(double deg) throws TauModelException
      Deprecated.
      Use the getPierce() method on each Arrival from calcTime()
      Calculates the "pierce points" for the arrivals stored in arrivals. The pierce points are stored within each arrival object.
      Throws:
      TauModelException
    • calcPierce

      @Deprecated public Arrival calcPierce​(Arrival currArrival)
      Deprecated.
      Use the getPierce() method on each Arrival from calcTime()
      Calculates the pierce points for a particular arrival. The returned arrival is the same as the input arguement but now has the pierce points filled in.
      Parameters:
      currArrival -
      Returns:
      same arrival with pierce points
    • calcPierceTimeDist

      public java.util.List<TimeDist> calcPierceTimeDist​(Arrival currArrival)
      Specified by:
      calcPierceTimeDist in interface SeismicPhase
    • calcPath

      @Deprecated public java.util.List<Arrival> calcPath​(double deg)
      Deprecated.
      Use the getPath() method on each Arrival from calcTime()
      calculates the paths this phase takes through the earth model.
    • calcPath

      @Deprecated public Arrival calcPath​(Arrival currArrival)
      Deprecated.
      use the getPath() method on the arrival.
      Parameters:
      currArrival -
      Returns:
    • calcPathTimeDist

      public java.util.List<TimeDist> calcPathTimeDist​(Arrival currArrival)
      Specified by:
      calcPathTimeDist in interface SeismicPhase
    • adjustPath

      public static java.util.List<TimeDist> adjustPath​(java.util.List<TimeDist> inPath, Arrival arrival)
      Adjust path so the end point lines up. Because we are shooting a ray parameter through the model, and that ray parameter came from an interpolation, it can happen for long paths that the output path doesn't quite end at the requested distance. We do a simple scaling of all path distances so it hits the output.
      Parameters:
      inPath -
      arrival -
      Returns:
    • describe

      public java.lang.String describe()
      Specified by:
      describe in interface SeismicPhase
    • toString

      public java.lang.String toString()
      Specified by:
      toString in interface SeismicPhase
      Overrides:
      toString in class java.lang.Object
    • dump

      public void dump()
      Specified by:
      dump in interface SeismicPhase
    • main

      public static void main​(java.lang.String[] args)