VAPoR  0.1
LayeredGrid.h
Go to the documentation of this file.
1 #ifndef _LayeredGrid_
2 #define _LayeredGrid_
3 #include <vapor/common.h>
4 #include "RegularGrid.h"
5 
6 //
22 //
23 
24 namespace VAPoR {
26 public:
27 
63  const size_t bs[3],
64  const size_t min[3],
65  const size_t max[3],
66  const double extents[6],
67  const bool periodic[3],
68  float ** blks,
69  float ** coords,
70  int varying_dim
71 );
72 
86  const size_t bs[3],
87  const size_t min[3],
88  const size_t max[3],
89  const double extents[6],
90  const bool periodic[3],
91  float ** blks,
92  float ** coords,
93  int varying_dim,
94  float missing_value
95  );
96 
97  virtual ~LayeredGrid();
98 
99 
102  float GetValue(double x, double y, double z) const;
103 
106  virtual void GetUserExtents(double extents[6]) const {
107  for (int i=0; i<6; i++) extents[i] = _extents[i];
108  }
109 
110 
113  virtual void GetBoundingBox(
114  const size_t min[3],
115  const size_t max[3],
116  double extents[6]
117  ) const;
118 
121  virtual void GetEnclosingRegion(
122  const double minu[3], const double maxu[3],
123  size_t min[3], size_t max[3]
124  ) const;
125 
126 
129  int GetUserCoordinates(
130  size_t i, size_t j, size_t k,
131  double *x, double *y, double *z
132  ) const;
133 
136  void GetIJKIndex(
137  double x, double y, double z,
138  size_t *i, size_t *j, size_t *k
139  ) const;
140 
143  void GetIJKIndexFloor(
144  double x, double y, double z,
145  size_t *i, size_t *j, size_t *k
146  ) const;
147 
150  int Reshape(
151  const size_t min[3],
152  const size_t max[3],
153  const bool periodic[3]
154  );
155 
158  bool InsideGrid(double x, double y, double z) const;
159 
160 
170  //
171  virtual void SetPeriodic(const bool periodic[3]);
172 
175  virtual void GetMinCellExtents(double *x, double *y, double *z) const;
176 
180  float **GetCoordBlks() const { return(_coords); };
181 
182 
183 private:
184  float **_coords;
185  int _varying_dim;
186  double _extents[6];
187 
188  double _GetValueLinear(double x, double y, double z) const;
189  void _GetUserExtents(double extents[6]) const;
190  void _GetBoundingBox(
191  const size_t min[3],
192  const size_t max[3],
193  double extents[6]
194  ) const;
195  double _GetVaryingCoord(size_t i, size_t j, size_t k) const;
196 
197  //double verticalLinearInterpolation(double x, double y, double z) const;
198  //double quadraticInterpolation(double x, double y, double z) const;
199 
200  double _interpolateVaryingCoord(
201  size_t i0, size_t j0, size_t k0,
202  double x, double y, double z
203  ) const;
204 
205 };
206 };
207 #endif
#define VDF_API
Definition: common.h:61
float ** GetCoordBlks() const
Definition: LayeredGrid.h:180
virtual void GetUserExtents(double extents[6]) const
Definition: LayeredGrid.h:106