SLBM
3.0
|
The primary interface to the SLBM library, providing access to all supported functionality. More...
#include <SlbmInterface.h>
Public Member Functions | |
SlbmInterface () | |
Default constructor. Instantiates an SlbmInterface object based on an ellipsoidal earth. More... | |
SlbmInterface (const double &earthRadius) | |
Parameterized constructor. Instantiates an SlbmInterface object that is only partly based on an ellipsoidal earth. More... | |
virtual | ~SlbmInterface () |
Destructor. More... | |
string | getVersion () |
Retrieve the SLBM Version number. More... | |
void | loadVelocityModel (const string &modelPath) |
Load the velocity model into memory from the specified file or directory. This method automatically determines the format of the model. More... | |
void | loadVelocityModelBinary (const string &modelPath) |
Load the velocity model into memory from the specified file or directory. This method automatically determines the format of the model. More... | |
void | saveVelocityModel (const string &modelFileName, const int &format=4) |
Save the velocity model currently in memory to the specified file. More... | |
void | specifyOutputDirectory (const string &directoryName) |
Deprecated. Use saveVelocityModel() instead. Specify the directory into which the model that is currently in memory should be written the next time that saveVelocityModelBinary() is called. More... | |
void | saveVelocityModelBinary () |
Deprecated. Use saveVelocityModel() instead. Write the model in format 3 to directory previously specified with a call to specifyOutputDirectory(). More... | |
void | loadVelocityModelBinary (util::DataBuffer &buffer) |
Load the velocity model into memory from an FDB database configured DataBuffer. More... | |
int | getBufferSize () const |
Returns the size of a DataBuffer object required to store this SLBMInterface objects model data. More... | |
void | saveVelocityModelBinary (util::DataBuffer &buffer) |
Write the model currently in memory out to the input DataBuffer. More... | |
void | setInterpolatorType (const string &interpolatorType) |
Specify the interpolation type to use, either 'linear' or 'natural_neighbor'. More... | |
string | getInterpolatorType () |
Retrieve the type of interpolator currently in use; either "LINEAR" or "NATUTAL_NEIGHBOR". More... | |
void | createGreatCircle (const string &phase, const double &sourceLat, const double &sourceLon, const double &sourceDepth, const double &receiverLat, const double &receiverLon, const double &receiverDepth) |
Instantiate a new GreatCircle object between two locations. More... | |
void | createGreatCircle (const int &phase, const double &sourceLat, const double &sourceLon, const double &sourceDepth, const double &receiverLat, const double &receiverLon, const double &receiverDepth) |
Instantiate a new GreatCircle object between two locations. More... | |
void | clear () |
Delete the current GreatCircle object from memory and clear the pool of stored CrustalProfile objects. The model Grid is not deleted and remains accessible. More... | |
bool | isValid () |
Returns true if the current GreatCirlce object has been instantiated and is ready to be interrogated. More... | |
string | getPhase () |
Retrieve the phase specified in last call to createGreatCircle(). More... | |
void | getDistance (double &distance) |
Retrieve the source-receiver separation, in radians. More... | |
double | getDistance () |
Retrieve the source-receiver separation, in radians. More... | |
void | getSourceDistance (double &dist) |
Retrieve horizontal offset below the source, in radians. More... | |
void | getReceiverDistance (double &dist) |
Retrieve horizontal offset below the receiver, in radians. More... | |
void | getHeadwaveDistance (double &dist) |
Retrieve angular distance traveled by the ray below the headwave interface, in radians. More... | |
void | getHeadwaveDistanceKm (double &dist) |
Retrieve horizontal distance traveled by the ray below the headwave interface, in radians. More... | |
void | getTravelTime (double &travelTime) |
Retrieve the total travel time for the GreatCircle, in seconds. More... | |
void | getTravelTimeComponents (double &tTotal, double &tSource, double &tReceiver, double &tHeadwave, double &tGradient) |
Retrieve the total travel time and the 4 components that contribute to it for the current GreatCircle. More... | |
void | getSlowness (double &slowness) |
Retrieve the horizontal slowness, i.e., the derivative of travel time wrt to receiver-source distance, in seconds/radian. More... | |
void | get_dtt_ddist (double &slowness) |
Retrieve the horizontal slowness, i.e., the derivative of travel time wrt to receiver-source distance, in seconds/radian. More... | |
double | get_dtt_ddist () |
void | get_dtt_dlat (double &dtt_dlat) |
Retrieve the derivative of travel time wrt to source latitude, in seconds/radian. More... | |
double | get_dtt_dlat () |
void | get_dtt_dlon (double &dtt_dlon) |
Retrieve the derivative of travel time wrt to source longitude, in seconds/radian. More... | |
double | get_dtt_dlon () |
void | get_dtt_ddepth (double &dtt_ddepth) |
Retrieve the derivative of travel time wrt to source depth, in seconds/km. More... | |
double | get_dtt_ddepth () |
void | getWeights (int nodeId[], double weight[], int &nWeights) |
Retrieve the weight assigned to each grid node that was touched by the GreatCircle. More... | |
void | getActiveNodeWeights (int nodeId[], double weight[], int &nWeights) |
Retrieve the weight assigned to each active node that was touched by the GreatCircle. More... | |
void | getWeights (vector< int > &nodeId, vector< double > &weight) |
Retrieve the weight assigned to each grid node that was touched by the GreatCircle. More... | |
void | getActiveNodeWeights (vector< int > &nodeId, vector< double > &weight) |
Retrieve the weight assigned to each active node that was touched by the GreatCircle. More... | |
void | getWeightsSource (int nodeids[], double weights[], int &nWeights) |
Retrieve the node IDs and the interpolation coefficients for the source CrustalProfile. More... | |
void | getActiveNodeWeightsSource (int nodeids[], double weights[], int &nWeights) |
Retrieve the active node IDs and the interpolation coefficients for the source CrustalProfile. More... | |
void | getWeightsReceiver (int nodeids[], double weights[], int &nWeights) |
Retrieve the node IDs and the interpolation coefficients for the receiver CrustalProfile. For linear interpolation, nWeights will equal 3 but for natural neighbor interpolation nWeights will be variable but less than 10. The sum of the weights will equal 1. More... | |
void | getActiveNodeWeightsReceiver (int nodeids[], double weights[], int &nWeights) |
Retrieve the active node IDs and the interpolation coefficients for the receiver CrustalProfile. For linear interpolation, nWeights will equal 3 but for natural neighbor interpolation nWeights will be variable but less than 10. The sum of the weights will equal 1. More... | |
string | toString (const int &verbosity) |
Returns a human-readable string representation of the GreatCircle object. More... | |
void | getNGridNodes (int &n) |
Retrieve the number of Grid nodes in the Earth model. More... | |
int | getNGridNodes () |
Retrieve the number of Grid nodes in the Earth model. More... | |
void | getNHeadWavePoints (int &nHeadWavePoints) |
Retrieve the number of LayerProfile objects positioned along the head wave interface. More... | |
void | getGridData (const int &nodeId, double &latitude, double &longitude, double depth[NLAYERS], double pvelocity[NLAYERS], double svelocity[NLAYERS], double gradient[2]) |
Retrieve the lat (radians), lon (radians), interface depths (km), P and S wave interval velocities (km/sec) and P and S mantle gradient (1/sec) information associated with a specified node in the velocity grid. More... | |
void | getActiveNodeData (const int &nodeId, double &latitude, double &longitude, double depth[NLAYERS], double pvelocity[NLAYERS], double svelocity[NLAYERS], double gradient[2]) |
Retrieve the lat (radians), lon (radians), interface depths (km), P and S wave interval velocities (km/sec) and P and S mantle gradient (1/sec) information associated with a specified active node in the velocity grid. More... | |
void | setGridData (const int &nodeId, double depths[NLAYERS], double pvelocity[NLAYERS], double svelocity[NLAYERS], double gradient[2]) |
Modify the velocity and gradient information associated with a specified node in the Grid. More... | |
void | setActiveNodeData (const int &nodeId, double depths[NLAYERS], double pvelocity[NLAYERS], double svelocity[NLAYERS], double gradient[2]) |
Modify the depth, velocity and gradient information associated with a specified active node in the Grid. More... | |
void | getGreatCircleData (string &phase, double &actual_path_increment, double sourceDepth[NLAYERS], double sourceVelocity[NLAYERS], double receiverDepth[NLAYERS], double receiverVelocity[NLAYERS], int &npoints, double headWaveVelocity[], double gradient[]) |
Retrieve information about the great circle path including the interface depths at source and receiver, the velocity profiles at the source and receiver, and mantle velocity and velocity gradient at points along the great circle path from source pierce point to receiver pierce point. More... | |
void | getGreatCircleLocations (double lat[], double lon[], double depth[], int &npoints) |
Retrieve the latitudes, longitudes and depths of all the profile positions along the headwave interface. More... | |
void | getGreatCircleNodeInfo (int **neighbors, double **coefficients, const int &maxpoints, const int &maxnodes, int &npoints, int *nnodes) |
Retrieve information about the interpolated points along the headwave path, including the number of points, the indexes of the grid nodes that contributed to interpolation of values at the points, and the interpolation coefficients used to calculate values at the points. More... | |
void | getInterpolatedPoint (const double &lat, const double &lon, int *nodeId, double *coefficients, int &nnodes, double depth[NLAYERS], double pvelocity[NLAYERS], double svelocity[NLAYERS], double &pgradient, double &sgradient) |
Retrieve interpolated data from the earth model at a single specified latitude, longitude. More... | |
void | getInterpolatedTransect (double lat[], double lon[], const int &nLatLon, int **neighbors, double **coefficients, int *nNeighbors, double depth[][NLAYERS], double pvelocity[][NLAYERS], double svelocity[][NLAYERS], double pgradient[NLAYERS], double sgradient[NLAYERS], int &nInvalid) |
Retrieve interpolated data from the earth model along a transect defined by equal sized, 1 dimensional arrays of latitude and longitude. More... | |
void | initializeActiveNodes (const double &latmin, const double &lonmin, const double &latmax, const double &lonmax) |
Specify the latitude and longitude range in radians for active nodes. More... | |
void | initializeActiveNodes (const string &polygonFileName) |
Specify the name of a file that contains a list of points that define a polygon that enclose the set of grid nodes that are to be considered active nodes. More... | |
void | initializeActiveNodes (GeoTessPolygon *polygon) |
Specify a polygon that enclose the set of grid nodes that are to be considered active nodes. More... | |
void | initializeActiveNodes (double *lat, double *lon, const int &npoints, const bool &inDegrees=true) |
Specify a list of points that define a polygon that encloses the set of grid nodes that are to be considered active nodes. More... | |
void | initializeActiveNodes (vector< double * > &unitVectors) |
Specify a list of points that define a polygon that encloses the set of grid nodes that are to be considered active nodes. More... | |
int | getNActiveNodes () |
Retrieve the number of active nodes in the Grid. More... | |
void | clearActiveNodes () |
Clear all active nodes. Clear all active nodes. More... | |
int | getGridNodeId (int activeNodeId) |
Retrieve the grid node ID that corresponds to a specified active node ID. More... | |
int | getActiveNodeId (int gridNodeId) |
Retrieve the active node ID that corresponds to a specified grid node ID. More... | |
void | getNodeHitCount (const int &nodeId, int &hitCount) |
Retrieve the number of times that the specified node has been 'touched' by a GreatCircle object. More... | |
void | clearNodeHitCount () |
Clear the node hit count by setting the hit count of every node to zero. More... | |
void | getNodeNeighbors (const int &nid, int neighbors[], int &nNeighbors) |
Retrieve the node IDs of the nodes that surround the specified node. More... | |
void | getActiveNodeNeighbors (const int &nid, int neighbors[], int &nNeighbors) |
Retrieve the active node IDs of the nodes that surround the specified active node. More... | |
void | getNodeNeighbors (const int &nid, vector< int > &neighbors) |
Retrieve the node IDs of the nodes that surround the specified node. More... | |
void | getActiveNodeNeighbors (const int &nid, vector< int > &neighbors) |
Retrieve active the node IDs of the active nodes that surround the specified active node. More... | |
void | getNodeNeighborInfo (const int &nid, int neighbors[], double distance[], double azimuth[], int &nNeighbors) |
Retrieve the node IDs of the nodes that surround the specified node. More... | |
void | getActiveNodeNeighborInfo (const int &nid, int neighbors[], double distance[], double azimuth[], int &nNeighbors) |
Retrieve the active node IDs of the nodes that surround the specified node. More... | |
void | getActiveNodeNeighborInfo (const int &nid, vector< int > &neighbors, vector< double > &distance, vector< double > &azimuth) |
Retrieve the active node IDs of the nodes that surround the specified node. More... | |
void | getNodeSeparation (const int &node1, const int &node2, double &distance) |
Retrieve the angular separation of two grid nodes, in radians. More... | |
void | getNodeAzimuth (const int &node1, const int &node2, double &azimuth) |
Retrieve the azimuth from grid node1 to grid node2, radians. More... | |
GreatCircle * | getGreatCircleObject () |
Retrieve a pointer to the GreatCircle object. More... | |
Grid * | getGridObject () |
Retrieve a pointer to the Grid object. More... | |
void | getTravelTimeUncertainty (const int &phase, const double &distance, double &uncert) |
Retrieve the travel time uncertainty in sec for specified phase, distance (in radians). More... | |
void | getTravelTimeUncertainty (double &travelTimeUncertainty) |
Retrieve travel time uncertainty in sec using the phase and distance specified in last call to getGreatCircle(). More... | |
void | getSlownessUncertainty (const int &phase, const double &distance, double &uncert) |
Retrieve the slowness uncertainty in sec/radian for specified phase, distance (in radians). More... | |
void | getSlownessUncertainty (double &slownessUncertainty) |
Retrieve uncertainty of the horizontal slowness, in seconds/radian using the phase and distance specified in last call to getGreatCircle(). More... | |
string | getUncertaintyTable (const int &attribute, const int &phase) |
string | getUncertaintyFileFormat (const int &attribute, const int &phase) |
void | getZhaoParameters (double &Vm, double &Gm, double &H, double &C, double &Cm, int &udSign) |
Retrieve some of the parameters that contribute to the calculation of of total travel time using the Zhao algorithm. More... | |
void | getPgLgComponents (double &tTotal, double &tTaup, double &tHeadwave, double &pTaup, double &pHeadwave, double &trTaup, double &trHeadwave) |
Retrieve information about Pg/Lg travel time calculations. More... | |
void | getAverageMantleVelocity (const int &type, double &velocity) |
Retrieve the average P or S wave mantle velocity that is specified in the model input file, in km/sec. More... | |
void | setAverageMantleVelocity (const int &type, const double &velocity) |
Set the average P or S wave mantle velocity that is recorded in the model input file, in km/sec. More... | |
void | getTessId (string &tessId) |
Retrieve the tessellation ID of the model currently in memory. More... | |
void | getFractionActive (double &fractionActive) |
Retrieve the fraction of the path length of the current GreatCircle object that is within the currently defined active region. More... | |
string | getClassCount () |
Retrieve a table that lists the number of instances of various SLBM classes that are currently instantiated. More... | |
const string & | getModelPath () const |
A string containing the path to the SLBM model. More... | |
void | getDistAz (const double &aLat, const double &aLon, const double &bLat, const double &bLon, double &distance, double &azimuth, const double &naValue) |
compute distance and azimuth between two points, A and B (all quantities are in radians). More... | |
void | movePoint (const double &aLat, const double &aLon, const double &distance, const double &azimuth, double &bLat, double &bLon) |
Find point B that is the specified distance and azimuth from point A, in radians. More... | |
void | getPiercePointSource (double &lat, double &lon, double &depth) |
Retrieve the latitude and longitude of the moho pierce point below the source, in radians. More... | |
void | getPiercePointReceiver (double &lat, double &lon, double &depth) |
Retrieve the latitude and longitude of the moho pierce point below the receiver, in radians. More... | |
void | getGreatCirclePoints (const double &aLat, const double &aLon, const double &bLat, const double &bLon, const int &npoints, double latitude[], double longitude[]) |
Retrieve an array of lat, lon points along a great circle path between two specified points, a and b. More... | |
void | getGreatCirclePointsOnCenters (const double &aLat, const double &aLon, const double &bLat, const double &bLon, const int &npoints, double latitude[], double longitude[]) |
Retrieve an array of lat, lon points along a great circle path between two specified points, a and b. More... | |
void | setDelDistance (const double &del_distance) |
Change the value of step change in distance used to compute horizontal derivatives(in radians). More... | |
void | getDelDistance (double &del_distance) |
Retrieve the value of step change in distance used to compute horizontal derivatives (radians) More... | |
void | setDelDepth (const double &del_depth) |
Change the value of step change in depth used to compute depth derivatives (km) More... | |
void | getDelDepth (double &del_depth) |
Retrieve the value of step change in depth used to compute depth derivatives (km) More... | |
void | setPathIncrement (const double &pathIncrement) |
Set the desired spacing of great circle nodes along the head wave interface, in radians. More... | |
void | getPathIncrement (double &pathIncrement) |
Retrieve the current value of the spacing of great circle nodes along the head wave interface, in radians. More... | |
double | getPathIncrement () |
Retrieve the current value of the spacing of great circle nodes along the head wave interface, in radians. More... | |
string | getModelString () |
Static Public Member Functions | |
static void | setCHMax (const double &chMax) |
Set the value of chMax. c is the zhao c parameter and h is the turning depth of the ray below the moho. Zhao method only valid for c*h << 1. When c*h > chMax, then slbm will throw an exception. More... | |
static void | getCHMax (double &chMax) |
Retrieve the current value of chMax. c is the zhao c parameter and h is the turning depth of the ray below the moho. Zhao method only valid for c*h << 1. When c*h > chMax, then slbm will throw an exception. More... | |
static void | setMaxDistance (const double &maxDistance) |
Set the maximum source-receiver separation for Pn/Sn phase, in radians. More... | |
static void | getMaxDistance (double &maxDistance) |
Retrieve the current value for the maximum source-receiver separation, in radians. More... | |
static void | setMaxDepth (const double &maxDepth) |
Set the maximum source depth for Pn/Sn phase, in km. More... | |
static void | getMaxDepth (double &maxDepth) |
Retrieve the current value for the maximum source depth, in km. More... | |
Protected Member Functions | |
void | clearGreatCircles () |
Protected Attributes | |
Grid * | grid |
The Grid object that stores the velocity model. More... | |
GreatCircle * | greatCircle |
The most recently requested GreatCircle object. More... | |
bool | valid |
true if the current GreatCirlce object has been instantiated and is ready to be interrogated. More... | |
Static Protected Attributes | |
static double | CH_MAX |
Private Attributes | |
double | srcLat |
double | srcLon |
double | rcvLat |
double | rcvLon |
The primary interface to the SLBM library, providing access to all supported functionality.
SlbmInterface maintains a Grid object which is loaded into memory with the loadVelocityModel() method. This Grid object remains in memory until the SlbmInterface destructor is called.
SlbmInterface also maintains a single instance of a GreatCircle object which is instantiated with a call to createGreatCircle(). Once instantiated, many SlbmInterface methods can retrieve information from it, such as getTravelTime(), getTravelTimeComponents(), getWeights(), and more. Once instantiated, the GreatCircle can be interrogated until it is replaced with another GreatCircle by a subsequent call to createGreatCircle(), or is deleted by clear().
slbm::SlbmInterface::SlbmInterface | ( | ) |
Default constructor. Instantiates an SlbmInterface object based on an ellipsoidal earth. Geographic latitudes are converted to geocentric latitudes, and the radius of the Earth varies as a function of latitude.
slbm::SlbmInterface::SlbmInterface | ( | const double & | earthRadius | ) |
Parameterized constructor. Instantiates an SlbmInterface object that is only partly based on an ellipsoidal earth. Geographic latitudes are converted to geocentric latitudes, but the radius of the Earth is considered a constant independent of latitude.
earthRadius | the constant radius of the earth in km. |
|
virtual |
Destructor. Deletes the GreatCircle object and the Grid object.
void slbm::SlbmInterface::clear | ( | ) |
Delete the current GreatCircle object from memory and clear the pool of stored CrustalProfile objects. The model Grid is not deleted and remains accessible.
The Grid object owned by SlbmInterface stores a vector of map objects which associates the phase and Location of a CrustalProfile object with a pointer to the instance of the CrustalProfile. When createGreatCircle() is called with a latitude, longitude and depth which has been used before, the Grid object will return a pointer to the existing CrustalProfile object, thereby enhancing performance. This vector of maps is cleared when SlbmInterface::clear() is called. The implications of all this is that applications that loop over many calls to createGreatCircle() will see a performance improvement if clear() is not called within the loop. However, for problems with a huge number of sources and or receivers, if memory becomes an issue, applications could call clear() within the loop to save memory.
|
inline |
|
protected |
deletes current greatCircle object and sets ttHminus, ttHplus, ttZplus and ttHZplus equal to NA_VALUE.
|
inline |
Clear the node hit count by setting the hit count of every node to zero.
|
inline |
Instantiate a new GreatCircle object between two locations.
phase | the phase that this GreatCircle is to support. Recognized phases are Pn, Sn, Pg and Lg. |
sourceLat | the geographic latitude of the source in radians. |
sourceLon | the longitude of source in radians. |
sourceDepth | the depth of the source in km. |
receiverLat | the geographic latitude of the receiver in radians. |
receiverLon | the longitude of the receiver in radians. |
receiverDepth | the depth of the receiver in km. |
void slbm::SlbmInterface::createGreatCircle | ( | const int & | phase, |
const double & | sourceLat, | ||
const double & | sourceLon, | ||
const double & | sourceDepth, | ||
const double & | receiverLat, | ||
const double & | receiverLon, | ||
const double & | receiverDepth | ||
) |
Instantiate a new GreatCircle object between two locations.
phase | the phase that this GreatCircle is to support. Recognized phases are Pn, Sn, Pg and Lg. |
sourceLat | the geographic latitude of the source in radians. |
sourceLon | the longitude of source in radians. |
sourceDepth | the depth of the source in km. |
receiverLat | the geographic latitude of the receiver in radians. |
receiverLon | the longitude of the receiver in radians. |
receiverDepth | the depth of the receiver in km. |
|
inline |
Retrieve the derivative of travel time wrt to source depth, in seconds/km.
dtt_ddepth | the derivative of travel time wrt to source depth. |
|
inline |
|
inline |
Retrieve the horizontal slowness, in seconds/radian.
slowness | the derivative of travel time wrt to source latitude. |
|
inline |
|
inline |
Retrieve the derivative of travel time wrt to source latitude, in seconds/radian.
dtt_dlat | the derivative of travel time wrt to source latitude. |
|
inline |
|
inline |
Retrieve the derivative of travel time wrt to source longitude, in seconds/radian.
dtt_dlon | the derivative of travel time wrt to source longitude. |
|
inline |
void slbm::SlbmInterface::getActiveNodeData | ( | const int & | nodeId, |
double & | latitude, | ||
double & | longitude, | ||
double | depth[NLAYERS], | ||
double | pvelocity[NLAYERS], | ||
double | svelocity[NLAYERS], | ||
double | gradient[2] | ||
) |
Retrieve the interface depth, velocity and gradient information associated with a specified active node in the velocity grid.
nodeId | the active node ID of the grid point in the model (zero based index). |
latitude | the latitude of the grid node in radians. |
longitude | the longitude of the grid node in radians. |
depth | the depths of all the model interfaces, in km. |
pvelocity | an array containing the P velocities of all the intervals at the specified grid node, in km/sec. |
svelocity | an array containing the S velocities of all the intervals at the specified grid node, in km/sec. |
gradient | a 2-element array containing the P and S velocity gradients in the mantle, in 1/sec. |
|
inline |
Retrieve the active node ID that corresponds to a specified grid node ID.
|
inline |
Retrieve the active node IDs of the nodes that surround the specified node.
The caller must supply int array neighbors which is dimensioned large enough to hold the maximum number of neighbors that a node can have, which is 8. The actual number of neighbors is returned in nNeighbors.
|
inline |
Retrieve the active node IDs of the nodes that surround the specified node.
The caller must supply int array neighbors which is dimensioned large enough to hold the maximum number of neighbors that a node can have, which is 8. The actual number of neighbors is returned in nNeighbors.
|
inline |
Retrieve the active node IDs of the active nodes that surround the specified active node.
The caller must supply int array neighbors which is dimensioned large enough to hold the maximum number of neighbors that a node can have, which is 8. The actual number of neighbors is returned in nNeighbors.
|
inline |
Retrieve the active node IDs of the active nodes that surround the specified active node.
|
inline |
Retrieve the weight assigned to each active node that was touched by the GreatCircle.
A map which associates an instance of a GridProfile object with a double weight is initialized. Then every LayerProfile on the head wave interface between the source and receiver is visited and the angular distance, d, that the ray traveled in the horizontal segment is retrieved. If d > 0, then the neighboring GridProfile objects that contributed to the interpolated value of the LayerProfile are visited. The product of d * R * C is added to the weight associated with that GridProfile object, where R is the radius of the head wave interface for the LayerProfile object being evaluated, and C is the interpolation coefficient for the GridProfile - LayerProfile pair under consideration. Then, all the GridProfile objects in the map are visited, the grid node IDs extracted into int array nodeId, and the weight extracted into double array weight.
Note: Only grid nodes touched by this GreatCircle are included in the output. Each grid node is included only once, even though more than one LayerProfile object may have contributed some weight to it. The sum of all the weights will equal the horizontal distance traveled by the ray along the head wave interface, from the source pierce point to the receiver pierce point, in km.
nodeId | the active node IDs of all the grid nodes touched by the current GreatCircle. These are active node ids, not grid node ids. If a grid node has weight but is not an active node, the nodeId will be -1. |
weight | the weights of all the grid nodes touched by the current GreatCircle. Calling application must dimension this array large enough to handle any possible size. |
nWeights | the number of elements in nodeId and weight. Calling application must dimension this array large enough to handle any possible size. |
|
inline |
Retrieve the weight assigned to each active node that was touched by the GreatCircle.
A map which associates an instance of a GridProfile object with a double weight is initialized. Then every LayerProfile on the head wave interface between the source and receiver is visited and the angular distance, d, that the ray traveled in the horizontal segment is retrieved. If d > 0, then the neighboring GridProfile objects that contributed to the interpolated value of the LayerProfile are visited. The product of d * R * C is added to the weight associated with that GridProfile object, where R is the radius of the head wave interface for the LayerProfile object being evaluated, and C is the interpolation coefficient for the GridProfile - LayerProfile pair under consideration. Then, all the GridProfile objects in the map are visited, the grid node IDs extracted into int array nodeId, and the weight extracted into double array weight.
Note: Only grid nodes touched by this GreatCircle are included in the output. Each grid node is included only once, even though more than one LayerProfile object may have contributed some weight to it. The sum of all the weights will equal the horizontal distance traveled by the ray along the head wave interface, from the source pierce point to the receiver pierce point, in km.
nodeId | the active node IDs of all the grid nodes touched by the current GreatCircle. |
weight | the weights of all the grid nodes touched by the current GreatCircle. |
|
inline |
nodeids | the node indexes of the grid nodes involved in interpolation. |
weights | the weights associated with each nodeid |
nWeights | the number of nodeids and weights returned. |
|
inline |
Retrieve the active node IDs and the interpolation coefficients for the source CrustalProfile. For linear interpolation, nWeights will equal 3 but for natural neighbor interpolation nWeights will be variable but less than 10. The sum of the weights will equal 1.
nodeids | the node indexes of the grid nodes involved in interpolation. |
weights | the weights associated with each nodeid |
nWeights | the number of nodeids and weights returned. |
|
inline |
Retrieve the average P or S wave mantle velocity that is specified in the model input file. This value is used in the calculation of the Zhao c parameter.
type | specify either SLBMGlobals::PWAVE or SLBMGlobals::SWAVE. |
velocity | the P or S wave velocity is returned in this parameter, in km/sec. |
int slbm::SlbmInterface::getBufferSize | ( | ) | const |
Returns the size of a DataBuffer object required to store this SLBMInterface objects model data.
|
static |
Retrieve the current value of chMax. c is the zhao c parameter and h is the turning depth of the ray below the moho. Zhao method only valid for c*h << 1. When c*h > chMax, then slbm will throw an exception. This call retrieves global parameter SLBMGlobals::CH_MAX
|
inline |
Retrieve a table that lists the number of instances of various SLBM classes that are currently instantiated. Very useful for debugging memory leaks.
void slbm::SlbmInterface::getDelDepth | ( | double & | del_depth | ) |
Retrieve the value of step change in depth used to compute
void slbm::SlbmInterface::getDelDistance | ( | double & | del_distance | ) |
Retrieve the value of step change in distance used to compute horizontal derivatives (radians)
|
inline |
Retrieve the source-receiver separation, in radians.
distance | the source-receiver separation is returned in distance. |
|
inline |
Retrieve the source-receiver separation, in radians.
|
inline |
compute distance and azimuth between two points, A and B (all quantities are in radians). Computed distance will range between 0 and PI and azimuth will range from -PI to PI. If distance is zero, or if A is located at north or south pole, azimuth will be set to naValue.
aLat | the latitude of the first specified point, in radians. |
aLon | the longitude of the first specified point, in radians. |
bLat | the latitude of the second specified point, in radians. |
bLon | the longitude of the second specified point, in radians. |
distance | from point A to point B, in radians. |
azimuth | from point A to point B, in radians. |
naValue | value to return if result is invalid. |
|
inline |
Retrieve the fraction of the path length of the current GreatCircle object that is within the currently defined active region.
|
inline |
Retrieve information about the great circle path including the interface depths at source and receiver, the velocity profiles at the source and receiver, and mantle velocity and velocity gradient at points along the great circle path from source pierce point to receiver pierce point. The caller must supply all of the arrays required by this method and retains ownership of those arrays. This method assumes the arrays have been allocated with sufficient memory to hold the requested information and simply populates the supplied arrays.
phase | the phase supported by the current GreatCircle. Will be one of Pn, Sn, Pg, Lg. |
actual_path_increment | the actual horizontal separation of the LayerProfile objects along the head wave interface, in radians. |
sourceDepth | a double array of length NLAYERS containing the depths of all the model interfaces below the source, in km. |
sourceVelocity | a double array of length NLAYERS containing the P or S velocity of each interval below the source, in km/sec. |
receiverDepth | a double array of length NLAYERS containing the depths of all the model interfaces below the receiver, in km. |
receiverVelocity | a double array of length NLAYERS containing the P or S velocity of each interval below the receiver, in km/sec. |
npoints | the number of points along the headwave path where velocity and gradient values are interpolated. |
headWaveVelocity | a double array of length npoints containing the P or S velocity at the center of each horizontal segment between the source and the receiver, in km/sec. The first horizontal segment starts at the source, the last horizontal segment ends at the receiver, and each one is of size actual_path_increment. The head wave velocities are interpolated at the center of each of these horizontal segments, just below the head wave interface. |
gradient | a double array of length npoints containing the P or S velocity gradient in the mantle at the center of each horizontal segment of the head wave, in 1/sec. For Pg and Lg, the values will be SLBMGlobals::NA_VALUE. |
|
inline |
Retrieve the latitudes, longitudes and depths of all the profile positions along the headwave interface. Profile positions are located at the center of each segment of the head wave interface between the source and receiver. The first position is located actual_path_increment/2 radians from the source, the last profile position is located actual_path_increment/2 radians from the receiver, and the others are spaced actual_path_increment radians apart.
lat | the latitude at the center of each headwave segment, in radians. |
lon | the longitude at the center of each headwave segment, in radians. |
depth | the depth of the headwave interface at the center of each headwave segment, in km. |
npoints | the number of horizontal increments sampled along the head wave interface. |
|
inline |
Retrieve information about the interpolated points along the headwave path, including the number of points, the indexes of the grid nodes that contributed to interpolation of values at the points, and the interpolation coefficients used to calculate values at the points.
The caller must supply all of the array required by this method and retains ownership of those arrays. This method assumes the arrays have been allocated with sufficient memory to hold the requested information and simply populates the supplied arrays.
neighbors | a ragged 2D array of ints with dimensions npoints x nnodes containing the nodeIds of the neighboring grid nodes used to derive the interpolated data at each head wave profile. |
coefficients | a ragged 2D array of doubles with dimensions npoints x nnodes containing the interpolation coefficients applied to each element of neighbors. |
maxpoints | the maximum size of the first dimension of arrays neighbors and coefficients. If npoints exceeds this value, an exception is thrown. 200 is a good estimate. |
maxnodes | the maximum size of the second dimension of arrays neighbors and coefficients. If any value of nnodes exceeds this value, an exception is thrown. 5 is a good estimate. |
npoints | the number of horizontal increments sampled along the head wave interface. |
nnodes | an int array of length npoints containing the number of nodes that contributed to the interpolation of information at the center of each horizontal segment of the ray path. |
|
inline |
Retrieve a pointer to the GreatCircle object. This is not the recommended method for interacting with GreatCircle objects but will allow inquisitive applications direct access to all the public methods of GreatCircle and all the various objects accessible through it (CrustalProfile, LayerProfile, etc.). This method will not be available through any interfaces other than the c++ interface.
|
inline |
Retrieve an array of lat, lon points along a great circle path between two specified points. The great circle path between a and b is divided into npoints-1 equal size cells and the computed points are located at the boundaries of those cells. First point will coincide with point a and last point with point b.
aLat | the latitude of the first specified point, in radians. |
aLon | the longitude of the first specified point, in radians. |
bLat | the latitude of the second specified point, in radians. |
bLon | the longitude of the second specified point, in radians. |
npoints | the desired number of points along the great circle, in radians. |
latitude | the latitudes of the points along the great circle, in radians. |
longitude | the longitudes of the points along the great circle, in radians. |
|
inline |
Retrieve an array of lat, lon points along a great circle path between two specified points. The great circle path between a and b is divided into npoints equal size cells and the computed points are located at the centers of those cells.
aLat | the latitude of the first specified point, in radians. |
aLon | the longitude of the first specified point, in radians. |
bLat | the latitude of the second specified point, in radians. |
bLon | the longitude of the second specified point, in radians. |
npoints | the desired number of points along the great circle |
latitude | the latitudes of the points along the great circle, in radians. |
longitude | the longitudes of the points along the great circle, in radians. |
void slbm::SlbmInterface::getGridData | ( | const int & | nodeId, |
double & | latitude, | ||
double & | longitude, | ||
double | depth[NLAYERS], | ||
double | pvelocity[NLAYERS], | ||
double | svelocity[NLAYERS], | ||
double | gradient[2] | ||
) |
Retrieve the interface depth, velocity and gradient information associated with a specified node in the velocity grid.
nodeId | the node ID of the grid point in the model (zero based index). |
latitude | the latitude of the grid node in radians. |
longitude | the longitude of the grid node in radians. |
depth | the depths of all the model interfaces, in km. |
pvelocity | an array containing the P velocities of all the intervals at the specified grid node, in km/sec. |
svelocity | an array containing the S velocities of all the intervals at the specified grid node, in km/sec. |
gradient | a 2-element array containing the P and S velocity gradients in the mantle, in 1/sec. |
|
inline |
Retrieve the grid node ID that corresponds to a specified active node ID.
|
inline |
Retrieve a pointer to the Grid object. This method will not be available through any interfaces other than the c++ interface.
|
inline |
Retrieve the angular distance traveled by the ray below the headwave interface, in radians. This is the total distance minus the horizontal offsets below the source and receiver. getSourceDistance() + getReceiverDistance() + getHeadwaveDistance() = getDistance().
dist | the angular distance traveled by the ray below the headwave interface, in radians. |
|
inline |
Retrieve horizontal distance traveled by the ray below the headwave interface, in km. This is the sum of actual_path_increment(i) * R(i) where actual_path_increment(i) is the angular distance traveled by the ray in each angular distance increment along the head wave interface, and R(i) is the radius of the head wave interface in that same horizontal increment.
dist | the horizontal distance traveled by the ray below the headwave interface, in km. |
|
inline |
Retrieve interpolated data from the earth model at a single specified latitude, longitude.
lat | the latitude where information is to be interpolated, in radians. |
lon | the longitude where information is to be interpolated, in radians. |
nodeId | the nodeIds of the grid nodes that were involved in the interpolation. |
coefficients | the interpolation coefficients that were applied to the information from the neighboring grid nodes. |
nnodes | the number of grid nodes involved in the interpolation. |
depth | the depths of the tops of the interfaces in the Earth model, in km. There will be one of these for each layer of the model. |
pvelocity | the P velocities of each layer of the model, in km/sec. |
svelocity | the S velocities of each layer of the model, in km/sec. |
pgradient | the mantle P velocity gradient, in 1/sec. |
sgradient | the mantle S velocity gradient, in 1/sec. |
|
inline |
Retrieve interpolated data from the earth model along a transect defined by equal sized, 1 dimensional arrays of latitude and longitude.
lat | the latitudes along the transect, in radians. |
lon | the longitudes along the transect, in radians. |
nLatLon | the number of interpolated points along the transect. |
neighbors | the nodeIds of the grid nodes that were involved in the interpolations. Caller should supply a 2D array with at least nLatLon x 5 elements that will be populated with values. |
coefficients | the interpolation coefficients that were applied to the information from the neighboring grid nodes. Caller should supply a 2D array with at least nLatLon x 5 elements that will be populated with values. |
nNeighbors | a 1D array of ints with at least nLatLon elements that will be populated with the number of nodes and coefficients associated with each lat, lon. |
depth | the depths of the tops of the interfaces in the Earth model, in km. |
pvelocity | the P velocities of each layer of the model, in km/sec. |
svelocity | the S velocities of each layer of the model, in km/sec. |
pgradient | the mantle P velocity gradient, in 1/sec. |
sgradient | the mantle S velocity gradient, in 1/sec. |
nInvalid | the number of points that were out of model range. For any points outside of the model range, nodeIds are all -1 and all other returned arrays are populated with SLBMGlobals::NA_VALUE. |
|
inline |
|
static |
Retrieve the current value for the maximum source depth, in km.
|
static |
Retrieve the current value for the maximum source-receiver separation, in radians.
|
inline |
A string containing the path to the SLBM model used for locating phase-specific model error data files.
|
inline |
|
inline |
Retrieve the number of active nodes in the Grid.
|
inline |
Retrieve the number of Grid nodes in the Earth model.
|
inline |
Retrieve the number of Grid nodes in the Earth model.
|
inline |
Retrieve the number of LayerProfile objects positioned along the head wave interface. It is useful to call this method before calling getGreatCircleData() since the value returned by this method will be the number of elements that will be populated in parameters headWaveVelocity[], neighbors[] and coefficients[].
|
inline |
Retrieve the azimuth from grid node1 to grid node2, radians.
|
inline |
Retrieve the number of times that the specified node has been 'touched' by a GreatCircle object. The hit count of each node is initialized in the loadVelocityModel() method. Every time the getWeights() method is called for a particular GreatCircle object, all the nodeIds that contribute any weight to that GreatCircle object have their hit count incremented by one.
|
inline |
Retrieve the node IDs of the nodes that surround the specified node.
The caller must supply int array neighbors which is dimensioned large enough to hold the maximum number of neighbors that a node can have, which is 8. The actual number of neighbors is returned in nNeighbors.
|
inline |
Retrieve the node IDs of the nodes that surround the specified node.
The caller must supply int array neighbors which is dimensioned large enough to hold the maximum number of neighbors that a node can have, which is 8. The actual number of neighbors is returned in nNeighbors.
|
inline |
Retrieve the node IDs of the nodes that surround the specified node.
|
inline |
Retrieve the angular separation of two grid nodes, in radians.
void slbm::SlbmInterface::getPathIncrement | ( | double & | pathIncrement | ) |
Retrieve the current value of the spacing of great circle nodes along the head wave interface, in radians. The actual spacing will be reduced from the requested value in order that an integral number of equally spaced LayerProfile objects will exactly span the source-receiver separation. The default value is 0.1 degrees.
pathIncrement | the current value of the spacing of great circle nodes along the head wave interface, in radians. |
double slbm::SlbmInterface::getPathIncrement | ( | ) |
Retrieve the current value of the spacing of great circle nodes along the head wave interface, in radians. The actual spacing will be reduced from the requested value in order that an integral number of equally spaced LayerProfile objects will exactly span the source-receiver separation. The default value is 0.1 degrees.
|
inline |
Retrieve information about Pg/Lg travel time calculations. This method only returns useful information when the phase is Pg or Lg. For Pn and Sn, all information is returned as SLBMGlobals::NA_VALUE.
tTotal | is the total travel time in seconds. It will be exactly equal to the lesser of tTaup or tHeadwave, except that if tTaup is equal to SLBMGlobals::NA_VALUE, then tTotal will equal tHeadwave. |
tTaup | is the taup travel time in seconds. If this value is equal to SLBMGlobals::NA_VALUE, it means that the taup calculation failed for some reason (shadow zones, etc.). |
tHeadwave | is the headwave travel time in secods |
pTaup | TauP ray parameter. |
pHeadwave | headwave ray parameter. |
trTaup | is the radius at which the taup ray turned, in km. |
trHeadwave | is the radius at which the headwave ray turned, in km. |
|
inline |
Retrieve the phase specified in last call to createGreatCircle().
|
inline |
Retrieve the latitude and longitude of the moho pierce point below the receiver, in radians. For Pg, Lg an exception is thrown.
lat | the latitude of the receiver pierce point, in radians. |
lon | the longitude of the receiver pierce point, in radians. |
depth | moho depth in km below sea level |
|
inline |
Retrieve the latitude and longitude of the moho pierce point below the source, in radians. For Pg, Lg and sources in the mantle an exception is thrown.
lat | the latitude of the source pierce point, in radians. |
lon | the longitude of the source pierce point, in radians. |
depth | moho depth in km below sea level |
|
inline |
Retrieve horizontal offset below the receiver, in radians. This is the angular distance between the location of the receiver and the receiver pierce point where the ray impinged on the headwave interface.
dist | the horizontal offset below the receiver, in radians. |
|
inline |
Retrieve the horizontal slowness, in seconds/radian.
slowness | the derivative of travel time wrt to source latitude. |
|
inline |
Retrieve the slowness uncertainty in sec/radian for specified phase, distance.
phase | 0:Pn, 1:Sn, 2:Pg or 3:Lg |
distance | source-receiver separation in radians. |
uncert | returns the uncertainty in sec/radian |
|
inline |
Retrieve uncertainty of the horizontal slowness, in seconds/radian, using the phase and distance specified in last call to getGreatCircle().
slownessUncertainty | uncertainty of the horizontal slowness, in seconds/radian. |
|
inline |
Retrieve horizontal offset below the source, in radians. This is the angular distance between the location of the source and the source pierce point where the ray impinged on the headwave interface.
dist | the horizontal offset below the source, in radians. |
|
inline |
Retrieve the tessellation ID of the model currently in memory.
|
inline |
Retrieve the total travel time for the GreatCircle, in seconds.
travelTime | the total travel time in seconds is returned in travelTime. If the GreatCircle is invalid, travelTime will equal SLBMGlobals::NA_VALUE. |
|
inline |
Retrieve the total travel time and the 4 components that contribute to it for the current GreatCircle. If the greatCircle is invalid, tTotal and all the components will equal SLBMGlobals::NA_VALUE.
tTotal | the total travel time, in seconds. |
tSource | the crustal travel time below the source, in seconds. |
tReceiver | the crustal travel time below the receiver, in seconds. |
tHeadwave | the head wave travel time, in seconds. |
tGradient | the Zhao gradient correction term, in seconds. For GreatCircle objects that support Pg and Lg, this is always 0. |
|
inline |
Retrieve the travel time uncertainty in sec for specified phase, distance.
phase | 0:Pn, 1:Sn, 2:Pg or 3:Lg |
distance | source-receiver separation in radians. |
uncert | returns the uncertainty in sec |
|
inline |
Retrieve travel time uncertainty in sec using the phase and distance specified in last call to getGreatCircle().
travelTimeUncertainty | uncertainty of the travel time in seconds. |
|
inline |
|
inline |
|
inline |
Retrieve the SLBM Version number.
|
inline |
Retrieve the weight assigned to each grid node that was touched by the GreatCircle.
A map which associates an instance of a GridProfile object with a double weight is initialized. Then every LayerProfile on the head wave interface between the source and receiver is visited and the angular distance, d, that the ray traveled in the horizontal segment is retrieved. If d > 0, then the neighboring GridProfile objects that contributed to the interpolated value of the LayerProfile are visited. The product of d * R * C is added to the weight associated with that GridProfile object, where R is the radius of the head wave interface for the LayerProfile object being evaluated, and C is the interpolation coefficient for the GridProfile - LayerProfile pair under consideration. Then, all the GridProfile objects in the map are visited, the grid node IDs extracted into int array nodeId, and the weight extracted into double array weight.
Note: Only grid nodes touched by this GreatCircle are included in the output. Each grid node is included only once, even though more than one LayerProfile object may have contributed some weight to it. The sum of all the weights will equal the horizontal distance traveled by the ray along the head wave interface, from the source pierce point to the receiver pierce point, in km.
nodeId | the node IDs of all the grid nodes touched by the current GreatCircle. |
weight | the weights of all the grid nodes touched by the current GreatCircle. Calling application must dimension this array large enough to handle any possible size. |
nWeights | the number of elements in nodeId and weight. Calling application must dimension this array large enough to handle any possible size. |
|
inline |
Retrieve the weight assigned to each grid node that was touched by the GreatCircle.
A map which associates an instance of a GridProfile object with a double weight is initialized. Then every LayerProfile on the head wave interface between the source and receiver is visited and the angular distance, d, that the ray traveled in the horizontal segment is retrieved. If d > 0, then the neighboring GridProfile objects that contributed to the interpolated value of the LayerProfile are visited. The product of d * R * C is added to the weight associated with that GridProfile object, where R is the radius of the head wave interface for the LayerProfile object being evaluated, and C is the interpolation coefficient for the GridProfile - LayerProfile pair under consideration. Then, all the GridProfile objects in the map are visited, the grid node IDs extracted into int array nodeId, and the weight extracted into double array weight.
Note: Only grid nodes touched by this GreatCircle are included in the output. Each grid node is included only once, even though more than one LayerProfile object may have contributed some weight to it. The sum of all the weights will equal the horizontal distance traveled by the ray along the head wave interface, from the source pierce point to the receiver pierce point, in km.
nodeId | the active node IDs of all the grid nodes touched by the current GreatCircle. These are active node ids, not grid node ids. If a grid node has weight but is not an active node, the nodeId will be -1. |
weight | the weights of all the grid nodes touched by the current GreatCircle. |
|
inline |
nodeids | the node indexes of the grid nodes involved in interpolation. |
weights | the weights associated with each nodeid |
nWeights | the number of nodeids and weights returned. |
|
inline |
Retrieve the node IDs and the interpolation coefficients for the source CrustalProfile. For linear interpolation, nWeights will equal 3 but for natural neighbor interpolation nWeights will be variable number less than or equal to 5. The sum of the weights will equal 1.
nodeids | the node indexes of the grid nodes involved in interpolation. |
weights | the weights associated with each nodeid |
nWeights | the number of nodeids and weights returned. |
|
inline |
Retrieve some of the parameters that contribute to the calculation of of total travel time using the Zhao algorithm. This method only returns meaningful results for phases Pn and Sn. For Pg and Lg, all the parameters of type double are returned with values SLBMGlobals::NA_VALUE and udSign is returned with value of -999.
Vm | the velocity at the top of the mantle averaged along the Moho between the source and receiver pierce points. |
Gm | the velocity gradient at the top of the mantle averaged along the Moho between the source and receiver pierce points. |
H | the turning depth of the ray relative to the Moho |
C | a constant whose product with V0 gives the mantle velocity gradient for a flat Earth. V0 is the velocity of the top of the mantle averaged over the whole model. |
Cm | a constant whose product with Vm gives the mantle velocity gradient for a flat Earth. |
udSign | a value of 0 indicates the source is in the crust. +1 indicates the ray leaves a mantle source in the downgoing direction. -1 indicates the ray leaves a mantle source in an upgoing direction. |
|
inline |
Specify the latitude and longitude range in radians for active nodes. Active nodes are defined as follows: for each triangle in the tessellation, if any of the 3 nodes that define the triangle is within the latitude longitude range specified by this method, then all 3 nodes are defined to be active nodes. Lats and lons must be specified in radians.
latmin | minimum latitude in radians |
lonmin | minimum longitude in radians |
latmax | maximum latitude in radians |
lonmax | maximum longitude in radians |
|
inline |
Specify the name of a file that contains a list of points that define a polygon that enclose the set of grid nodes that are to be considered active nodes.
Active nodes are defined as follows: for each triangle in the tessellation, if any of the 3 nodes that define the triangle is within the polygon specified by this method, then all 3 nodes are defined to be active nodes.
If the last point and first point are not coincident, then the polygon is 'closed' by connecting the first and last point by an edge.
polygonFileName | the name of a file that contains a list of points that define a polygon that enclose the set of grid nodes that are to be considered active nodes. |
|
inline |
Specify a polygon that enclose the set of grid nodes that are to be considered active nodes.
Active nodes are defined as follows: for each triangle in the tessellation, if any of the 3 nodes that define the triangle is within the polygon specified by this method, then all 3 nodes are defined to be active nodes.
polygon | a pointer to a polygon object that encloses the set of grid nodes that are to be considered active nodes. |
|
inline |
Specify a list of points that define a polygon that enclose the set of grid nodes that are to be considered active nodes. Active nodes are defined as follows: for each triangle in the tessellation, if any of the 3 nodes that define the triangle is within the polygon specified by this method, then all 3 nodes are defined to be active nodes.
If the last point and first point are not coincident, then the polygon is 'closed' by connecting the first and last point by an edge.
lat | a 1D array of doubles specifying the latitudes of the points that define the polygon. Whether units are degrees or radians depends on parameter inDegrees. |
lon | a 1D array of doubles specifying the longitudes of the points that define the polygon. Whether units are degrees or radians depends on parameter inDegrees. |
npoints | a single integer value specifying the number of latitude and longitude points defined. |
inDegrees | if true, latitudes and longitudes are assumed to be in degrees, if false, they are assumed to be in radians. |
|
inline |
Specify a list of points that define a polygon that encloses the set of grid nodes that are to be considered active nodes. Active nodes are defined as follows: for each triangle in the tessellation, if any of the 3 nodes that define the triangle is within the polygon specified by this method, then all 3 nodes are defined to be active nodes.
If the last point and first point are not coincident, then the polygon is 'closed' by connecting the first and last point by an edge.
unitVectors | a 2D array of doubles specifying the list of unit vectors that define the polygon. |
|
inline |
Returns true if the current GreatCirlce object has been instantiated and is ready to be interrogated.
void slbm::SlbmInterface::loadVelocityModel | ( | const string & | modelPath | ) |
Load the velocity model into memory from the specified file or directory. This method automatically determines the format of the model and hence is able to load all model formats.
modelPath | the path to the file or directory that contains the model. |
|
inline |
Load the velocity model into memory from the specified file or directory. This method automatically determines the format of the model and hence is able to load all model formats.
This method is deprecated in SLBM versions 3 and higher and is provided only for backward compatibility with previous versions of SLBM. It simply calls loadVelocityModel(modelPath).
modelPath | the path to the file or directory that contains the model. |
void slbm::SlbmInterface::loadVelocityModelBinary | ( | util::DataBuffer & | buffer | ) |
Load the velocity model into memory from an FDB database configured DataBuffer. Slbm uses the same DataBuffer read statements as used by the file based function of the same name. See loadVelocityModelBinary(const string& modelDirectory);
|
inline |
Find point B that is the specified distance and azimuth from point A. All quantities are in radians.
aLat | latitude of point A, in radians |
aLon | longitude of point A, in radians |
distance | angular distance from point A to point B, in radians |
azimuth | azimuth from pointA to point B, clockwise from north, in radians. |
bLat | (output) latitude of point B in radians |
bLon | (output) latitude of point B in radians |
void slbm::SlbmInterface::saveVelocityModel | ( | const string & | modelFileName, |
const int & | format = 4 |
||
) |
Save the velocity model currently in memory to the specified file or directory.
The following formats are supported:
SLBM version 1 ascii file. All model information is output to a single file in ascii format. This format was available in SLBM version 2, but never used.
SLBM version 2 directory format. Model information is output to a number of different files and directories, mostly in binary format. This format was used almost exclusively in SLBM version 2.
SLBM version 3 directory format. Model information is output to a number of different files and directories, mostly in binary format. This format is very similar to format 2 with the difference being that the model tessellation and values are stored in GeoTess format instead of the custom SLBM format.
See SLBM_Design.pdf in the main documentation directory for detailed information about model output formats.
Models stored in SLBM version 1 and 2 formats (formats 1 and 2) only support linear interpolation. Models stored in SLBM version 3 formats (formats 3 and 4) support both linear and natural neighbor interpolation.
modelFileName | the full or relative path to the file or directory to which the earth model is to be written. For formats 2 and 3, the directory will be created if it does not exist. |
format | the desired format of the output. If omitted, defaults to 4: all model information written to a single file. |
void slbm::SlbmInterface::saveVelocityModelBinary | ( | ) |
This method is deprecated and is provided only for backward compatibility with previous versions of SLBM. Use method saveVelocityModel() instead.
The model is written in format 3 to the directory previously specified with a call to specifyOutputDirectory().
void slbm::SlbmInterface::saveVelocityModelBinary | ( | util::DataBuffer & | buffer | ) |
Write the model currently in memory out to the input DataBuffer.
void slbm::SlbmInterface::setActiveNodeData | ( | const int & | nodeId, |
double | depths[NLAYERS], | ||
double | pvelocity[NLAYERS], | ||
double | svelocity[NLAYERS], | ||
double | gradient[2] | ||
) |
Modify the depth, velocity and gradient information associated with a specified active node in the Grid.
nodeId | the node number of the grid point in the model. (zero based index). |
depths | an array containing the depths of the tops of the layers, in km |
pvelocity | an array containing the P velocities of all the intervals at the specified grid node, in km/sec. |
svelocity | an array containing the S velocities of all the intervals at the specified grid node, in km/sec. |
gradient | a 2-element array containing the P and S velocity gradients in the mantle, in 1/sec. |
|
inline |
Set the average P or S wave mantle velocity that is specified in the model input file. This value is used in the calculation of the Zhao c parameter.
type | specify either SLBMGlobals::PWAVE or SLBMGlobals::SWAVE. |
velocity | the P or S wave velocity that is to be set, in km/sec. This value will be stored in the model file, if the model file is written to file by a call to saveVelocityModel() subsequent to a call to this method. |
|
static |
Set the value of chMax. c is the zhao c parameter and h is the turning depth of the ray below the moho. Zhao method only valid for c*h << 1. When c*h > chMax, then slbm will throw an exception. This call modifies global parameter SLBMGlobals::CH_MAX
void slbm::SlbmInterface::setDelDepth | ( | const double & | del_depth | ) |
Change the value of step change in depth used to compute depth derivatives (km)
void slbm::SlbmInterface::setDelDistance | ( | const double & | del_distance | ) |
Change the value of step change in distance used to compute horizontal derivatives (radians)
void slbm::SlbmInterface::setGridData | ( | const int & | nodeId, |
double | depths[NLAYERS], | ||
double | pvelocity[NLAYERS], | ||
double | svelocity[NLAYERS], | ||
double | gradient[2] | ||
) |
Modify the velocity and gradient information associated with a specified node in the Grid.
nodeId | the node number of the grid point in the model. (zero based index). |
depths | an array containing the depths of the tops of the layers, in km |
pvelocity | an array containing the P velocities of all the intervals at the specified grid node, in km/sec. |
svelocity | an array containing the S velocities of all the intervals at the specified grid node, in km/sec. |
gradient | a 2-element array containing the P and S velocity gradients in the mantle, in 1/sec. |
|
inline |
Specify the interpolation type to use, either "LINEAR" or "NATUTAL_NEIGHBOR". With models loaded in the old SLBM version 2 formats (formats 1 and 2), LINEAR is the only option allowed.
|
static |
Set the maximum source depth for Pn/Sn phase, in km. Source depths greater than the specified value will result in an exception being thrown in createGreatCircle(). Default value is 9999 km.
|
static |
Set the maximum source-receiver separation for Pn/Sn phase, in radians. Source-receiver separations greater than the specified value will result in an exception being thrown in createGreatCircle(). Default value is PI radians.
void slbm::SlbmInterface::setPathIncrement | ( | const double & | pathIncrement | ) |
Set the desired spacing of great circle nodes along the head wave interface, in radians. The actual spacing will be reduced from the requested value in order that an integral number of equally spaced LayerProfile objects will exactly span the source-receiver separation. Defaults to 0.1 degrees if not specified.
pathIncrement | the desired spacing of great circle nodes along the head wave interface, in radians. |
void slbm::SlbmInterface::specifyOutputDirectory | ( | const string & | directoryName | ) |
This method is deprecated and is provided only for backward compatibility with previous versions of SLBM. Use method saveVelocityModel() instead.
Specify the directory into which the model that is currently in memory should be written the next time that saveVelocityModelBinary() is called. The model will be written in format 3, which is the SLBM version 3 binary directory format (GeoTess).
directoryName | the name of the directory where model files are to be written. The directory will be created if it does not exist. |
|
inline |
Returns a human-readable string representation of the GreatCircle object.
verbosity | specifies the amount of information that is to be included in the return string. Each verbosity level includes all information in preceeding verbosity levels.
|
|
staticprotected |
c is the zhao c parameter and h is the turning depth of the ray below the moho. Zhao method only valid for c*h << 1. When c*h > ch_max, then slbm will throw an exception.
|
protected |
The most recently requested GreatCircle object.
|
protected |
The Grid object that stores the velocity model.
|
private |
|
private |
|
private |
|
private |
|
protected |
true if the current GreatCirlce object has been instantiated and is ready to be interrogated.