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 _eblevel_redist_stencil_H_
00030 #define _eblevel_redist_stencil_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 #include "Stencils.H"
00040 #include "BaseIVFAB.H"
00041 #include "RedistStencil.H"
00042
00044
00046 class EBLevelRedist
00047 {
00048 public:
00050
00053 EBLevelRedist();
00054
00056 ~EBLevelRedist();
00057
00059
00066 EBLevelRedist(const DisjointBoxLayout& a_dbl,
00067 const EBISLayout& a_ebisl,
00068 const Box& a_domain,
00069 const int& a_ncomp,
00070 int redistRad = 1);
00071
00073
00077 void define(const DisjointBoxLayout& a_dbl,
00078 const EBISLayout& a_ebisl,
00079 const Box& a_domain,
00080 const int& a_ncomp,
00081 int redistRad = 1);
00082
00084
00090 void resetWeights(const LevelData<EBCellFAB>& modifier,
00091 const int& ivar);
00092
00094
00099 void increment(const BaseIVFAB<Real>& massDiff,
00100 const DataIndex& datInd,
00101 const Interval& variables);
00102
00104
00108 void redistribute(LevelData<EBCellFAB>& solution,
00109 const Interval& variables);
00111
00115 bool isDefined() const;
00116
00118
00121 void setToZero();
00122
00123 protected:
00124 int redistRad;
00125 RedistStencil m_stencil;
00126 int m_ncomp;
00127 int m_redistRad;
00128 DisjointBoxLayout m_grids;
00129 Box m_domain;
00130 EBISLayout m_ebisl;
00131 bool m_isDefined;
00132 LevelData<BaseIVFAB<Real> > m_buffer;
00133 LayoutData<IntVectSet> m_sets;
00134 private:
00135
00136
00137 void operator=(const EBLevelRedist& a_stenin)
00138 {
00139 MayDay::Error("Invalid operator");
00140 }
00141
00142 EBLevelRedist(const EBLevelRedist& a_stenin)
00143 {
00144 MayDay::Error("Invalid operator");
00145 }
00146
00147
00148 };
00149
00150 #endif