UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
s2_fk45migr.hpp
1 /* s2_fk45migr.hpp */
2 /* $Id: s2_fk45migr.hpp 21022 2011-07-11 11:45:03Z urij $ */
3 #ifndef __s2_fk45migr
4 #define __s2_fk45migr
5 
6 #include <complex>
7 #include <vector>
8 
9 #include <s2proc/s2_abstractmigr.hpp>
10 //#include <s2proc/s2_fk45migr_rp.hpp>
11 #include <vel2dmod/vel2dmod.hpp>
12 
14 class S2FK45Migr : public S2AbstractMigr
15 {
16 public:
17 
20  S2FK45Migr(float spx);
21 
23  virtual ~S2FK45Migr();
24 
27  virtual bool getImage(const WaveField &wf_up,
28  Vel2dModel &mod2d,
29  WaveField &image
30  ) const;
31 
33  void setSp(float spx)
34  {m_spx = spx;}
35 
36 protected:
37 
39  struct CField
40  {
41  std::vector< std::vector< std::complex<float> > > ar;
42  float w0, dw;
43  float k0, dk;
44  };
45 
47  float m_spx;
48 
49  void shift(size_t img_id, /*< id of image z-level */
50  const WaveField &image, /*< image field */
51  CField &up, /*< complex spectrum for current z-level */
52  Vel2dModel &mod2d, /*< 2D velocity model */
53  float dz /*< shift */
54  ) const;
55 
56  virtual std::complex<float> migr_step(std::complex<float> u,
57  float w,
58  float k,
59  float v,
60  float dz
61  ) const;
62 
63  void convolution(CField &up, std::vector< std::complex<float> > &img) const;
64 
66  virtual bool fft2d(const WaveField &wf, S2FK45Migr::CField &cf) const;
67 
68  virtual bool ifft1d(const std::vector< std::complex<float> > &img,
69  Trace &tr_re, Trace &tr_im) const;
70 
71 private:
72 
73  void test_save_wf(CField &cwf, const std::string &name, int nmgl, bool create) const;
74 };
75 
76 #endif /* s2_fk45migr.hpp */
virtual ~S2FK45Migr()
Definition: vel2dmod.hpp:19
S2FK45Migr(float spx)
Definition: s2_abstractmigr.hpp:10
float m_spx
Definition: s2_fk45migr.hpp:47
Definition: s2_fk45migr.hpp:39
Definition: wave_field.hpp:13
Definition: trace.hpp:14
virtual bool fft2d(const WaveField &wf, S2FK45Migr::CField &cf) const
Definition: s2_fk45migr.hpp:14
virtual bool getImage(const WaveField &wf_up, Vel2dModel &mod2d, WaveField &image) const
void setSp(float spx)
Definition: s2_fk45migr.hpp:33