Proto  3.2
Proto_MBAMRData.H
Go to the documentation of this file.
1 #pragma once
2 #ifndef _PROTO_MB_AMR_DATA_
3 #define _PROTO_MB_AMR_DATA_
4 
5 #include "Proto_MBAMRLayout.H"
7 
8 namespace Proto
9 {
10  /// Multiblock AMR Data
11  template<typename T, unsigned int C, MemType MEM, Centering CTR=PR_CELL>
12  class MBAMRData
13  {
14  public:
15 
16  inline MBAMRData();
17  inline MBAMRData(
18  const MBAMRLayout& a_grid,
19  Array<Point, DIM+1> a_ghost,
20  Point a_boundGhost = Point::Zeros());
21  inline MBAMRData(
22  const MBAMRLayout& a_grid,
23  Point a_ghost,
24  Point a_boundGhost = Point::Zeros());
25 
26  inline MBAMRData(
27  const MBAMRLayout& a_grid,
28  std::vector<std::shared_ptr<MBLevelBoxData<T,C,MEM,CTR>>> a_levelData);
29 
30  inline void define(
31  const MBAMRLayout& a_grid,
32  Array<Point, DIM+1> a_ghost,
33  Point a_boundGhost = Point::Zeros());
34 
35  inline void define(
36  const MBAMRLayout& a_grid,
37  std::vector<std::shared_ptr<MBLevelBoxData<T,C,MEM,CTR>>> a_levelData);
38 
39  inline bool validate() const;
40 
41  inline void setVal(T a_value);
42  inline void setRandom(T a_low, T a_high);
43  inline void exchange();
44  inline Array<Point, DIM+1> ghost() const { return m_ghost; }
45  inline const MBAMRLayout& grid() const {return m_grid; }
46  inline MBLevelBoxData<T,C,MEM,CTR>& getLevel(unsigned int a_level);
47  inline const MBLevelBoxData<T,C,MEM,CTR>& getLevel(unsigned int a_level) const;
48  inline MBLevelBoxData<T,C,MEM,CTR>& operator[](unsigned int a_level)
49  { return getLevel(a_level); }
50  inline const MBLevelBoxData<T,C,MEM,CTR>& operator[](unsigned int a_level) const
51  { return getLevel(a_level); }
52  inline AMRData<T,C,MEM,CTR>& getBlock(unsigned int a_block);
53  inline const AMRData<T,C,MEM,CTR>& getBlock(unsigned int a_block) const;
54  inline int numLevels() const {return m_grid.numLevels(); }
55  inline int numBlocks() const {return m_grid.numBlocks(); }
56 
57  // Operators
58  inline void averageDown();
59  inline void interpolate(unsigned int a_level);
60  inline void interpolate();
61  inline void increment(const MBAMRData<T,C,MEM,CTR>& a_data, T a_scale);
62  inline void operator*=(T a_value);
63  inline void operator+=(T a_value);
64  inline T integrate(Array<T,DIM> a_cdx, unsigned int a_c = 0);
65  inline T integrate(T a_cdx, unsigned int a_c = 0);
66  inline T integrateAbs(Array<T,DIM> a_cdx, unsigned int a_c = 0);
67  inline T integrateAbs(T a_cdx, unsigned int a_c = 0);
68  inline T absMax(unsigned int a_c = 0);
69  inline void copyTo(MBAMRData& a_rhs);
70 
71  private:
72 
73  void defineAMRData();
74 
77  std::vector<std::shared_ptr<MBLevelBoxData<T, C, MEM, CTR>>> m_levelData;
78  std::vector<std::shared_ptr<AMRData<T, C, MEM, CTR>>> m_amrData;
79  };
80 
81 #include "implem/Proto_MBAMRDataImplem.H"
82 } // end namespace Proto
83 #endif //end include guard
int numBlocks() const
Definition: Proto_MBAMRData.H:55
T integrate(Array< T, DIM > a_cdx, unsigned int a_c=0)
Definition: Proto_MBAMRData.H:229
Multiblock AMR Data.
Definition: Proto_MBAMRData.H:12
MBLevelBoxData< T, C, MEM, CTR > & operator[](unsigned int a_level)
Definition: Proto_MBAMRData.H:48
const MBLevelBoxData< T, C, MEM, CTR > & operator[](unsigned int a_level) const
Definition: Proto_MBAMRData.H:50
AMRData< T, C, MEM, CTR > & getBlock(unsigned int a_block)
Definition: Proto_MBAMRData.H:158
T absMax(unsigned int a_c=0)
Definition: Proto_MBAMRData.H:241
void copyTo(MBAMRData &a_rhs)
Definition: Proto_MBAMRData.H:244
void operator*=(T a_value)
Definition: Proto_MBAMRData.H:223
unsigned int numLevels() const
Definition: Proto_MBAMRLayout.H:59
Multiblock Level Box Data.
Definition: Proto_MBLevelBoxData.H:17
void interpolate()
Definition: Proto_MBAMRData.H:210
void averageDown()
Definition: Proto_MBAMRData.H:176
std::vector< std::shared_ptr< AMRData< T, C, MEM, CTR > > > m_amrData
Definition: Proto_MBAMRData.H:78
AMR Data Hierarchy.
Definition: Proto_AMRData.H:23
bool validate() const
Definition: Proto_MBAMRData.H:56
MBAMRLayout m_grid
Definition: Proto_MBAMRData.H:76
Array< Point, DIM+1 > m_ghost
Definition: Proto_MBAMRData.H:75
int numLevels() const
Definition: Proto_MBAMRData.H:54
MBAMRData(const MBAMRLayout &a_grid, Point a_ghost, Point a_boundGhost=Point::Zeros())
Definition: Proto_MBAMRData.H:15
const MBAMRLayout & grid() const
Definition: Proto_MBAMRData.H:45
void setRandom(T a_low, T a_high)
Definition: Proto_MBAMRData.H:121
T integrateAbs(Array< T, DIM > a_cdx, unsigned int a_c=0)
Definition: Proto_MBAMRData.H:235
MBAMRData()
Definition: Proto_MBAMRData.H:3
Array< Point, DIM+1 > ghost() const
Definition: Proto_MBAMRData.H:44
static ACCEL_DECORATION Point Zeros()
Get Zeros.
Definition: Proto_Array.H:17
void exchange()
Definition: Proto_MBAMRData.H:130
A templated constant size array object similar to std::array, but with the ability to be used inside ...
Definition: Proto_Array.H:28
std::vector< std::shared_ptr< MBLevelBoxData< T, C, MEM, CTR > > > m_levelData
Definition: Proto_MBAMRData.H:77
Integer Valued Vector.
Definition: Proto_Point.H:24
void increment(const MBAMRData< T, C, MEM, CTR > &a_data, T a_scale)
Definition: Proto_MBAMRData.H:219
void defineAMRData()
Definition: Proto_MBAMRData.H:92
MBLevelBoxData< T, C, MEM, CTR > & getLevel(unsigned int a_level)
Definition: Proto_MBAMRData.H:140
void define(const MBAMRLayout &a_grid, Array< Point, DIM+1 > a_ghost, Point a_boundGhost=Point::Zeros())
Definition: Proto_MBAMRData.H:35
unsigned int numBlocks() const
Definition: Proto_MBAMRLayout.H:61
void setVal(T a_value)
Definition: Proto_MBAMRData.H:112
void operator+=(T a_value)
Definition: Proto_MBAMRData.H:226
Multiblock AMR Grid.
Definition: Proto_MBAMRLayout.H:12