00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013 #ifndef _EBCOARTOFINEREDIST_H_
00014 #define _EBCOARTOFINEREDIST_H_
00015 #include "REAL.H"
00016 #include "Vector.H"
00017 #include "EBCellFAB.H"
00018 #include "EBFaceFAB.H"
00019 #include "EBISLayout.H"
00020 #include "EBISBox.H"
00021 #include "IntVectSet.H"
00022 #include "CFStencil.H"
00023 #include "LoHiSide.H"
00024 #include "LevelData.H"
00025 #include "LayoutData.H"
00026 #include "EBLevelGrid.H"
00027 #include "RedistStencil.H"
00028 #include "NamespaceHeader.H"
00029 class EBIndexSpace;
00030
00032
00035 class EBCoarToFineRedist
00036 {
00037 public:
00038
00039 friend class EBFluxRegister;
00040
00042
00045 EBCoarToFineRedist();
00046
00048 ~EBCoarToFineRedist();
00049
00051
00054 void setToZero();
00055
00057
00063 void increment(const BaseIVFAB<Real>& a_coarseMass,
00064 const DataIndex& a_coarseDataIndex,
00065 const Interval& a_variables);
00066
00068
00071 void redistribute(LevelData<EBCellFAB>& a_fineSolution,
00072 const Interval& a_variables);
00073
00075 bool isDefined() const;
00076
00078
00084 void define(const DisjointBoxLayout& a_dblFine,
00085 const DisjointBoxLayout& a_dblCoar,
00086 const EBISLayout& a_ebislFine,
00087 const EBISLayout& a_ebislCoar,
00088 const Box& a_domainCoar,
00089 const int& a_nref,
00090 const int& a_nvar,
00091 int redistRad,
00092 const EBIndexSpace* ebisPtr);
00093
00095
00099 void define(const EBLevelGrid& a_eblgFine,
00100 const EBLevelGrid& a_eblgCoar,
00101 const int& a_nref,
00102 const int& a_nvar,
00103 const int& a_redistRad);
00104
00105
00107
00109 void
00110 resetWeights(const LevelData<EBCellFAB>& a_modifierCoar,
00111 const int& a_ivar);
00112 protected:
00113
00114
00115 void setDefaultValues();
00116 void defineDataHolders();
00117
00118 bool m_isDefined;
00119 int m_redistRad;
00120 int m_nComp;
00121 int m_refRat;
00122 Box m_domainCoar;
00123
00124
00125 DisjointBoxLayout m_gridsFine;
00126
00127 DisjointBoxLayout m_gridsCoar;
00128
00129
00130 DisjointBoxLayout m_gridsCedFine;
00131
00132 LevelData<BaseIVFAB<Real> > m_regsCoar;
00133 LevelData<BaseIVFAB<Real> > m_regsCedFine;
00134
00135 LevelData<EBCellFAB> m_densityCedFine;
00136
00137 LayoutData<BaseIVFAB<VoFStencil> > m_stenCedFine;
00138
00139 LayoutData<BaseIVFAB<VoFStencil> > m_volumeStenc;
00140 LayoutData<BaseIVFAB<VoFStencil> > m_standardStenc;
00141
00142 LayoutData<IntVectSet> m_setsCedFine;
00143 LayoutData<IntVectSet> m_setsCoar;
00144
00145
00146 EBISLayout m_ebislFine;
00147
00148 EBISLayout m_ebislCoar;
00149
00150 EBISLayout m_ebislCedFine;
00151
00152 private:
00153
00154
00155
00156 void operator= (const EBCoarToFineRedist&)
00157 {
00158 MayDay::Error("invalid operator");
00159 }
00160 EBCoarToFineRedist(const EBCoarToFineRedist&)
00161 {
00162 MayDay::Error("invalid operator");
00163 }
00164 };
00165 #include "NamespaceFooter.H"
00166 #endif