ESyS-Particle  2.3.4
CartesianGrid.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 
14 #ifndef ESYS_LSMCARTESIANGRID_H
15 #define ESYS_LSMCARTESIANGRID_H
16 
17 #include "Foundation/vec3.h"
18 #include "Geometry/Vec3L.h"
19 #include "Foundation/BoundingBox.h"
20 #include "Foundation/StlIterator.h"
21 
22 #include <vector>
23 #include <map>
24 #include <stdexcept>
25 #include <sstream>
26 
27 #include <boost/pool/object_pool.hpp>
28 #include <boost/shared_ptr.hpp>
29 
30 namespace esys
31 {
32  namespace lsm
33  {
34  template <typename TmplValue>
36  {
37  public:
38  typedef TmplValue value_type;
40  typedef const value_type& const_reference;
41  typedef value_type* pointer;
42 
43  class Cell
44  {
45  public:
47  {
48  public:
49  PosValuePair(const Vec3 &pos, reference value)
50  : m_pos(pos),
51  m_pValue(&value)
52  {
53  }
54 
55  const Vec3 &getPos() const
56  {
57  return m_pos;
58  }
59 
61  {
62  return *m_pValue;
63  }
64 
66  {
67  return *m_pValue;
68  }
69 
70  private:
73  };
74 
75  typedef std::vector<PosValuePair> PosValueVector;
78 
80  {
81  }
82 
83  void insertRef(reference value)
84  {
85  m_pointerVector.push_back(PosValuePair(getPos(), value));
86  }
87 
88  void insertRef(const Vec3 &pos, reference value)
89  {
90  m_pointerVector.push_back(PosValuePair(pos, value));
91  }
92 
93  void setPos(const Vec3 &pos)
94  {
95  m_pos = pos;
96  }
97 
98  const Vec3 &getPos() const
99  {
100  return m_pos;
101  }
102 
104  {
105  return *m_pGrid;
106  }
107 
108  const CartesianGrid &getGrid() const
109  {
110  return *m_pGrid;
111  }
112 
113  void setGrid(CartesianGrid &grid)
114  {
115  m_pGrid = &grid;
116  }
117 
119  {
120  return
121  BoundingBox(
122  getPos() - getGrid().getGridSpacing()/2.0,
123  getPos() + getGrid().getGridSpacing()/2.0
124  );
125  }
126 
130  int size() const
131  {
132  return m_pointerVector.size();
133  }
134 
138  void clear()
139  {
140  m_pointerVector.clear();
141  }
142 
144  {
146  }
147 
149  {
150  return Iterator(m_pointerVector);
151  }
152 
153  private:
157  };
158 
160  {
161  public:
162  VecIndexIterator(const Vec3L &minIdx, const Vec3L &maxIdx)
163  : m_minIndex(minIdx),
164  m_maxIndex(maxIdx),
165  m_index(minIdx)
166  {
167  }
168 
169  bool hasNext() const
170  {
171  return (m_index[2] <= m_maxIndex[2]);
172  }
173 
174  const Vec3L &current()
175  {
176  return m_index;
177  }
178 
179  void increment()
180  {
181  m_index[0]++;
182  if (m_index[0] > m_maxIndex[0]) {
183  m_index[0] = m_minIndex[0];
184  m_index[1]++;
185  if (m_index[1] > m_maxIndex[1]) {
186  m_index[1] = m_minIndex[1];
187  m_index[2]++;
188  }
189  }
190  }
191 
193  {
194  const Vec3L index = current();
195  increment();
196  return index;
197  }
198 
199  private:
203  };
204 
205  template <typename TmplGridPointer, typename TmplCellRef, typename TmplCell>
207  {
208  public:
209  typedef TmplCell value_type;
210  typedef TmplCellRef reference;
211  TCellIterator(const Vec3L &minIdx, const Vec3L &maxIdx, TmplGridPointer pGrid)
212  : m_idxIt(minIdx, maxIdx),
213  m_pGrid(pGrid)
214  {
215  }
216 
217  bool hasNext() const
218  {
219  return m_idxIt.hasNext();
220  }
221 
223  {
224  return m_pGrid->getCell(m_pGrid->getScalarIndex(m_idxIt.next()));
225  }
226  private:
228  TmplGridPointer m_pGrid;
229  };
230 
231  typedef TCellIterator<CartesianGrid *, Cell &, Cell> CellIterator;
232  typedef TCellIterator<const CartesianGrid *, const Cell &, Cell> CellConstIterator;
233 
234  typedef std::vector<pointer> ValueVector;
235  class ValueIterator : public ForwardIterator<ValueVector>
236  {
237  public:
239  {
240  }
241 
243  {
245  }
246  };
247 
248  class ValueConstIterator : public ForwardConstIterator<ValueVector>
249  {
250  public:
252  {
253  }
254 
256  {
258  }
259  };
260 
261  CartesianGrid(const BoundingBox &bBox, double gridSpacing)
262  : m_bBox(bBox),
263  m_gridSpacing(gridSpacing),
264  m_dimensions(),
265  m_minIndex(),
266  m_maxIndex(),
267  m_cellVector(),
268  m_valuePoolPtr(new Pool(1024)),
269  m_valueVector()
270  {
271  initialise(bBox, gridSpacing);
272  }
273 
274  const Vec3L &getDimensions() const
275  {
276  return m_dimensions;
277  }
278 
279  const BoundingBox &getBBox() const
280  {
281  return m_bBox;
282  }
283 
284  const Vec3 &getMinPt() const
285  {
286  return getBBox().getMinPt();
287  }
288 
289  int getScalarIndex(int xIdx, int yIdx, int zIdx) const
290  {
291  return
292  xIdx*m_dimensions.Z()*m_dimensions.Y()
293  +
294  yIdx*m_dimensions.Z()
295  +
296  zIdx;
297  }
298 
299  Vec3L getVecIndex(const Vec3 &pt) const
300  {
301  const Vec3 relPos = Vec3((pt - getMinPt())/m_gridSpacing);
302  const Vec3L index = Vec3L(int(nearbyint(relPos.X())), int(nearbyint(relPos.Y())), int(nearbyint(relPos.Z())));
303  return getMinVecIndex().max(getMaxVecIndex().min(index));
304  }
305 
306  Vec3 getPos(const Vec3L &index) const
307  {
308  return
309  (
310  getMinPt()
311  +
312  (Vec3(index.X(), index.Y(), index.Z())*m_gridSpacing)
313  );
314  }
315 
316  int getScalarIndex(const Vec3L &index) const
317  {
318  return getScalarIndex(index.X(), index.Y(), index.Z());
319  }
320 
321  int getScalarIndex(const Vec3 &pt) const
322  {
323  return getScalarIndex(getVecIndex(pt));
324  }
325 
326  const Vec3L &getMinVecIndex() const
327  {
328  return m_minIndex;
329  }
330 
331  const Vec3L &getMaxVecIndex() const
332  {
333  return m_maxIndex;
334  }
335 
336  void insert(const Vec3 &pos, const_reference data)
337  {
338  insertRef(pos, *(m_valuePoolPtr->construct(data)));
339  }
340 
341  const Cell &getCell(int scalarIndex) const
342  {
343  return m_cellVector[scalarIndex];
344  }
345 
346  Cell &getCell(int scalarIndex)
347  {
348  return m_cellVector[scalarIndex];
349  }
350 
351  const Cell &getCell(const Vec3 &pos) const
352  {
353  return getCell(getScalarIndex(pos));
354  }
355 
356  Cell &getCell(const Vec3 &pos)
357  {
358  return getCell(getScalarIndex(pos));
359  }
360 
361  CellIterator getCellIterator(const Vec3 &pos, double radius)
362  {
363  return
364  CellIterator(
365  getVecIndex(pos - radius),
366  getVecIndex(pos + radius),
367  this
368  );
369  }
370 
371  CellConstIterator getCellIterator(const Vec3 &pos, double radius) const
372  {
373  return
375  getVecIndex(pos - radius),
376  getVecIndex(pos + radius),
377  this
378  );
379  }
380 
382  {
383  return getCellIterator(pos, 0.0);
384  }
385 
387  {
388  return getCellIterator(pos, 0.0);
389  }
390 
392  {
393  return
394  CellIterator(
395  getMinVecIndex(),
396  getMaxVecIndex(),
397  this
398  );
399  }
400 
402  {
403  return
405  getMinVecIndex(),
406  getMaxVecIndex(),
407  this
408  );
409  }
410 
411  ValueIterator getValueIterator()
412  {
413  return ValueIterator(m_valueVector);
414  }
415 
416  ValueConstIterator getValueIterator() const
417  {
418  return ValueConstIterator(m_valueVector);
419  }
420 
421  size_t size() const
422  {
423  return m_valueVector.size();
424  }
425 
426  double getGridSpacing() const
427  {
428  return m_gridSpacing;
429  }
430 
431  void clear()
432  {
433  CellIterator cellIt = getCellIterator();
434  while (cellIt.hasNext())
435  {
436  cellIt.next().clear();
437  }
438  m_valuePoolPtr = PoolPtr(new Pool(1024));
439  m_valueVector.clear();
440  }
441 
442  protected:
443  void insertRef(const Vec3 &pos, reference data)
444  {
445  getCell(pos).insertRef(pos, data);
446  m_valueVector.push_back(&data);
447  }
448 
449  void initialise(const BoundingBox &bBox, double gridSpacing)
450  {
451  m_bBox = bBox;
452  m_gridSpacing = gridSpacing;
453 
454  const Vec3 dims = m_bBox.getSizes()/gridSpacing;
455  m_dimensions = Vec3L(int(nearbyint(dims[0])), int(nearbyint(dims[1])), int(nearbyint(dims[2])));
456  m_dimensions = m_dimensions.max(Vec3L(1, 1, 1));
457 
458  m_cellVector.clear();
459  m_cellVector.insert(
460  m_cellVector.end(),
462  Cell()
463  );
464 
465  m_valueVector.clear();
466  m_valueVector.reserve(m_cellVector.size());
467 
468  m_minIndex = Vec3L(0, 0, 0);
469  m_maxIndex = (m_dimensions - 1);
470 
471  for (int i = getMinVecIndex()[0]; i <= getMaxVecIndex()[0]; i++) {
472  for (int j = getMinVecIndex()[1]; j <= getMaxVecIndex()[1]; j++) {
473  for (int k = getMinVecIndex()[2]; k <= getMaxVecIndex()[2]; k++) {
474  const Vec3L index(i, j, k);
475  const Vec3 pos = getPos(index);
476  Cell &cell = getCell(getScalarIndex(index));
477  if ((&(getCell(pos))) == (&(cell)))
478  {
479  cell.setPos(pos);
480  cell.setGrid(*this);
481  }
482  else
483  {
484  std::stringstream sStream;
485  sStream
486  << "Couldn't set grid location for cell ("
487  << i << "," << j << "," << k << "), pos = " << pos;
488  throw std::runtime_error(sStream.str());
489  }
490  }
491  }
492  }
493  }
494 
495  private:
496  typedef std::vector<Cell> CellVector;
497  typedef boost::object_pool<value_type> Pool;
498  typedef boost::shared_ptr<Pool> PoolPtr;
499 
508  };
509  }
510 }
511 
512 #endif
esys::lsm::CartesianGrid::m_maxIndex
Vec3L m_maxIndex
Definition: CartesianGrid.h:504
esys::lsm::CartesianGrid::getValueIterator
ValueConstIterator getValueIterator() const
Definition: CartesianGrid.h:416
esys::lsm::CartesianGrid::CellVector
std::vector< Cell > CellVector
Definition: CartesianGrid.h:496
esys::lsm::CartesianGrid::VecIndexIterator::m_minIndex
Vec3L m_minIndex
Definition: CartesianGrid.h:200
esys::lsm::CartesianGrid::getScalarIndex
int getScalarIndex(int xIdx, int yIdx, int zIdx) const
Definition: CartesianGrid.h:289
esys::lsm::Vec3L::Z
const Long & Z() const
Definition: Vec3L.h:119
esys::lsm::CartesianGrid::Cell::PosValuePair::PosValuePair
PosValuePair(const Vec3 &pos, reference value)
Definition: CartesianGrid.h:49
esys::lsm::CartesianGrid::TCellIterator
Definition: CartesianGrid.h:207
esys::lsm::CartesianGrid::m_bBox
BoundingBox m_bBox
Definition: CartesianGrid.h:500
esys::lsm::CartesianGrid::getMinPt
const Vec3 & getMinPt() const
Definition: CartesianGrid.h:284
esys::lsm::CartesianGrid::TCellIterator::reference
TmplCellRef reference
Definition: CartesianGrid.h:210
esys::lsm::CartesianGrid::reference
value_type & reference
Definition: CartesianGrid.h:39
esys::lsm::ForwardConstIterator::next
reference next()
Definition: StlIterator.h:112
esys::lsm::CartesianGrid::m_valuePoolPtr
PoolPtr m_valuePoolPtr
Definition: CartesianGrid.h:506
esys::lsm::CartesianGrid::VecIndexIterator::m_index
Vec3L m_index
Definition: CartesianGrid.h:202
esys::lsm::CartesianGrid::getCellIterator
CellIterator getCellIterator(const Vec3 &pos)
Definition: CartesianGrid.h:381
esys::lsm::CartesianGrid::getCellIterator
CellConstIterator getCellIterator() const
Definition: CartesianGrid.h:401
esys::lsm::CartesianGrid::getCellIterator
CellIterator getCellIterator(const Vec3 &pos, double radius)
Definition: CartesianGrid.h:361
esys::lsm::CartesianGrid::getCell
const Cell & getCell(int scalarIndex) const
Definition: CartesianGrid.h:341
esys::lsm::CartesianGrid::value_type
TmplValue value_type
Definition: CartesianGrid.h:38
esys::lsm::CartesianGrid::Cell::getIterator
Iterator getIterator()
Definition: CartesianGrid.h:148
StlIterator.h
esys::lsm::CartesianGrid::PoolPtr
boost::shared_ptr< Pool > PoolPtr
Definition: CartesianGrid.h:498
esys::lsm::CartesianGrid::getCell
Cell & getCell(int scalarIndex)
Definition: CartesianGrid.h:346
Vec3L.h
esys::lsm::CartesianGrid::TCellIterator::m_idxIt
VecIndexIterator m_idxIt
Definition: CartesianGrid.h:227
esys::lsm::CartesianGrid::TCellIterator::hasNext
bool hasNext() const
Definition: CartesianGrid.h:217
esys::lsm::CartesianGrid::ValueConstIterator::next
CartesianGrid::const_reference next()
Definition: CartesianGrid.h:255
esys::lsm::CartesianGrid::Cell::PosValuePair::m_pValue
pointer m_pValue
Definition: CartesianGrid.h:72
esys::lsm::CartesianGrid::Cell::Cell
Cell()
Definition: CartesianGrid.h:79
esys::lsm::CartesianGrid::VecIndexIterator::next
Vec3L next()
Definition: CartesianGrid.h:192
esys::lsm::CartesianGrid::getMaxVecIndex
const Vec3L & getMaxVecIndex() const
Definition: CartesianGrid.h:331
esys::lsm::CartesianGrid::TCellIterator::next
reference next()
Definition: CartesianGrid.h:222
esys::lsm::CartesianGrid::Cell::getBox
BoundingBox getBox() const
Definition: CartesianGrid.h:118
esys::lsm::CartesianGrid
Definition: CartesianGrid.h:36
esys::lsm::CartesianGrid::getScalarIndex
int getScalarIndex(const Vec3L &index) const
Definition: CartesianGrid.h:316
esys::lsm::CartesianGrid::insertRef
void insertRef(const Vec3 &pos, reference data)
Definition: CartesianGrid.h:443
esys::lsm::CartesianGrid::getCell
Cell & getCell(const Vec3 &pos)
Definition: CartesianGrid.h:356
esys::lsm::CartesianGrid::Cell::insertRef
void insertRef(reference value)
Definition: CartesianGrid.h:83
esys::lsm::CartesianGrid::CellIterator
TCellIterator< CartesianGrid *, Cell &, Cell > CellIterator
Definition: CartesianGrid.h:231
esys::lsm::ForwardIterator::next
reference next()
Definition: StlIterator.h:60
esys::lsm::Vec3L::X
const Long & X() const
Definition: Vec3L.h:99
esys::lsm::CartesianGrid::clear
void clear()
Definition: CartesianGrid.h:431
esys::lsm::CartesianGrid::ValueConstIterator::ValueConstIterator
ValueConstIterator(const ValueVector &v)
Definition: CartesianGrid.h:251
esys::lsm::CartesianGrid::Cell::PosValuePair::m_pos
Vec3 m_pos
Definition: CartesianGrid.h:71
esys::lsm::CartesianGrid::m_cellVector
CellVector m_cellVector
Definition: CartesianGrid.h:505
esys::lsm::CartesianGrid::Cell::getGrid
const CartesianGrid & getGrid() const
Definition: CartesianGrid.h:108
esys::lsm::CartesianGrid::ValueIterator::next
CartesianGrid::reference next()
Definition: CartesianGrid.h:242
Vec3::X
VEC3_INLINE double & X()
Definition: vec3.h:119
esys::lsm::BoundingBox
3D bounding box
Definition: BoundingBox.h:28
esys::lsm::CartesianGrid::const_reference
const value_type & const_reference
Definition: CartesianGrid.h:40
esys
Definition: CheckPointable.cpp:17
esys::lsm::CartesianGrid::Cell
Definition: CartesianGrid.h:44
esys::lsm::CartesianGrid::VecIndexIterator::hasNext
bool hasNext() const
Definition: CartesianGrid.h:169
esys::lsm::CartesianGrid::m_minIndex
Vec3L m_minIndex
Definition: CartesianGrid.h:503
esys::lsm::CartesianGrid::Cell::size
int size() const
Definition: CartesianGrid.h:130
esys::lsm::CartesianGrid::getCellIterator
CellConstIterator getCellIterator(const Vec3 &pos, double radius) const
Definition: CartesianGrid.h:371
esys::lsm::CartesianGrid::Cell::PosValuePair::getValue
const_reference getValue() const
Definition: CartesianGrid.h:60
CartesianGrid.h
Vec3::Z
VEC3_INLINE double & Z()
Definition: vec3.h:121
esys::lsm::CartesianGrid::Cell::setPos
void setPos(const Vec3 &pos)
Definition: CartesianGrid.h:93
NULL
#define NULL
Definition: t_list.h:17
esys::lsm::CartesianGrid< Tensor >::Pool
boost::object_pool< value_type > Pool
Definition: CartesianGrid.h:497
esys::lsm::BoundingBox::getMinPt
const Vec3 & getMinPt() const
Definition: BoundingBox.hpp:40
esys::lsm::CartesianGrid::getCellIterator
CellIterator getCellIterator()
Definition: CartesianGrid.h:391
esys::lsm::CartesianGrid::VecIndexIterator::m_maxIndex
Vec3L m_maxIndex
Definition: CartesianGrid.h:201
esys::lsm::CartesianGrid::TCellIterator::value_type
TmplCell value_type
Definition: CartesianGrid.h:209
esys::lsm::CartesianGrid::Cell::PosValuePair::getPos
const Vec3 & getPos() const
Definition: CartesianGrid.h:55
esys::lsm::CartesianGrid::Cell::clear
void clear()
Definition: CartesianGrid.h:138
esys::lsm::CartesianGrid::pointer
value_type * pointer
Definition: CartesianGrid.h:41
esys::lsm::CartesianGrid::Cell::m_pos
Vec3 m_pos
Definition: CartesianGrid.h:154
esys::lsm::CartesianGrid::TCellIterator::m_pGrid
TmplGridPointer m_pGrid
Definition: CartesianGrid.h:228
esys::lsm::CartesianGrid::Cell::getGrid
CartesianGrid & getGrid()
Definition: CartesianGrid.h:103
esys::lsm::CartesianGrid::getGridSpacing
double getGridSpacing() const
Definition: CartesianGrid.h:426
Vec3::Y
VEC3_INLINE double & Y()
Definition: vec3.h:120
esys::lsm::CartesianGrid::CartesianGrid
CartesianGrid(const BoundingBox &bBox, double gridSpacing)
Definition: CartesianGrid.h:261
esys::lsm::CartesianGrid::ValueConstIterator
Definition: CartesianGrid.h:249
esys::lsm::CartesianGrid::getDimensions
const Vec3L & getDimensions() const
Definition: CartesianGrid.h:274
esys::lsm::CartesianGrid::Cell::PosValuePair::getValue
reference getValue()
Definition: CartesianGrid.h:65
esys::lsm::Tensor
Definition: StressTensor.h:30
esys::lsm::CartesianGrid::Cell::getIterator
ConstIterator getIterator() const
Definition: CartesianGrid.h:143
esys::lsm::CartesianGrid::insert
void insert(const Vec3 &pos, const_reference data)
Definition: CartesianGrid.h:336
esys::lsm::CartesianGrid::ValueVector
std::vector< pointer > ValueVector
Definition: CartesianGrid.h:234
esys::lsm::CartesianGrid::getVecIndex
Vec3L getVecIndex(const Vec3 &pt) const
Definition: CartesianGrid.h:299
Vec3
Definition: vec3.h:47
esys::lsm::CartesianGrid::ValueIterator
Definition: CartesianGrid.h:236
esys::lsm::CartesianGrid::Cell::PosValueVector
std::vector< PosValuePair > PosValueVector
Definition: CartesianGrid.h:75
esys::lsm::CartesianGrid::getBBox
const BoundingBox & getBBox() const
Definition: CartesianGrid.h:279
esys::lsm::ForwardIterator
Definition: StlIterator.h:30
esys::lsm::Vec3L::Y
const Long & Y() const
Definition: Vec3L.h:109
esys::lsm::ForwardConstIterator
Definition: StlIterator.h:76
esys::lsm::CartesianGrid::VecIndexIterator::increment
void increment()
Definition: CartesianGrid.h:179
vec3.h
esys::lsm::CartesianGrid::getPos
Vec3 getPos(const Vec3L &index) const
Definition: CartesianGrid.h:306
esys::lsm::CartesianGrid::Cell::PosValuePair
Definition: CartesianGrid.h:47
esys::lsm::CartesianGrid::getScalarIndex
int getScalarIndex(const Vec3 &pt) const
Definition: CartesianGrid.h:321
esys::lsm::CartesianGrid::Cell::m_pointerVector
PosValueVector m_pointerVector
Definition: CartesianGrid.h:155
esys::lsm::CartesianGrid::size
size_t size() const
Definition: CartesianGrid.h:421
esys::lsm::CartesianGrid::m_dimensions
Vec3L m_dimensions
Definition: CartesianGrid.h:502
esys::lsm::CartesianGrid::getValueIterator
ValueIterator getValueIterator()
Definition: CartesianGrid.h:411
esys::lsm::Vec3L
Definition: Vec3L.h:29
esys::lsm::CartesianGrid::Cell::insertRef
void insertRef(const Vec3 &pos, reference value)
Definition: CartesianGrid.h:88
esys::lsm::CartesianGrid::getCellIterator
CellConstIterator getCellIterator(const Vec3 &pos) const
Definition: CartesianGrid.h:386
esys::lsm::Vec3L::max
Vec3L max(const Vec3L &vec) const
Definition: Vec3L.h:140
esys::lsm::CartesianGrid::Cell::getPos
const Vec3 & getPos() const
Definition: CartesianGrid.h:98
esys::lsm::BoundingBox::getSizes
Vec3 getSizes() const
Definition: BoundingBox.hpp:78
esys::lsm::CartesianGrid::VecIndexIterator::current
const Vec3L & current()
Definition: CartesianGrid.h:174
esys::lsm::CartesianGrid::m_gridSpacing
double m_gridSpacing
Definition: CartesianGrid.h:501
esys::lsm::CartesianGrid::Cell::ConstIterator
ForwardConstIterator< PosValueVector > ConstIterator
Definition: CartesianGrid.h:77
esys::lsm::CartesianGrid::m_valueVector
ValueVector m_valueVector
Definition: CartesianGrid.h:507
esys::lsm::CartesianGrid::ValueIterator::ValueIterator
ValueIterator(ValueVector &v)
Definition: CartesianGrid.h:238
esys::lsm::CartesianGrid::VecIndexIterator::VecIndexIterator
VecIndexIterator(const Vec3L &minIdx, const Vec3L &maxIdx)
Definition: CartesianGrid.h:162
esys::lsm::CartesianGrid::getMinVecIndex
const Vec3L & getMinVecIndex() const
Definition: CartesianGrid.h:326
esys::lsm::CartesianGrid::CellConstIterator
TCellIterator< const CartesianGrid *, const Cell &, Cell > CellConstIterator
Definition: CartesianGrid.h:232
esys::lsm::CartesianGrid::initialise
void initialise(const BoundingBox &bBox, double gridSpacing)
Definition: CartesianGrid.h:449
esys::lsm::CartesianGrid::Cell::setGrid
void setGrid(CartesianGrid &grid)
Definition: CartesianGrid.h:113
esys::lsm::CartesianGrid::VecIndexIterator
Definition: CartesianGrid.h:160
esys::lsm::CartesianGrid::Cell::Iterator
ForwardIterator< PosValueVector > Iterator
Definition: CartesianGrid.h:76
esys::lsm::CartesianGrid::Cell::m_pGrid
CartesianGrid * m_pGrid
Definition: CartesianGrid.h:156
esys::lsm::CartesianGrid::TCellIterator::TCellIterator
TCellIterator(const Vec3L &minIdx, const Vec3L &maxIdx, TmplGridPointer pGrid)
Definition: CartesianGrid.h:211
BoundingBox.h
esys::lsm::CartesianGrid::getCell
const Cell & getCell(const Vec3 &pos) const
Definition: CartesianGrid.h:351