|
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 0for 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 |
1.8.13