Proto  3.2
Classes | Typedefs | Enumerator | Functions | Variables | Friends
Pointwise Operations

Classes

class  Proto::Var< T, C, MEM, D, E >
 Pointwise Variable. More...
 
class  Proto::BoxData< T, C, MEM, D, E >
 Multidimensional Rectangular Array. More...
 
class  Proto::FluxBoxData< T, C, MEM, D, E >
 

Typedefs

typedef Var< T, C, MEM, D, E > Proto::BoxData< T, C, MEM, D, E >::reference
 

Functions

T & Proto::Var< T, C, MEM, D, E >::getValDevice (unsigned int a_c, unsigned int a_d=0, unsigned int a_e=0)
 
ACCEL_DECORATION Proto::Var< T, C, MEM, D, E >::__attribute__ ((always_inline)) T &operator()(unsigned int a_c
 Pointwise Accessor. More...
 
 Proto::BoxData< T, C, MEM, D, E >::BoxData (const BoxData< T, C, MEM, D, E > &a_src)=delete
 Forbidden Functions. More...
 
BoxDataProto::BoxData< T, C, MEM, D, E >::operator= (const BoxData< T, C, MEM, D, E > &a_src)=delete
 
size_t Proto::BoxData< T, C, MEM, D, E >::size (const Box &a_box, const size_t a_comps) const
 
size_t Proto::BoxData< T, C, MEM, D, E >::charsize (const ::Proto::Box &a_bx, unsigned int a_startcomp, unsigned int a_numcomps) const
 
static int Proto::BoxData< T, C, MEM, D, E >::preAllocatable ()
 
static int Proto::BoxData< T, C, MEM, D, E >::memTypeAllocation ()
 
 Proto::FluxBoxData< T, C, MEM, D, E >::FluxBoxData ()
 
 Proto::FluxBoxData< T, C, MEM, D, E >::FluxBoxData (const Box &a_box, bool a_doExtrude=true)
 
 Proto::FluxBoxData< T, C, MEM, D, E >::FluxBoxData (Array< std::shared_ptr< BoxData< T, C, MEM, D, E >>, DIM > &a_data)
 
 Proto::FluxBoxData< T, C, MEM, D, E >::FluxBoxData (std::vector< std::shared_ptr< BoxData< T, C, MEM, D, E >>> &a_data)
 
void Proto::FluxBoxData< T, C, MEM, D, E >::define (const Box &a_box, bool a_doExtrude=true)
 
BoxData< T, C, MEM, D, E > & Proto::FluxBoxData< T, C, MEM, D, E >::operator[] (unsigned int a_index)
 
const BoxData< T, C, MEM, D, E > & Proto::FluxBoxData< T, C, MEM, D, E >::operator[] (unsigned int a_index) const
 
Array< std::shared_ptr< BoxData< T, C, MEM, D, E > >, DIM > & Proto::FluxBoxData< T, C, MEM, D, E >::array ()
 
const Array< std::shared_ptr< BoxData< T, C, MEM, D, E > >, DIM > & Proto::FluxBoxData< T, C, MEM, D, E >::array () const
 
Box Proto::FluxBoxData< T, C, MEM, D, E >::box () const
 
Box Proto::FluxBoxData< T, C, MEM, D, E >::box (int a_dir) const
 
template<typename T , unsigned int CL, unsigned int CR, MemType MEM, unsigned int DL, unsigned int DR, unsigned int E = 1>
BoxData< T, CL, MEM, DR, E > Proto::matrixProduct (const BoxData< T, CL, MEM, DL, E > &A, const BoxData< T, CR, MEM, DR, E > &B, T scale=1.0)
 
template<typename T , unsigned int CL, unsigned int CR, MemType MEM, unsigned int DL, unsigned int DR, unsigned int E = 1>
BoxData< T, DL, MEM, DR, E > Proto::matrixProductLeftTranspose (const BoxData< T, CL, MEM, DL, E > &A, const BoxData< T, CR, MEM, DR, E > &B, T scale=1.0)
 
template<typename T , unsigned int CL, unsigned int CR, MemType MEM, unsigned int DL, unsigned int DR, unsigned int E = 1>
BoxData< T, CL, MEM, CR, E > Proto::matrixProductRightTranspose (const BoxData< T, CL, MEM, DL, E > &A, const BoxData< T, CR, MEM, DR, E > &B, T scale=1.0)
 

Variables

ACCEL_DECORATION unsigned int Proto::Var< T, C, MEM, D, E >::a_d = 0
 
ACCEL_DECORATION unsigned int unsigned int Proto::Var< T, C, MEM, D, E >::a_e
 
unsigned int Proto::Var< T, C, MEM, D, E >::boxDimY
 
unsigned int Proto::Var< T, C, MEM, D, E >::subBoxDimX
 
unsigned int Proto::Var< T, C, MEM, D, E >::subBoxDimY
 
T * Proto::Var< T, C, MEM, D, E >::m_ptrs [C *D *E]
 
bool Proto::BoxData< T, C, MEM, D, E >::m_alias
 was this created as an alias More...
 
bool Proto::BoxData< T, C, MEM, D, E >::m_stackAlloc
 
Box Proto::BoxData< T, C, MEM, D, E >::m_box
 Box defining the domain of *this. More...
 
::std::shared_ptr< T > Proto::BoxData< T, C, MEM, D, E >::m_data
 Data array. More...
 
T * Proto::BoxData< T, C, MEM, D, E >::m_rawPtr
 Raw pointer to the data. More...
 
Box Proto::FluxBoxData< T, C, MEM, D, E >::m_box0
 
Array< std::shared_ptr< BoxData< T, C, MEM, D, E > >, DIM > Proto::FluxBoxData< T, C, MEM, D, E >::m_data
 

Friends

template<class TT >
class Proto::BoxData< T, C, MEM, D, E >::Stencil
 
template<class TT , unsigned int CC, unsigned int DD, unsigned int EE, MemType MM>
BoxData< TT, CC, MM, DD, EE > Proto::BoxData< T, C, MEM, D, E >::alias (BoxData< TT, CC, MM, DD, EE > &a_original, const Point &a_shift)
 
template<class TT , unsigned int CC, unsigned int DD, unsigned int EE, MemType MM>
const BoxData< TT, CC, MM, DD, EE > Proto::BoxData< T, C, MEM, D, E >::alias (const BoxData< TT, CC, MM, DD, EE > &a_original, const Point &a_shift)
 
template<typename _T , unsigned int _C, MemType _MEM, unsigned int _D, unsigned int _E>
BoxData< _T, 1, _MEM, 1, 1 > Proto::BoxData< T, C, MEM, D, E >::slice (const BoxData< _T, _C, _MEM, _D, _E > &a_src, unsigned int a_c, unsigned int a_d, unsigned int a_e)
 
template<typename _T , unsigned int _C, unsigned int _CC, MemType _MEM>
BoxData< _T, _CC, _MEM, 1, 1 > Proto::BoxData< T, C, MEM, D, E >::slice (const BoxData< _T, _C, _MEM, 1, 1 > &a_src, unsigned int a_nstart)
 
template<typename _T , unsigned int _C, unsigned int _D, MemType _MEM>
BoxData< _T, _C, _MEM, 1, 1 > Proto::BoxData< T, C, MEM, D, E >::plane (const BoxData< _T, _C, _MEM, _D, 1 > &a_src, unsigned int a_d)
 

Alias and Slice Operators

The alias and slice operations facilitate BoxData operations while avoiding unnecessary copies. See the sample code below for an explanation of the syntax.

Example alias usage:

Example slice usage:

template<class T , unsigned int C = 1, unsigned int D = 1, unsigned int E = 1, MemType MEM = MEMTYPE_DEFAULT>
BoxData< T, C, MEM, D, E > Proto::alias (BoxData< T, C, MEM, D, E > &a_original, const Point &a_shift=Point::Zeros())
 Alias (Non-Const) More...
 
template<class T , unsigned int C = 1, unsigned int D = 1, unsigned int E = 1, MemType MEM = MEMTYPE_DEFAULT>
const BoxData< T, C, MEM, D, E > Proto::alias (const BoxData< T, C, MEM, D, E > &a_original, const Point &a_shift=Point::Zeros())
 Alias (Const) More...
 
template<typename T , unsigned int C, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData< T, 1, MEM, 1, 1 > Proto::slice (const BoxData< T, C, MEM, D, E > &a_src, unsigned int a_c, unsigned int a_d=0, unsigned int a_e=0)
 Slice Arbitrary Component (Non-Const) More...
 
template<typename T , unsigned int C, unsigned int CC, MemType MEM = MEMTYPE_DEFAULT>
BoxData< T, CC, MEM, 1, 1 > Proto::slice (const BoxData< T, C, MEM, 1, 1 > &a_src, unsigned int a_startcomp)
 Vector Slice (Non-Const) More...
 
template<typename T , unsigned int C, unsigned int D, MemType MEM = MEMTYPE_DEFAULT>
BoxData< T, C, MEM, 1, 1 > Proto::plane (const BoxData< T, C, MEM, D, 1 > &a_src, unsigned int a_d)
 

Constructors and Define

 Proto::BoxData< T, C, MEM, D, E >::BoxData ()
 Default Constructor. More...
 
 Proto::BoxData< T, C, MEM, D, E >::BoxData (const Box &a_box)
 Box Constructor. More...
 
 Proto::BoxData< T, C, MEM, D, E >::BoxData (const Box &a_box, T a_init)
 Box Constructor With Initialization. More...
 
 Proto::BoxData< T, C, MEM, D, E >::BoxData (BoxData< T, C, MEM, D, E > &&a_src)
 Move constructor. More...
 
void Proto::BoxData< T, C, MEM, D, E >::define (const Box &a_box)
 Box Define. More...
 
template<unsigned int ncomp>
void Proto::BoxData< T, C, MEM, D, E >::define (BoxData< T, ncomp, MEM, 1, 1 > &a_input, unsigned int &a_comp)
 Alias Define. More...
 
 Proto::BoxData< T, C, MEM, D, E >::BoxData (const T *a_ptr, const Box &a_box, int a_ncomp=C)
 Raw Pointer Alias Constructor. More...
 
void Proto::BoxData< T, C, MEM, D, E >::define (const T *a_ptr, const Box &a_box, int a_ncomp=C)
 Raw Pointer Alias Define. More...
 
 Proto::BoxData< T, C, MEM, D, E >::BoxData (LazyStencil< T, C, MEM, D, E > &&a_op)
 LazyStencil Constructor. More...
 
 Proto::BoxData< T, C, MEM, D, E >::BoxData (LazyInterpStencil< T, C, MEM, D, E > &&a_op)
 
 Proto::BoxData< T, C, MEM, D, E >::BoxData (shared_ptr< T > a_data, const T *a_ptr, const Box &a_box)
 Slice Constructor. More...
 
 Proto::BoxData< T, C, MEM, D, E >::~BoxData ()
 Destructor. More...
 

Data Movement

BoxDataProto::BoxData< T, C, MEM, D, E >::operator= (BoxData< T, C, MEM, D, E > &&a_src)
 Move Assignment Operator. More...
 
template<MemType MEM_DEST>
void Proto::BoxData< T, C, MEM, D, E >::copyTo (BoxData< T, C, MEM_DEST, D, E > &a_dest) const
 Copy on Intersection. More...
 
template<MemType MEM_DEST>
void Proto::BoxData< T, C, MEM, D, E >::copyTo (BoxData< T, C, MEM_DEST, D, E > &a_dest, const Box &a_srcBox, const Point &a_destShift=Point::Zeros()) const
 Copy Region. More...
 
template<MemType MEM_DEST>
void Proto::BoxData< T, C, MEM, D, E >::copyTo (BoxData< T, C, MEM_DEST, D, E > &a_dest, const Box &a_srcBox, const Box &a_destBox) const
 Copy with src and dest boxes. More...
 
template<unsigned int Cdest, MemType MEM_DEST, unsigned int Ddest, unsigned int Edest>
void Proto::BoxData< T, C, MEM, D, E >::copyTo (BoxData< T, Cdest, MEM_DEST, Ddest, Edest > &a_dest, const Box &a_srcBox, CInterval a_srcComps, const Point &a_destShift, CInterval a_destComps) const
 General Copy. More...
 
template<unsigned int Csrc>
void Proto::BoxData< T, C, MEM, D, E >::copy (const BoxData< T, Csrc, MEM, D, E > &a_dsrc, const Box &a_srcBox, unsigned int a_srcComp, const Box &a_destBox, unsigned int a_destComp, unsigned int a_numcomp)
 General Copy From. More...
 
void Proto::BoxData< T, C, MEM, D, E >::copyTo (BoxData< T, C, MEM, D, E > &a_dst, const CoordPermutation &a_rotation) const
 Copy With Rotation. More...
 
BoxData< T, C, MEM, D, E > Proto::BoxData< T, C, MEM, D, E >::transpose (int c0, int c1) const
 Create a new BoxData that is transposed relative to this. More...
 
void Proto::BoxData< T, C, MEM, D, E >::rotate (Box a_box, const CoordPermutation &a_rotation)
 Rotate Coordinates. More...
 

Accessors

ACCEL_DECORATION size_t Proto::BoxData< T, C, MEM, D, E >::index (const Point a_pt, unsigned int a_c=0, unsigned int a_d=0, unsigned int a_e=0) const
 Compute Index. More...
 
ACCEL_DECORATION T & Proto::BoxData< T, C, MEM, D, E >::operator() (const Point &a_pt, unsigned int a_c=0, unsigned int a_d=0, unsigned int a_e=0) const
 Point Accessor. More...
 
ACCEL_DECORATION Array< T, C *D *E > Proto::BoxData< T, C, MEM, D, E >::array (const Point &a_pt) const
 Array Accessor. More...
 
const T * Proto::BoxData< T, C, MEM, D, E >::operator[] (unsigned int a_index) const
 Index Accessor (Const) More...
 
T * Proto::BoxData< T, C, MEM, D, E >::operator[] (unsigned int a_index)
 Index Accessor (Non-Const) More...
 
const T * Proto::BoxData< T, C, MEM, D, E >::data (const Point &a_p, unsigned int a_c=0, unsigned int a_d=0, unsigned int a_e=0) const
 Pointer Accessor (Const) More...
 
T * Proto::BoxData< T, C, MEM, D, E >::data (const Point &a_p, unsigned int a_c=0, unsigned int a_d=0, unsigned int a_e=0)
 Pointer Accessor (Non-Const) More...
 
T * Proto::BoxData< T, C, MEM, D, E >::data (unsigned int a_c=0, unsigned int a_d=0, unsigned int a_e=0)
 Buffer Accessor (Non-Const) More...
 
const T * Proto::BoxData< T, C, MEM, D, E >::data (unsigned int a_c=0, unsigned int a_d=0, unsigned int a_e=0) const
 Buffer Accessor (Const) More...
 
inline ::std::shared_ptr< T > Proto::BoxData< T, C, MEM, D, E >::aliasData ()
 Shared Buffer Accessor. More...
 
inline ::std::shared_ptr< T > Proto::BoxData< T, C, MEM, D, E >::aliasData () const
 Shared Buffer Accessor (Const) More...
 
Box Proto::BoxData< T, C, MEM, D, E >::box () const
 
std::size_t Proto::BoxData< T, C, MEM, D, E >::size () const
 
std::size_t Proto::BoxData< T, C, MEM, D, E >::numValues () const
 
bool Proto::BoxData< T, C, MEM, D, E >::defined () const
 Defined Query. More...
 
Var< T, C, MEM, D, E > Proto::BoxData< T, C, MEM, D, E >::var (const Point &a_pt)
 Create Pointwise Access Variable (Non-Const) More...
 
Var< T, C, MEM, D, E > Proto::BoxData< T, C, MEM, D, E >::var (const Point &a_pt) const
 Create Pointwise Access Variable (Const) More...
 

Algebraic Operations

template<BoxDataOp >
void Proto::BoxData< T, C, MEM, D, E >::operatorT (const BoxData< T, C, MEM, D, E > &a_src)
 Algebraic Op Helper. More...
 
template<BoxDataOp >
void Proto::BoxData< T, C, MEM, D, E >::operatorT (const T a_scale)
 Algebraic Op Helper. More...
 
BoxData< T, C, MEM, D, E > Proto::BoxData< T, C, MEM, D, E >::operator+ (const BoxData< T, C, MEM, D, E > &a_rhs) const
 Pointwise Addition on Intersection. More...
 
BoxData< T, C, MEM, D, E > Proto::BoxData< T, C, MEM, D, E >::operator- (const BoxData< T, C, MEM, D, E > &a_rhs) const
 Pointwise Subtraction on Intersection. More...
 
BoxData< T, C, MEM, D, E > Proto::BoxData< T, C, MEM, D, E >::operator* (const BoxData< T, C, MEM, D, E > &a_rhs) const
 Pointwise Multiplication on Intersection. More...
 
BoxData< T, C, MEM, D, E > Proto::BoxData< T, C, MEM, D, E >::operator/ (const BoxData< T, C, MEM, D, E > &a_rhs) const
 Pointwise Division on Intersection. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator+= (const BoxData< T, C, MEM, D, E > &a_rhs)
 Pointwise Addition on Intersection. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator-= (const BoxData< T, C, MEM, D, E > &a_rhs)
 Pointwise Subtraction on Intersection. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator*= (const BoxData< T, C, MEM, D, E > &a_rhs)
 Pointwise Multiplication on Intersection. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator/= (const BoxData< T, C, MEM, D, E > &a_rhs)
 Pointwise Division on Intersection. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator+= (T a_scale)
 Pointwise Addition by Scalar. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator-= (T scale)
 Pointwise Subtraction by Scalar. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator*= (T scale)
 Pointwise Multiplication by Scalar. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator/= (T scale)
 Pointwise Division by Scalar. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator+= (const Array< T, C *D *E > &a_array)
 Pointwise Addition an Array. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator-= (const Array< T, C *D *E > &a_array)
 Pointwise Subtraction an Array. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator*= (const Array< T, C *D *E > &a_array)
 Pointwise Multiplication an Array. More...
 
BoxData< T, C, MEM, D, E > & Proto::BoxData< T, C, MEM, D, E >::operator/= (const Array< T, C *D *E > &a_array)
 Pointwise Division by an Array. More...
 
void Proto::BoxData< T, C, MEM, D, E >::increment (const BoxData< T, C, MEM, D, E > &rhs, T scale=1)
 
void Proto::BoxData< T, C, MEM, D, E >::incrementProduct (const BoxData< T, C, MEM, D, E > &A, const BoxData< T, C, MEM, D, E > &B, T scale=1)
 

Utility

void Proto::BoxData< T, C, MEM, D, E >::setVal (const T &a_val)
 Initialize All Values. More...
 
void Proto::BoxData< T, C, MEM, D, E >::setToZero ()
 Clamp Values. More...
 
void Proto::BoxData< T, C, MEM, D, E >::setVal (const T &a_val, const Box &a_box)
 Set All Values in Box. More...
 
void Proto::BoxData< T, C, MEM, D, E >::setVal (const T &a_val, const Box &a_box, int a_c, int a_d=0, int a_e=0)
 Set All Values of Component in Box. More...
 
void Proto::BoxData< T, C, MEM, D, E >::setRandom (T a_low, T a_high)
 Set Random Noise. More...
 
template<Proto::Operation OP>
void Proto::BoxData< T, C, MEM, D, E >::reduce (Reduction< T, OP, MEM > &a_Rxn) const
 Generic Reduction (Global) More...
 
template<Proto::Operation OP>
void Proto::BoxData< T, C, MEM, D, E >::reduce (Reduction< T, OP, MEM > &a_Rxn, int a_c, int a_d=0, int a_e=0) const
 Generic Reduction (Componentwise) More...
 
Proto::BoxData< T, C, MEM, D, E >::absMax () const
 Absolute Maximum Value (Global) More...
 
Proto::BoxData< T, C, MEM, D, E >::absMax (int a_c, int a_d=0, int a_e=0) const
 Absolute Maximum Value (Componentwise) More...
 
void Proto::BoxData< T, C, MEM, D, E >::absMax (Reduction< T, Abs, MEM > &a_Rxn) const
 Absolute Maximum Value (Global, Reduction) More...
 
void Proto::BoxData< T, C, MEM, D, E >::absMax (Reduction< T, Abs, MEM > &a_Rxn, int a_c, int a_d=0, int a_e=0) const
 Absolute Maximum Value (Componentwise, Reduction) More...
 
Proto::BoxData< T, C, MEM, D, E >::min () const
 Minimum Value (Global) More...
 
Proto::BoxData< T, C, MEM, D, E >::min (int a_c, int a_d=0, int a_e=0) const
 Minimum Value (Componentwise) More...
 
void Proto::BoxData< T, C, MEM, D, E >::min (Reduction< T, Min, MEM > &a_rxn) const
 Minimum Value (Global, Reduction) More...
 
void Proto::BoxData< T, C, MEM, D, E >::min (Reduction< T, Min, MEM > &a_rxn, int a_c, int a_d=0, int a_e=0) const
 Minimum Value (Componentwise, Reduction) More...
 
Proto::BoxData< T, C, MEM, D, E >::max () const
 Maximum Value (Global) More...
 
Proto::BoxData< T, C, MEM, D, E >::max (int a_c, int a_d=0, int a_e=0) const
 Maximum Value (Componentwise) More...
 
void Proto::BoxData< T, C, MEM, D, E >::max (Reduction< T, Max, MEM > &a_rxn) const
 Max (Global, Reduction) More...
 
void Proto::BoxData< T, C, MEM, D, E >::max (Reduction< T, Max, MEM > &a_rxn, int a_c, int a_d=0, int a_e=0) const
 Max (Componentwise, Reduction) More...
 
Proto::BoxData< T, C, MEM, D, E >::sum () const
 Sum (Global) More...
 
Proto::BoxData< T, C, MEM, D, E >::sum (int a_c, int a_d=0, int a_e=0) const
 Sum (Componentwise) More...
 
void Proto::BoxData< T, C, MEM, D, E >::sum (Reduction< T, Sum, MEM > &a_rxn) const
 Sum (Global, Reduction) More...
 
void Proto::BoxData< T, C, MEM, D, E >::sum (Reduction< T, Sum, MEM > &a_rxn, int a_c, int a_d=0, int a_e=0) const
 Sum (Componentwise) More...
 
Proto::BoxData< T, C, MEM, D, E >::sumAbs () const
 Sum Abs(Global) More...
 
Proto::BoxData< T, C, MEM, D, E >::sumAbs (int a_c, int a_d=0, int a_e=0) const
 Sum Abs(Componentwise) More...
 
void Proto::BoxData< T, C, MEM, D, E >::sumAbs (Reduction< T, SumAbs, MEM > &a_rxn) const
 Sum Abs (Global, Reduction) More...
 
void Proto::BoxData< T, C, MEM, D, E >::sumAbs (Reduction< T, SumAbs, MEM > &a_rxn, int a_c, int a_d=0, int a_e=0) const
 Sum (Componentwise) More...
 
Proto::BoxData< T, C, MEM, D, E >::sumSquare () const
 
Proto::BoxData< T, C, MEM, D, E >::sumSquare (int a_c, int a_d=0, int a_e=0) const
 
void Proto::BoxData< T, C, MEM, D, E >::sumSquare (Reduction< T, SumSquare, MEM > &a_rxn) const
 
void Proto::BoxData< T, C, MEM, D, E >::sumSquare (Reduction< T, SumSquare, MEM > &a_rxn, int a_c, int a_d=0, int a_e=0) const
 
Proto::BoxData< T, C, MEM, D, E >::integrate (T a_dx, int a_c=0, int a_d=0, int a_e=0) const
 Integrate (Isotropic Grid) More...
 
Proto::BoxData< T, C, MEM, D, E >::integrate (Array< T, DIM > a_dx, int a_c=0, int a_d=0, int a_e=0) const
 Integrate (Anisotropic Grid) More...
 
void Proto::BoxData< T, C, MEM, D, E >::shift (const Point &a_shift) const
 Shift Domain. More...
 
size_t Proto::BoxData< T, C, MEM, D, E >::linearSize () const
 Buffer Size. More...
 
void Proto::BoxData< T, C, MEM, D, E >::linearOut (void *a_buffer, const Box &a_box, CInterval a_comps) const
 Buffer Write. More...
 
void Proto::BoxData< T, C, MEM, D, E >::linearOut (void *a_buffer, const Box &a_box, unsigned int a_startcomp, unsigned int a_numcomps) const
 Buffer Write (Primitive) More...
 
void Proto::BoxData< T, C, MEM, D, E >::linearIn (void *a_buffer, const Box &a_box, CInterval a_comps)
 Buffer Read. More...
 
void Proto::BoxData< T, C, MEM, D, E >::linearIn (void *a_buffer, const ::Proto::Box &a_bx, unsigned int a_startcomp, unsigned int a_numcomps)
 Buffer Read. More...
 
bool Proto::BoxData< T, C, MEM, D, E >::contains (CInterval a_interval) const
 Contains CInterval. More...
 
template<unsigned int CC, unsigned int DD, unsigned int EE>
bool Proto::BoxData< T, C, MEM, D, E >::isAlias (const BoxData< T, CC, MEM, DD, EE > &a_src) const
 Check Aliasing. More...
 
void Proto::BoxData< T, C, MEM, D, E >::print () const
 Print. More...
 
void Proto::BoxData< T, C, MEM, D, E >::printData (int a_prec=2) const
 Print Data. More...
 
void Proto::BoxData< T, C, MEM, D, E >::printData (const Box &a_box, int a_prec=2) const
 Print Data in Box. More...
 
void Proto::BoxData< T, C, MEM, D, E >::printData (const Box &a_box, int a_c, int a_d, int a_e, int a_prec=2) const
 Print Component Data in Box. More...
 
bool Proto::BoxData< T, C, MEM, D, E >::containsInfOrNAN () const
 
bool Proto::BoxData< T, C, MEM, D, E >::containsInfOrNAN (Box domain) const
 
bool Proto::BoxData< T, C, MEM, D, E >::containsUninitialized () const
 
bool Proto::BoxData< T, C, MEM, D, E >::containsUninitialized (Box domain) const
 
bool Proto::BoxData< T, C, MEM, D, E >::containsAddress (T *address) const
 

Detailed Description

Typedef Documentation

◆ reference

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
typedef Var<T,C,MEM,D,E> Proto::BoxData< T, C, MEM, D, E >::reference

Function Documentation

◆ getValDevice()

template<typename T, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T& Proto::Var< T, C, MEM, D, E >::getValDevice ( unsigned int  a_c,
unsigned int  a_d = 0,
unsigned int  a_e = 0 
)
inline

References ACCEL_DECORATION.

◆ __attribute__()

template<typename T, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
ACCEL_DECORATION Proto::Var< T, C, MEM, D, E >::__attribute__ ( (always_inline)  ) &

Pointwise Accessor.

Access component (c,d,e) of the BoxData<T,C,MEM,D,E> associated with *this.

Parameters
a_cFirst component index
a_dSecond component index (default: 0)
a_eThird component index (default: 0)

◆ BoxData() [1/9]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::BoxData ( const BoxData< T, C, MEM, D, E > &  a_src)
delete

Forbidden Functions.

◆ operator=() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData& Proto::BoxData< T, C, MEM, D, E >::operator= ( const BoxData< T, C, MEM, D, E > &  a_src)
delete

◆ BoxData() [2/9]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::BoxData ( )

Default Constructor.

Creates an empty BoxData with an empty Box. BoxData::define must be called to allocate memory.

◆ BoxData() [3/9]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::BoxData ( const Box a_box)
explicit

Box Constructor.

Creates and allocates an uninitialized array according to the space needed by a_box and the number of components.

Parameters
a_boxBox defining the domain of *this

◆ BoxData() [4/9]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::BoxData ( const Box a_box,
a_init 
)

Box Constructor With Initialization.

Creates, allocates, and initializes a BoxData using a constant value. The Stack is automatically used if it is active when this function is called.

Parameters
a_boxBox defining the domain of *this
a_initT value used to initialize all data values

◆ BoxData() [5/9]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::BoxData ( BoxData< T, C, MEM, D, E > &&  a_src)

Move constructor.

Necessary in cases where we return BoxData by value, but don't want an actual deep copy The Stack is automatically used if it is active when this function is called.

Parameters
a_srcSource data

◆ define() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::define ( const Box a_box)

Box Define.

Allocates or reallocates memory for a previously declared BoxData. The Stack is automatically used if it is active when this function is called.

Parameters
a_boxBox defining the domain of *this

◆ define() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<unsigned int ncomp>
void Proto::BoxData< T, C, MEM, D, E >::define ( BoxData< T, ncomp, MEM, 1, 1 > &  a_input,
unsigned int &  a_comp 
)
private

Alias Define.

◆ BoxData() [6/9]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::BoxData ( const T *  a_ptr,
const Box a_box,
int  a_ncomp = C 
)

Raw Pointer Alias Constructor.

Builds a vector valued BoxData by aliasing a raw pointer to T which should be of size a_box.size()*a_ncomp . The data in a_ptr is not copied. This constructor is not recommended for public use, but is provided to facilitate compatability with third party libraries.

Parameters
a_ptrMEM Source buffer of type T to which *this will be aliased.
a_boxBox defining the domain of *this
a_ncompDummy input for the number of components. Completely unused.

◆ define() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::define ( const T *  a_ptr,
const Box a_box,
int  a_ncomp = C 
)

Raw Pointer Alias Define.

Defines a vector valued BoxData by aliasing a raw pointer to T which should be of size a_box.size()*a_ncomp . The data in a_ptr is not copied. This constructor is not recommended for public use, but is provided to facilitate compatability with third party libraries.

Parameters
a_ptrMEM Source buffer of type T to which *this will be aliased.
a_boxBox defining the domain of *this
a_ncompDummy input for the number of components. Completely unused.

◆ BoxData() [7/9]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::BoxData ( LazyStencil< T, C, MEM, D, E > &&  a_op)
private

LazyStencil Constructor.

Builds a BoxData from a lazily evaluated Stencil operation. Called implicitly. Allows for the syntax:

Box domain = Box::Cube(64);
BoxData<double> ones(domain, 1);
Stencil<double> triple = 3*Shift::Zeros();
BoxData<double> threes = triple(ones);
//NB: Using "auto" here will result in an error:
auto threes = triple(ones); // runtime error
Parameters
a_opThe output of a Stencil or InterpStencil apply operation.

◆ BoxData() [8/9]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::BoxData ( LazyInterpStencil< T, C, MEM, D, E > &&  a_op)

◆ BoxData() [9/9]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::BoxData ( shared_ptr< T >  a_data,
const T *  a_ptr,
const Box a_box 
)
private

Slice Constructor.

Used internally. Not part of the public interface.

◆ ~BoxData()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::BoxData< T, C, MEM, D, E >::~BoxData ( )

Destructor.

◆ operator=() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData& Proto::BoxData< T, C, MEM, D, E >::operator= ( BoxData< T, C, MEM, D, E > &&  a_src)

Move Assignment Operator.

Moves data in a_src to *this without performing a deep copy.

Parameters
a_srcSource Data

◆ copyTo() [1/5]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<MemType MEM_DEST>
void Proto::BoxData< T, C, MEM, D, E >::copyTo ( BoxData< T, C, MEM_DEST, D, E > &  a_dest) const

Copy on Intersection.

Copy data from *this to a_dest within the domain intersection. Does nothing if the domain intersection is empty. Note that a_dest must have the same MemType as *this.

Parameters
a_destDestination data holder

Referenced by Proto::MBBoundaryData< T, C, MEM >::fill().

◆ copyTo() [2/5]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<MemType MEM_DEST>
void Proto::BoxData< T, C, MEM, D, E >::copyTo ( BoxData< T, C, MEM_DEST, D, E > &  a_dest,
const Box a_srcBox,
const Point a_destShift = Point::Zeros() 
) const

Copy Region.

Copy with a prescribed Box argument and optional shift. Explicitly, this function copies the subset of data from *this contained in a_srcBox into the region of a_dest defined by a_srcBox.shift(a_destShift) .

This function will fail if a_srcBox is not contained in both this->box() and a_dest.box().shift(a_destShift) .

Note that a_dest must have the same MemType as *this.

Parameters
a_destDestination data holder
a_srcBoxRegion of data to copy from *this
a_destShift(Optional) Determines region of a_dest to copy data to.

◆ copyTo() [3/5]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<MemType MEM_DEST>
void Proto::BoxData< T, C, MEM, D, E >::copyTo ( BoxData< T, C, MEM_DEST, D, E > &  a_dest,
const Box a_srcBox,
const Box a_destBox 
) const

Copy with src and dest boxes.

Copies from a a_srcBox in *this into a a_destBox in a_dest. Used in Proto::Copier. Note that a_dest must have the same MemType as *this. TODO: This needs debugging. It's unclear what this function is supposed to do.

◆ copyTo() [4/5]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<unsigned int Cdest, MemType MEM_DEST, unsigned int Ddest, unsigned int Edest>
void Proto::BoxData< T, C, MEM, D, E >::copyTo ( BoxData< T, Cdest, MEM_DEST, Ddest, Edest > &  a_dest,
const Box a_srcBox,
CInterval  a_srcComps,
const Point a_destShift,
CInterval  a_destComps 
) const

General Copy.

The most general form of copyTo. Copies a prescribed set of components from *this into a_dest within prescribed region with a possible shift. a_srcComps and a_destComps must have the same size. The range of the copy in a_dest is a_srcBox.shift(a_destShift) & a_dest.box(). Note that a_dest must have the same MemType as *this.

Example Usage:

Parameters
a_destDestination data holder
a_srcBoxRegion of data to copy from *this
a_srcCompsComponents of *this to copy from
a_destShiftDetermines region of a_dest to copy data to
a_destCompsComponents of a_dest to copy into.

◆ copy()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<unsigned int Csrc>
void Proto::BoxData< T, C, MEM, D, E >::copy ( const BoxData< T, Csrc, MEM, D, E > &  a_dsrc,
const Box a_srcBox,
unsigned int  a_srcComp,
const Box a_destBox,
unsigned int  a_destComp,
unsigned int  a_numcomp 
)

General Copy From.

Nearly identical to the most general version of copyTo except the copy direction is reversed. Only valid for vector or scalar valued BoxData. This function is provided to facilitate interoperability with third party libraries, and is not recommended for public use unless necessary.

Parameters
a_dsrcSource data
a_srcBoxSource domain to copy from
a_srcCompFirst component to copy from source
a_destBoxDestination domain to copy into
a_destCompFirst component to copy into destiation
a_numcompNumber of components to copy

◆ copyTo() [5/5]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::copyTo ( BoxData< T, C, MEM, D, E > &  a_dst,
const CoordPermutation a_rotation 
) const

Copy With Rotation.

Copy between two BoxData with the same number of data points, but with permuted coordinates. This function is mostly used interally in Copiers.

Parameters
a_dstDestination data holder
a_rotationPermutation from this to a_dst's coordinates

◆ transpose()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E> Proto::BoxData< T, C, MEM, D, E >::transpose ( int  c0,
int  c1 
) const

Create a new BoxData that is transposed relative to this.

Very inefficient. Only use this if you have to.

◆ rotate()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::rotate ( Box  a_box,
const CoordPermutation a_rotation 
)

Rotate Coordinates.

Permute the coordinates of this BoxData in place

Parameters
a_boxRotated domain. Must have the same number of points as the current one
a_rotationPermutation from current to desired coordinates

◆ index()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
ACCEL_DECORATION size_t Proto::BoxData< T, C, MEM, D, E >::index ( const Point  a_pt,
unsigned int  a_c = 0,
unsigned int  a_d = 0,
unsigned int  a_e = 0 
) const
inline

Compute Index.

Computes the index in [0,this->size()) associated with a given Point and components

Parameters
a_ptA Point in the domain of *this
a_c(Optional) First tensor index. (defaults : 0)
a_d(Optional) Second tensor index. (defaults : 0)
a_e(Optional) Third tensor index. (defaults : 0)

◆ operator()()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
ACCEL_DECORATION T& Proto::BoxData< T, C, MEM, D, E >::operator() ( const Point a_pt,
unsigned int  a_c = 0,
unsigned int  a_d = 0,
unsigned int  a_e = 0 
) const
inline

Point Accessor.

Read-only access to data stored in *this . This function is read-only to facilitate cross-platform code (e.g. GPU compatability). This function is for debugging ONLY, and will not work on the device. Pointwise write operations should be done through forall.

Parameters
a_ptA Point in the domain of *this
a_c(Optional) First tensor index. (defaults : 0)
a_d(Optional) Second tensor index. (defaults : 0)
a_e(Optional) Third tensor index. (defaults : 0)

◆ array() [1/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
ACCEL_DECORATION Array<T,C*D*E> Proto::BoxData< T, C, MEM, D, E >::array ( const Point a_pt) const
inline

Array Accessor.

Acquire the data in *this at a Point in the form of an Array. The output is a copy, not an alias and cannot be used to alter the content of *this

◆ operator[]() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
const T* Proto::BoxData< T, C, MEM, D, E >::operator[] ( unsigned int  a_index) const
inline

Index Accessor (Const)

Access *this using a linear index. Useful for interacting with BoxData like a regular buffer, but not recommended.

Parameters
a_indexIndex in [0,this->size() = m_box.size()*C*D*E)

◆ operator[]() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T* Proto::BoxData< T, C, MEM, D, E >::operator[] ( unsigned int  a_index)
inline

Index Accessor (Non-Const)

Access *this using a linear index. Useful for interacting with BoxData like a regular buffer, but not recommended.

Parameters
a_indexIndex in [0,this->size() = m_box.size()*C*D*E)

◆ data() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
const T* Proto::BoxData< T, C, MEM, D, E >::data ( const Point a_p,
unsigned int  a_c = 0,
unsigned int  a_d = 0,
unsigned int  a_e = 0 
) const
inline

Pointer Accessor (Const)

Return a const pointer to a data point in *this given a Point and tensor indices.

Parameters
a_pPoint in the domain of this
a_c(Optional) First tensor index. (defaults : 0)
a_d(Optional) Second tensor index. (defaults : 0)
a_e(Optional) Third tensor index. (defaults : 0)

◆ data() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T* Proto::BoxData< T, C, MEM, D, E >::data ( const Point a_p,
unsigned int  a_c = 0,
unsigned int  a_d = 0,
unsigned int  a_e = 0 
)
inline

Pointer Accessor (Non-Const)

Return a pointer to a data point in *this given a Point and tensor indices.

Parameters
a_pPoint in the domain of this
a_c(Optional) First tensor index. (defaults : 0)
a_d(Optional) Second tensor index. (defaults : 0)
a_e(Optional) Third tensor index. (defaults : 0)

◆ data() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T* Proto::BoxData< T, C, MEM, D, E >::data ( unsigned int  a_c = 0,
unsigned int  a_d = 0,
unsigned int  a_e = 0 
)
inline

Buffer Accessor (Non-Const)

Return the contiguous data buffer where the data in *this is stored, starting at a specified component. Not recommended for public use.

Parameters
a_c(Optional) First tensor index. (defaults : 0)
a_d(Optional) Second tensor index. (defaults : 0)
a_e(Optional) Third tensor index. (defaults : 0)

◆ data() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
const T* Proto::BoxData< T, C, MEM, D, E >::data ( unsigned int  a_c = 0,
unsigned int  a_d = 0,
unsigned int  a_e = 0 
) const
inline

Buffer Accessor (Const)

Return the contiguous data buffer where the data in *this is stored. Not recommended for public use.

◆ aliasData() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
inline ::std::shared_ptr<T> Proto::BoxData< T, C, MEM, D, E >::aliasData ( )
inline

Shared Buffer Accessor.

Returns the shared_ptr object that is common to all aliases. If this not an alias, this function is identical to data().

◆ aliasData() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
inline ::std::shared_ptr<T> Proto::BoxData< T, C, MEM, D, E >::aliasData ( ) const
inline

Shared Buffer Accessor (Const)

Returns the shared_ptr object that is common to all aliases. If this not an alias, this function is identical to data().

◆ box() [1/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Box Proto::BoxData< T, C, MEM, D, E >::box ( ) const
inline

Return's the domain Box of *this . Includes ghost cells if it was built it that way.

◆ size() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
std::size_t Proto::BoxData< T, C, MEM, D, E >::size ( ) const
inline

Returns the number of data points in *this . Return value is equal to m_box.size()*C*D*E

◆ numValues()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
std::size_t Proto::BoxData< T, C, MEM, D, E >::numValues ( ) const
inline

◆ defined()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
bool Proto::BoxData< T, C, MEM, D, E >::defined ( ) const
inline

Defined Query.

Returns true if this is defined (e.g., it has memory allocated to it). This will return false for default constructed objects and true otherwise

References Proto::linearIn(), Proto::linearOut(), Proto::linearSize(), Proto::operator*(), Proto::operator+(), Proto::operator+=(), Proto::operator-(), and Proto::setVal.

◆ var() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Var<T,C,MEM,D,E> Proto::BoxData< T, C, MEM, D, E >::var ( const Point a_pt)
inlineprivate

Create Pointwise Access Variable (Non-Const)

◆ var() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Var<T,C,MEM,D,E> Proto::BoxData< T, C, MEM, D, E >::var ( const Point a_pt) const
inlineprivate

Create Pointwise Access Variable (Const)

◆ operatorT() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<BoxDataOp >
void Proto::BoxData< T, C, MEM, D, E >::operatorT ( const BoxData< T, C, MEM, D, E > &  a_src)
inlineprivate

Algebraic Op Helper.

◆ operatorT() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<BoxDataOp >
void Proto::BoxData< T, C, MEM, D, E >::operatorT ( const T  a_scale)
inlineprivate

Algebraic Op Helper.

◆ operator+()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E> Proto::BoxData< T, C, MEM, D, E >::operator+ ( const BoxData< T, C, MEM, D, E > &  a_rhs) const
inline

Pointwise Addition on Intersection.

Output range is the intersection of the inputs. Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_rhsAnother BoxData

◆ operator-()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E> Proto::BoxData< T, C, MEM, D, E >::operator- ( const BoxData< T, C, MEM, D, E > &  a_rhs) const
inline

Pointwise Subtraction on Intersection.

Output range is the intersection of the inputs. Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_rhsAnother BoxData

◆ operator*()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E> Proto::BoxData< T, C, MEM, D, E >::operator* ( const BoxData< T, C, MEM, D, E > &  a_rhs) const
inline

Pointwise Multiplication on Intersection.

Output range is the intersection of the inputs. Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_rhsAnother BoxData

◆ operator/()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E> Proto::BoxData< T, C, MEM, D, E >::operator/ ( const BoxData< T, C, MEM, D, E > &  a_rhs) const
inline

Pointwise Division on Intersection.

Output range is the intersection of the inputs. Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_rhsAnother BoxData

◆ operator+=() [1/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator+= ( const BoxData< T, C, MEM, D, E > &  a_rhs)
inline

Pointwise Addition on Intersection.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_rhsAnother BoxData

◆ operator-=() [1/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator-= ( const BoxData< T, C, MEM, D, E > &  a_rhs)
inline

Pointwise Subtraction on Intersection.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_rhsAnother BoxData

◆ operator*=() [1/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator*= ( const BoxData< T, C, MEM, D, E > &  a_rhs)
inline

Pointwise Multiplication on Intersection.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_rhsAnother BoxData

◆ operator/=() [1/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator/= ( const BoxData< T, C, MEM, D, E > &  a_rhs)
inline

Pointwise Division on Intersection.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_rhsAnother BoxData

◆ operator+=() [2/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator+= ( a_scale)
inline

Pointwise Addition by Scalar.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_scaleA scalare of type T

◆ operator-=() [2/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator-= ( scale)
inline

Pointwise Subtraction by Scalar.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_scaleA scalare of type T

◆ operator*=() [2/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator*= ( scale)
inline

Pointwise Multiplication by Scalar.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_scaleA scalare of type T

◆ operator/=() [2/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator/= ( scale)
inline

Pointwise Division by Scalar.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_scaleA scalare of type T

◆ operator+=() [3/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator+= ( const Array< T, C *D *E > &  a_array)
inline

Pointwise Addition an Array.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_scaleA scalare of type T

◆ operator-=() [3/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator-= ( const Array< T, C *D *E > &  a_array)
inline

Pointwise Subtraction an Array.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_scaleA scalare of type T

◆ operator*=() [3/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator*= ( const Array< T, C *D *E > &  a_array)
inline

Pointwise Multiplication an Array.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_scaleA scalare of type T

◆ operator/=() [3/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::BoxData< T, C, MEM, D, E >::operator/= ( const Array< T, C *D *E > &  a_array)
inline

Pointwise Division by an Array.

Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.

Parameters
a_scaleA scalare of type T

◆ increment()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::increment ( const BoxData< T, C, MEM, D, E > &  rhs,
scale = 1 
)
inline

◆ incrementProduct()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::incrementProduct ( const BoxData< T, C, MEM, D, E > &  A,
const BoxData< T, C, MEM, D, E > &  B,
scale = 1 
)
inline

◆ setVal() [1/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::setVal ( const T &  a_val)
inline

Initialize All Values.

Set all values equal to a constant.

Parameters
a_valA constant value.

◆ setToZero()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::setToZero ( )
inline

Clamp Values.

Threshold data between an input max and min

Parameters
a_minMinimum value
a_maxMaximum valueInitialize All Values as Zero Set all values equal to a zero.

◆ setVal() [2/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::setVal ( const T &  a_val,
const Box a_box 
)
inline

Set All Values in Box.

Selectively initializes values for a specified Box. If a_box is not contained in this->box(), the initialization is done on the intersection. Avoid calling this function as much as possible in performance critical code

Parameters
a_valA constant value.
a_boxDomain to set to a_val

◆ setVal() [3/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::setVal ( const T &  a_val,
const Box a_box,
int  a_c,
int  a_d = 0,
int  a_e = 0 
)
inline

Set All Values of Component in Box.

Avoid calling this function as much as possible in performance critical code

Parameters
a_valA constant value.
a_boxDomain to set to a_val
a_cFirst index
a_d(Optional) Second index. (default: 0)
a_e(Optional) Third index. (default: 0)

◆ setRandom()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::setRandom ( a_low,
a_high 
)
inline

Set Random Noise.

◆ reduce() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<Proto::Operation OP>
void Proto::BoxData< T, C, MEM, D, E >::reduce ( Reduction< T, OP, MEM > &  a_Rxn) const
inline

Generic Reduction (Global)

Computes a reduction operation Stores the result in a Reduction operator.

Parameters
a_rxnA reduction operator

◆ reduce() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<Proto::Operation OP>
void Proto::BoxData< T, C, MEM, D, E >::reduce ( Reduction< T, OP, MEM > &  a_Rxn,
int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Generic Reduction (Componentwise)

Computes a reduction operation on a given component Stores the result in a Reduction operator.

Parameters
a_rxnA reduction operator
a_cFirst tensor index.
a_d(Optional) Second index. (default: 0)
a_e(Optional) Third index. (default: 0)

◆ absMax() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::absMax ( ) const
inline

Absolute Maximum Value (Global)

Returns the maximum absolute value over the entire data set

◆ absMax() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::absMax ( int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Absolute Maximum Value (Componentwise)

Returns the maximum absolute value of a given component

Parameters
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ absMax() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::absMax ( Reduction< T, Abs, MEM > &  a_Rxn) const
inline

Absolute Maximum Value (Global, Reduction)

Computes the global maximum absolute value Stores the result in a Reduction operator.

Parameters
a_rxnA reduction operator

◆ absMax() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::absMax ( Reduction< T, Abs, MEM > &  a_Rxn,
int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Absolute Maximum Value (Componentwise, Reduction)

Computes the maximum absolute value of a given component Stores the result in a Reduction operator.

Parameters
a_rxnA reduction operator
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ min() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::min ( ) const
inline

Minimum Value (Global)

Returns the minimum value over the entire data set

◆ min() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::min ( int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Minimum Value (Componentwise)

Returns the minimum value of a given component

Parameters
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ min() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::min ( Reduction< T, Min, MEM > &  a_rxn) const
inline

Minimum Value (Global, Reduction)

Computes the minimum value over the entire data set Stores the result in a reduction operator

Parameters
a_rxnA reduction operator

◆ min() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::min ( Reduction< T, Min, MEM > &  a_rxn,
int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Minimum Value (Componentwise, Reduction)

Computes the minimum value of a given component Stores the result in a reduction operator

Parameters
a_rxnA reduction operator
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ max() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::max ( ) const
inline

Maximum Value (Global)

Returns the maximum value over the entire data set

◆ max() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::max ( int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Maximum Value (Componentwise)

Returns the maximum value of a given component

Parameters
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ max() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::max ( Reduction< T, Max, MEM > &  a_rxn) const
inline

Max (Global, Reduction)

Computes the maximum of values over the entire data set Stores the result in a reduction operator

Parameters
a_rxnA reduction operator.

◆ max() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::max ( Reduction< T, Max, MEM > &  a_rxn,
int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Max (Componentwise, Reduction)

Computes the maximum value of a given component Stores the result in a reduction operator

Parameters
a_rxnA reduction operator.
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ sum() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::sum ( ) const
inline

Sum (Global)

Return the global sum

◆ sum() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::sum ( int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Sum (Componentwise)

Returns the sum of a particular component

Parameters
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ sum() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::sum ( Reduction< T, Sum, MEM > &  a_rxn) const
inline

Sum (Global, Reduction)

Computes the global sum Stores the result in a reduction operator

Parameters
a_rxnA reduction operator.

◆ sum() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::sum ( Reduction< T, Sum, MEM > &  a_rxn,
int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Sum (Componentwise)

Computes the sum of a particular component Stores the result in a reduction operator

Parameters
a_rxnA reduction operator.
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ sumAbs() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::sumAbs ( ) const
inline

Sum Abs(Global)

Return the global sum of the absolute value

◆ sumAbs() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::sumAbs ( int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Sum Abs(Componentwise)

Returns the sum of a particular component

Parameters
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ sumAbs() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::sumAbs ( Reduction< T, SumAbs, MEM > &  a_rxn) const
inline

Sum Abs (Global, Reduction)

Computes the global sum Stores the result in a reduction operator

Parameters
a_rxnA reduction operator.

◆ sumAbs() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::sumAbs ( Reduction< T, SumAbs, MEM > &  a_rxn,
int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

Sum (Componentwise)

Computes the sum of a particular component Stores the result in a reduction operator

Parameters
a_rxnA reduction operator.
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ sumSquare() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::sumSquare ( ) const
inline

◆ sumSquare() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::sumSquare ( int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

◆ sumSquare() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::sumSquare ( Reduction< T, SumSquare, MEM > &  a_rxn) const
inline

◆ sumSquare() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::sumSquare ( Reduction< T, SumSquare, MEM > &  a_rxn,
int  a_c,
int  a_d = 0,
int  a_e = 0 
) const
inline

◆ integrate() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::integrate ( a_dx,
int  a_c = 0,
int  a_d = 0,
int  a_e = 0 
) const
inline

Integrate (Isotropic Grid)

Approximate the definite integral using an isotropic grid spacing as sum(a_c, a_d, a_e) * pow(a_dx, DIM) .

Parameters
a_dxIsotropic grid spacing.
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ integrate() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T Proto::BoxData< T, C, MEM, D, E >::integrate ( Array< T, DIM >  a_dx,
int  a_c = 0,
int  a_d = 0,
int  a_e = 0 
) const
inline

Integrate (Anisotropic Grid)

Approximate the definite integral using an isotropic grid spacing as sum(a_c, a_d, a_e) * pow(a_dx, DIM) .

Parameters
a_dxAnisotropic grid spacings.
a_cFirst tensor index.
a_dSecond tensor index.
a_eThird tensor index.

◆ shift()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::shift ( const Point a_shift) const
inline

Shift Domain.

Shifts the domain Box of this, moving all data along with it. e.g. data associated with Point p will now be associated with Point p + a_shift. The function is const because m_box is mutable

Parameters
a_shiftA Point interpreted as a shift vector.

◆ linearSize()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
size_t Proto::BoxData< T, C, MEM, D, E >::linearSize ( ) const
inline

Buffer Size.

◆ linearOut() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::linearOut ( void *  a_buffer,
const Box a_box,
CInterval  a_comps 
) const
inline

Buffer Write.

Write a subset of data from *this into a C-array buffer.

Parameters
a_bufferDestination buffer
a_boxDomain to write from
a_compsComponents to write from

◆ linearOut() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::linearOut ( void *  a_buffer,
const Box a_box,
unsigned int  a_startcomp,
unsigned int  a_numcomps 
) const
inline

Buffer Write (Primitive)

Write a subset of data from *this into a C-array buffer. Overload using plain-old-data inputs, useful on GPUs

Parameters
a_bufferDestination buffer
a_boxDomain to write from
a_startcompFirst component to write from
a_numcompsNumber of components to write

◆ linearIn() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::linearIn ( void *  a_buffer,
const Box a_box,
CInterval  a_comps 
)
inline

Buffer Read.

Read data into *this from a C-array buffer populated by BoxData<T,C,MEM,D,E>::linearOut(...). this->box() may be shifted with respect to the BoxData that wrote to the buffer, but the dimensions of the Box as well as the tensor structure must be the same.

Parameters
a_bufferSource buffer
a_boxDomain to read from
a_compsComponents to read from

◆ linearIn() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::linearIn ( void *  a_buffer,
const ::Proto::Box a_bx,
unsigned int  a_startcomp,
unsigned int  a_numcomps 
)
inline

Buffer Read.

Read data into *this from a C-array buffer populated by BoxData<T,C,MEM,D,E>::linearOut(...). Primitive data overload for use with GPUs.

Parameters
a_bufferSource buffer
a_boxDomain to read from
a_compsComponents to read from

◆ contains()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
bool Proto::BoxData< T, C, MEM, D, E >::contains ( CInterval  a_interval) const
inline

Contains CInterval.

Checks if an CInterval object is a subset of the component space of *this. This function is mostly used internally, but it can be useful for checking inputs to CopyTo and the slicing functions

◆ isAlias()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<unsigned int CC, unsigned int DD, unsigned int EE>
bool Proto::BoxData< T, C, MEM, D, E >::isAlias ( const BoxData< T, CC, MEM, DD, EE > &  a_src) const
inline

Check Aliasing.

Returns true if *this and a_src are aliased to the same data buffer. This function also returns true if one array is a slice of another.

◆ print()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::print ( ) const

Print.

Default Print method. Outputs Domain Box and extrema of *this

◆ printData() [1/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::printData ( int  a_prec = 2) const

Print Data.

Pretty prints all of the data in *this. Prettiness may vary depending on the domain size. This function is purely for debugging purposes and should not be used in performance code.

Parameters
a_prec(Optional) Desired precision for fixed decimal output. Defaults to 2.

◆ printData() [2/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::printData ( const Box a_box,
int  a_prec = 2 
) const

Print Data in Box.

Pretty prints the data in *this within a given Box for all components. Input Boxes of size 16^DIM or smaller are recommended to maintain prettiness. This function is purely for debugging purposes and should not be used in performance code.

Parameters
a_boxDesired subset for printing
a_prec(Optional) Desired precision for fixed decimal output. Defaults to 2.

◆ printData() [3/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::BoxData< T, C, MEM, D, E >::printData ( const Box a_box,
int  a_c,
int  a_d,
int  a_e,
int  a_prec = 2 
) const

Print Component Data in Box.

Pretty prints the data in *this within a given Box for a single component. Input Boxes of size 16^DIM or smaller are recommended to maintain prettiness. This function is purely for debugging purposes and should not be used in performance code.

Parameters
a_boxDesired subset for printing
a_cFirst tensor index. Defaults to 0.
a_dSecond tensor index. Defaults to 0.
a_eThird tensor index. Defaults to 0.
a_prec(Optional) Desired precision for fixed decimal output. Defaults to 2

◆ containsInfOrNAN() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
bool Proto::BoxData< T, C, MEM, D, E >::containsInfOrNAN ( ) const

◆ containsInfOrNAN() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
bool Proto::BoxData< T, C, MEM, D, E >::containsInfOrNAN ( Box  domain) const

◆ containsUninitialized() [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
bool Proto::BoxData< T, C, MEM, D, E >::containsUninitialized ( ) const

◆ containsUninitialized() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
bool Proto::BoxData< T, C, MEM, D, E >::containsUninitialized ( Box  domain) const

◆ containsAddress()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
bool Proto::BoxData< T, C, MEM, D, E >::containsAddress ( T *  address) const

◆ size() [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
size_t Proto::BoxData< T, C, MEM, D, E >::size ( const Box a_box,
const size_t  a_comps 
) const
inline

References Proto::Box::size().

◆ charsize()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
size_t Proto::BoxData< T, C, MEM, D, E >::charsize ( const ::Proto::Box a_bx,
unsigned int  a_startcomp,
unsigned int  a_numcomps 
) const
inline

◆ preAllocatable()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
static int Proto::BoxData< T, C, MEM, D, E >::preAllocatable ( )
inlinestatic

◆ memTypeAllocation()

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
static int Proto::BoxData< T, C, MEM, D, E >::memTypeAllocation ( )
inlinestatic

◆ FluxBoxData() [1/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::FluxBoxData< T, C, MEM, D, E >::FluxBoxData ( )
inline

◆ FluxBoxData() [2/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::FluxBoxData< T, C, MEM, D, E >::FluxBoxData ( const Box a_box,
bool  a_doExtrude = true 
)
inline

◆ FluxBoxData() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::FluxBoxData< T, C, MEM, D, E >::FluxBoxData ( Array< std::shared_ptr< BoxData< T, C, MEM, D, E >>, DIM > &  a_data)
inline

◆ FluxBoxData() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Proto::FluxBoxData< T, C, MEM, D, E >::FluxBoxData ( std::vector< std::shared_ptr< BoxData< T, C, MEM, D, E >>> &  a_data)
inline

References PROTO_ASSERT.

◆ define() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
void Proto::FluxBoxData< T, C, MEM, D, E >::define ( const Box a_box,
bool  a_doExtrude = true 
)
inline

References dir, and Proto::Box::extrude().

◆ operator[]() [3/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,C,MEM,D,E>& Proto::FluxBoxData< T, C, MEM, D, E >::operator[] ( unsigned int  a_index)
inline

References PROTO_ASSERT.

◆ operator[]() [4/4]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
const BoxData<T,C,MEM,D,E>& Proto::FluxBoxData< T, C, MEM, D, E >::operator[] ( unsigned int  a_index) const
inline

References PROTO_ASSERT.

◆ array() [2/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Array<std::shared_ptr<BoxData<T,C,MEM,D,E> >,DIM>& Proto::FluxBoxData< T, C, MEM, D, E >::array ( )
inline

◆ array() [3/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
const Array<std::shared_ptr<BoxData<T,C,MEM,D,E> >,DIM>& Proto::FluxBoxData< T, C, MEM, D, E >::array ( ) const
inline

◆ box() [2/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Box Proto::FluxBoxData< T, C, MEM, D, E >::box ( ) const
inline

◆ box() [3/3]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Box Proto::FluxBoxData< T, C, MEM, D, E >::box ( int  a_dir) const
inline

◆ alias() [1/2]

template<class T , unsigned int C = 1, unsigned int D = 1, unsigned int E = 1, MemType MEM = MEMTYPE_DEFAULT>
BoxData<T,C,MEM,D,E> Proto::alias ( BoxData< T, C, MEM, D, E > &  a_original,
const Point a_shift = Point::Zeros() 
)

Alias (Non-Const)

Creates a read-write alias to a mutable source BoxData with an optional shift.

Parameters
a_originalSource data
a_shift(Optional) Domain shift for the aliased BoxData.

◆ alias() [2/2]

template<class T , unsigned int C = 1, unsigned int D = 1, unsigned int E = 1, MemType MEM = MEMTYPE_DEFAULT>
const BoxData<T,C,MEM,D,E> Proto::alias ( const BoxData< T, C, MEM, D, E > &  a_original,
const Point a_shift = Point::Zeros() 
)

Alias (Const)

Creates a read-only alias to a const source BoxData with an optional shift.

Parameters
a_originalSource data
a_shift(Optional) Domain shift for the aliased BoxData.

◆ slice() [1/2]

template<typename T , unsigned int C, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
BoxData<T,1,MEM,1,1> Proto::slice ( const BoxData< T, C, MEM, D, E > &  a_src,
unsigned int  a_c,
unsigned int  a_d = 0,
unsigned int  a_e = 0 
)

Slice Arbitrary Component (Non-Const)

Creates a scalar BoxData read-write alias to a prescribed component.

Parameters
a_srcSource data
a_cFirst component index
a_d(Optional) Second component index (default: 0)
a_e(Optional) Third component index (default: 0)

◆ slice() [2/2]

template<typename T , unsigned int C, unsigned int CC, MemType MEM = MEMTYPE_DEFAULT>
BoxData<T,CC,MEM,1,1> Proto::slice ( const BoxData< T, C, MEM, 1, 1 > &  a_src,
unsigned int  a_startcomp 
)

Vector Slice (Non-Const)

Creates a vector BoxData read-write alias to a prescribed component range

Parameters
a_srcSource data
a_startcompFirst component of the slice

◆ plane()

template<typename T , unsigned int C, unsigned int D, MemType MEM = MEMTYPE_DEFAULT>
BoxData<T,C,MEM,1,1> Proto::plane ( const BoxData< T, C, MEM, D, 1 > &  a_src,
unsigned int  a_d 
)

◆ matrixProduct()

template<typename T , unsigned int CL, unsigned int CR, MemType MEM, unsigned int DL, unsigned int DR, unsigned int E = 1>
BoxData<T, CL, MEM, DR, E> Proto::matrixProduct ( const BoxData< T, CL, MEM, DL, E > &  A,
const BoxData< T, CR, MEM, DR, E > &  B,
scale = 1.0 
)
inline

◆ matrixProductLeftTranspose()

template<typename T , unsigned int CL, unsigned int CR, MemType MEM, unsigned int DL, unsigned int DR, unsigned int E = 1>
BoxData<T, DL, MEM, DR, E> Proto::matrixProductLeftTranspose ( const BoxData< T, CL, MEM, DL, E > &  A,
const BoxData< T, CR, MEM, DR, E > &  B,
scale = 1.0 
)
inline

◆ matrixProductRightTranspose()

template<typename T , unsigned int CL, unsigned int CR, MemType MEM, unsigned int DL, unsigned int DR, unsigned int E = 1>
BoxData<T, CL, MEM, CR, E> Proto::matrixProductRightTranspose ( const BoxData< T, CL, MEM, DL, E > &  A,
const BoxData< T, CR, MEM, DR, E > &  B,
scale = 1.0 
)
inline

Variable Documentation

◆ a_d

template<typename T, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
ACCEL_DECORATION unsigned int Proto::Var< T, C, MEM, D, E >::a_d = 0

◆ a_e

template<typename T, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
ACCEL_DECORATION unsigned int unsigned int Proto::Var< T, C, MEM, D, E >::a_e

◆ boxDimY

template<typename T, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
unsigned int Proto::Var< T, C, MEM, D, E >::boxDimY

◆ subBoxDimX

template<typename T, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
unsigned int Proto::Var< T, C, MEM, D, E >::subBoxDimX

◆ subBoxDimY

template<typename T, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
unsigned int Proto::Var< T, C, MEM, D, E >::subBoxDimY

◆ m_ptrs

template<typename T, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T* Proto::Var< T, C, MEM, D, E >::m_ptrs[C *D *E]

◆ m_alias

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
bool Proto::BoxData< T, C, MEM, D, E >::m_alias
private

was this created as an alias

◆ m_stackAlloc

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
bool Proto::BoxData< T, C, MEM, D, E >::m_stackAlloc
private

◆ m_box

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Box Proto::BoxData< T, C, MEM, D, E >::m_box
mutableprivate

Box defining the domain of *this.

◆ m_data [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
::std::shared_ptr<T> Proto::BoxData< T, C, MEM, D, E >::m_data
private

Data array.

◆ m_rawPtr

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
T* Proto::BoxData< T, C, MEM, D, E >::m_rawPtr
private

Raw pointer to the data.

◆ m_box0

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Box Proto::FluxBoxData< T, C, MEM, D, E >::m_box0
private

◆ m_data [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
Array<std::shared_ptr<BoxData<T,C,MEM,D,E> >,DIM> Proto::FluxBoxData< T, C, MEM, D, E >::m_data
private

Friends

◆ Stencil

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<class TT >
friend class Stencil
friend

◆ alias [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<class TT , unsigned int CC, unsigned int DD, unsigned int EE, MemType MM>
BoxData<TT,CC,MM,DD,EE> alias ( BoxData< TT, CC, MM, DD, EE > &  a_original,
const Point a_shift 
)
friend

◆ alias [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<class TT , unsigned int CC, unsigned int DD, unsigned int EE, MemType MM>
const BoxData<TT,CC,MM,DD,EE> alias ( const BoxData< TT, CC, MM, DD, EE > &  a_original,
const Point a_shift 
)
friend

◆ slice [1/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<typename _T , unsigned int _C, MemType _MEM, unsigned int _D, unsigned int _E>
BoxData<_T,1,_MEM,1,1> slice ( const BoxData< _T, _C, _MEM, _D, _E > &  a_src,
unsigned int  a_c,
unsigned int  a_d,
unsigned int  a_e 
)
friend

◆ slice [2/2]

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<typename _T , unsigned int _C, unsigned int _CC, MemType _MEM>
BoxData<_T,_CC,_MEM,1,1> slice ( const BoxData< _T, _C, _MEM, 1, 1 > &  a_src,
unsigned int  a_nstart 
)
friend

◆ plane

template<class T = double, unsigned int C = 1, MemType MEM = MEMTYPE_DEFAULT, unsigned int D = 1, unsigned int E = 1>
template<typename _T , unsigned int _C, unsigned int _D, MemType _MEM>
BoxData<_T,_C,_MEM,1,1> plane ( const BoxData< _T, _C, _MEM, _D, 1 > &  a_src,
unsigned int  a_d 
)
friend