edu.sc.seis.TauP
Class VelocityModel

java.lang.Object
  extended byedu.sc.seis.TauP.VelocityModel
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable

public class VelocityModel
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

This class defines basic classes to store and manipulate a velocity model.

Version:
1.1.3 Wed Jul 18 15:00:35 GMT 2001
Author:
H. Philip Crotwell
See Also:
Serialized Form

Field Summary
protected  double cmbDepth
          Depth (km) of the cmb (core mantle boundary).
protected  java.lang.String fileType
          type of velocity file to be read in, either "nd" for named discontinuities or "tvel" for ttimes style files.
protected  double G
          Not used, gravitational constant, default 6.67e-11 m^3 / kg s^2
protected  double iocbDepth
          Depth (km) of the iocb (inner core outer core boundary).
protected  java.util.Vector layer
          expandable array to hold the layers
protected  double maxRadius
          maximum radius of the model (km), default 6371.0
protected  double meanDensity
          Not used, mean Density (kg/m^3), default 5517.0
protected  double minRadius
          minimum radius of the model (km), default 0.0
protected  java.lang.String modelName
          name of the velocity model.
protected  double mohoDepth
          Depth (km) of the moho.
protected  double radiusOfEarth
          reference radius (km), usually radius of the earth, by default 6371 kilometers.
protected  boolean spherical
          is this a spherical model? Default is true.
protected static int vectorLength
          the initial length of the layer vector.
 
Constructor Summary
VelocityModel()
           
 
Method Summary
 java.lang.Object clone()
           
 double depthAtBottom(int layerNumber)
          returns the depth at the bottom of the given layer.
 double depthAtTop(int layerNumber)
          returns the depth at the top of the given layer.
 VelocityModel earthFlattenTransform()
          Returns a flat velocity model object equivalent to the spherical velocity model via the earth flattening transform.
 double evaluateAbove(double depth, char materialProperty)
          returns the value of the given material property, usually P or S velocity, at the given depth.
 double evaluateAtBottom(int layerNumber, char materialProperty)
          returns the value of the given material property, usually P or S velocity, at the bottom of the given layer.
 double evaluateAtTop(int layerNumber, char materialProperty)
          returns the value of the given material property, usually P or S velocity, at the top of the given layer.
 double evaluateBelow(double depth, char materialProperty)
          returns the value of the given material property, usually P or S velocity, at the given depth.
 boolean fixDisconDepths()
          resets depths of major discontinuities to match those existing in the input velocity model.
 double getCmbDepth()
           
 double[] getDisconDepths()
           
 double getG()
           
 double getIocbDepth()
           
 double getMaxRadius()
           
 double getMeanDensity()
           
 double getMinRadius()
           
 java.lang.String getModelName()
          get the model name.
 double getMohoDepth()
           
 int getNumLayers()
          Returns the number of layers in this velocity model.
 double getRadiusOfEarth()
          gets radius of the earth (km), by default 6371 kilometers.
 boolean getSpherical()
           
 VelocityLayer getVelocityLayer(int layerNum)
           
 VelocityLayer getVelocityLayerClone(int layerNum)
           
 int layerNumberAbove(double depth)
          Finds the layer containing the given depth.
 int layerNumberBelow(double depth)
          Finds the layer containing the given depth.
