RSTT 3.2.1 Regional Seismic Travel Time

Loading...
Searching...
No Matches
GreatCircle_Xg.h
Go to the documentation of this file.
1//- ****************************************************************************
2//-
3//- Copyright 2009 National Technology & Engineering Solutions of Sandia, LLC
4//- (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S.
5//- Government retains certain rights in this software.
6//-
7//- BSD Open Source License
8//- All rights reserved.
9//-
10//- Redistribution and use in source and binary forms, with or without
11//- modification, are permitted provided that the following conditions are met:
12//-
13//- 1. Redistributions of source code must retain the above copyright notice,
14//- this list of conditions and the following disclaimer.
15//-
16//- 2. Redistributions in binary form must reproduce the above copyright
17//- notice, this list of conditions and the following disclaimer in the
18//- documentation and/or other materials provided with the distribution.
19//-
20//- 3. Neither the name of the copyright holder nor the names of its
21//- contributors may be used to endorse or promote products derived from
22//- this software without specific prior written permission.
23//-
24//- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25//- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26//- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27//- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
28//- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29//- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30//- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31//- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32//- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33//- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34//- POSSIBILITY OF SUCH DAMAGE.
35//-
36//- ****************************************************************************
37
38#ifndef GreatCircle_Xg_H
39#define GreatCircle_Xg_H
40
41// **** _SYSTEM INCLUDES_ ******************************************************
42
43#include <vector>
44#include <string>
45#include <iostream>
46
47// **** _LOCAL INCLUDES_ *******************************************************
48
49#include "SLBMGlobals.h"
50#include "GreatCircle.h"
51#include "Grid.h"
52#include "Location.h"
53#include "CrustalProfile.h"
54#include "LayerProfile.h"
55#include "TauPSite.h"
56
57 using namespace std;
58
59// **** _BEGIN SLBM NAMESPACE_ **************************************************
60
61 namespace slbm {
62
63// **** _CLASS DEFINITION_ *****************************************************
77 class SLBM_EXP GreatCircle_Xg : public GreatCircle
78{
79
80 public:
81
94 GreatCircle_Xg(
95 const int& _phase,
96 Grid& _grid,
97 const double& latSource,
98 const double& lonSource,
99 const double& depthSource,
100 const double& latReceiver,
101 const double& lonReceiver,
102 const double& depthReceiver);
103
111 ~GreatCircle_Xg();
112
116 // GreatCircle_Xg(const GreatCircle_Xg &other);
117 // GreatCircle *clone() { return new GreatCircle_Xg(*this); }
118
122 GreatCircle_Xg& operator=(const GreatCircle_Xg& other);
123
129 void computeTravelTime();
130
131 void getZhaoParameters(double& Vm, double& Gm, double& H, double& C, double& Cm, int& udSign);
132
133 void getPgLgComponents(double& tTotal,
134 double& tTaup, double& tHeadwave,
135 double& pTaup, double& pHeadwave,
136 double& trTaup, double& trHeadwave);
137
156 string toString(const int& verbosity);
157
158 private:
159
164 double pSource;
165
170 double pReceiver;
171
173 double tHeadwave;
174
176 //double tTaup;
177
179 double pHeadwave;
180
182 double pTaup;
183
185 double trHeadwave;
186
188 //double trTaup;
189
190 double taupModelRadius;
191
192 taup::TravelTimeResult* taupResult;
193
194 void computeTravelTimeTaup();
195
196 void computeTravelTimeHeadwave();
197
198 //void computeTravelTimeHeadwave2();
199
200 void toStringTaup(ostringstream&, const int& verbosity);
201
202 void toStringHeadwave(ostringstream&, const int& verbosity);
203
204};
205
206 inline void GreatCircle_Xg::getZhaoParameters(double& Vm_, double& Gm_, double& H_, double& C_, double& Cm_, int& udSign_)
207{
208 Vm_ = NA_VALUE;
209 Gm_ = NA_VALUE;
210 H_ = NA_VALUE;
211 C_ = NA_VALUE;
212 Cm_ = NA_VALUE;
213 udSign_ = -999;
214}
215
216 inline void GreatCircle_Xg::getPgLgComponents(double& tT, double& tP, double& tH,
217 double& pT, double& pH, double& trT, double& trH)
218{
219 tT = tTotal;
220 tP = (taupResult ? taupResult->ttrT : NA_VALUE);
221 tH = tHeadwave;
222 pT = (taupResult ? taupResult->ttrP / taupResult->ttrR : NA_VALUE);
223 pH = pHeadwave;
224 trT = (taupResult ? taupResult->ttrR : NA_VALUE);
225 trH = trHeadwave;
226}
227
228} // end slbm namespace
229
230#endif // GreatCircle_Xg.h
CrustalProfile.h
GreatCircle.h
Grid.h
LayerProfile.h
Location.h
SLBMGlobals.h
SLBM_EXP
#define SLBM_EXP
Definition SLBMGlobals.h:181
TauPSite.h
slbm::GreatCircle_Xg::toString
string toString(const int &verbosity)
Retrieve a formatted string providing a detailed description of the information managed by this Great...
slbm::GreatCircle_Xg::GreatCircle_Xg
GreatCircle_Xg(const int &_phase, Grid &_grid, const double &latSource, const double &lonSource, const double &depthSource, const double &latReceiver, const double &lonReceiver, const double &depthReceiver)
Parameterized constructor.
slbm::GreatCircle_Xg::operator=
GreatCircle_Xg & operator=(const GreatCircle_Xg &other)
Copy constructor.
slbm::GreatCircle_Xg::getZhaoParameters
void getZhaoParameters(double &Vm, double &Gm, double &H, double &C, double &Cm, int &udSign)
Definition GreatCircle_Xg.h:206
slbm::GreatCircle_Xg::getPgLgComponents
void getPgLgComponents(double &tTotal, double &tTaup, double &tHeadwave, double &pTaup, double &pHeadwave, double &trTaup, double &trHeadwave)
Definition GreatCircle_Xg.h:216
slbm::GreatCircle_Xg::~GreatCircle_Xg
~GreatCircle_Xg()
Destructor. Calls GreatCircle destructor, which deletes the source and receiver CrustalProfile object...
slbm::GreatCircle_Xg::computeTravelTime
void computeTravelTime()
slbm::GreatCircle::depthReceiver
double depthReceiver
Definition GreatCircle.h:778
slbm::GreatCircle::latSource
double latSource
Definition GreatCircle.h:773
slbm::GreatCircle::tTotal
double tTotal
The total travel time from source to receiver, in seconds.
Definition GreatCircle.h:857
slbm::GreatCircle::lonReceiver
double lonReceiver
Definition GreatCircle.h:777
slbm::GreatCircle::lonSource
double lonSource
Definition GreatCircle.h:774
slbm::GreatCircle::depthSource
double depthSource
Definition GreatCircle.h:775
slbm::GreatCircle::latReceiver
double latReceiver
Definition GreatCircle.h:776
slbm::GreatCircle::GreatCircle
GreatCircle(const int &_phase, Grid &_grid, const double &latSource, const double &lonSource, const double &depthSource, const double &latReceiver, const double &lonReceiver, const double &depthReceiver)
Parameterized constructor.
slbm::Grid
A 2 dimensional, horizontal grid of GirdProfile objects.
Definition Grid.h:91
taup::TravelTimeResult
A public container (struct) that holds the result of a specific ray that satisfied the source distanc...
Definition TauPSite.h:844
slbm
Definition CrustalProfile.h:59