Chombo + EB  3.2
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
BaseEBCellFAB< T > Class Template Reference

Array defined at the VolIndexs of an Box in an EBIS. More...

#include <BaseEBCellFAB.H>

Inheritance diagram for BaseEBCellFAB< T >:
Inheritance graph
[legend]

Public Member Functions

int numDataTypes () const
 for AggStencil More...
 
int dataType (const BaseIndex &a_baseInd) const
 for AggStencil More...
 
long offset (const BaseIndex &a_baseInd, const int a_ivar) const
 for AggStencil More...
 
T * dataPtr (int a_dataType, int a_ivar)
 for AggStencil More...
 
const T * dataPtr (int a_dataType, int a_ivar) const
 for AggStencil More...
 
 BaseEBCellFAB ()
 
 BaseEBCellFAB (const EBISBox &a_ebisBox, const Box &a_region, int a_nVar)
 
virtual void define (const EBISBox &a_ebisBox, const Box &a_region, int a_nVar)
 
 BaseEBCellFAB (const Interval &a_comps, BaseEBCellFAB< T > &a_original)
 aliasing copy-ish constructor. Used when the 'alias' function is invoked on LevelData More...
 
virtual ~BaseEBCellFAB ()
 
void clear ()
 
void setVal (const T &value)
 
void setVal (int ivar, const T &value)
 
void setVal (const T &value, const Box &a_box, int a_nstart, int a_numcomp)
 
bool isDefined () const
 
int nComp () const
 
const BoxgetRegion () const
 
const Boxbox () const
 
Vector< VolIndexgetMultiCells () const
 has to be by value because sometimes the vector does not exist. More...
 
const BaseIVFAB< T > & getMultiValuedFAB () const
 
BaseIVFAB< T > & getMultiValuedFAB ()
 
const BaseFab< T > & getSingleValuedFAB () const
 
BaseFab< T > & getSingleValuedFAB ()
 
const T & operator() (const VolIndex &a_ndin, int a_nVarLoc, int a_isKnownMultiValued=0) const
 
T & operator() (const VolIndex &a_ndin, int a_nVarLoc, int a_isKnownMultiValued=0)
 
void fill (T *array, const VolIndex &a_ndin, const Interval &a_comps) const
 
void assign (const T *array, const VolIndex &a_ndin, const Interval &a_comps)
 
void copy (const Box &RegionFrom, const Interval &destInt, const Box &RegionTo, const BaseEBCellFAB< T > &source, const Interval &srcInt)
 
BaseEBCellFAB< T > & copy (const BaseEBCellFAB< T > &source)
 
int size (const Box &R, const Interval &comps) const
 
void linearOut (void *buf, const Box &R, const Interval &comps) const
 
void linearIn (void *buf, const Box &R, const Interval &comps)
 
 BaseEBCellFAB (const Box &a_region, int a_nVar)
 invalid but necessary for leveldata to compile More...
 
const EBISBoxgetEBISBox () const
 
virtual void setCoveredCellVal (const T &a_val, const int &a_comp, const bool &a_doMulti=true)
 

Static Public Member Functions

static int preAllocatable ()
 

Protected Member Functions

void setDefaultValues ()
 

Protected Attributes

MiniIVFAB< T > m_irrFAB
 data at multi-valued cells More...
 
BaseFab< T > m_regFAB
 data at single-valued cells More...
 
EBISBox m_ebisBox
 
Box m_region
 
bool m_hasMultiCells
 
bool m_isDefined
 has full define function been called? More...
 

Private Member Functions

void operator= (const BaseEBCellFAB< T > &ebcin)
 
 BaseEBCellFAB (const BaseEBCellFAB< T > &ebcin)
 

Detailed Description

template<class T>
class BaseEBCellFAB< T >

Array defined at the VolIndexs of an Box in an EBIS.

An BaseEBCellFAB is a templated holder for cell-centered data over the intersection of a box and an EbisBox. At every uncovered VolIndex in this intersection, the BaseEBCellFAB contains a specified number of data values. At singly valued cells, the data is stored internally in a BaseFab. At multiply-valued cells, the data is stored internally in an BaseIVFAB. BaseEBCellFAB provides indexing by VolIndex. This class does not provide a copy constructor or assignment operator for all the usual reasons.