static void main(java.lang.String[] args)
          Just for debugging purposes.
 void print()
           
 void printGMT(java.io.DataOutputStream dos)
          prints out the velocity model into a file in a for suitable for plotting with GMT.
 void printGMT(java.lang.String filename)
          prints out the velocity model into a file in a form suitable for plotting with GMT.
 void readCubicSplineFile(java.lang.String filename, java.lang.String lookForModelName)
          Reads in a cubic spline file, the original format of the ttimes code.
 void readNDFile(java.lang.String filename)
          This method reads in a velocity model from a "nd" ASCII text file, the format used by Xgbm.
 void readTVelFile(java.lang.String filename)
          This method reads in a velocity model from a "tvel" ASCII text file.
 void readVelocityFile(java.lang.String filename)
          Reads in a velocity file.
 void replaceLayers(VelocityLayer[] newLayers, boolean matchTop, boolean matchBot)
           
 void setCmbDepth(double cmbDepth)
           
 void setFileType(java.lang.String fileType)
          sets file type, either "nd" for named discontinuities or "tvel" for ttimes tvel models.
 void setG(double G)
           
 void setIocbDepth(double iocbDepth)
           
 void setMaxRadius(double maxRadius)
           
 void setMeanDensity(double meanDensity)
           
 void setMinRadius(double minRadius)
           
 void setModelName(java.lang.String modelName)
          set the model name.
 void setMohoDepth(double mohoDepth)
           
 void setRadiusOfEarth(double radiusOfEarth)
          sets radius of the earth (km), by default 6371 kilometers.
 void setSpherical(boolean spherical)
           
 java.lang.String toString()
           
 boolean validate()
          Performs internal consistency checks on the velocity model.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

modelName

protected java.lang.String modelName
name of the velocity model.


fileType

protected java.lang.String fileType
type of velocity file to be read in, either "nd" for named discontinuities or "tvel" for ttimes style files.


radiusOfEarth

protected double radiusOfEarth
reference radius (km), usually radius of the earth, by default 6371 kilometers.


mohoDepth

protected double mohoDepth
Depth (km) of the moho. It can be input from velocity model (*.nd) or should be explicitly set. By default it is 35 kilometers (from Iasp91). For phase naming, the tau model will choose the closest 1st order discontinuity. Thus for most simple earth models these values are satisfactory. Take proper care if your model has a thicker crust and a discontinuity near 35 km depth.


cmbDepth

protected double cmbDepth
Depth (km) of the cmb (core mantle boundary). It can be input from velocity model (*.nd) or should be explicitly set. By default it is 2889 kilometers (from Iasp91). For phase naming, the tau model will choose the closest 1st order discontinuity. Thus for most simple earth models these values are satisfactory.


iocbDepth

protected double iocbDepth
Depth (km) of the iocb (inner core outer core boundary). It can be input from velocity model (*.nd) or should be explicitly set. By default it is 5153.9 kilometers (from Iasp91). For phase naming, the tau model will choose the closest 1st order discontinuity. Thus for most simple earth models these values are satisfactory.


meanDensity

protected double meanDensity
Not used, mean Density (kg/m^3), default 5517.0


G

protected double G
Not used, gravitational constant, default 6.67e-11 m^3 / kg s^2


minRadius

protected double minRadius
minimum radius of the model (km), default 0.0


maxRadius

protected double maxRadius
maximum radius of the model (km), default 6371.0


spherical

protected boolean spherical
is this a spherical model? Default is true.


vectorLength

protected static int vectorLength
the initial length of the layer vector.


layer

protected java.util.Vector layer
expandable array to hold the layers

See Also:
Vector, VelocityLayer
Constructor Detail

VelocityModel

public VelocityModel()
Method Detail

getModelName

public java.lang.String getModelName()
get the model name.


setModelName

public void setModelName(java.lang.String modelName)
set the model name.


setFileType

public void setFileType(java.lang.String fileType)
sets file type, either "nd" for named discontinuities or "tvel" for ttimes tvel models.


setRadiusOfEarth

public void setRadiusOfEarth(double radiusOfEarth)
sets radius of the earth (km), by default 6371 kilometers.


getRadiusOfEarth

public double getRadiusOfEarth()
gets radius of the earth (km), by default 6371 kilometers.


getDisconDepths

public double[] getDisconDepths()

getMohoDepth

public double getMohoDepth()

setMohoDepth

public void setMohoDepth(double mohoDepth)

getCmbDepth

public double getCmbDepth()

