OpendTect  6.6
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  RCS: $Id$
9 ________________________________________________________________________
10 
11 */
12 
13 #include "algomod.h"
14 #include "ailayer.h"
15 #include "factory.h"
16 #include "odcomplex.h"
17 #include "reflectivitymodel.h"
18 #include "survinfo.h"
19 #include "paralleltask.h"
20 #include "velocitycalc.h"
21 
22 template <class T> class Array2DImpl;
23 template <class T> class Array1D;
24 class TimeDepthModel;
25 
26 
33 public:
35 
37 
39 
41  {
42  public:
44  : pdown_( true )
45  , pup_( true )
46  , doreflectivity_(true) {}
47  virtual ~Setup() {}
48 
49  mDefSetupMemb(bool,pdown);
50  mDefSetupMemb(bool,pup);
51  mDefSetupMemb(bool,doreflectivity);
52 
53  virtual void fillPar(IOPar&) const;
54  virtual bool usePar(const IOPar&);
55  };
56 
57  virtual RayTracer1D::Setup& setup() = 0;
58  virtual const RayTracer1D::Setup& setup() const = 0;
59  virtual bool hasSameParams(const RayTracer1D&) const;
60 
61  bool setModel(const ElasticModel&);
62  const ElasticModel& getModel() const { return model_; }
63  // model top depth must be TWT = 0ms
68  void setOffsets(const TypeSet<float>& offsets);
69  void getOffsets(TypeSet<float>& offsets) const;
70  bool isPSWithoutZeroOffset() const;
71  // If PreStack & Offset Range do not have zero offset
72 
73  uiString errMsg() const { return errmsg_; }
74 
75  //Available after execution
76  float getSinAngle(int layeridx,int offsetidx) const;
77  bool getReflectivity(int offset,ReflectivityModel&) const;
78  bool getTDModel(int offset,TimeDepthModel&) const;
80 
81  virtual void fillPar(IOPar&) const;
82  virtual bool usePar(const IOPar&);
83 
84  static const char* sKeyPWave() { return "Wavetypes"; }
85  static const char* sKeyOffset() { return "Offset Range"; }
86  static const char* sKeyReflectivity() { return "Compute reflectivity"; }
87  static const char* sKeyBlock() { return "Block model"; }
88  static const char* sKeyBlockRatio() { return "Blocking ratio threshold";}
89  static const char* sKeyOffsetInFeet() { return "Offset in Feet";}
90  static float cDefaultBlockRatio();
91 
93 
94  static void setIOParsToZeroOffset(IOPar& iop);
95 
96 protected:
98 
100  virtual bool doPrepare(int);
101  virtual bool compute(int,int,float);
102  bool getTDM(const Array1D<float>&,TimeDepthModel&) const;
104 
105  //Setup variables
106  ElasticModel model_; // model top depth must be TWT = 0ms
109 
110  //Runtime variables
114 
115  //Results
120 
121 public:
122 
123  float getDepth(int layer) const;
124  float getTime(int layer,int offset) const;
125 };
126 
127 
134 public:
135 
137  "VrmsRayTracer",
138  tr("Simple RayTracer") );
139 
140  RayTracer1D::Setup& setup() { return setup_; }
141  const RayTracer1D::Setup& setup() const { return setup_; }
142 
143 protected:
145 
146  bool compute(int,int,float);
147 
149 };
150 
151 
RayTracer1D::fillPar
virtual void fillPar(IOPar &) const
RayTracer1D::errMsg
uiString errMsg() const
Definition: raytrace1d.h:73
RayTracer1D::getModel
const ElasticModel & getModel() const
Definition: raytrace1d.h:62
RayTracer1D::Setup::mDefSetupMemb
mDefSetupMemb(bool, doreflectivity)
RayTracer1D::compute
virtual bool compute(int, int, float)
factory.h
RayTracer1D::setup
virtual RayTracer1D::Setup & setup()=0
RayTracer1D
Ray tracer in 1D.
Definition: raytrace1d.h:32
VrmsRayTracer1D
Ray tracer in 1D based on Vrms.
Definition: raytrace1d.h:133
RayTracer1D::sKeyOffsetInFeet
static const char * sKeyOffsetInFeet()
Definition: raytrace1d.h:89
RayTracer1D::setup
virtual const RayTracer1D::Setup & setup() const =0
od_int64
#define od_int64
Definition: plftypes.h:35
RayTracer1D::sKeyReflectivity
static const char * sKeyReflectivity()
Definition: raytrace1d.h:86
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
ElasticModel
A table of elastic prop layers with processing utilities.
Definition: ailayer.h:100
RayTracer1D::getTime
float getTime(int layer, int offset) const
RayTracer1D::Setup::usePar
virtual bool usePar(const IOPar &)
RayTracer1D::Setup::~Setup
virtual ~Setup()
Definition: raytrace1d.h:47
VrmsRayTracer1D::doWork
bool doWork(od_int64, od_int64, int)
RayTracer1D::getOffsets
void getOffsets(TypeSet< float > &offsets) const
Array1D
Array1D ( Subclass of ArrayND ) is a one dimensional array.
Definition: arraynd.h:111
RayTracer1D::zerooffstwt_
Array1D< float > * zerooffstwt_
Definition: raytrace1d.h:118
RayTracer1D::~RayTracer1D
~RayTracer1D()
RayTracer1D::createInstance
static RayTracer1D * createInstance(const IOPar &, uiString &)
RayTracer1D::sDefOffsetRange
static StepInterval< float > sDefOffsetRange()
RayTracer1D::sKeyBlockRatio
static const char * sKeyBlockRatio()
Definition: raytrace1d.h:88
ailayer.h
VrmsRayTracer1D::setup_
RayTracer1D::Setup setup_
Definition: raytrace1d.h:148
StepInterval< float >
RayTracer1D::twt_
Array2DImpl< float > * twt_
Definition: raytrace1d.h:117
RayTracer1D::model_
ElasticModel model_
Definition: raytrace1d.h:106
RayTracer1D::sKeyBlock
static const char * sKeyBlock()
Definition: raytrace1d.h:87
TimeDepthModel
Converts between time, depth and velocity given a model. The velocity model can be either RMO-velocit...
Definition: velocitycalc.h:31
RayTracer1D::getReflectivity
bool getReflectivity(int offset, ReflectivityModel &) const
RayTracer1D::Setup::Setup
Setup()
Definition: raytrace1d.h:43
RayTracer1D::Setup::mDefSetupMemb
mDefSetupMemb(bool, pup)
RayTracer1D::depths_
TypeSet< float > depths_
Definition: raytrace1d.h:113
RayTracer1D::velmax_
TypeSet< float > velmax_
Definition: raytrace1d.h:112
RayTracer1D::cDefaultBlockRatio
static float cDefaultBlockRatio()
VrmsRayTracer1D::setup
const RayTracer1D::Setup & setup() const
Definition: raytrace1d.h:141
RayTracer1D::Setup::mDefSetupMemb
mDefSetupMemb(bool, pdown)
RayTracer1D::sKeyOffset
static const char * sKeyOffset()
Definition: raytrace1d.h:85
RayTracer1D::setOffsets
void setOffsets(const TypeSet< float > &offsets)
RayTracer1D::hasSameParams
virtual bool hasSameParams(const RayTracer1D &) const
RayTracer1D::setZeroOffsetTWT
void setZeroOffsetTWT()
VrmsRayTracer1D::setup
RayTracer1D::Setup & setup()
Definition: raytrace1d.h:140
reflectivitymodel.h
VrmsRayTracer1D::compute
bool compute(int, int, float)
RayTracer1D::nrIterations
od_int64 nrIterations() const
RayTracer1D::getSinAngle
float getSinAngle(int layeridx, int offsetidx) const
ParallelTask
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:66
RayTracer1D::setIOParsToZeroOffset
static void setIOParsToZeroOffset(IOPar &iop)
survinfo.h
RayTracer1D::Setup::fillPar
virtual void fillPar(IOPar &) const
Array2DImpl
Implementation of Array2D.
Definition: arrayndimpl.h:102
RayTracer1D::setModel
bool setModel(const ElasticModel &)
VrmsRayTracer1D::mDefaultFactoryInstantiation
mDefaultFactoryInstantiation(RayTracer1D, VrmsRayTracer1D, "VrmsRayTracer", tr("Simple RayTracer"))
RayTracer1D::offsets_
TypeSet< float > offsets_
Definition: raytrace1d.h:107
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
RayTracer1D::sini_
Array2DImpl< float > * sini_
Definition: raytrace1d.h:116
RayTracer1D::Setup
Definition: raytrace1d.h:41
MPE::errmsg_
BufferString errmsg_
Definition: horizontracker.h:118
odcomplex.h
RayTracer1D::sKeyPWave
static const char * sKeyPWave()
Definition: raytrace1d.h:84
RayTracer1D::mDefineFactoryInClass
mDefineFactoryInClass(RayTracer1D, factory)
RayTracer1D::errmsg_
uiString errmsg_
Definition: raytrace1d.h:108
RayTracer1D::usePar
virtual bool usePar(const IOPar &)
RayTracer1D::isPSWithoutZeroOffset
bool isPSWithoutZeroOffset() const
RayTracer1D::getDepth
float getDepth(int layer) const
RayTracer1D::doPrepare
virtual bool doPrepare(int)
velocitycalc.h
VrmsRayTracer1D::mODTextTranslationClass
mODTextTranslationClass(VrmsRayTracer1D)
RayTracer1D::RayTracer1D
RayTracer1D()
paralleltask.h
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
RayTracer1D::getZeroOffsTDModel
bool getZeroOffsTDModel(TimeDepthModel &) const
RayTracer1D::getTDModel
bool getTDModel(int offset, TimeDepthModel &) const
RayTracer1D::reflectivity_
Array2DImpl< float_complex > * reflectivity_
Definition: raytrace1d.h:119
RayTracer1D::mODTextTranslationClass
mODTextTranslationClass(RayTracer1D)
RayTracer1D::offsetpermutation_
TypeSet< int > offsetpermutation_
Definition: raytrace1d.h:111
TypeSet< float >
RayTracer1D::getTDM
bool getTDM(const Array1D< float > &, TimeDepthModel &) const

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