Constructor & Destructor Documentation

◆ BaseEBCellFAB() [1/5]

template<class T >
BaseEBCellFAB< T >::BaseEBCellFAB ( )

◆ BaseEBCellFAB() [2/5]

template<class T >
BaseEBCellFAB< T >::BaseEBCellFAB ( const EBISBox a_ebisBox,
const Box a_region,
int  a_nVar 
)

◆ BaseEBCellFAB() [3/5]

template<class T>
BaseEBCellFAB< T >::BaseEBCellFAB ( const Interval a_comps,
BaseEBCellFAB< T > &  a_original 
)

aliasing copy-ish constructor. Used when the 'alias' function is invoked on LevelData

Constructs an 'aliased' BaseEBCellFab of the requested interval of the argument BaseEBCellFab. This BaseEBCellFab does not allocate any memory, but sets its data pointer into the memory pointed to by the argument BaseEBCellFab. It is the users responsiblity to ensure this aliased BaseEBCellFab is not used after the original BaseEBCellFab has deleted its data ptr (resize, define(..) called, or destruction, etc.).

This aliased BaseEBCellFab will also generate side effects (modifying the values of data in one will modify the other's data).

This aliased BaseFab will have a_comps.size() components, starting at zero.

◆ ~BaseEBCellFAB()

template<class T >
BaseEBCellFAB< T >::~BaseEBCellFAB ( )
virtual

◆ BaseEBCellFAB() [4/5]

template<class T>
BaseEBCellFAB< T >::BaseEBCellFAB ( const Box a_region,
int  a_nVar 
)
inline

invalid but necessary for leveldata to compile

◆ BaseEBCellFAB() [5/5]

template<class T>
BaseEBCellFAB< T >::BaseEBCellFAB ( const BaseEBCellFAB< T > &  ebcin)
inlineprivate

Member Function Documentation

◆ numDataTypes()

template<class T>
int BaseEBCellFAB< T >::numDataTypes ( ) const
inline

◆ dataType()

template<class T>
int BaseEBCellFAB< T >::dataType ( const BaseIndex a_baseInd) const
inline

◆ offset()

template<class T>
long BaseEBCellFAB< T >::offset ( const BaseIndex a_baseInd,
const int  a_ivar 
) const
inline

◆ dataPtr() [1/2]

template<class T>
T* BaseEBCellFAB< T >::dataPtr ( int  a_dataType,
int  a_ivar 
)
inline

◆ dataPtr() [2/2]

template<class T>
const T* BaseEBCellFAB< T >::dataPtr ( int  a_dataType,
int  a_ivar 
) const
inline

◆ define()

template<class T >
void BaseEBCellFAB< T >::define ( const EBISBox a_ebisBox,
const Box a_region,
int  a_nVar 
)
virtual

◆ clear()

template<class T >
void BaseEBCellFAB< T >::clear ( )

◆ setVal() [1/3]

template<class T>
void BaseEBCellFAB< T >::setVal ( const T &  value)

◆ setVal() [2/3]

template<class T>
void BaseEBCellFAB< T >::setVal ( int  ivar,
const T &  value 
)

◆ setVal() [3/3]

template<class T>
void BaseEBCellFAB< T >::setVal ( const T &  value,
const Box a_box,
int  a_nstart,
int  a_numcomp 
)

◆ isDefined()

template<class T >
bool BaseEBCellFAB< T >::isDefined ( ) const

◆ nComp()

template<class T >
int BaseEBCellFAB< T >::nComp ( ) const

◆ getRegion()

template<class T >
const Box & BaseEBCellFAB< T >::getRegion ( ) const

◆ box()

template<class T >
const Box & BaseEBCellFAB< T >::box ( ) const

◆ getMultiCells()

template<class T >
Vector< VolIndex > BaseEBCellFAB< T >::getMultiCells ( ) const

has to be by value because sometimes the vector does not exist.

Referenced by BaseEBCellFAB< Real >::dataPtr().

◆ getMultiValuedFAB() [1/2]

template<class T >
const BaseIVFAB< T > & BaseEBCellFAB< T >::getMultiValuedFAB ( ) const

◆ getMultiValuedFAB() [2/2]

template<class T >
BaseIVFAB< T > & BaseEBCellFAB< T >::getMultiValuedFAB ( )

◆ getSingleValuedFAB() [1/2]

template<class T >
const BaseFab< T > & BaseEBCellFAB< T >::getSingleValuedFAB ( ) const

◆ getSingleValuedFAB() [2/2]

template<class T >
BaseFab< T > & BaseEBCellFAB< T >::getSingleValuedFAB ( )

◆ operator()() [1/2]

template<class T >
const T & BaseEBCellFAB< T >::operator() ( const VolIndex a_ndin,
int  a_nVarLoc,
int  a_isKnownMultiValued = 0 
) const

Arg a_isKnownMultiValued should be set to: -1 if arg a_ndin is known to be in a single-valued cell; +1 if arg a_ndin is known to be in a multi-valued cell; 0 if you're not sure (in which case the expensive IntVectSet::contains() function gets called.

Note: BVS says third arg is a wart that makes this operator look less like a logical array access.

Referenced by BaseEBCellFAB< Real >::dataPtr().

◆ operator()() [2/2]

template<class T >
T & BaseEBCellFAB< T >::operator() ( const VolIndex a_ndin,
int  a_nVarLoc,
int  a_isKnownMultiValued = 0 
)

Arg a_isKnownMultiValued should be set to: -1 if arg a_ndin is known to be in a single-valued cell; +1 if arg a_ndin is known to be in a multi-valued cell; 0 if you're not sure (in which case the expensive IntVectSet::contains() function gets called.

◆ fill()

template<class T>
void BaseEBCellFAB< T >::fill ( T *  array,
const VolIndex a_ndin,
const Interval a_comps 
) const

◆ assign()

template<class T>
void BaseEBCellFAB< T >::assign ( const T *  array,
const VolIndex a_ndin,
const Interval a_comps 
)

◆ copy() [1/2]

template<class T>
void BaseEBCellFAB< T >::copy ( const Box RegionFrom,
const Interval destInt,
const Box RegionTo,
const BaseEBCellFAB< T > &  source,
const Interval srcInt 
)

◆ copy() [2/2]

template<class T>
BaseEBCellFAB< T > & BaseEBCellFAB< T >::copy ( const BaseEBCellFAB< T > &  source)

◆ preAllocatable()

template<class T>
static int BaseEBCellFAB< T >::preAllocatable ( )
inlinestatic

This stuff required by LevelData in parallel:

◆ size()

template<class T >
int BaseEBCellFAB< T >::size ( const Box R,
const Interval comps 
) const

◆ linearOut()

template<class T >
void BaseEBCellFAB< T >::linearOut ( void *  buf,
const Box R,
const Interval comps 
) const

◆ linearIn()

template<class T >
void BaseEBCellFAB< T >::linearIn ( void *  buf,
const Box R,
const Interval comps 
)

◆ getEBISBox()

template<class T >
const EBISBox & BaseEBCellFAB< T >::getEBISBox ( ) const

◆ setCoveredCellVal()

template<class T>
void BaseEBCellFAB< T >::setCoveredCellVal ( const T &  a_val,
const int &  a_comp,
const bool &  a_doMulti = true 
)
virtual

Reimplemented in EBCellFAB.

Referenced by BaseEBCellFAB< Real >::BaseEBCellFAB().

◆ setDefaultValues()

template<class T >
void BaseEBCellFAB< T >::setDefaultValues ( )
protected

◆ operator=()

template<class T>
void BaseEBCellFAB< T >::operator= ( const BaseEBCellFAB< T > &  ebcin)
inlineprivate

Member Data Documentation

◆ m_irrFAB

template<class T>
MiniIVFAB<T> BaseEBCellFAB< T >::m_irrFAB
protected

◆ m_regFAB

template<class T>
BaseFab<T> BaseEBCellFAB< T >::m_regFAB
protected

◆ m_ebisBox

template<class T>
EBISBox BaseEBCellFAB< T >::m_ebisBox
protected

◆ m_region

template<class T>
Box BaseEBCellFAB< T >::m_region
protected

◆ m_hasMultiCells

template<class T>
bool BaseEBCellFAB< T >::m_hasMultiCells
protected

◆ m_isDefined

template<class T>
bool BaseEBCellFAB< T >::m_isDefined
protected

The documentation for this class was generated from the following files: