OpendTect  6.3
seisblocksdata.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Bert
8  Date: Apr 2017
9 ________________________________________________________________________
10 
11 */
12 
13 #include "seiscommon.h"
14 
15 class DataBuffer;
16 namespace Survey { class Geometry3D; }
17 template <class T> class DataInterpreter;
18 
19 
20 namespace Seis
21 {
22 
37 namespace Blocks
38 {
39  typedef short IdxType;
40  typedef unsigned short SzType;
42 
43 #define mDefSeisBlockTripletClass(clss,typ) \
44 mExpClass(Seis) clss : public Triplet<typ> \
45 { \
46 public: \
47 \
48  inline clss() {} \
49  inline clss( short iidx, short xidx, short zidx ) \
50  : Triplet<typ>(iidx,xidx,zidx) {} \
51  inline bool operator ==( const clss& oth ) const \
52  { return first == oth.first && second == oth.second \
53  && third == oth.third; } \
54 \
55  inline typ inl() const { return first; } \
56  inline typ& inl() { return first; } \
57  inline typ crl() const { return second; } \
58  inline typ& crl() { return second; } \
59  inline typ z() const { return third; } \
60  inline typ& z() { return third; } \
61 }
62 
66 
67 
71 {
72 public:
73 
74  Block(GlobIdx,SampIdx start=SampIdx(),
75  Dimensions dims=defDims(),
77  ~Block();
78 
79  const GlobIdx& globIdx() const { return globidx_; }
80  const SampIdx& start() const { return start_; }
81  const Dimensions& dims() const { return dims_; }
82  const DataBuffer& dataBuf() const { return dbuf_; }
83 
84  void zero();
85  void retire();
86  bool isRetired() const;
87 
88  float value(const SampIdx&) const;
89  void getVert(SampIdx,float*,int sz) const;
90  void setValue(const SampIdx&,float);
91  void setVert(SampIdx,const float*,int sz);
92 
93  SampIdx getSampIdx(const BinID&,const SurvGeom&) const;
94  SampIdx getSampIdx(const BinID&,float z,const SurvGeom&) const;
95  IdxType getSampZIdx(float,const SurvGeom&) const;
96 
97  static IdxType globIdx4Inl(const SurvGeom&,int inl,SzType inldim);
98  static IdxType globIdx4Crl(const SurvGeom&,int crl,SzType crldim);
99  static IdxType globIdx4Z(const SurvGeom&,float z,SzType zdim);
100  static IdxType sampIdx4Inl(const SurvGeom&,int inl,SzType inldim);
101  static IdxType sampIdx4Crl(const SurvGeom&,int crl,SzType crldim);
102  static IdxType sampIdx4Z(const SurvGeom&,float z,SzType zdim);
103  static int inl4Idxs(const SurvGeom&,SzType inldim,IdxType globidx,
104  IdxType sampidx);
105  static int crl4Idxs(const SurvGeom&,SzType crldim,IdxType globidx,
106  IdxType sampidx);
107  static float z4Idxs(const SurvGeom&,SzType zdim,IdxType globidx,
108  IdxType sampidx);
109 
110  static Dimensions defDims();
111 
112 protected:
113 
119 
120  int getBufIdx(const SampIdx&) const;
121  inline int nrSampsPerInl() const
122  { return ((int)dims_.crl()) * dims_.z(); }
123 
124 };
125 
126 
130 {
131 public:
132 
133  virtual ~DataStorage() {}
134 
135  unsigned short version() const { return version_; }
136 
137  static BufferString fileNameFor(const GlobIdx&);
138 
139  static const char* sKeyFileType() { return "Column Cube"; }
140  static const char* sKeyDimensions() { return "Blocks.Max Dimensions"; }
141  static const char* sKeyGlobInlRg() { return "Blocks.Inl ID Range"; }
142  static const char* sKeyGlobCrlRg() { return "Blocks.Crl ID Range"; }
143  static const char* sKeyGlobZRg() { return "Blocks.Z ID Range"; }
144  static const char* sKeyComponents() { return "Components"; }
145 
146 protected:
147 
148  DataStorage(const SurvGeom*);
149 
150  const SurvGeom& survgeom_;
152  unsigned short version_;
153 
154 };
155 
156 
157 } // namespace Blocks
158 
159 } // namespace Seis
#define mExpClass(module)
Definition: commondefs.h:157
Seismics.
Definition: segydirectdef.h:20
unsigned short SzType
Definition: seisblocksdata.h:40
const GlobIdx globidx_
Definition: seisblocksdata.h:114
static const char * sKeyComponents()
Definition: seisblocksdata.h:144
Survey::Geometry3D SurvGeom
Definition: seisblocksdata.h:41
unsigned short version() const
Definition: seisblocksdata.h:135
short IdxType
Definition: seisblocksdata.h:39
int nrSampsPerInl() const
Definition: seisblocksdata.h:121
SzType z() const
Definition: seisblocksdata.h:65
static const char * sKeyGlobZRg()
Definition: seisblocksdata.h:143
const SampIdx start_
Definition: seisblocksdata.h:115
static const char * sKeyFileType()
Definition: seisblocksdata.h:139
FPDataRepType
Definition: commontypes.h:63
static const char * sKeyGlobCrlRg()
Definition: seisblocksdata.h:142
Definition: commontypes.h:64
SzType crl() const
Definition: seisblocksdata.h:65
const SurvGeom & survgeom_
Definition: seisblocksdata.h:150
Definition: seisblocksdata.h:63
Byte-level data interpreter.
Definition: cbvswriter.h:20
const Dimensions dims_
Definition: seisblocksdata.h:116
static const char * sKeyDimensions()
Definition: seisblocksdata.h:140
const Dimensions & dims() const
Definition: seisblocksdata.h:81
virtual ~DataStorage()
Definition: seisblocksdata.h:133
const DataInterpreter< float > * interp_
Definition: seisblocksdata.h:118
FixedString DataStorage()
Definition: keystrs.h:52
const DataBuffer & dataBuf() const
Definition: seisblocksdata.h:82
unsigned short version_
Definition: seisblocksdata.h:152
Base class for Reader and Writer.
Definition: seisblocksdata.h:129
#define mDefSeisBlockTripletClass(clss, typ)
Definition: seisblocksdata.h:43
const GlobIdx & globIdx() const
Definition: seisblocksdata.h:79
const SampIdx & start() const
Definition: seisblocksdata.h:80
Resizable buffer of elements.
Definition: databuf.h:19
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
Single block of data.
Definition: seisblocksdata.h:70
Scaled down survey geometry for an inl/crl geometry.
Definition: survgeom3d.h:26
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
const Dimensions dims_
Definition: seisblocksdata.h:151
DataBuffer & dbuf_
Definition: seisblocksdata.h:117
Definition: survgeom.h:28
static const char * sKeyGlobInlRg()
Definition: seisblocksdata.h:141
Definition: seisblocksdata.h:65
Definition: seisblocksdata.h:64

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