UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
u3d_rtmod.hpp
1 /* u3d_rtmod.hpp */
2 /* $Id: u3d_rtmod.hpp,v 1.2 2008/06/02 12:02:11 sasha Exp $ */
3 //------------------------------------------------------------------------------
4 #ifndef __u3d_rtmodhpp
5 #define __u3d_rtmodhpp
6 
7 #include <u3d_seis.hpp>
8 
9 #include "u3d_rtmod_shooter.hpp"
10 #include "u3d_rtmod_storage.hpp"
11 
12 #include "u3d_surfsource.hpp"
13 #include "u3d_abstract_wfield.hpp"
14 
15 
16 //==============================================================================
19 {
20 public:
21 
22  U3dRTMod(U3dModel *model,
23  U3dAbstractSeis *seis,
24  float stp,
25  URayReflCoefType ctype = ZOEPPRITZ,
26  bool save_ray_path = true,
27  int* waves_under_processing = NULL);
28  ~U3dRTMod();
29 
32  bool calcSurfSources(int spn);
33 
34  bool calcSPSurfSources(int spn);
35  bool calcRecSurfSources();
36 
38  bool calcDirectWave(int spnm, U3dAbstractWField *field);
39 
42  bool calcUpgoingWaves(int spn, U3dAbstractWField *field);
43 
44 
47  bool calcDowngoingWaves(int spn, U3dAbstractWField *field);
48 
50  bool getReady() { return m_ready; };
51 
52 
53 
54  U3dRTModStorage* getStorage() { return &m_storage; };
55 
56  U3dAbstractSeis* getSeis() { return m_seis; };
57 
58  void calcDynamicHod(int spId, U3dWaveDynHodo &wave_hod);
59 
60  bool getDirWaveCalcFlag() const { return m_calc_direct_wave; }
61  bool getPPUPCalcFlag() const { return m_calc_PP_UP; }
62  bool getPSUPCalcFlag() const { return m_calc_PS_UP; }
63  bool getPSDOWNCalcFlag() const { return m_calc_PS_DOWN; }
64 
65 
66  /* === DEBUG === */
67  int checkWaveInfo(U3dWaveInfo w);
68  bool testWaveHod(U3dWaveInfo w, U3dWaveDynHodo wave_hod, int wh_size=0);
69 
70  void tmpFunc();
71 
72  //bool getSS(U3dPoint sp, U3D_WAVE_TYPE wt, int bId, U3dSurfSource*& ss_out) {
73  //return U3dRTModRayShooter::getSurfSource(sp, wt, bId, ss_out);
74  //}
75 
76 private:
77 
79  bool getWave(int spId, U3dCodeAr c, U3dWaveDynHodo &wh);
80 
82  bool getDirectWave(int spId, U3D_WAVE_TYPE wt, U3dWaveDynHodo &wh);
83 
86  bool getDirectWaveSP(int spId, U3D_WAVE_TYPE wt, U3dWaveInfo &w);
87 
90  bool compSS(U3dSurfSource *sp_ss, U3dSurfSource *rec_ss, int recId,
91  bool trFlag, U3dWaveInfo &w);
92 
94  bool compSSCell(SSPQCell sp_cell, SSPQCell rec_cell, U3dPoint cell_p,
95  U3D_WAVE_TYPE wt1, U3D_WAVE_TYPE wt2, bool transfer,
96  double &diff_f, double &diff_az);
97 
101  bool checkBoundSPRecLocation(int spId, int recId, int boundId, bool transfer);
102 
104  void analyseIPArray(U3dWaveInfo &w, std::vector<double> diff_ar, int debug_level=0);
105 
106 
107 
108  // .........................................................................
109  U3dAbstractSeis *m_seis;
110  U3dRTModStorage m_storage;
112  bool m_ready;
114  bool m_calc_direct_wave;
115  bool m_calc_PP_UP;
116  bool m_calc_PS_UP;
117  bool m_calc_PS_DOWN;
118 
119 };
120 
121 
122 //----------------------------------------------------------------------------
123 #endif /* u3d_rtmod.hpp */
124 
bool calcUpgoingWaves(int spn, U3dAbstractWField *field)
Definition: u3d_surfsource.hpp:15
bool calcSurfSources(int spn)
Definition: u3d_rtmod_storage.hpp:19
Definition: u3d_abstract_wfield.hpp:76
Definition: u3d_point.hpp:16
Definition: u3d_rtmod_defines.hpp:67
Definition: u3d_rtmod_shooter.hpp:19
Definition: u3d_rtmod.hpp:18
Definition: u3d_model.hpp:15
bool getReady()
Definition: u3d_rtmod.hpp:50
bool calcDowngoingWaves(int spn, U3dAbstractWField *field)
bool calcDirectWave(int spnm, U3dAbstractWField *field)
Definition: u3d_seis.hpp:14