Class TauBranch

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable

    public class TauBranch
    extends java.lang.Object
    implements java.io.Serializable, java.lang.Cloneable
    provides storage and methods for distance, time and tau increments for a branch. A branch is a group of layers bounded by discontinuities or reversals in slowness gradient.
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      boolean DEBUG
      Turns on debugging output.
      protected double[] dist
      Holds distance (radians) evaluated at the ith ray parameter for this branch.
      protected boolean isPWave
      The type of wave for this branch, P or S.
      protected double[] tau
      Holds tau evaluated at the ith ray parameter for this branch.
      protected double[] time
      Holds time (seconds) evaluated at the ith ray parameter for this branch.
    • Constructor Summary

      Constructors 
      Constructor Description
      TauBranch​(boolean isPWave, double topDepth, double botDepth, double maxRayParam, double minTurnRayParam, double minRayParam, double[] dist, double[] time, double[] tau)  
      TauBranch​(double topDepth, double botDepth, boolean isPWave)  
    • Field Detail

      • DEBUG

        public transient boolean DEBUG
        Turns on debugging output.
      • isPWave

        protected boolean isPWave
        The type of wave for this branch, P or S.
      • dist

        protected double[] dist
        Holds distance (radians) evaluated at the ith ray parameter for this branch.
      • time

        protected double[] time
        Holds time (seconds) evaluated at the ith ray parameter for this branch.
      • tau

        protected double[] tau
        Holds tau evaluated at the ith ray parameter for this branch.
    • Constructor Detail

      • TauBranch

        public TauBranch​(boolean isPWave,
                         double topDepth,
                         double botDepth,
                         double maxRayParam,
                         double minTurnRayParam,
                         double minRayParam,
                         double[] dist,
                         double[] time,
                         double[] tau)
      • TauBranch

        public TauBranch​(double topDepth,
                         double botDepth,
                         boolean isPWave)
    • Method Detail

      • getTopDepth

        public double getTopDepth()
        Returns:
        the minimum (top) depth of this layer.
      • getBotDepth

        public double getBotDepth()
        Returns:
        the maximum (bottom) depth of this layer.
      • getMaxRayParam

        public double getMaxRayParam()
        Returns:
        the maximum ray parameter that can penetrate into this branch. Time, distance, and tau increments are undefined, set to 0.0, for ray parameters larger than this.
      • getMinTurnRayParam

        public double getMinTurnRayParam()
        Returns:
        the minimum ray parameter that is turned, but not reflected, in this branch.
      • getMinRayParam

        public double getMinRayParam()
        Returns:
        the minimum ray parameter that is turned or reflected in this branch.
      • getDist

        public double[] getDist()
        Returns:
        an array, cloned, containing distance (radians) evaluated at the i_th ray parameter for this branch.
      • getDist

        public double getDist​(int i)
        Returns:
        the distance (radians) evaluated at the i_th ray parameter for this branch.
      • getTime

        public double[] getTime()
        Returns:
        an array, cloned, containing time (seconds) evaluated at the i_th ray parameter for this branch.
      • getTime

        public double getTime​(int i)
        Returns:
        the time (seconds) evaluated at the i_th ray parameter for this branch.
      • getTau

        public double[] getTau()
        Returns:
        an array, cloned, containing tau (seconds) evaluated at the i_th ray parameter for this branch.
      • getTau

        public double getTau​(int i)
        Returns:
        tau (seconds) evaluated at the i_th ray parameter for this branch.
      • calcTimeDist

        public TimeDist calcTimeDist​(SlownessModel sMod,
                                     int topLayerNum,
                                     int botLayerNum,
                                     double p)
                              throws SlownessModelException
        calculates the time and distance increments for the given ray parameter. The topDepth and botDepth must be correct as they determine the bounds on the integration/summing.
        Throws:
        SlownessModelException - if the ray with ray parameter p turns within a layer instead of at the bottom.
      • difference

        protected TauBranch difference​(TauBranch topBranch,
                                       int indexP,
                                       int indexS,
                                       SlownessModel sMod,
                                       double[] rayParams)
                                throws NoSuchLayerException,
                                       SlownessModelException,
                                       TauModelException
        generates a new tau branch by "subtracting" the given tau branch from this tau branch. The given tau branch is assumed to by the upper part of this branch. indexP specifies where a new ray coresponding to a P wave sample has been added, it is -1 if no ray parameter has been added to topBranch. indexS is similar to indexP except for a S wave sample. Note that although the ray parameters for indexP and indexS were for the P and S waves that turned at the source depth, both ray parameters need to be added to both P and S branches.
        Throws:
        NoSuchLayerException
        SlownessModelException
        TauModelException
      • shiftBranch

        public void shiftBranch​(int index)
      • writeToStream

        public void writeToStream​(java.io.DataOutputStream dos)
                           throws java.io.IOException
        Throws:
        java.io.IOException
      • readFromStream

        public static TauBranch readFromStream​(java.io.DataInputStream dis)
                                        throws java.io.IOException,
                                               java.lang.ClassNotFoundException,
                                               java.lang.InstantiationException,
                                               java.lang.IllegalAccessException,
                                               TauPException
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
        java.lang.InstantiationException
        java.lang.IllegalAccessException
        TauPException
      • clone

        public TauBranch clone()
        Returns a clone of this TauBranch object. Note that super.clone() handles all normal variables while the arrays need to be cloned separately to generate a new array as opposed to a new reference to the old array.
        Overrides:
        clone in class java.lang.Object
        See Also:
        Cloneable
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object