| 
    Chombo + EB
    3.2
    
   | 
 
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 int | index [24] | 
| static int | otherIndex [24] | 
| static TreeNode * | parents [24] | 
| static TreeNode * | P1 [24] | 
| static const TreeNode * | otherParents [24] | 
| static const TreeNode * | P2 [24] | 
| static Box | boxes [24] | 
| static Box | otherBoxes [24] | 
| 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.
Referenced by operator<<().
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 | 
      
  | 
  staticprivate | 
      
  | 
  staticprivate | 
      
  | 
  staticprivate | 
      
  | 
  staticprivate | 
      
  | 
  staticprivate | 
      
  | 
  staticprivate | 
      
  | 
  staticprivate | 
      
  | 
  staticprivate | 
 1.8.13