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.44 2008/03/31 07:58:19 guser1 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 //==============================================================================
18 class U3dRTMod : public U3dRTModRayShooter
19 {
20 public:
21 
22  U3dRTMod(U3dModel *model,
23  U3dAbstractSeis *seis,
24  float stp,
25  U3dReflCoefType 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 
79  bool compSS(U3dSurfSource *sp_ss, U3dSurfSource *rec_ss, int recId,
80  bool trFlag, U3dWaveInfo &w);
81 
82 protected:
83 
85  bool getWave(int spId, U3dCodeAr c, U3dWaveDynHodo &wh);
86 
88  bool getDirectWave(int spId, U3D_WAVE_TYPE wt, U3dWaveDynHodo &wh);
89 
92  bool getDirectWaveSP(int spId, U3D_WAVE_TYPE wt, U3dWaveInfo &w);
93 
95  bool compSSCell(SSPQCell sp_cell, SSPQCell rec_cell, U3dPoint cell_p,
96  U3D_WAVE_TYPE wt1, U3D_WAVE_TYPE wt2, bool transfer,
97  double &diff_f, double &diff_az);
98 
102  bool checkBoundSPRecLocation(int spId, int recId, int boundId, bool transfer);
103 
105  void analyseIPArray(U3dWaveInfo &w, std::vector<double> diff_ar, int debug_level=0);
106 
107 
108 
109  // .........................................................................
110  U3dAbstractSeis *m_seis;
111  U3dRTModStorage m_storage;
113  bool m_ready;
115  bool m_calc_direct_wave;
116  bool m_calc_PP_UP;
117  bool m_calc_PS_UP;
118  bool m_calc_PS_DOWN;
119 
120 };
121 
122 
123 //----------------------------------------------------------------------------
124 #endif /* u3d_rtmod.hpp */
125 
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