setCmbDepth

public void setCmbDepth(double cmbDepth)

getIocbDepth

public double getIocbDepth()

setIocbDepth

public void setIocbDepth(double iocbDepth)

getMeanDensity

public double getMeanDensity()

setMeanDensity

public void setMeanDensity(double meanDensity)

getMinRadius

public double getMinRadius()

setMinRadius

public void setMinRadius(double minRadius)

getMaxRadius

public double getMaxRadius()

setMaxRadius

public void setMaxRadius(double maxRadius)

getG

public double getG()

setG

public void setG(double G)

getSpherical

public boolean getSpherical()

setSpherical

public void setSpherical(boolean spherical)

getVelocityLayerClone

public VelocityLayer getVelocityLayerClone(int layerNum)

getVelocityLayer

public VelocityLayer getVelocityLayer(int layerNum)

getNumLayers

public int getNumLayers()
Returns the number of layers in this velocity model.


layerNumberAbove

public int layerNumberAbove(double depth)
                     throws NoSuchLayerException
Finds the layer containing the given depth. Note this returns the upper layer if the depth happens to be at a layer boundary.

Returns:
the layer number
Throws:
NoSuchLayerException - occurs if no layer contains the given depth.

layerNumberBelow

public int layerNumberBelow(double depth)
                     throws NoSuchLayerException
Finds the layer containing the given depth. Note this returns the lower layer if the depth happens to be at a layer boundary.

Returns:
the layer number
Throws:
NoSuchLayerException - occurs if no layer contains the given depth.

evaluateAbove

public double evaluateAbove(double depth,
                            char materialProperty)
                     throws NoSuchLayerException,
                            NoSuchMatPropException
returns the value of the given material property, usually P or S velocity, at the given depth. Note this returns the value at the bottom of the upper layer if the depth happens to be at a layer boundary.

Returns:
the value of the given material property
Throws:
NoSuchLayerException - occurs if no layer contains the given depth.
NoSuchMatPropException - occurs if the material property is not recognized.

evaluateBelow

public double evaluateBelow(double depth,
                            char materialProperty)
                     throws NoSuchLayerException,
                            NoSuchMatPropException
returns the value of the given material property, usually P or S velocity, at the given depth. Note this returns the value at the top of the lower layer if the depth happens to be at a layer boundary.

Returns:
the value of the given material property
Throws:
NoSuchLayerException - occurs if no layer contains the given depth.
NoSuchMatPropException - occurs if the material property is not recognized.

evaluateAtTop

public double evaluateAtTop(int layerNumber,
                            char materialProperty)
                     throws NoSuchMatPropException
returns the value of the given material property, usually P or S velocity, at the top of the given layer.

Returns:
the value of the given material property
Throws:
NoSuchMatPropException - occurs if the material property is not recognized.

evaluateAtBottom

public double evaluateAtBottom(int layerNumber,
                               char materialProperty)
                        throws NoSuchMatPropException
returns the value of the given material property, usually P or S velocity, at the bottom of the given layer.

Returns:
the value of the given material property
Throws:
NoSuchMatPropException - occurs if the material property is not recognized.

depthAtTop

public double depthAtTop(int layerNumber)
returns the depth at the top of the given layer.

Returns:
the depth.

depthAtBottom

public double depthAtBottom(int layerNumber)
                     throws NoSuchMatPropException
returns the depth at the bottom of the given layer.

Returns:
the depth.
Throws:
NoSuchMatPropException - occurs if the material property is not recognized.

replaceLayers

public void replaceLayers(VelocityLayer[] newLayers,
                          boolean matchTop,
                          boolean matchBot)
                   throws NoSuchLayerException
Throws:
NoSuchLayerException

printGMT

public void printGMT(java.lang.String filename)
              throws java.io.IOException
prints out the velocity model into a file in a form suitable for plotting with GMT.

Throws:
java.io.IOException

