Class ProtoSeismicPhase

  • All Implemented Interfaces:
    java.lang.Comparable<ProtoSeismicPhase>

    public class ProtoSeismicPhase
    extends java.lang.Object
    implements java.lang.Comparable<ProtoSeismicPhase>
    Represents a partial seismic phase, appended to as a name is parsed. May also fail if part way if phase is not compatible with the model.
    • Constructor Detail

      • ProtoSeismicPhase

        public ProtoSeismicPhase​(java.util.List<SeismicPhaseSegment> segmentList,
                                 double receiverDepth)
    • Method Detail

      • startEmpty

        public static ProtoSeismicPhase startEmpty​(java.lang.String phaseName,
                                                   TauModel tMod,
                                                   double receiverDepth)
      • failNewPhase

        public static ProtoSeismicPhase failNewPhase​(TauModel tMod,
                                                     boolean isPWave,
                                                     boolean isDownGoing,
                                                     double receiverDepth,
                                                     java.lang.String phaseName,
                                                     java.lang.String reason)
      • findEndDiscon

        public static int findEndDiscon​(TauModel tMod,
                                        int startBranchNum,
                                        boolean isPWave,
                                        boolean isDowngoing)
      • splitForHighSlownessDiscon

        public java.util.List<ShadowOrProto> splitForHighSlownessDiscon​(int hszBranchNum,
                                                                        boolean isPWave)
                                                                 throws TauModelException
        Split for a discontinuity where above slowness is smaller than below. Usually a low velocity zone. Only splits for discontinuities internal to a SeismicPhaseSegment as discontinuities at the boundary are handled via normal phase generation and min,max ray param and cannot generate an internal shadow zone.
        Parameters:
        hszBranchNum - TauBranch number with the discon at its top
        isPWave - true for P waves, false for S waves
        Returns:
        phase split for shadow zone
        Throws:
        TauModelException
      • isEmpty

        public final boolean isEmpty()
      • isSuccessful

        public boolean isSuccessful()
      • size

        public final int size()
      • countFlatLegs

        public int countFlatLegs()
      • countHeadLegs

        public int countHeadLegs()
      • countDiffLegs

        public int countDiffLegs()
      • calcStartBranch

        public int calcStartBranch​(java.lang.String currLeg)
                            throws TauModelException
        Calculate the starting branch number for the current leg. This is the same as the previous end branch number for reflections, and offset by one for transmissions.
        Parameters:
        currLeg - current leg name
        Returns:
        branch number
        Throws:
        TauModelException
      • addToBranch

        public SeismicPhaseSegment addToBranch​(int endBranch,
                                               boolean isPWave,
                                               boolean nextIsPWave,
                                               PhaseInteraction endAction,
                                               java.lang.String currLeg)
                                        throws TauModelException
        Adds a segment to a path of a seismic phase. Generally this corresponds to a character in a phase name, like K in PKP.
        Parameters:
        endBranch - ending branch number, start is calculated from the end branch and end action of the prior leg.
        isPWave - current leg phase type, true for P, false for S
        nextIsPWave - next leg phase type, true for P, false for S, determines if a phase conversion at the end
        endAction - action the phase takes at the end, like TURN or REFLECT_TOPSIDE
        currLeg - name of current leg
        Returns:
        The segment added by this call
        Throws:
        TauModelException - if arguments not possible in the model, but not thrown for a simple failure to exist
      • calcMaxTransitRP

        protected double calcMaxTransitRP​(int startBranch,
                                          int endBranch,
                                          boolean isPWave,
                                          PhaseInteraction prevEndAction,
                                          double maxRayParam)
      • calcInteractionNumber

        public int calcInteractionNumber()
      • phaseNameForSegments

        public java.lang.String phaseNameForSegments()
      • phaseNameForSegments

        public java.lang.String phaseNameForSegments​(boolean zapED)
      • legNameForSegment

        public static java.lang.String legNameForSegment​(TauModel tMod,
                                                         int endBranch,
                                                         boolean isPWave,
                                                         boolean isDownGoing,
                                                         boolean isFlat,
                                                         PhaseInteraction endAction)
      • branchNumSeg

        public java.util.List<java.lang.Integer> branchNumSeg()
      • branchNumSeqStr

        public java.lang.String branchNumSeqStr()
      • branchNumSeqStrWithSegBreaks

        public java.lang.String branchNumSeqStrWithSegBreaks()
      • getName

        public java.lang.String getName()
      • getPuristName

        public java.lang.String getPuristName()
      • segmentListAsString

        public java.lang.String segmentListAsString()