Chombo + EB
3.0
|
IntVectSet implementation based on tree representation. More...
#include <TreeIntVectSet.H>
Public Member Functions | |
TreeIntVectSet () | |
TreeIntVectSet (const Box &) | |
TreeIntVectSet (const TreeIntVectSet &a_sivs) | |
~TreeIntVectSet () | |
void | define (const Box &) |
void | define (const TreeIntVectSet &a_sivs) |
void | swap (TreeIntVectSet &a_other) |
trade internals of two objects More... | |
TreeIntVectSet & | operator= (const TreeIntVectSet &a_sivs) |
TreeIntVectSet & | operator|= (const TreeIntVectSet &a_sivs) |
or More... | |
TreeIntVectSet & | operator|= (const IntVect &a_iv) |
TreeIntVectSet & | operator|= (const Box &a_box) |
TreeIntVectSet & | operator &= (const TreeIntVectSet &s_sivs) |
and More... | |
TreeIntVectSet & | operator &= (const Box &a_box) |
and More... | |
TreeIntVectSet & | operator &= (const ProblemDomain &a_domain) |
and More... | |
TreeIntVectSet & | operator-= (const TreeIntVectSet &a_sivs) |
not More... | |
TreeIntVectSet & | operator-= (const IntVect &a_iv) |
not More... | |
TreeIntVectSet & | operator-= (const Box &a_box) |
not More... | |
bool | operator== (const TreeIntVectSet &lhs) const |
returns true if More... | |
bool | operator< (const TreeIntVectSet &a_sivs) const |
Vector< Box > | createBoxes () const |
Returns Vector<Box> representation of this IntVectSet. More... | |
void | createBoxes (Vector< Box > &boxes, int &size) const |
Returns Vector<Box> representation of this IntVectSet. More... | |
bool | contains (const IntVect &iv) const |
bool | contains (const Box &box) const |
TreeIntVectSet | chop (int idir, int chop_pnt) |
void | chop (int dir, int chop_pnt, TreeIntVectSet &a_hi) |
void | grow (int igrow) |
void | grow (int idir, int igrow) |
void | growHi () |
void | growHi (int a_dir) |
void | refine (int iref=2) |
fast if iref is power of 2 More... | |
void | coarsen (int iref=2) |
fast if iref is power of 2 More... | |
void | shift (const IntVect &iv) |
slow operation More... | |
void | clear () |
void | nestingRegion (int a_radius, const Box &a_domain, int granularity) |
void | nestingRegion (int a_radius, const ProblemDomain &a_domain, int granularity) |
const Box & | minBox () const |
bool | isEmpty () const |
int | numPts () const |
void | compact () const |
void | recalcMinBox () const |
Linearization routines | |
int | linearSize () const |
void | linearIn (const void *const inBuf) |
void | linearOut (void *const a_outBuf) const |
Private Member Functions | |
void | trimCoarsen (int icoarse) |
void | growTree () |
void | remove (const Box &box, TreeIntVectSet *resdiual) |
void | transfer (TreeNode &node, const Box &a_box) |
Static Private Member Functions | |
static void | quadrantBox (const Box &inputBox, int quadrant, Box &outputQuadrant) |
static void | clearTree (TreeNode &tree) |
static void | expandNode (TreeNode &node) |
static int | oppositeQuadrant (int index) |
static bool | nextIntVect (const Box &box, IntVect &iv) |
static void | nextNode (int ¤tDepth) |
static void | cloneNode (const TreeNode &src, TreeNode &dest) |
Private Attributes | |
TreeNode | m_tree |
Box | m_minBox |
Box | m_spanBox |
int | m_depth |
Static Private Attributes | |
static Pool | treeNodePoolObject |
static Pool * | treeNodePool |
static Vector< int > | index |
static Vector< int > | bufferOffset |
static Vector< TreeNode * > | parents |
static Vector< Box > | boxes |
static TreeNode | full |
Friends | |
class | TreeIntVectSetIterator |
class | MeshRefine |
struct | Flag |
class | IntVectSet |
void | dumpTree (const TreeIntVectSet *set) |
IntVectSet implementation based on tree representation.
For explanations of these functions please look at IntVectSet class when the documentation doesn't appear here.
Further details of how non-recursive TreeNode design works:
(for a 2D tree)
(m_tree) + – 0
(a)+ - 0 1 1 + 1 <---—you are here
+ - + - 0 0 1 0 1 0 0
for the node indicated, the 'index' vector would contain
index=[ 0 1 3 ...............] parents=[&m_tree &a ..................]
or directly refered to as m_tree.nodes[1].nodes[3]
the tree indicates a covering of an index space in either 1 or 0. 1 is stored in the tree by pointing at the static 'full' data member, 0 is stored as a 0.
every 'nodes' member of a TreeNode object can be either
0, &full, or a pointer .
The interpretation of the tree depends on what m_spanBox is. nodes[i] indicates whether the i'th quadrant of the parent Box is full, empty, or needs to be parsed deeper.
|
inline |
References TreeIntVectSetIterator::m_depth.
|
inline |
References TreeIntVectSetIterator::define().
|
inline |
References TreeIntVectSetIterator::define().
|
inline |
void TreeIntVectSet::define | ( | const Box & | ) |
void TreeIntVectSet::define | ( | const TreeIntVectSet & | a_sivs | ) |
void TreeIntVectSet::swap | ( | TreeIntVectSet & | a_other | ) |
trade internals of two objects
TreeIntVectSet& TreeIntVectSet::operator= | ( | const TreeIntVectSet & | a_sivs | ) |
TreeIntVectSet& TreeIntVectSet::operator|= | ( | const TreeIntVectSet & | a_sivs | ) |
or
|
inline |
TreeIntVectSet& TreeIntVectSet::operator|= | ( | const Box & | a_box | ) |
TreeIntVectSet& TreeIntVectSet::operator&= | ( | const TreeIntVectSet & | s_sivs | ) |
and
TreeIntVectSet& TreeIntVectSet::operator&= | ( | const Box & | a_box | ) |
and
TreeIntVectSet& TreeIntVectSet::operator&= | ( | const ProblemDomain & | a_domain | ) |
and
TreeIntVectSet& TreeIntVectSet::operator-= | ( | const TreeIntVectSet & | a_sivs | ) |
not
|
inline |
not
TreeIntVectSet& TreeIntVectSet::operator-= | ( | const Box & | a_box | ) |
not
bool TreeIntVectSet::operator== | ( | const TreeIntVectSet & | lhs | ) | const |
returns true if
bool TreeIntVectSet::operator< | ( | const TreeIntVectSet & | a_sivs | ) | const |
Primary sorting criterion: numPts(). Secondary sorting criterion: lexigraphical ordering of the IntVects, taken in the order traversed by TreeIntVectSetIterator. In a total tie, returns false.
Returns Vector<Box> representation of this IntVectSet.
Returns Vector<Box> representation of this IntVectSet.
Returns Vector<Box> representation of this IntVectSet.
Returns Vector<Box> representation of this IntVectSet.
bool TreeIntVectSet::contains | ( | const IntVect & | iv | ) | const |
bool TreeIntVectSet::contains | ( | const Box & | box | ) | const |
TreeIntVectSet TreeIntVectSet::chop | ( | int | idir, |
int | chop_pnt | ||
) |
somewhat expensive, but shouldn't be ;-)
void TreeIntVectSet::chop | ( | int | dir, |
int | chop_pnt, | ||
TreeIntVectSet & | a_hi | ||
) |
a proper faster chop function that does it all in-place and saves the giant memory cost.
void TreeIntVectSet::grow | ( | int | igrow | ) |
void TreeIntVectSet::grow | ( | int | idir, |
int | igrow | ||
) |
expensive
void TreeIntVectSet::growHi | ( | ) |
void TreeIntVectSet::growHi | ( | int | a_dir | ) |
void TreeIntVectSet::refine | ( | int | iref = 2 | ) |
fast if iref is power of 2
fast if iref is power of 2
void TreeIntVectSet::coarsen | ( | int | iref = 2 | ) |
fast if iref is power of 2
fast if iref is power of 2
void TreeIntVectSet::shift | ( | const IntVect & | iv | ) |
slow operation
void TreeIntVectSet::clear | ( | ) |
void TreeIntVectSet::nestingRegion | ( | int | a_radius, |
const Box & | a_domain, | ||
int | granularity | ||
) |
void TreeIntVectSet::nestingRegion | ( | int | a_radius, |
const ProblemDomain & | a_domain, | ||
int | granularity | ||
) |
|
inline |
bool TreeIntVectSet::isEmpty | ( | ) | const |
int TreeIntVectSet::numPts | ( | ) | const |
void TreeIntVectSet::compact | ( | ) | const |
void TreeIntVectSet::recalcMinBox | ( | ) | const |
int TreeIntVectSet::linearSize | ( | ) | const |
void TreeIntVectSet::linearIn | ( | const void *const | inBuf | ) |
void TreeIntVectSet::linearOut | ( | void *const | a_outBuf | ) | const |
|
private |
|
staticprivate |
|
staticprivate |
|
staticprivate |
|
private |
|
private |
|
private |
|
staticprivate |
|
inlinestaticprivate |
References TreeIntVectSetIterator::index.
|
staticprivate |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
|
staticprivate |
|
staticprivate |
Referenced by TreeIntVectSetIterator::define().
|
staticprivate |
|
staticprivate |
|
staticprivate |