printGMT

public void printGMT(java.io.DataOutputStream dos)
              throws java.io.IOException
prints out the velocity model into a file in a for suitable for plotting with GMT.

Throws:
java.io.IOException

validate

public boolean validate()
Performs internal consistency checks on the velocity model.


toString

public java.lang.String toString()

clone

public java.lang.Object clone()

print

public void print()

readVelocityFile

public void readVelocityFile(java.lang.String filename)
                      throws java.io.IOException,
                             VelocityModelException
Reads in a velocity file. The type of file is determined by the fileType var. Calls readTVelFile or readNDFile.

Throws:
VelocityModelException - if the type of file cannot be determined.
java.io.IOException

readCubicSplineFile

public void readCubicSplineFile(java.lang.String filename,
                                java.lang.String lookForModelName)
                         throws java.io.IOException
Reads in a cubic spline file, the original format of the ttimes code. not yet implemented since linear interpolation (.tvel) files are conceptually simpler.

Throws:
java.io.IOException

readTVelFile

public void readTVelFile(java.lang.String filename)
                  throws java.io.IOException,
                         VelocityModelException
This method reads in a velocity model from a "tvel" ASCII text file. The name of the model file for model "modelname" should be "modelname.tvel". The format of the file is: comment line - generally info about the P velocity model comment line - generally info about the S velocity model depth pVel sVel Density depth pVel sVel Density . . . The velocities are assumed to be linear between sample points. Because this type of model file doesn't give complete information we make the following assumptions: modelname - from the filename, with ".tvel" dropped if present radiusOfEarth - the largest depth in the model meanDensity - 5517.0 G - 6.67e-11 Also, because this method makes use of the string tokenizer, comments are allowed. # as well as // signify that the rest of the line is a comment. C style slash-star comments are also allowed.

Throws:
VelocityModelException - occurs if an EOL should have been read but wasn't. This may indicate a poorly formatted tvel file.
java.io.IOException

readNDFile

public void readNDFile(java.lang.String filename)
                throws java.io.IOException,
                       VelocityModelException
This method reads in a velocity model from a "nd" ASCII text file, the format used by Xgbm. The name of the model file for model "modelname" should be "modelname.nd". The format of the file is: depth pVel sVel Density Qp Qs depth pVel sVel Density Qp Qs . . . with each major boundary separated with a line with "mantle", "outer-core" or "inner-core". This feature makes phase interpretation much easier to code. Also, as they are not needed for travel time calculations, the density, Qp and Qs may be omitted. The velocities are assumed to be linear between sample points. Because this type of model file doesn't give complete information we make the following assumptions: modelname - from the filename, with ".nd" dropped, if present radiusOfEarth - the largest depth in the model Also, because this method makes use of the string tokenizer, comments are allowed. # as well as // signify that the rest of the line is a comment. C style slash-star comments are also allowed.

Throws:
VelocityModelException - occurs if an EOL should have been read but wasn't. This may indicate a poorly formatted model file.
java.io.IOException

fixDisconDepths

public boolean fixDisconDepths()
resets depths of major discontinuities to match those existing in the input velocity model. The initial values are set such that if there is no discontinuity within the top 100 km then the moho is set to 0.0. Similarly, if there are no discontinuities at al then the cmb is set to the radius of the earth. Similarly for the iocb, except it must be a fluid to solid boundary and deeper than 100km to avoid problems with shallower fluid layers, eg oceans.


earthFlattenTransform

public VelocityModel earthFlattenTransform()
                                    throws VelocityModelException
Returns a flat velocity model object equivalent to the spherical velocity model via the earth flattening transform.

Returns:
the flattened VelocityModel object.
Throws:
VelocityModelException - occurs ???.

main

public static void main(java.lang.String[] args)
Just for debugging purposes.



Copyright © 1999-2005 Seismology at the University of South Carolina. All Rights Reserved.