00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013 #ifndef _EBCOARTOCOARREDIST_H_
00014 #define _EBCOARTOCOARREDIST_H_
00015
00016 #include "REAL.H"
00017 #include "Vector.H"
00018 #include "EBCellFAB.H"
00019 #include "EBFaceFAB.H"
00020 #include "EBISLayout.H"
00021 #include "EBISBox.H"
00022 #include "IntVectSet.H"
00023 #include "CFStencil.H"
00024 #include "LoHiSide.H"
00025 #include "LevelData.H"
00026 #include "LayoutData.H"
00027 #include "EBLevelGrid.H"
00028 #include "RedistStencil.H"
00029 #include "NamespaceHeader.H"
00030
00032
00036 class EBCoarToCoarRedist
00037 {
00038 public:
00039
00040 friend class EBFluxRegister;
00041
00043
00046 EBCoarToCoarRedist();
00047
00049 ~EBCoarToCoarRedist();
00050
00052
00063 void define(const DisjointBoxLayout& a_dblFine,
00064 const DisjointBoxLayout& a_dblCoar,
00065 const EBISLayout& a_ebislFine,
00066 const EBISLayout& a_ebislCoar,
00067 const Box& a_domainCoar,
00068 const int& a_nref,
00069 const int& a_nvar,
00070 int a_redistRad = 1);
00071
00073
00077 void define(const EBLevelGrid& a_eblgFine,
00078 const EBLevelGrid& a_eblgCoar,
00079 const int& a_nref,
00080 const int& a_nvar,
00081 const int& a_redistRad);
00082
00084
00087 void setToZero();
00088
00090
00095 void increment(const BaseIVFAB<Real>& a_coarMass,
00096 const DataIndex& a_fineDataIndex,
00097 const Interval& a_variables);
00098
00100
00102 void
00103 resetWeights(const LevelData<EBCellFAB>& a_modifier,
00104 const int& a_ivar);
00105
00107
00110 void redistribute(LevelData<EBCellFAB>& a_coarSolution,
00111 const Interval& a_variables);
00112
00114 bool isDefined() const;
00115
00116 protected:
00117
00118
00119 void setDefaultValues();
00120 void defineDataHolders();
00121
00122 bool m_isDefined;
00123 int m_redistRad;
00124 int m_nComp;
00125 int m_refRat;
00126 Box m_domainCoar;
00127
00128
00129 DisjointBoxLayout m_gridsFine;
00130
00131 DisjointBoxLayout m_gridsCoar;
00132
00133
00134 LevelData<BaseIVFAB<Real> > m_regsCoar;
00135
00136
00137 LayoutData<IntVectSet> m_setsCoar;
00138
00139
00140 EBISLayout m_ebislFine;
00141
00142 EBISLayout m_ebislCoar;
00143
00144 LayoutData<BaseIVFAB<VoFStencil> > m_stenCoar;
00145
00146
00147 LayoutData<BaseIVFAB<VoFStencil> > m_volumeStenc;
00148 LayoutData<BaseIVFAB<VoFStencil> > m_standardStenc;
00149 LevelData<EBCellFAB> m_densityCoar;
00150
00151 private:
00152
00153
00154
00155 void operator= (const EBCoarToCoarRedist&)
00156 {
00157 MayDay::Error("invalid operator");
00158 }
00159 EBCoarToCoarRedist(const EBCoarToCoarRedist&)
00160 {
00161 MayDay::Error("invalid operator");
00162 }
00163 };
00164
00165 #include "NamespaceFooter.H"
00166 #endif