00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _EB_COARSE_AVERAGE_H_
00030 #define _EB_COARSE_AVERAGE_H_
00031
00032 #include "REAL.H"
00033 #include "FArrayBox.H"
00034 #include "LevelData.H"
00035 #include "DisjointBoxLayout.H"
00036 #include "EBISLayout.H"
00037 #include "EBCellFAB.H"
00038 #include "Interval.H"
00039
00041
00047 class EBCoarseAverage
00048 {
00049 public:
00051
00054 EBCoarseAverage();
00055
00057 ~EBCoarseAverage();
00058
00060
00073 EBCoarseAverage(const DisjointBoxLayout& dblFine,
00074 const DisjointBoxLayout& dblCoar,
00075 const EBISLayout& ebislFine,
00076 const EBISLayout& ebislCoar,
00077 const Box& domainCoar,
00078 const int& nref,
00079 const int& nvar);
00080
00082
00094 void define(const DisjointBoxLayout& dblFine,
00095 const DisjointBoxLayout& dblCoar,
00096 const EBISLayout& ebislFine,
00097 const EBISLayout& ebislCoar,
00098 const Box& domainCoar,
00099 const int& nref,
00100 const int& nvar);
00101
00103
00107 bool isDefined() const;
00108
00110
00130 void
00131 average(LevelData<EBCellFAB>& coarData,
00132 const LevelData<EBCellFAB>& fineData,
00133 const Interval& variables);
00134
00135 protected:
00136 void
00137 averageFAB(EBCellFAB& a_coar,
00138 const EBCellFAB& a_fine,
00139 const DataIndex& a_datInd,
00140 const Interval& variables) const;
00141
00142
00143 void
00144 setDefaultValues();
00145
00146 bool m_isDefined;
00147
00148 DisjointBoxLayout m_coarGrids;
00149 DisjointBoxLayout m_fineGrids;
00150 DisjointBoxLayout m_coarsenedFineGrids;
00151 Box m_coarDomain;
00152
00153 EBISLayout m_coarEBISL;
00154 EBISLayout m_fineEBISL;
00155
00156 EBISLayout m_coarsenedFineEBISL;
00157
00158 int m_refRat;
00159 int m_nComp;
00160 LevelData<EBCellFAB> m_coarsenedFineData;
00161
00162 private:
00163
00164 EBCoarseAverage(const EBCoarseAverage& ebcin)
00165 {
00166 MayDay::Error("ebca 2 invalid operator");
00167 }
00168 void operator=(const EBCoarseAverage& fabin)
00169 {
00170 MayDay::Error("ebca 3 invalid operator");
00171 }
00172
00173 };
00174
00175 #endif