UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
u3d_raydyn_calculator.hpp
1 /* u3d_raydyn_calculator.hpp */
2 /* $Id: u3d_raydyn_calculator.hpp,v 1.3 2008/06/04 12:30:52 sasha Exp $ */
3 
4 //-------------------------------------------------------------------------------
5 #ifndef __u3d_rdcalchpp
6 #define __u3d_rdcalchpp
7 
8 #include "u3d_raytracing.hpp"
9 
10 enum U3D_RTR_TYPE {U3D_PP, U3D_PS, U3D_SP, U3D_SS};
11 
12 //===============================================================================
13 
15 {
16 public:
17  U3dRayDynCalculator(U3dModel* mod3d, URayReflCoefType coeff_type = ZOEPPRITZ);
18 
20 
21  double calcRTRCoeff(U3dRay* ray, int debug_level = 0);
22 
23 protected:
24 
25  /* ============= Zoeppritz ============= */
26 
28  dcomplex getZoeppritzCoeff(double p1, U3D_WAVE_TYPE wt1, U3D_WAVE_TYPE wt2, bool transfer,
29  double ro1, double vp1, double vs1,
30  double ro2, double vp2, double vs2);
31 
33  dcomplex cdet4(dcomplex (*L4)[4]);
34 
36  U3D_RTR_TYPE getRTRType(U3D_WAVE_TYPE wt0, U3D_WAVE_TYPE wt1);
37 
38 
39  double getApproxCoeff(int rtr_type, double f0, double f1,
40  double vp0, double vs0, double den0,
41  double vp1, double vs1, double den1);
42 
43 
44  URayReflCoefType m_coeff_type;
45 
46 
47  /* ============= UNUSED ============= */
48 
49 
50 
51  /* ============= Aki-Richards ============= */
52 
53  double getAkiRichardsCoeff(int rtr_type, double f0, double f1,
54  double vp0, double vs0, double den0,
55  double vp1, double vs1, double den1);
56 
57  double getAkiRichardsRDir(double f,
58  double v0, double den0,
59  double v1, double den1);
60 
61  double getAkiRichardsRPPup(double f0,
62  double vp0, double vs0, double den0,
63  double vp1, double vs1, double den1);
64 
65  double getAkiRichardsRPSup(double f0, double f1,
66  double vp0, double vs0, double den0,
67  double vp1, double vs1, double den1);
68 
69  double getAkiRichardsRPSdown(double f0, double f1,
70  double vp0, double vs0, double den0,
71  double vp1, double vs1, double den1);
72 
73  double getAkiRichardsRPS(double f0, double f1,
74  double vp0, double vs0, double den0,
75  double vp1, double vs1, double den1,
76  bool up = true);
77 
78  double getAkiRichardsRSSup(double f1,
79  double vp0, double vs0, double den0,
80  double vp1, double vs1, double den1);
81 
82  double getAkiRichardsRSPup(double f0, double f1,
83  double vp0, double vs0, double den0,
84  double vp1, double vs1, double den1);
85 
86  double getAkiRichardsRSPdown(double f0, double f1,
87  double vp0, double vs0, double den0,
88  double vp1, double vs1, double den1);
89 
90 
91  /* ============= Shuey ============= */
92 
93  double getShueyCoeff(int rtr_type, double f0, double f1,
94  double vp0, double vs0, double den0,
95  double vp1, double vs1, double den1);
96 
97  double getShueyRDir(double f,
98  double v0, double den0,
99  double v1, double den1);
100 
101  double getShueyRPPup(double f0,
102  double vp0, double vs0, double den0,
103  double vp1, double vs1, double den1);
104 
105  double getShueyRPSup(double f0, double f1,
106  double vp0, double vs0, double den0,
107  double vp1, double vs1, double den1);
108 
109  double getShueyRPSdown(double f0, double f1,
110  double vp0, double vs0, double den0,
111  double vp1, double vs1, double den1);
112 
113  double getShueyRSSup(double f1,
114  double vp0, double vs0, double den0,
115  double vp1, double vs1, double den1);
116 
117  double getShueyRSPup(double f0, double f1,
118  double vp0, double vs0, double den0,
119  double vp1, double vs1, double den1);
120 
121  double getShueyRSPdown(double f0, double f1,
122  double vp0, double vs0, double den0,
123  double vp1, double vs1, double den1);
124 
125 
126  double getA(double B, double sigma);
127 
129  double getR0(double vp0, double vp1, double den0, double den1);
130 
131  double getB(double vp0, double vp1, double R0);
132 
134  double getPoissonsRatio(double vp, double vs);
135 
136 
137 };
138 
139 
140 //------------------------------------------------------------------------------
141 #endif /* u3d_raydyn_calculator.hpp */
dcomplex cdet4(dcomplex(*L4)[4])
U3D_RTR_TYPE getRTRType(U3D_WAVE_TYPE wt0, U3D_WAVE_TYPE wt1)
Definition: rays.H:81
Definition: u3d_ray.hpp:14
Definition: u3d_raydyn_calculator.hpp:14
dcomplex getZoeppritzCoeff(double p1, U3D_WAVE_TYPE wt1, U3D_WAVE_TYPE wt2, bool transfer, double ro1, double vp1, double vs1, double ro2, double vp2, double vs2)
Definition: u3d_model.hpp:15
double getR0(double vp0, double vp1, double den0, double den1)
double getPoissonsRatio(double vp, double vs)
Definition: u3d_raytracing.hpp:15