11 #ifndef _TREEINTVECTSET_H_
12 #define _TREEINTVECTSET_H_
16 #include "NamespaceHeader.H"
28 #define TIVS_NODESIZE 2
29 #elif (CH_SPACEDIM==2)
30 #define TIVS_NODESIZE 4
31 #elif (CH_SPACEDIM==3)
32 #define TIVS_NODESIZE 8
33 #elif (CH_SPACEDIM==4)
34 #define TIVS_NODESIZE 16
35 #elif (CH_SPACEDIM==5)
36 #define TIVS_NODESIZE 32
37 #elif (CH_SPACEDIM==6)
38 #define TIVS_NODESIZE 64
41 #error TIVS_NODESIZE is only defined for 1D, 2D, 3D, 4D, 5D, or 6D
192 void grow(
int igrow);
198 void grow(
int idir,
int igrow);
218 void refine(
int iref = 2);
262 void linearIn(
const void*
const inBuf);
264 void linearOut(
void*
const a_outBuf)
const;
305 static void nextNode(
int& currentDepth);
306 static void cloneNode(
const TreeNode& src, TreeNode& dest);
398 return *
this|=
Box(iv, iv);
404 return *
this-=
Box(iv, iv);
457 while (
index[depth] == TIVS_NODESIZE)
465 #include "NamespaceFooter.H"
466 #endif // TREEINTVECTSET_H
friend void dumpTree(const TreeIntVectSet *set)
static Vector< TreeNode * > parents
Definition: TreeIntVectSet.H:312
bool ok() const
Definition: TreeIntVectSet.H:384
TreeIntVectSet & operator=(const TreeIntVectSet &a_sivs)
void swap(TreeIntVectSet &a_other)
trade internals of two objects
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:130
TreeIntVectSet & operator-=(const TreeIntVectSet &a_sivs)
not
Vector< Box > createBoxes() const
Returns Vector<Box> representation of this IntVectSet.
void dumpTree(const TreeIntVectSet *set)
TreeIntVectSetIterator()
Definition: TreeIntVectSet.H:351
Vector< const TreeIntVectSet::TreeNode * > nodes
Definition: TreeIntVectSet.H:339
bool contains(const IntVect &iv) const
TreeNode m_tree
Definition: TreeIntVectSet.H:285
static Pool treeNodePoolObject
Definition: TreeIntVectSet.H:292
Vector< Box > boxes
Definition: TreeIntVectSet.H:340
IntVectSet implementation based on tree representation.
Definition: TreeIntVectSet.H:93
const Box & minBox() const
Definition: TreeIntVectSet.H:448
void transfer(TreeNode &node, const Box &a_box)
static void clearTree(TreeNode &tree)
static Vector< int > bufferOffset
Definition: TreeIntVectSet.H:311
static Vector< int > index
Definition: TreeIntVectSet.H:311
Definition: EBInterface.H:45
void resize(unsigned int isize)
Definition: Vector.H:323
void trimCoarsen(int icoarse)
Box m_minBox
Definition: TreeIntVectSet.H:286
void shift(const IntVect &iv)
slow operation
void clear()
Definition: TreeIntVectSet.H:362
void define(const TreeIntVectSet &ivs)
Definition: TreeIntVectSet.H:369
const TreeIntVectSet * m_ivs
Definition: TreeIntVectSet.H:338
static void cloneNode(const TreeNode &src, TreeNode &dest)
Definition: TreeIntVectSet.H:325
IntVect m_current
Definition: TreeIntVectSet.H:343
int m_depth
Definition: TreeIntVectSet.H:342
Pool is a class to optimize memory allocation.
Definition: Pool.H:63
IndexTM< T, N > max(const IndexTM< T, N > &a_p1, const IndexTM< T, N > &a_p2)
Definition: IndexTMI.H:403
friend struct Flag
Definition: TreeIntVectSet.H:319
static bool nextIntVect(const Box &box, IntVect &iv)
void linearIn(const void *const inBuf)
static void nextNode(int ¤tDepth)
Definition: TreeIntVectSet.H:453
int m_depth
Definition: TreeIntVectSet.H:287
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:465
void nestingRegion(int a_radius, const Box &a_domain, int granularity)
static Pool * treeNodePool
Definition: TreeIntVectSet.H:293
void recalcMinBox() const
Box m_spanBox
Definition: TreeIntVectSet.H:286
const IntVect & operator()() const
Definition: TreeIntVectSet.H:414
static void expandNode(TreeNode &node)
bool operator==(const TreeIntVectSet &lhs) const
returns true if
static void quadrantBox(const Box &inputBox, int quadrant, Box &outputQuadrant)
void refine(int iref=2)
fast if iref is power of 2
An integer Vector in SpaceDim-dimensional space.
Definition: CHArray.H:42
TreeIntVectSet & operator|=(const TreeIntVectSet &a_sivs)
or
size_t size() const
Definition: Vector.H:177
static int oppositeQuadrant(int index)
Vector< int > index
Definition: TreeIntVectSet.H:341
TreeIntVectSet chop(int idir, int chop_pnt)
static Vector< Box > boxes
Definition: TreeIntVectSet.H:313
TreeIntVectSet & operator&=(const TreeIntVectSet &s_sivs)
and
Class which manages grid generation.
Definition: MeshRefine.H:26
void linearOut(void *const a_outBuf) const
void operator++()
Definition: TreeIntVectSet.H:408
void end()
Definition: TreeIntVectSet.H:390
static TreeNode full
Definition: TreeIntVectSet.H:318
void coarsen(int iref=2)
fast if iref is power of 2
~TreeIntVectSet()
Definition: TreeIntVectSet.H:422
bool operator<(const TreeIntVectSet &a_sivs) const
TreeIntVectSet()
Definition: TreeIntVectSet.H:439