Class 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 Detail

      • 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
    • Constructor Detail

      • 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 Detail

      • getName

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

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

        public double getTau​(int i)
        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
      • 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.
      • createArrivalAtIndex

        public Arrival createArrivalAtIndex​(int rayNum)
        Creates an Arrival for a sampled ray parameter from the model. No interpolation between rays as this is a sample.
        Specified by:
        createArrivalAtIndex in interface SeismicPhase
        Parameters:
        rayNum -
        Returns:
      • 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)
      • 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
      • 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:
      • calcSegmentPaths

        public java.util.List<java.util.List<TimeDist>> calcSegmentPaths​(Arrival currArrival)
      • removeDuplicatePathPoints

        public static java.util.List<TimeDist> removeDuplicatePathPoints​(java.util.List<TimeDist> inPath)
      • 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:
      • toString

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

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