10 #include "ray_tracing.hpp"
18 typedef vector<int> iVect;
19 typedef vector<double> dVect;
22 enum BOUND {TOP, BOT, RIGHT, LEFT, BAD};
26 enum ACTIVE_ZONE {AZ_OK, AZ_NO, AZ_SPECIAL};
31 enum MIGR_TYPE {PPUP, PPDOWN, PSUP, PSDOWN, SPUP, SPDOWN, SSUP, SSDOWN};
102 bool GetMigrGridSP(
int sp_num,
MigrCell *&grid,
int &size);
105 bool GetMigrGridRec(
int recNum,
MigrCell *&grid,
int &size);
109 bool GetMigrGrid(
double x,
double z, WAVE_TYPE wType,
MigrCell *&grid,
int &size);
113 bool GetMigrGrid(
double x,
double z, WAVE_TYPE wType,
MigrInnerGrid &grid);
120 void CompMigrGrid(
MigrCell *grid1,
int size1,
MigrCell *grid2,
int size2,
IPCell *&ip_info,
int &ip_cell_num,
121 int i_beg = -1,
int i_end = -1);
136 double GetIPValue(
int spN,
int i,
int j,
MigrInnerCell cell);
166 void AddRayPoint(
double rx0,
double rz0,
double rx1,
double rz1, WAVE_TYPE wType,
170 void GetCellIJ(
double x,
double z,
int &i,
int&j);
173 void GetCellXZ(
int i,
int j,
double &x,
double &z, BOUND bound=BAD);
176 void MarkCell(
MigrInnerGrid grid,
int i,
int j,
double f,
double t);
179 BOUND GetNextCell(
int i1,
int j1,
int &i_next,
int &j_next);
182 BOUND GetNextPoint(
double x,
double z,
double &x_next,
double &z_next);
186 bool GetShadowZoneBorder(WAVE_TYPE wType,
double spX,
double spZ,
double init_f,
double &last_f,
double &f_shad_tmp,
double f);
189 void GetShadowZoneEnd(WAVE_TYPE wType,
double spX,
double spZ,
double init_f_shad,
double f_step,
190 double &x1,
double &z1,
int &i1,
int &j1,
double &f,
MigrInnerGrid inner_grid);
193 bool CheckBoundPoint(
double x,
double z);
196 void MovePointFromBound(
double &x,
double &z);
207 ACTIVE_ZONE GetActiveZoneStart(WAVE_TYPE wType,
double spX,
double spZ,
double &init_f,
double &init_x,
double &init_z,
208 double f,
int &rec_count,
bool print=TRUE);
211 ACTIVE_ZONE AZDetermination(WAVE_TYPE wType,
double spX,
double spZ,
double &init_f,
212 double &init_x,
double &init_z,
double f,
int &rec_count,
213 ACTIVE_ZONE AZ,
double well_f,
double no_well_f,
bool print);
216 int GetWellDir(
double spX,
double spZ,
double z1,
double z2);
219 bool GetNearestRecNum(
double spX,
double spZ,
double last_x,
double last_z,
int &first_rec,
int rec_count,
bool print=TRUE);
222 int GetLastRecNum(WAVE_TYPE wType,
double spX,
double spZ,
double f,
int first_rec,
int rec_count,
223 double &end_f,
double &end_x,
double &end_z);
226 bool OneRecShoot(WAVE_TYPE wType ,
double spX,
double spZ,
int rec_num,
double x0,
double z0,
double x1,
double z1,
227 double base_angle,
double sec_base_angle,
double &result_x,
double &result_z,
double &result_angle,
228 double &result_w_angle,
double &time,
double eps);
231 double GetAmpl(
int spN, iVect &recNum, dVect &recT, dVect &recF);
234 bool AboveWell(
double spZ);
237 bool RayError(
RayInfo *
ray,
const char* message,
double f,
double sp_x,
double sp_z);
242 void Log(
const char* str);
273 double MOD_BOUND_STEP_X;
275 double MOD_BOUND_STEP_Z;
277 double MOD_BOUND_EPS_X;
279 double MOD_BOUND_EPS_Z;
283 double MOVE_POINT_STEP;
284 double CHECK_BOUND_EPS;
unsigned short int next
Definition: rt_migr.hpp:61
Definition: vel2dmod.hpp:19
Vel2dModel * GetMod2d() const
Definition: rt_migr.hpp:154
Ray tracing class.
Definition: ray_tracing.hpp:24
Definition: rt_migr.hpp:88
Ray data storage sturcture.
Definition: rt_storage.hpp:74
double f
Definition: rt_migr.hpp:55
int i
Definition: rt_migr.hpp:70
migration-cell structure
Definition: u3d_migr_defines.hpp:47
incident-point-cell structure
Definition: u3d_migr_defines.hpp:63
double f
Definition: rt_migr.hpp:76
int j
Definition: rt_migr.hpp:73
double f
Definition: rt_migr.hpp:40
migration-cell structure
Definition: u3d_migr_defines.hpp:31