Proto
3.2
|
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... | |
BoxData & | Proto::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 Example | |
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 | |
BoxData & | Proto::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... | |
T | Proto::BoxData< T, C, MEM, D, E >::absMax () const |
Absolute Maximum Value (Global) More... | |
T | 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... | |
T | Proto::BoxData< T, C, MEM, D, E >::min () const |
Minimum Value (Global) More... | |
T | 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... | |
T | Proto::BoxData< T, C, MEM, D, E >::max () const |
Maximum Value (Global) More... | |
T | 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... | |
T | Proto::BoxData< T, C, MEM, D, E >::sum () const |
Sum (Global) More... | |
T | 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... | |
T | Proto::BoxData< T, C, MEM, D, E >::sumAbs () const |
Sum Abs(Global) More... | |
T | 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... | |
T | Proto::BoxData< T, C, MEM, D, E >::sumSquare () const |
T | 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 |
T | 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... | |
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 |
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 |
typedef Var<T,C,MEM,D,E> Proto::BoxData< T, C, MEM, D, E >::reference |
|
inline |
References ACCEL_DECORATION.
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.
a_c | First component index |
a_d | Second component index (default: 0) |
a_e | Third component index (default: 0) |
|
delete |
Forbidden Functions.
|
delete |
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.
|
explicit |
Proto::BoxData< T, C, MEM, D, E >::BoxData | ( | const Box & | a_box, |
T | a_init | ||
) |
Proto::BoxData< T, C, MEM, D, E >::BoxData | ( | BoxData< T, C, MEM, D, E > && | a_src | ) |
void Proto::BoxData< T, C, MEM, D, E >::define | ( | const Box & | a_box | ) |
|
private |
Alias Define.
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.
a_ptr | MEM Source buffer of type T to which *this will be aliased. |
a_box | Box defining the domain of *this |
a_ncomp | Dummy input for the number of components. Completely unused. |
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.
a_ptr | MEM Source buffer of type T to which *this will be aliased. |
a_box | Box defining the domain of *this |
a_ncomp | Dummy input for the number of components. Completely unused. |
|
private |
LazyStencil Constructor.
Builds a BoxData from a lazily evaluated Stencil operation. Called implicitly. Allows for the syntax:
a_op | The output of a Stencil or InterpStencil apply operation. |
Proto::BoxData< T, C, MEM, D, E >::BoxData | ( | LazyInterpStencil< T, C, MEM, D, E > && | a_op | ) |
|
private |
Slice Constructor.
Used internally. Not part of the public interface.
Proto::BoxData< T, C, MEM, D, E >::~BoxData | ( | ) |
Destructor.
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.
a_src | Source Data |
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.
a_dest | Destination data holder |
Referenced by Proto::MBBoundaryData< T, C, MEM >::fill().
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.
a_dest | Destination data holder |
a_srcBox | Region of data to copy from *this |
a_destShift | (Optional) Determines region of a_dest to copy data to. |
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.
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:
a_dest | Destination data holder |
a_srcBox | Region of data to copy from *this |
a_srcComps | Components of *this to copy from |
a_destShift | Determines region of a_dest to copy data to |
a_destComps | Components of a_dest to copy into. |
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.
a_dsrc | Source data |
a_srcBox | Source domain to copy from |
a_srcComp | First component to copy from source |
a_destBox | Destination domain to copy into |
a_destComp | First component to copy into destiation |
a_numcomp | Number of components to copy |
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.
a_dst | Destination data holder |
a_rotation | Permutation from this to a_dst's coordinates |
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.
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
a_box | Rotated domain. Must have the same number of points as the current one |
a_rotation | Permutation from current to desired coordinates |
|
inline |
|
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.
a_pt | A 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) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
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.
a_c | (Optional) First tensor index. (defaults : 0) |
a_d | (Optional) Second tensor index. (defaults : 0) |
a_e | (Optional) Third tensor index. (defaults : 0) |
|
inline |
Buffer Accessor (Const)
Return the contiguous data buffer where the data in *this
is stored. Not recommended for public use.
|
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().
|
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().
|
inline |
Return's the domain Box of *this
. Includes ghost cells if it was built it that way.
|
inline |
Returns the number of data points in *this
. Return value is equal to m_box.size()*C*D*E
|
inline |
|
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.
|
inlineprivate |
Create Pointwise Access Variable (Non-Const)
|
inlineprivate |
Create Pointwise Access Variable (Const)
|
inlineprivate |
Algebraic Op Helper.
|
inlineprivate |
Algebraic Op Helper.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Pointwise Addition by Scalar.
Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.
a_scale | A scalare of type T |
|
inline |
Pointwise Subtraction by Scalar.
Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.
a_scale | A scalare of type T |
|
inline |
Pointwise Multiplication by Scalar.
Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.
a_scale | A scalare of type T |
|
inline |
Pointwise Division by Scalar.
Not recommended for performance unless necessary. Try to fuse arithmetic operations into forall or Stencil operations if possible.
a_scale | A scalare of type T |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Initialize All Values.
Set all values equal to a constant.
a_val | A constant value. |
|
inline |
Clamp Values.
Threshold data between an input max and min
a_min | Minimum value |
a_max | Maximum valueInitialize All Values as Zero Set all values equal to a zero. |
|
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
a_val | A constant value. |
a_box | Domain to set to a_val |
|
inline |
Set All Values of Component in Box.
Avoid calling this function as much as possible in performance critical code
a_val | A constant value. |
a_box | Domain to set to a_val |
a_c | First index |
a_d | (Optional) Second index. (default: 0) |
a_e | (Optional) Third index. (default: 0) |
|
inline |
Set Random Noise.
|
inline |
|
inline |
|
inline |
Absolute Maximum Value (Global)
Returns the maximum absolute value over the entire data set
|
inline |
Absolute Maximum Value (Componentwise)
Returns the maximum absolute value of a given component
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
|
inline |
|
inline |
Minimum Value (Global)
Returns the minimum value over the entire data set
|
inline |
Minimum Value (Componentwise)
Returns the minimum value of a given component
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
Minimum Value (Global, Reduction)
Computes the minimum value over the entire data set Stores the result in a reduction operator
a_rxn | A reduction operator |
|
inline |
Minimum Value (Componentwise, Reduction)
Computes the minimum value of a given component Stores the result in a reduction operator
a_rxn | A reduction operator |
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
Maximum Value (Global)
Returns the maximum value over the entire data set
|
inline |
Maximum Value (Componentwise)
Returns the maximum value of a given component
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
Max (Global, Reduction)
Computes the maximum of values over the entire data set Stores the result in a reduction operator
a_rxn | A reduction operator. |
|
inline |
Max (Componentwise, Reduction)
Computes the maximum value of a given component Stores the result in a reduction operator
a_rxn | A reduction operator. |
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
Sum (Global)
Return the global sum
|
inline |
Sum (Componentwise)
Returns the sum of a particular component
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
Sum (Global, Reduction)
Computes the global sum Stores the result in a reduction operator
a_rxn | A reduction operator. |
|
inline |
Sum (Componentwise)
Computes the sum of a particular component Stores the result in a reduction operator
a_rxn | A reduction operator. |
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
Sum Abs(Global)
Return the global sum of the absolute value
|
inline |
Sum Abs(Componentwise)
Returns the sum of a particular component
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
Sum Abs (Global, Reduction)
Computes the global sum Stores the result in a reduction operator
a_rxn | A reduction operator. |
|
inline |
Sum (Componentwise)
Computes the sum of a particular component Stores the result in a reduction operator
a_rxn | A reduction operator. |
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
|
inline |
|
inline |
|
inline |
|
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)
.
a_dx | Isotropic grid spacing. |
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
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)
.
a_dx | Anisotropic grid spacings. |
a_c | First tensor index. |
a_d | Second tensor index. |
a_e | Third tensor index. |
|
inline |
|
inline |
Buffer Size.
|
inline |
Buffer Write.
Write a subset of data from *this
into a C-array buffer.
a_buffer | Destination buffer |
a_box | Domain to write from |
a_comps | Components to write from |
|
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
a_buffer | Destination buffer |
a_box | Domain to write from |
a_startcomp | First component to write from |
a_numcomps | Number of components to write |
|
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.
a_buffer | Source buffer |
a_box | Domain to read from |
a_comps | Components to read from |
|
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.
a_buffer | Source buffer |
a_box | Domain to read from |
a_comps | Components to read from |
|
inline |
|
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.
void Proto::BoxData< T, C, MEM, D, E >::print | ( | ) | const |
Print.
Default Print method. Outputs Domain Box and extrema of *this
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.
a_prec | (Optional) Desired precision for fixed decimal output. Defaults to 2. |
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.
a_box | Desired subset for printing |
a_prec | (Optional) Desired precision for fixed decimal output. Defaults to 2. |
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.
a_box | Desired subset for printing |
a_c | First tensor index. Defaults to 0. |
a_d | Second tensor index. Defaults to 0. |
a_e | Third tensor index. Defaults to 0. |
a_prec | (Optional) Desired precision for fixed decimal output. Defaults to 2 |
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 |
|
inline |
References Proto::Box::size().
|
inline |
|
inlinestatic |
|
inlinestatic |
|
inline |
|
inline |
|
inline |
|
inline |
References PROTO_ASSERT.
|
inline |
References dir, and Proto::Box::extrude().
|
inline |
References PROTO_ASSERT.
|
inline |
References PROTO_ASSERT.
|
inline |
|
inline |
|
inline |
|
inline |
BoxData<T,C,MEM,D,E> Proto::alias | ( | BoxData< T, C, MEM, D, E > & | a_original, |
const Point & | a_shift = Point::Zeros() |
||
) |
const BoxData<T,C,MEM,D,E> Proto::alias | ( | const BoxData< T, C, MEM, D, E > & | a_original, |
const Point & | a_shift = Point::Zeros() |
||
) |
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.
a_src | Source data |
a_c | First component index |
a_d | (Optional) Second component index (default: 0) |
a_e | (Optional) Third component index (default: 0) |
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
a_src | Source data |
a_startcomp | First component of the slice |
BoxData<T,C,MEM,1,1> Proto::plane | ( | const BoxData< T, C, MEM, D, 1 > & | a_src, |
unsigned int | a_d | ||
) |
|
inline |
|
inline |
|
inline |
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] |
|
private |
was this created as an alias
|
private |
|
mutableprivate |
Box defining the domain of *this.
|
private |
Data array.
|
private |
Raw pointer to the data.
|
private |
|
private |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |