Class TauModel

  • All Implemented Interfaces:
    java.io.Serializable

    public class TauModel
    extends java.lang.Object
    implements java.io.Serializable
    provides storage all of the TauBranch's comprising a model.
    See Also:
    Serialized Form
    • Field Detail

      • DEBUG

        public static transient boolean DEBUG
        True to enable debugging output.
      • spherical

        protected boolean spherical
        True if this is a spherical slowness model. False if flat.
      • sourceDepth

        protected double sourceDepth
        Depth for which tau model was constructed.
      • sourceBranch

        protected int sourceBranch
        Branch with the source at its top.
      • noDisconDepths

        protected double[] noDisconDepths
        Depths that should not have reflections or phase conversions. For instance, if the source is not at a branch boundary then noDisconDepths contains source depth and reflections and phase conversions are not allowed at this branch boundary. If the source happens to fall on a real discontinuity then then it is not included.
      • mohoDepth

        protected double mohoDepth
        Depth of the moho.
      • mohoBranch

        protected int mohoBranch
        Branch with the moho at its top.
      • cmbDepth

        protected double cmbDepth
        Depth of the cmb.
      • cmbBranch

        protected int cmbBranch
        Branch with the cmb at its top.
      • iocbDepth

        protected double iocbDepth
        Depth of the iocb.
      • iocbBranch

        protected int iocbBranch
        Branch with the iocb at its top.
      • radiusOfEarth

        protected double radiusOfEarth
        Radius of the Earth in km, usually input from the velocity model.
      • rayParams

        protected double[] rayParams
        ray parameters used to construct the tau branches. This may only be a subset of the slownesses/ray parameters saved in the slowness model due to high slowness zones (low velocity zones).
      • tauBranches

        public TauBranch[][] tauBranches
        2D Array containing a TauBranch object corresponding to each "branch" of the tau model, 0 is P and 1 is S. Branches correspond to depth regions between discontinuities or reversals in slowness gradient for a wave type. Each branch contains time, distance, and tau increments for each ray parameter in rayParams for the layer. Rays that turn above the branch layer are assigned 0.0 time, distance, and tau increments.
    • Method Detail

      • isSpherical

        public boolean isSpherical()
      • getModelName

        public java.lang.String getModelName()
        Returns:
        the name of the earth model used to construct the tau model.
      • getSourceDepth

        public double getSourceDepth()
        Returns:
        depth for which tau model was constructed.
      • getSourceBranch

        public int getSourceBranch()
        Returns:
        branch number with the source at its top.
      • getNoDisconDepths

        public double[] getNoDisconDepths()
        Branches, such as the branch with the source at its top, that are not allowed to have reflections and phase conversions at their tops.
      • isNoDisconBranch

        public boolean isNoDisconBranch​(int branchNum)
        Does the given branch number have a noDisconDepth at its top? We test against PWave Tau branches (ie true) since S is the same.
      • isNoDisconDepth

        public boolean isNoDisconDepth​(double noDisconDepth)
        Is the given depth a "noDisconDepth"?
      • setNoDisconDepths

        public void setNoDisconDepths​(double[] noDisconDepths)
      • appendNoDisconDepth

        public void appendNoDisconDepth​(double noDisconDepth)
      • getMohoDepth

        public double getMohoDepth()
        Returns:
        depth of the moho.
      • getMohoBranch

        public int getMohoBranch()
        Returns:
        branch number with the moho at its top.
      • getCmbDepth

        public double getCmbDepth()
        Returns:
        depth of the cmb.
      • getCmbBranch

        public int getCmbBranch()
        Returns:
        branch number with the cmb at its top.
      • getIocbDepth

        public double getIocbDepth()
        Returns:
        depth of the iocb.
      • getIocbBranch

        public int getIocbBranch()
        Returns:
        branch number with the iocb at its top.
      • getRadiusOfEarth

        public double getRadiusOfEarth()
        Returns:
        the radius of the Earth in km, usually input from the velocity model.
      • getRayParams

        public double[] getRayParams()
        Returns:
        an array, cloned, of the ray parameters used to construct the tau branches. This may only be a subset of the slownesses/ray parameters saved in the slowness model due to high slowness zones (low velocity zones).
      • getOneRayParam

        public double getOneRayParam​(int i)
      • getNumBranches

        public int getNumBranches()
      • getTauBranch

        public TauBranch getTauBranch​(int branchNum,
                                      boolean isPWave)
      • getBranchDepths

        public double[] getBranchDepths()
        returns an array of the depths that are boundaries between branches
      • findDepth

        public double findDepth​(double rayParam,
                                boolean isPWave)
                         throws TauModelException
        returns the turning depth for a ray of given ray parameter. Note this is for a surface source, and so converted phases my give incorrect results, e.g. SKS for certain ray parameters turns within the upper part of the outer core that is a low velocity zone for P so no P wave of that ray parameter could reach the core. For layer specific turning points, see the other SlownessModel.findDepth.
        Throws:
        TauModelException
      • findBranch

        public int findBranch​(double depth)
                       throws TauModelException
        Finds the branch that either has the depth as its top boundary, or strictly contains the depth. Also, we allow the bottommost branch to contain its bottom depth, so that the center if the earth is contained within the bottom branch.
        Throws:
        TauModelException
      • depthCorrect

        public TauModel depthCorrect​(double depth)
                              throws TauModelException
        Computes a new tau model for a source at depth using the previously computed branches for a surface source. No change is needed to the branches above and below the branch containing the depth, except for the addition of a slowness sample. The branch containing the source depth is split into 2 branches, and up going branch and a downgoing branch. Additionally, the slowness at the source depth must be sampled exactly as it is an extremal point for each of these branches. See Buland and Chapman p 1290.
        Throws:
        TauModelException
      • splitBranch

        public TauModel splitBranch​(double depth)
                             throws TauModelException
        returns a new TauModel with the branches containing depth split at depth. Used for putting a source at depth since a source can only be located on a branch boundary.
        Throws:
        TauModelException
      • writeModel

        public void writeModel​(java.lang.String filename)
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • writeModelToStream

        public void writeModelToStream​(java.io.OutputStream outStream)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • readModel

        public static TauModel readModel​(java.lang.String filename)
                                  throws java.io.FileNotFoundException,
                                         java.io.IOException,
                                         java.io.StreamCorruptedException,
                                         java.lang.ClassNotFoundException,
                                         java.io.OptionalDataException
        Throws:
        java.io.FileNotFoundException
        java.io.IOException
        java.io.StreamCorruptedException
        java.lang.ClassNotFoundException
        java.io.OptionalDataException
      • readModelFromStream

        public static TauModel readModelFromStream​(java.io.InputStream inStream)
                                            throws java.io.InvalidClassException,
                                                   java.io.IOException,
                                                   java.io.StreamCorruptedException,
                                                   java.lang.ClassNotFoundException,
                                                   java.io.OptionalDataException
        Throws:
        java.io.InvalidClassException
        java.io.IOException
        java.io.StreamCorruptedException
        java.lang.ClassNotFoundException
        java.io.OptionalDataException
      • validate

        public boolean validate()
      • print

        public void print()
      • toString

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

        protected TauModel loadFromDepthCache​(java.lang.Double depth)