Chombo + EB + MF
3.2
|
Dense representation implementation of IntVectSet class. More...
#include <DenseIntVectSet.H>
Public Member Functions | |
DenseIntVectSet () | |
DenseIntVectSet (const Box &a_domain, bool init=true) | |
DenseIntVectSet & | operator-= (const Box &box) |
DenseIntVectSet & | operator-= (const IntVect &intvect) |
DenseIntVectSet & | operator-= (const DenseIntVectSet &ivs) |
DenseIntVectSet & | operator &= (const Box &box) |
DenseIntVectSet & | operator &= (const ProblemDomain &domain) |
DenseIntVectSet & | operator|= (const IntVect &intvect) |
DenseIntVectSet & | operator|= (const Box &b) |
DenseIntVectSet & | operator|= (const DenseIntVectSet &b) |
DenseIntVectSet & | operator &= (const DenseIntVectSet &ivs) |
void | shift (const IntVect &iv) |
Shift every cell in the set by the input. Fast. More... | |
bool | operator[] (const IntVect &index) const |
O(1) time inquiry of containment. More... | |
bool | contains (const Box &box) const |
O(1) time inquiry of containment. More... | |
void | coarsen (int iref) |
void | refine (int iref) |
void | grow (int igrow) |
void | grow (int idir, int igrow) |
void | growHi () |
void | growHi (const int a_dir) |
void | makeEmptyBits () |
DenseIntVectSet | chop (int dir, int chop_pnt) |
const Box & | box () const |
void | nestingRegion (int a_radius, const Box &a_domain) |
void | nestingRegion (int a_radius, const ProblemDomain &a_domain) |
bool | isEmpty () const |
cheaper than numPts()==0 by wide margin More... | |
bool | isFull () const |
cheaper than numPts()==box().numPts(), by significant margin More... | |
bool | isHighEmpty () const |
bool | isHighEmpty (const int a_dir) const |
int | numPts () const |
bool | operator== (const DenseIntVectSet &a_lhs) const |
bool | operator< (const DenseIntVectSet &a_ivs) const |
Vector< Box > | createBoxes () const |
void | compact () const |
void | recalcMinBox () const |
const Box & | mBox () const |
Linearization routines | |
int | linearSize () const |
void | linearIn (const void *const inBuf) |
void | linearOut (void *const a_outBuf) const |
Private Member Functions | |
void | grow (const IntVect &iv) |
DenseIntVectSet & | intersect (const DenseIntVectSet &rhs) |
bool | isHighEmpty (const int a_dirS, const int a_dirE) const |
Private Attributes | |
Box | m_domain |
BitSet | m_bits |
Box | m_minBox |
Friends | |
class | DenseIntVectSetIterator |
Dense representation implementation of IntVectSet class.
Performance-oriented class that reproduces most of the functionality of IntVectSet. This object stores a dense representation of an IntVectSet over the box of definition
Storage is performed with a BitSet. This stores 0 or 1 on a per-bit basis for each location in the IntVectSet.
For an explanation of undocumented functions look at IntVectSet
|
inline |
References box(), chop(), coarsen(), compact(), contains(), createBoxes(), grow(), growHi(), isEmpty(), isFull(), isHighEmpty(), makeEmptyBits(), nestingRegion(), numPts(), operator &=(), operator-=(), operator<(), operator==(), operator[](), operator|=(), recalcMinBox(), refine(), and shift().
DenseIntVectSet::DenseIntVectSet | ( | const Box & | a_domain, |
bool | init = true |
||
) |
you can either have the domain begin all true, or all false
DenseIntVectSet& DenseIntVectSet::operator-= | ( | const Box & | box | ) |
make this set the complement of itself and the input
Referenced by DenseIntVectSet().
|
inline |
make this set the complement of itself and the input
References Box::contains(), Box::index(), m_bits, m_domain, and BitSet::setFalse().
DenseIntVectSet& DenseIntVectSet::operator-= | ( | const DenseIntVectSet & | ivs | ) |
make this set the complement of itself and the input
DenseIntVectSet& DenseIntVectSet::operator&= | ( | const Box & | box | ) |
make this set the intersection of itself and the input
Referenced by DenseIntVectSet().
DenseIntVectSet& DenseIntVectSet::operator&= | ( | const ProblemDomain & | domain | ) |
make this set the intersection of itself and the input
DenseIntVectSet& DenseIntVectSet::operator|= | ( | const IntVect & | intvect | ) |
make this set the union of itself and the input. intvect MUST be within the domain of of the DenseIntVectSet or this will throw an error
Referenced by DenseIntVectSet().
DenseIntVectSet& DenseIntVectSet::operator|= | ( | const Box & | b | ) |
make this set the union of itself and the input. b MUST be within the domain of of the DenseIntVectSet or this will throw an error
DenseIntVectSet& DenseIntVectSet::operator|= | ( | const DenseIntVectSet & | b | ) |
make this set the union of itself and the input. resulting DenseIntVectSet has domain of the minBox holding both oeprator and operand
DenseIntVectSet& DenseIntVectSet::operator&= | ( | const DenseIntVectSet & | ivs | ) |
make this set the intersection of itself and the input
|
inline |
Shift every cell in the set by the input. Fast.
Shift every cell in the set by the input.
References m_domain, m_minBox, and Box::shift().
Referenced by DenseIntVectSet().
bool DenseIntVectSet::operator[] | ( | const IntVect & | index | ) | const |
O(1) time inquiry of containment.
Referenced by DenseIntVectSet().
bool DenseIntVectSet::contains | ( | const Box & | box | ) | const |
O(1) time inquiry of containment.
returns 'true' if the entire set of points specified by the box 'b' is a member of the IntvectSet
Referenced by DenseIntVectSet().
void DenseIntVectSet::coarsen | ( | int | iref | ) |
coarsen the set by the input
Referenced by DenseIntVectSet().
void DenseIntVectSet::refine | ( | int | iref | ) |
refine the set by the input
Referenced by DenseIntVectSet().
void DenseIntVectSet::grow | ( | int | igrow | ) |
grow the set by the input
Referenced by DenseIntVectSet(), and mBox().
void DenseIntVectSet::grow | ( | int | idir, |
int | igrow | ||
) |
grow the set by the input
void DenseIntVectSet::growHi | ( | ) |
Referenced by DenseIntVectSet().
void DenseIntVectSet::growHi | ( | const int | a_dir | ) |
void DenseIntVectSet::makeEmptyBits | ( | ) |
Make empty by setting all bits to false
Referenced by DenseIntVectSet().
DenseIntVectSet DenseIntVectSet::chop | ( | int | dir, |
int | chop_pnt | ||
) |
Chop the DenseIntVectSet at the chop_pnt in the dir direction Returns one DenseIntVectSet and modifies the object DenseIntVectSet. The union of the two is the original IntVectSet. The modified DenseIntVectSet is the low end, the returned DenseIntvectSet is the high end.
Referenced by DenseIntVectSet().
|
inline |
References m_domain.
Referenced by DenseIntVectSet().
void DenseIntVectSet::nestingRegion | ( | int | a_radius, |
const Box & | a_domain | ||
) |
Referenced by DenseIntVectSet().
void DenseIntVectSet::nestingRegion | ( | int | a_radius, |
const ProblemDomain & | a_domain | ||
) |
bool DenseIntVectSet::isEmpty | ( | ) | const |
cheaper than numPts()==0 by wide margin
return true if the set has no points
Referenced by DenseIntVectSet().
bool DenseIntVectSet::isFull | ( | ) | const |
cheaper than numPts()==box().numPts(), by significant margin
return true if the set consists of a set of a full box
Referenced by DenseIntVectSet().
bool DenseIntVectSet::isHighEmpty | ( | ) | const |
Return true if all bits on the high hyperfaces are zero
Referenced by DenseIntVectSet(), and mBox().
bool DenseIntVectSet::isHighEmpty | ( | const int | a_dir | ) | const |
Return true if all bits on the high hyperface are zero
int DenseIntVectSet::numPts | ( | ) | const |
return the number of points in the set
Referenced by DenseIntVectSet().
bool DenseIntVectSet::operator== | ( | const DenseIntVectSet & | a_lhs | ) | const |
Referenced by DenseIntVectSet().
bool DenseIntVectSet::operator< | ( | const DenseIntVectSet & | a_ivs | ) | const |
Primary sorting criterion: Box::operator<() applied to m_domain. Secondary sorting criterion: BitSet::operator<() applied to m_bits.
Referenced by DenseIntVectSet().
turn DenseIntVectSet into a Vector of Boxes
Referenced by DenseIntVectSet().
void DenseIntVectSet::compact | ( | ) | const |
set object to its minimum representation. changes data, but is a logically const operation
Referenced by DenseIntVectSet().
void DenseIntVectSet::recalcMinBox | ( | ) | const |
Referenced by DenseIntVectSet().
|
inline |
References grow(), intersect(), isHighEmpty(), linearIn(), linearOut(), linearSize(), and m_minBox.
int DenseIntVectSet::linearSize | ( | ) | const |
Referenced by mBox().
void DenseIntVectSet::linearIn | ( | const void *const | inBuf | ) |
Referenced by mBox().
void DenseIntVectSet::linearOut | ( | void *const | a_outBuf | ) | const |
Referenced by mBox().
|
private |
|
private |
Referenced by mBox().
|
private |
|
friend |
|
private |
Referenced by box(), operator-=(), DenseIntVectSetIterator::setStride(), and shift().
|
private |
Referenced by DenseIntVectSetIterator::define(), and operator-=().