14 #ifndef ESYS_LSMCARTESIANGRID_H
15 #define ESYS_LSMCARTESIANGRID_H
27 #include <boost/pool/object_pool.hpp>
28 #include <boost/shared_ptr.hpp>
34 template <
typename TmplValue>
205 template <
typename TmplGr
idPo
inter,
typename TmplCellRef,
typename TmplCell>
302 const Vec3L index =
Vec3L(
int(nearbyint(relPos.
X())), int(nearbyint(relPos.
Y())), int(nearbyint(relPos.
Z())));
434 while (cellIt.hasNext())
436 cellIt.next().clear();
455 m_dimensions =
Vec3L(
int(nearbyint(dims[0])),
int(nearbyint(dims[1])),
int(nearbyint(dims[2])));
474 const Vec3L index(i, j, k);
477 if ((&(
getCell(pos))) == (&(cell)))
484 std::stringstream sStream;
486 <<
"Couldn't set grid location for cell ("
487 << i <<
"," << j <<
"," << k <<
"), pos = " << pos;
488 throw std::runtime_error(sStream.str());
497 typedef boost::object_pool<value_type>
Pool;
Iterator getIterator()
Definition: CartesianGrid.h:148
const Cell & getCell(const Vec3 &pos) const
Definition: CartesianGrid.h:351
const Long & Y() const
Definition: Vec3L.h:109
Definition: CartesianGrid.h:43
void insertRef(const Vec3 &pos, reference data)
Definition: CartesianGrid.h:443
reference next()
Definition: CartesianGrid.h:222
Definition: StlIterator.h:26
reference next()
Definition: StlIterator.h:112
void clear()
Definition: CartesianGrid.h:138
Definition: CartesianGrid.h:46
TCellIterator< const CartesianGrid *, const Cell &, Cell > CellConstIterator
Definition: CartesianGrid.h:232
Cell()
Definition: CartesianGrid.h:79
reference getValue()
Definition: CartesianGrid.h:65
Vec3L getVecIndex(const Vec3 &pt) const
Definition: CartesianGrid.h:299
ValueIterator getValueIterator()
Definition: CartesianGrid.h:411
CartesianGrid::const_reference next()
Definition: CartesianGrid.h:255
const Vec3L & getMinVecIndex() const
Definition: CartesianGrid.h:326
VEC3_INLINE double & Z()
Definition: vec3.h:121
boost::shared_ptr< Pool > PoolPtr
Definition: CartesianGrid.h:498
Definition: CartesianGrid.h:159
CartesianGrid::reference next()
Definition: CartesianGrid.h:242
TCellIterator< CartesianGrid *, Cell &, Cell > CellIterator
Definition: CartesianGrid.h:231
VEC3_INLINE double & Y()
Definition: vec3.h:120
ValueIterator(ValueVector &v)
Definition: CartesianGrid.h:238
Cell & getCell(int scalarIndex)
Definition: CartesianGrid.h:346
value_type & reference
Definition: CartesianGrid.h:39
bool hasNext() const
Definition: CartesianGrid.h:217
Vec3L next()
Definition: CartesianGrid.h:192
int getScalarIndex(const Vec3 &pt) const
Definition: CartesianGrid.h:321
const Long & Z() const
Definition: Vec3L.h:119
Vec3L max(const Vec3L &vec) const
Definition: Vec3L.h:140
Definition: CheckPointable.cpp:16
const Cell & getCell(int scalarIndex) const
Definition: CartesianGrid.h:341
reference next()
Definition: StlIterator.h:60
std::vector< Cell > CellVector
Definition: CartesianGrid.h:496
Vec3L m_maxIndex
Definition: CartesianGrid.h:504
3D bounding box
Definition: BoundingBox.h:27
CellConstIterator getCellIterator() const
Definition: CartesianGrid.h:401
BoundingBox getBox() const
Definition: CartesianGrid.h:118
CellIterator getCellIterator(const Vec3 &pos, double radius)
Definition: CartesianGrid.h:361
const Vec3L & current()
Definition: CartesianGrid.h:174
TmplCellRef reference
Definition: CartesianGrid.h:210
ForwardIterator< PosValueVector > Iterator
Definition: CartesianGrid.h:76
TCellIterator(const Vec3L &minIdx, const Vec3L &maxIdx, TmplGridPointer pGrid)
Definition: CartesianGrid.h:211
CellConstIterator getCellIterator(const Vec3 &pos) const
Definition: CartesianGrid.h:386
const Vec3 & getPos() const
Definition: CartesianGrid.h:98
CellIterator getCellIterator()
Definition: CartesianGrid.h:391
void insertRef(reference value)
Definition: CartesianGrid.h:83
std::vector< PosValuePair > PosValueVector
Definition: CartesianGrid.h:75
value_type * pointer
Definition: CartesianGrid.h:41
const value_type & const_reference
Definition: CartesianGrid.h:40
const Vec3L & getDimensions() const
Definition: CartesianGrid.h:274
ValueConstIterator(const ValueVector &v)
Definition: CartesianGrid.h:251
Vec3 getSizes() const
Definition: BoundingBox.hpp:78
#define NULL
Definition: t_list.h:17
void increment()
Definition: CartesianGrid.h:179
ConstIterator getIterator() const
Definition: CartesianGrid.h:143
Definition: CartesianGrid.h:235
PosValuePair(const Vec3 &pos, reference value)
Definition: CartesianGrid.h:49
Definition: StlIterator.h:29
const BoundingBox & getBBox() const
Definition: CartesianGrid.h:279
ForwardConstIterator< PosValueVector > ConstIterator
Definition: CartesianGrid.h:77
const Long & X() const
Definition: Vec3L.h:99
const Vec3L & getMaxVecIndex() const
Definition: CartesianGrid.h:331
Vec3L m_minIndex
Definition: CartesianGrid.h:503
const_reference getValue() const
Definition: CartesianGrid.h:60
CellVector m_cellVector
Definition: CartesianGrid.h:505
Definition: CartesianGrid.h:35
Vec3L m_minIndex
Definition: CartesianGrid.h:200
void insert(const Vec3 &pos, const_reference data)
Definition: CartesianGrid.h:336
CartesianGrid & getGrid()
Definition: CartesianGrid.h:103
BoundingBox m_bBox
Definition: CartesianGrid.h:500
Vec3L m_dimensions
Definition: CartesianGrid.h:502
pointer m_pValue
Definition: CartesianGrid.h:72
bool hasNext() const
Definition: CartesianGrid.h:169
double m_gridSpacing
Definition: CartesianGrid.h:501
Vec3 getPos(const Vec3L &index) const
Definition: CartesianGrid.h:306
ValueVector m_valueVector
Definition: CartesianGrid.h:507
const Vec3 & getPos() const
Definition: CartesianGrid.h:55
CartesianGrid(const BoundingBox &bBox, double gridSpacing)
Definition: CartesianGrid.h:261
VecIndexIterator m_idxIt
Definition: CartesianGrid.h:227
VEC3_INLINE double & X()
Definition: vec3.h:119
void setPos(const Vec3 &pos)
Definition: CartesianGrid.h:93
const Vec3 & getMinPt() const
Definition: CartesianGrid.h:284
Vec3 m_pos
Definition: CartesianGrid.h:154
boost::object_pool< value_type > Pool
Definition: CartesianGrid.h:497
TmplGridPointer m_pGrid
Definition: CartesianGrid.h:228
Definition: CartesianGrid.h:206
const Vec3 & getMinPt() const
Definition: BoundingBox.hpp:40
CellIterator getCellIterator(const Vec3 &pos)
Definition: CartesianGrid.h:381
std::vector< pointer > ValueVector
Definition: CartesianGrid.h:234
TmplValue value_type
Definition: CartesianGrid.h:38
void setGrid(CartesianGrid &grid)
Definition: CartesianGrid.h:113
int size() const
Definition: CartesianGrid.h:130
CellConstIterator getCellIterator(const Vec3 &pos, double radius) const
Definition: CartesianGrid.h:371
CartesianGrid * m_pGrid
Definition: CartesianGrid.h:156
double getGridSpacing() const
Definition: CartesianGrid.h:426
Vec3L m_maxIndex
Definition: CartesianGrid.h:201
int getScalarIndex(const Vec3L &index) const
Definition: CartesianGrid.h:316
void insertRef(const Vec3 &pos, reference value)
Definition: CartesianGrid.h:88
size_t size() const
Definition: CartesianGrid.h:421
Vec3 m_pos
Definition: CartesianGrid.h:71
VecIndexIterator(const Vec3L &minIdx, const Vec3L &maxIdx)
Definition: CartesianGrid.h:162
const CartesianGrid & getGrid() const
Definition: CartesianGrid.h:108
void clear()
Definition: CartesianGrid.h:431
TmplCell value_type
Definition: CartesianGrid.h:209
Definition: CartesianGrid.h:248
Cell & getCell(const Vec3 &pos)
Definition: CartesianGrid.h:356
PoolPtr m_valuePoolPtr
Definition: CartesianGrid.h:506
ValueConstIterator getValueIterator() const
Definition: CartesianGrid.h:416
Vec3L m_index
Definition: CartesianGrid.h:202
void initialise(const BoundingBox &bBox, double gridSpacing)
Definition: CartesianGrid.h:449
int getScalarIndex(int xIdx, int yIdx, int zIdx) const
Definition: CartesianGrid.h:289
PosValueVector m_pointerVector
Definition: CartesianGrid.h:155