UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
u3d_rtmod_defines.hpp
1 /* u3d_rtmod_defines.hpp */
2 /* $Id: u3d_rtmod_defines.hpp,v 1.1 2008/05/13 12:19:18 sad Exp $ */
3 #ifndef __u3d_rtmod_defines_hpp
4 #define __u3d_rtmod_defines_hpp
5 
6 #include <mth/u3d_point.hpp>
7 #include <rbm/u3d_model_defines.hpp>
8 #include <u3d_raytr_defines.hpp>
9 
10 #include <map>
11 
12 /* DEFAULT this line must be straight */
13 
14 //#define WF_DEBUG /* DEFAULT - OFF */ /* | */
15 //#define WH_DEBUG /* DEFAULT - OFF */ /* | */
16 //#define WF_DEBUG_SP_NUM 0 /* DEFAULT - OFF */ /* | */
17 //#define U3D_DYN_DEBUG /* DEFAULT - OFF */ /* | */
18 //#define U3D_WF_FOR_MIGR /* DEFAULT - OFF */ /* | */
19 
20 //#define U3D_SS_CODE_DEBUG /* DEFAULT - ON */ /* | */ /* DOES NOT WORK YET - assetion from broadcast stage appears */
21 
22 #define U3D_SHEAR_ANGLES_RECALC /* DEFAULT - ON */ /* | */
23 
24 #define U3D_NEW_RAY_STEP /* DEFAULT - ON */ /* | */
25 #define U3D_EXCLUDE_PERIMETER /* DEFAULT - ?? */ /* | */
26 
27 #ifndef U3D_WF_FOR_MIGR
28 #define CALC_DYN /* DEFAULT - ON */ /* | */
29 #define CALC_GEOM_DIV /* DEFAULT - ON */ /* | */
30 #endif
31 
32 //#define SAVE_HODS /* DEFAULT - ON */ /* | */
33 
34 
35 
36 
37 
38 #ifdef WF_DEBUG
39 #define U3D_RTMOD_BOUND_0 1
40 #define U3D_RTMOD_BOUND_NUM 2
41 #endif
42 
43 
44 
45 
46 
47 
48 //---------------------------------------------------------------------
49 #define U3D_RTMOD_STEP_LEN 10.
50 
51 #define U3D_RTMOD_F_EPS 10. /* For initial (rough) selection of incident cells (during two surface sources comparison) */
52 
53 #define U3D_RTMOD_MIN_ANGLE_STEP 1.e-6 /* Minimal angle step (during direct wave upper part calculation) */
54 
55 #define U3D_RTMOD_INIT_ANGLE_STEP 1.e-3 /* Initial angle step value (during direct wave upper part calculation) */
56 
57 #define U3D_RTMOD_MAX_DIST 50. /* Maximal distance between the last point of the dyn.ray and receiver
58  (to detect the evident error) */
59 
60 #define U3D_RTMOD_LENGTH_EPS 5. /* Final precision of receivers shooting (probably must be equal to the SS cell size) */
61 
62 #define U3D_RTMOD_SS_SHADOW_CELLS_PART 0.05 /* Allowed part of the shadowed cells on surface source */
63 
64 #define U3D_FACE_ACTIVE_ZONES_NUMBER 10 /* Number of zones on surface in current direction (for surface source calculation) */
65 
66 //===============================================================================
67 struct SSPQCell {
68  double st_f;
69  double st_az;
70  double t;
71  double f;
72  double az;
74  double n_f;
75  double n_az;
76 };
77 
78 
79 //===============================================================================
81 enum U3dWaveletType {
82  RICKER,
83  MIN_PHASE,
84  VSP_DATA
85 };
86 
87 
88 //===============================================================================
90  double st_f;
91  double st_az;
92  double t;
93  double f;
94  double az;
96  int recId;
97  double ampl;
98 };
99 typedef std::vector<U3dWaveInfoCell> U3dWaveInfo;
100 
101 
102 
103 typedef std::vector<U3dPoint> U3dPoints;
104 
105 //===============================================================================
108  U3dCodeAr code;
109  U3dPoints rp_ar;
110 };
111 typedef std::vector<U3dWaveHodoCell> U3dWaveDynHodo;
112 
113 
114 
115 
116 
117 
118 //===============================================================================
120  int recId;
122  double t;
123  U3dPoints ray_path;
125  U3dWaveHodItem() {}
126 
127  U3dWaveHodItem(int rec_id, U3dPoint p, double time, std::vector<U3dPoint> *rp = NULL) :
128  recId(rec_id),
129  recp(p),
130  t(time)
131  { if (rp) ray_path = *rp; }
132 
133  //U3dWaveHodItem(const U3dWaveHodItem &item) :
134  //recId(item.recId),
135  //recp(item.recp),
136  //t(item.t),
137  //ray_path(item.ray_path)
138  //{}
139 
140  ~U3dWaveHodItem() {}
141 
142 };
143 typedef std::map<int,U3dWaveHodItem> U3dWaveHod;
144 
145 //---------------------------------------------------------------------
147  U3dWaveHod hod;
148  U3dCodeAr code;
149 };
150 typedef std::vector<U3dComplexWaveHod> U3dComplexWaveHodsAr;
151 
152 //---------------------------------------------------------------------
153 struct U3dSPHods {
154  int spId;
155  U3dPoint sp;
156  U3D_WAVE_TYPE dir_w_type;
157  U3dWaveHod direct_hod;
158  U3dComplexWaveHodsAr single_refl_hods;
159  U3dComplexWaveHodsAr single_refl_conv_hods;
160  U3dComplexWaveHodsAr single_trans_conv_hods;
161 };
162 typedef std::vector<U3dSPHods> U3dSPHodsAr;
163 
164 
165 
167  int spId; /* Shot point identifier */
168  int recId; /* Receiver point identifier */
169  int ray_type; /* Type of ray path (see u3d_raytr_defines.hpp) */
170  int boundId; /* Incident bound identifier */
171  U3dPoint rp; /* Ray path point */
172  int ray_pathId; /* Ray path identifier (unique among all ray paths) */
173  int pointId; /* Sequential index of the point in the ray path. */
174 };
175 typedef std::vector<U3dRayPathItem> U3dRayPath;
176 
177 
178 //---------------------------------------------------------------------
179 #endif /* u3d_migr_defines.hpp */
180 
Definition: u3d_rtmod_defines.hpp:153
double az
Definition: u3d_rtmod_defines.hpp:72
Definition: u3d_rtmod_defines.hpp:106
Definition: u3d_rtmod_defines.hpp:166
U3dComplexWaveHodsAr single_trans_conv_hods
Definition: u3d_rtmod_defines.hpp:160
double az
Definition: u3d_rtmod_defines.hpp:94
double st_f
Definition: u3d_rtmod_defines.hpp:68
U3dPoints rp_ar
Definition: u3d_rtmod_defines.hpp:109
double st_f
Definition: u3d_rtmod_defines.hpp:90
double t
Definition: u3d_rtmod_defines.hpp:70
Definition: u3d_rtmod_defines.hpp:89
U3dWaveHod hod
Definition: u3d_rtmod_defines.hpp:147
U3dComplexWaveHodsAr single_refl_conv_hods
Definition: u3d_rtmod_defines.hpp:159
Definition: u3d_rtmod_defines.hpp:119
int recId
Definition: u3d_rtmod_defines.hpp:96
U3dWaveHod direct_hod
Definition: u3d_rtmod_defines.hpp:157
Definition: u3d_point.hpp:16
Definition: u3d_rtmod_defines.hpp:67
int recId
Definition: u3d_rtmod_defines.hpp:120
double t
Definition: u3d_rtmod_defines.hpp:92
double t
Definition: u3d_rtmod_defines.hpp:122
double f
Definition: u3d_rtmod_defines.hpp:71
U3dComplexWaveHodsAr single_refl_hods
Definition: u3d_rtmod_defines.hpp:158
U3dPoint recp
Definition: u3d_rtmod_defines.hpp:121
double st_az
Definition: u3d_rtmod_defines.hpp:91
U3dCodeAr code
Definition: u3d_rtmod_defines.hpp:148
double ampl
Definition: u3d_rtmod_defines.hpp:97
U3dPoints ray_path
Definition: u3d_rtmod_defines.hpp:123
U3dCodeAr code
Definition: u3d_rtmod_defines.hpp:108
Definition: u3d_rtmod_defines.hpp:146
U3dWaveInfoCell wi_cell
Definition: u3d_rtmod_defines.hpp:107
double f
Definition: u3d_rtmod_defines.hpp:93
double st_az
Definition: u3d_rtmod_defines.hpp:69