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 _EBCoarToFineRedist_H_
00030 #define _EBCoarToFineRedist_H_
00031 #include "REAL.H"
00032 #include "Vector.H"
00033 #include "EBCellFAB.H"
00034 #include "EBFaceFAB.H"
00035 #include "EBISLayout.H"
00036 #include "EBISBox.H"
00037 #include "IntVectSet.H"
00038 #include "CFStencil.H"
00039 #include "LoHiSide.H"
00040 #include "LevelData.H"
00041 #include "LayoutData.H"
00042 #include "RedistStencil.H"
00043
00044
00046
00049 class EBCoarToFineRedist
00050 {
00051 public:
00052
00053 friend class EBFluxRegister;
00054
00056
00059 EBCoarToFineRedist();
00060
00062 ~EBCoarToFineRedist();
00063
00065
00068 void setToZero();
00069
00071
00077 void increment(const BaseIVFAB<Real>& a_coarseMass,
00078 const DataIndex& a_coarseDataIndex,
00079 const Interval& a_variables);
00080
00081
00083
00086 void redistribute(LevelData<EBCellFAB>& a_fineSolution,
00087 const Interval& a_variables);
00088
00090 bool isDefined() const;
00091
00093
00099 void define(const DisjointBoxLayout& a_dblFine,
00100 const DisjointBoxLayout& a_dblCoar,
00101 const EBISLayout& a_ebislFine,
00102 const EBISLayout& a_ebislCoar,
00103 const Box& a_domainCoar,
00104 const int& a_nref,
00105 const int& a_nvar,
00106 int redistRad = 1);
00107
00109
00111 void
00112 resetWeights(const LevelData<EBCellFAB>& a_modifierCoar,
00113 const int& a_ivar);
00114 protected:
00115
00116
00117 void setDefaultValues();
00118
00119 bool m_isDefined;
00120 int m_redistRad;
00121 int m_nComp;
00122 int m_refRat;
00123 Box m_domainCoar;
00124
00125
00126 DisjointBoxLayout m_gridsFine;
00127
00128 DisjointBoxLayout m_gridsCoar;
00129
00130
00131 DisjointBoxLayout m_gridsCedFine;
00132
00133 LevelData<BaseIVFAB<Real> > m_regsCoar;
00134 LevelData<BaseIVFAB<Real> > m_regsCedFine;
00135
00136 LevelData<EBCellFAB> m_densityCedFine;
00137
00138 LayoutData<BaseIVFAB<VoFStencil> > m_stenCedFine;
00139
00140 LayoutData<BaseIVFAB<VoFStencil> > m_volumeStenc;
00141 LayoutData<BaseIVFAB<VoFStencil> > m_standardStenc;
00142
00143
00144 LayoutData<IntVectSet> m_setsCedFine;
00145 LayoutData<IntVectSet> m_setsCoar;
00146
00147
00148
00149 EBISLayout m_ebislFine;
00150
00151 EBISLayout m_ebislCoar;
00152
00153 EBISLayout m_ebislCedFine;
00154
00155 private:
00156
00157
00158
00159 void operator= (const EBCoarToFineRedist&)
00160 {
00161 MayDay::Error("invalid operator");
00162 }
00163 EBCoarToFineRedist(const EBCoarToFineRedist&)
00164 {
00165 MayDay::Error("invalid operator");
00166 }
00167 };
00168 #endif