LISOUSI: Line Source Simulation
wnintegration.h
Go to the documentation of this file.
1 
35 // include guard
36 #ifndef TF_WNINTEGRATION_H_VERSION
37 
38 #define TF_WNINTEGRATION_H_VERSION \
39  "TF_WNINTEGRATION_H V1.0"
40 
41 #include "lisousi.h"
42 
45 struct Model {
47  double Vp;
49  double Vs;
51  double Qp;
53  double Qs;
54 }; // class Model
55 
56 /*----------------------------------------------------------------------*/
57 
61  protected:
62  ExpCoefficients(const Model& m):
63  Mm(m)
64  {
65  // square of complex velocities according to recipe I
66  // Forbriger and Friederich (2000) eq. (7)
67  // for the calculations to be carried out, we will almost exclusively
68  // require the squares of the complex frequencies
69  Malphaq=Mm.Vp*Mm.Vp*(1.+IME/Mm.Qp);
70  Mbetaq=Mm.Vs*Mm.Vs*(1.+IME/Mm.Qs);
71  }
72  public:
73  virtual ~ExpCoefficients();
75  double maxp() const;
77  virtual TFourier::Tcoeff coeff(const double& p) const=0;
78  protected:
82  TFourier::Tcoeff Malphaq;
84  TFourier::Tcoeff Mbetaq;
85 }; // class ExpCoefficients
86 
87 /*----------------------------------------------------------------------*/
88 
93 class FSECZ: public ExpCoefficients {
94  public:
95  FSECZ(const Model& m): ExpCoefficients(m) { }
96  virtual ~FSECZ();
98  virtual TFourier::Tcoeff coeff(const double& p) const;
99 }; // class FSECZ
100 
101 /*----------------------------------------------------------------------*/
102 
108 class HSEC: public ExpCoefficients {
109  public:
110  HSEC(const Model& m): ExpCoefficients(m) { }
111  virtual ~HSEC();
113  virtual TFourier::Tcoeff coeff(const double& p) const=0;
114  protected:
116  TFourier::Tcoeff rayleigh(const double& p) const;
118  mutable TFourier::Tcoeff Ma, Mb, Maq, Mbq, Mpq;
119 }; // class HSEC
120 
121 /*----------------------------------------------------------------------*/
122 
128 class HSECZ: public HSEC {
129  public:
130  HSECZ(const Model& m): HSEC(m) { }
131  virtual ~HSECZ();
133  virtual TFourier::Tcoeff coeff(const double& p) const;
134 }; // class HSECZ
135 
136 /*----------------------------------------------------------------------*/
137 
143 class HSECR: public HSEC {
144  public:
145  HSECR(const Model& m): HSEC(m) { }
146  virtual ~HSECR();
148  virtual TFourier::Tcoeff coeff(const double& p) const;
149 }; // class HSECR
150 
151 /*----------------------------------------------------------------------*/
152 
155 class Exco: public TFourier::Tspectrum {
156  public:
157  Exco(): Mdp(0.) { }
158  Exco(const ExpCoefficients& ec, const IntegParam& par);
160  double dp() const { return(Mdp); }
161  private:
163  double Mdp;
164 }; // class Exco
165 
166 /*----------------------------------------------------------------------*/
167 
170 enum Ebasis {
179 }; // enum Ebasis
180 
181 /*----------------------------------------------------------------------*/
182 
185 TFourier::Tcoeff wnintegration(const Exco& ec,
186  const double& f,
187  const double& offset,
188  const Ebasis& fb);
189 
190 #endif // TF_WNINTEGRATION_H_VERSION (includeguard)
191 
192 /* ----- END OF wnintegration.h ----- */
Bessel function of order 1.
prototypes and structs for lisousi (prototypes)
TFourier::Tcoeff Ma
derived values
cosine function
TFourier::Tcoeff Mpq
FSECZ(const Model &m)
Definition: wnintegration.h:95
HSECR(const Model &m)
const TFourier::Tcoeff IME
Definition: lisousi.h:85
TFourier::Tcoeff Mbetaq
square of complex S-wave velocity
Definition: wnintegration.h:84
virtual TFourier::Tcoeff coeff(const double &p) const
return expansion coefficient for given phase slowness
virtual TFourier::Tcoeff coeff(const double &p) const =0
return expansion coefficient for given phase slowness
Ebasis
Bessel function of order 0.
TFourier::Tcoeff Mbq
virtual ~HSEC()
double dp() const
return slowness interval
virtual TFourier::Tcoeff coeff(const double &p) const
return expansion coefficient for given phase slowness
virtual ~FSECZ()
double Vs
S-wave propagation velocity.
Definition: wnintegration.h:49
double Mdp
slowness stepsize
Model Mm
parameters for propagation model
Definition: wnintegration.h:80
HSEC(const Model &m)
double Qp
P-wave quality.
Definition: wnintegration.h:51
HSECZ(const Model &m)
sine function
double Vp
P-wave propagation velocity.
Definition: wnintegration.h:47
TFourier::Tcoeff Mb
double Qs
S-wave quality.
Definition: wnintegration.h:53
TFourier::Tcoeff Malphaq
square of complex P-wave velocity
Definition: wnintegration.h:82
TFourier::Tcoeff Maq
virtual ~HSECR()
TFourier::Tcoeff wnintegration(const Exco &ec, const double &f, const double &offset, const Ebasis &fb)
double maxp() const
return desired minimum upper limit for integration
TFourier::Tcoeff rayleigh(const double &p) const
return value of Rayleigh determinant
virtual TFourier::Tcoeff coeff(const double &p) const =0
return expansion coefficient for given phase slowness
virtual ~HSECZ()
ExpCoefficients(const Model &m)
Definition: wnintegration.h:62
virtual TFourier::Tcoeff coeff(const double &p) const
return expansion coefficient for given phase slowness
virtual ~ExpCoefficients()