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 _EBCoar_To_Coar_Redist_H_
00030 #define _EBCoar_To_Coar_Redist_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
00050 class EBCoarToCoarRedist
00051 {
00052 public:
00053
00054 friend class EBFluxRegister;
00055
00057
00060 EBCoarToCoarRedist();
00061
00063 ~EBCoarToCoarRedist();
00064
00066
00077 void define(const DisjointBoxLayout& a_dblFine,
00078 const DisjointBoxLayout& a_dblCoar,
00079 const EBISLayout& a_ebislFine,
00080 const EBISLayout& a_ebislCoar,
00081 const Box& a_domainCoar,
00082 const int& a_nref,
00083 const int& a_nvar,
00084 int a_redistRad = 1);
00085
00087
00090 void setToZero();
00091
00093
00098 void increment(const BaseIVFAB<Real>& a_coarMass,
00099 const DataIndex& a_fineDataIndex,
00100 const Interval& a_variables);
00101
00102
00104
00106 void
00107 resetWeights(const LevelData<EBCellFAB>& a_modifier,
00108 const int& a_ivar);
00109
00111
00114 void redistribute(LevelData<EBCellFAB>& a_coarSolution,
00115 const Interval& a_variables);
00116
00118 bool isDefined() const;
00119
00120 protected:
00121
00122
00123 void setDefaultValues();
00124
00125 bool m_isDefined;
00126 int m_redistRad;
00127 int m_nComp;
00128 int m_refRat;
00129 Box m_domainCoar;
00130
00131
00132 DisjointBoxLayout m_gridsFine;
00133
00134 DisjointBoxLayout m_gridsCoar;
00135
00136
00137 LevelData<BaseIVFAB<Real> > m_regsCoar;
00138
00139
00140 LayoutData<IntVectSet> m_setsCoar;
00141
00142
00143 EBISLayout m_ebislFine;
00144
00145 EBISLayout m_ebislCoar;
00146
00147 LayoutData<BaseIVFAB<VoFStencil> > m_stenCoar;
00148
00149
00150 LayoutData<BaseIVFAB<VoFStencil> > m_volumeStenc;
00151 LayoutData<BaseIVFAB<VoFStencil> > m_standardStenc;
00152 LevelData<EBCellFAB> m_densityCoar;
00153
00154 private:
00155
00156
00157
00158 void operator= (const EBCoarToCoarRedist&)
00159 {
00160 MayDay::Error("invalid operator");
00161 }
00162 EBCoarToCoarRedist(const EBCoarToCoarRedist&)
00163 {
00164 MayDay::Error("invalid operator");
00165 }
00166 };
00167
00168 #endif