OpendTect  6.3
raytrace1d.h
Go to the documentation of this file.
1 #pragma once
2 /*
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: K. Tingdahl
7  Date: Jan 2011
8 ________________________________________________________________________
9 
10 */
11 
12 #include "algomod.h"
13 #include "ailayer.h"
14 #include "factory.h"
15 #include "odcomplex.h"
16 #include "reflectivitymodel.h"
17 #include "survinfo.h"
18 #include "paralleltask.h"
19 #include "velocitycalc.h"
20 
21 template <class T> class Array2DImpl;
22 template <class T> class Array1D;
23 class TimeDepthModel;
24 
25 
32 public:
34 
35  static RayTracer1D* createInstance(const IOPar&,uiString&);
36 
37  ~RayTracer1D();
38 
40  {
41  public:
43  : pdown_( true )
44  , pup_( true )
45  , doreflectivity_(true) {}
46  virtual ~Setup() {}
47 
48  mDefSetupMemb(bool,pdown);
49  mDefSetupMemb(bool,pup);
50  mDefSetupMemb(bool,doreflectivity);
51 
52  virtual void fillPar(IOPar&) const;
53  virtual bool usePar(const IOPar&);
54  };
55 
56  virtual RayTracer1D::Setup& setup() = 0;
57  virtual const RayTracer1D::Setup& setup() const = 0;
58  virtual bool hasSameParams(const RayTracer1D&) const;
59 
60  bool setModel(const ElasticModel&);
61  const ElasticModel& getModel() const { return model_; }
62  // model top depth must be TWT = 0ms
67  void setOffsets(const TypeSet<float>& offsets);
68  void getOffsets(TypeSet<float>& offsets) const;
69  bool isPSWithoutZeroOffset() const;
70  // If PreStack & Offset Range do not have zero offset
71 
72  uiString errMsg() const { return errmsg_; }
73 
74  //Available after execution
75  float getSinAngle(int layeridx,int offsetidx) const;
76  bool getReflectivity(int offset,ReflectivityModel&) const;
77  bool getTDModel(int offset,TimeDepthModel&) const;
78  bool getZeroOffsTDModel(TimeDepthModel&) const;
79 
80  virtual void fillPar(IOPar&) const;
81  virtual bool usePar(const IOPar&);
82 
83  static const char* sKeyPWave() { return "Wavetypes"; }
84  static const char* sKeyOffset() { return "Offset Range"; }
85  static const char* sKeyReflectivity() { return "Compute reflectivity"; }
86  static const char* sKeyBlock() { return "Block model"; }
87  static const char* sKeyBlockRatio() { return "Blocking ratio threshold";}
88  static float cDefaultBlockRatio();
89 
90  static void setIOParsToZeroOffset(IOPar& iop);
91 
92 protected:
93  RayTracer1D();
94 
95  od_int64 nrIterations() const;
96  virtual bool doPrepare(int);
97  virtual bool compute(int,int,float);
98  bool getTDM(const Array1D<float>&,TimeDepthModel&) const;
99  void setZeroOffsetTWT();
100 
101  //Setup variables
102  ElasticModel model_; // model top depth must be TWT = 0ms
105 
106  //Runtime variables
110 
111  //Results
116 };
117 
118 
125 public:
126 
128  "VrmsRayTracer",
129  tr("Simple RayTracer") );
130 
131  RayTracer1D::Setup& setup() { return setup_; }
132  const RayTracer1D::Setup& setup() const { return setup_; }
133 
134 protected:
135  bool doWork(od_int64,od_int64,int);
136 
137  bool compute(int,int,float);
138 
140 };
Array1D ( Subclass of ArrayND ) is a one dimensional array.
Definition: arraynd.h:97
Array2DImpl< float_complex > * reflectivity_
Definition: raytrace1d.h:115
#define mExpClass(module)
Definition: commondefs.h:157
TypeSet< int > offsetpermutation_
Definition: raytrace1d.h:107
static const char * sKeyReflectivity()
Definition: raytrace1d.h:85
A table of elastic prop layers with processing utilities.
Definition: ailayer.h:98
uiString errMsg() const
Definition: raytrace1d.h:72
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
#define od_int64
Definition: plftypes.h:34
Implementation of Array2D.
Definition: arrayndimpl.h:101
bool setModel(const float *dpths, const float *times, int sz)
const RayTracer1D::Setup & setup() const
Definition: raytrace1d.h:132
#define mDefaultFactoryInstantiation(baseclss, clss, keywrd, usernm)
Definition: factory.h:287
Array2DImpl< float > * twt_
Definition: raytrace1d.h:113
Definition: uistring.h:88
RayTracer1D::Setup setup_
Definition: raytrace1d.h:139
Definition: raytrace1d.h:39
Ray tracer in 1D based on Vrms.
Definition: raytrace1d.h:123
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:64
static const char * sKeyBlock()
Definition: raytrace1d.h:86
static const char * sKeyBlockRatio()
Definition: raytrace1d.h:87
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
const ElasticModel & getModel() const
Definition: raytrace1d.h:61
TypeSet< float > velmax_
Definition: raytrace1d.h:108
ElasticModel model_
Definition: raytrace1d.h:102
Array1D< float > * zerooffstwt_
Definition: raytrace1d.h:114
Setup()
Definition: raytrace1d.h:42
#define mDefSetupMemb(typ, memb)
Definition: commondefs.h:129
Array2DImpl< float > * sini_
Definition: raytrace1d.h:112
static const char * sKeyOffset()
Definition: raytrace1d.h:84
#define mDefineFactoryInClass(T, funcname)
Definition: factory.h:424
Ray tracer in 1D.
Definition: raytrace1d.h:30
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
TypeSet< float > depths_
Definition: raytrace1d.h:109
TypeSet< float > offsets_
Definition: raytrace1d.h:103
BufferString errmsg_
Definition: horizontracker.h:117
static const char * sKeyPWave()
Definition: raytrace1d.h:83
RayTracer1D::Setup & setup()
Definition: raytrace1d.h:131
virtual ~Setup()
Definition: raytrace1d.h:46
Converts between time, depth and velocity given a model. The velocity model can be either RMO-velocit...
Definition: velocitycalc.h:29
uiString errmsg_
Definition: raytrace1d.h:104

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017