2 #ifndef _PROTO_LEVELBOXDATA_H_ 3 #define _PROTO_LEVELBOXDATA_H_ 25 template<
typename T,
unsigned int C, MemType MEM, Centering CTR>
32 template<
typename T,
unsigned int C, MemType MEM, Centering CTR>
49 template<
unsigned int DST_DATA_COMPONENTS>
54 inline unsigned int numBoxes()
const;
58 inline void setVal(T a_value,
int a_comp = -1);
80 template<
typename Func,
typename... Srcs>
81 inline void initialize(Func& a_func, Srcs&... a_srcs);
91 template<
template<
typename,
unsigned int, MemType, Centering>
class E_COPIER,
103 template<MemType DST_MEM>
106 template<MemType DST_MEM>
121 inline unsigned int offset(
int a_proc)
const;
180 inline void linearIn(
void* a_buffer,
198 inline void linearIn(
void* a_buffer);
203 inline void linearOut(
void* a_buffer)
const;
232 template<Proto::Operation OP>
233 inline double reduce(
unsigned int a_comp = 0)
const;
239 inline double absMax(
unsigned int a_comp = 0)
const;
245 inline double sum(
unsigned int a_comp = 0)
const;
251 inline double max(
unsigned int a_comp = 0)
const;
257 inline double min(
unsigned int a_comp = 0)
const;
266 inline double integrate(
double a_dx,
unsigned int a_comp = 0)
const;
284 inline double integrateAbs(
double a_dx,
unsigned int a_comp = 0)
const;
296 template<
typename _T,
unsigned int _C, MemType _MEM, Centering _CTR>
332 std::vector<std::vector<shared_ptr<BoxData<T, C, MEM> > >>
m_data;
371 inline void linearOut(
void* a_buf,
const LevelMotionItem& a_info);
377 inline void linearIn(
void* a_buf,
const LevelMotionItem& a_info);
383 inline void localCopy(
const LevelMotionItem& a_info);
395 template<
typename T,
unsigned int C, MemType SRC_MEM, MemType DST_MEM, Centering CTR>
397 :
public Copier<LevelCopierOp<T, C, SRC_MEM, DST_MEM, CTR>, BoxPartition, BoxPartition, SRC_MEM, DST_MEM>
412 template<
typename T,
unsigned int C, MemType MEM, Centering CTR>
414 :
public Copier<LevelCopierOp<T, C, MEM, MEM, CTR>, BoxPartition, BoxPartition, MEM, MEM>
430 template<
typename T,
unsigned int C, MemType MEM, Centering CTR>
442 template<
typename T,
unsigned int C, MemType MEM, Centering CTR>
453 template<
typename T,
unsigned int C, MemType MEM, Centering CTR>
463 template<
typename T,
unsigned int C, MemType MEM, Centering CTR>
473 template<
typename T,
unsigned int C, MemType MEM, Centering CTR>
484 template<
typename T,
unsigned int C, MemType MEM, Centering CTR>
492 #include "implem/Proto_LevelBoxDataImplem.H" double integrate(double a_dx, unsigned int a_comp=0) const
Integral.
Definition: Proto_LevelBoxData.H:637
DataIterator< BoxPartition > dataIterator() const
deprecated but useful
Definition: Proto_LevelBoxData.H:323
void iota(Array< T, DIM > a_dx, Array< T, DIM > a_offset=Array< T, DIM >::Zeros())
Definition: Proto_LevelBoxData.H:129
DataIterator< BoxPartition > end() const
Definition: Proto_LevelBoxData.H:518
void defineExchange(Args... a_args)
Definition: Proto_LevelBoxData.H:335
Distributed Data Iterator.
Definition: Proto_DataIndex.H:10
std::vector< std::vector< shared_ptr< BoxData< T, C, MEM > > > > m_data
Definition: Proto_LevelBoxData.H:332
Box patchBox(const DataIndex< BoxPartition > &a_index) const
Patch Box.
Multidimensional Rectangular Array.
Definition: Proto_BoxData.H:314
int s_verbosity
For debugging purposes.
Definition: Proto_LevelBoxData.H:328
Disjoint Box Layout.
Definition: Proto_DisjointBoxLayout.H:30
LevelExchangeCopier()
Definition: Proto_LevelBoxData.H:418
LevelBoxData< T, C, DST_MEM, CTR > * m_dst
Definition: Proto_LevelBoxData.H:358
unsigned int patchSize() const
Patch Size.
double reduce(unsigned int a_comp=0) const
Reduction.
Definition: Proto_LevelBoxData.H:599
void initialize(Func &a_func, Srcs &... a_srcs)
Function Initialization.
DataIterator< BoxPartition > begin() const
Get Iterator.
Definition: Proto_LevelBoxData.H:512
MemType
Definition: Proto_MemType.H:7
void interpBoundaries(LevelBoxData< T, C, MEM, CTR > &a_crse, LevelBoxData< T, C, MEM, CTR > &a_fine, InterpStencil< T > &a_interp)
Interpolate Boundaries.
Definition: Proto_LevelBoxData.H:955
Level Box Data.
Definition: Proto_HDF5.H:17
Definition: Proto_InterpStencil.H:14
bool m_isDefined
Definition: Proto_LevelBoxData.H:335
BoxData< T, C, MEM > & operator[](const DataIndex< BoxPartition > &a_index)
Get Patch.
Definition: Proto_LevelBoxData.H:525
size_t linearSize() const
Size (All Local Data)
Definition: Proto_LevelBoxData.H:500
Level Copier Operator.
Definition: Proto_LevelBoxData.H:354
An interval in DIM dimensional space.
Definition: Proto_Box.H:29
LevelBoxData< T, C, MEM, CTR > & operator=(const LevelBoxData< T, C, MEM, CTR > &a_rhs)
DisjointBoxLayout layout() const
Get Box Layout.
Definition: Proto_LevelBoxData.H:211
BoxData< T, C, MEM > & operator()(const DataIndex< BoxPartition > &a_index, unsigned int a_dir=0)
Get Patch (Face / Edge Centering)
Definition: Proto_LevelBoxData.H:541
std::shared_ptr< LevelExchangeCopier< T, C, MEM, CTR > > m_exchangeCopier
Definition: Proto_LevelBoxData.H:336
LevelCopierOp()
Definition: Proto_LevelBoxData.H:360
double sum(unsigned int a_comp=0) const
Sum.
Definition: Proto_LevelBoxData.H:630
MotionItem< BoxPartition, BoxPartition > LevelMotionItem
Definition: Proto_LevelBoxData.H:23
int procID()
Get Local Process ID.
Definition: Proto_SPMD.H:39
Level Copier.
Definition: Proto_LevelBoxData.H:396
void operator*=(T a_scale)
Multiply By Scalar.
Definition: Proto_LevelBoxData.H:574
void increment(LevelBoxData< T, C, MEM, CTR > &a_data, T a_scale=1.0)
Increment.
Definition: Proto_LevelBoxData.H:558
void linearIn(void *a_buffer, const Box &a_box, const DataIndex< BoxPartition > &a_index)
Linear In (Patch, Box)
Definition: Proto_LevelBoxData.H:415
void copyTo(LevelBoxData< T, C, DST_MEM, CTR > &a_dest) const
Copy To.
Definition: Proto_LevelBoxData.H:363
void setDomainBoundary(T a_value, int a_comp=-1)
void operator+=(T a_scale)
Add a Constant.
Definition: Proto_LevelBoxData.H:586
void linearOut(void *a_buffer, const Box &a_box, const DataIndex< BoxPartition > &a_index) const
Linear Out (Patch, Box)
Definition: Proto_LevelBoxData.H:449
unsigned int numBoxes() const
void setVal(T a_value, int a_comp=-1)
Definition: Proto_Array.H:17
void averageDown(LevelBoxData< T, C, MEM, CTR > &a_crse, LevelBoxData< T, C, MEM, CTR > &a_fine, Point a_refRatio)
Average Down.
Definition: Proto_LevelBoxData.H:994
void copyToSimple(LevelBoxData< T, C, DST_MEM, CTR > &a_dest) const
Definition: Proto_LevelBoxData.H:349
LevelCopier()
Definition: Proto_LevelBoxData.H:401
Integer Valued Vector.
Definition: Proto_Point.H:24
Point ghost() const
Get Ghost Size.
Definition: Proto_LevelBoxData.H:214
void coarsenTo(LevelBoxData &a_dest, Point a_refRatio) const
Copy With Coarsen.
Definition: Proto_LevelBoxData.H:391
DisjointBoxLayout m_layout
Definition: Proto_LevelBoxData.H:334
void define(const DisjointBoxLayout &a_layout, const Point &a_ghostRegionSizes)
Definition: Proto_LevelBoxData.H:64
bool compatible(const LevelBoxData< _T, _C, _MEM, _CTR > &a_data) const
Query Layout Compatibility.
Definition: Proto_LevelBoxData.H:1043
Definition: Proto_Centering.H:9
unsigned int offset() const
Definition: Proto_LevelBoxData.H:122
void setRandom(T a_low, T a_high)
double min(unsigned int a_comp=0) const
Min.
Definition: Proto_LevelBoxData.H:676
void setToZero(int a_comp=-1)
double max(unsigned int a_comp=0) const
Max.
Definition: Proto_LevelBoxData.H:669
LevelBoxData< T, C, SRC_MEM, CTR > * m_src
Definition: Proto_LevelBoxData.H:357
double absMax(unsigned int a_comp=0) const
Maximum Absolute Value.
Definition: Proto_LevelBoxData.H:623
double integrateAbs(double a_dx, unsigned int a_comp=0) const
Integral of Absolute Value.
Definition: Proto_LevelBoxData.H:653
#define MEMTYPE_DEFAULT
Definition: Proto_MemType.H:24
Abstract Generic Parallel Copier.
Definition: Proto_Copier.H:60
LevelBoxData()
Definition: Proto_LevelBoxData.H:4
Centering
Definition: Proto_Centering.H:7
Point m_ghost
Definition: Proto_LevelBoxData.H:333
Definition: Proto_Copier.H:22
Exchange Copier.
Definition: Proto_LevelBoxData.H:33