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
00031
00032
00033
00034
00035 class EBCoarToFineRedist
00036 {
00037 public:
00038
00039 friend class EBFluxRegister;
00040
00041
00042
00043
00044
00045 EBCoarToFineRedist();
00046
00047
00048 ~EBCoarToFineRedist();
00049
00050
00051
00052
00053
00054 void setToZero();
00055
00056
00057
00058
00059
00060
00061
00062
00063 void increment(const BaseIVFAB<Real>& a_coarseMass,
00064 const DataIndex& a_coarseDataIndex,
00065 const Interval& a_variables);
00066
00067
00068
00069
00070
00071 void redistribute(LevelData<EBCellFAB>& a_fineSolution,
00072 const Interval& a_variables);
00073
00074
00075 bool isDefined() const;
00076
00077
00078
00079
00080
00081
00082
00083
00084 void define(const DisjointBoxLayout& a_dblFine,
00085 const DisjointBoxLayout& a_dblCoar,
00086 const EBISLayout& a_ebislCoar,
00087 const Box& a_domainCoar,
00088 const int& a_nref,
00089 const int& a_nvar,
00090 int redistRad,
00091 const EBIndexSpace* ebisPtr);
00092
00093
00094
00095
00096
00097
00098 void define(const EBLevelGrid& a_eblgFine,
00099 const EBLevelGrid& a_eblgCoar,
00100 const int& a_nref,
00101 const int& a_nvar,
00102 const int& a_redistRad);
00103
00104
00105
00106
00107
00108 void
00109 resetWeights(const LevelData<EBCellFAB>& a_modifierCoar,
00110 const int& a_ivar);
00111 protected:
00112
00113
00114 void setDefaultValues();
00115 void defineDataHolders();
00116
00117 bool m_isDefined;
00118 int m_redistRad;
00119 int m_nComp;
00120 int m_refRat;
00121 Box m_domainCoar;
00122
00123
00124 DisjointBoxLayout m_gridsFine;
00125
00126 DisjointBoxLayout m_gridsCoar;
00127
00128
00129 DisjointBoxLayout m_gridsCedFine;
00130
00131 LevelData<BaseIVFAB<Real> > m_regsCoar;
00132 LevelData<BaseIVFAB<Real> > m_regsCedFine;
00133
00134 LevelData<EBCellFAB> m_densityCedFine;
00135
00136 LayoutData<BaseIVFAB<VoFStencil> > m_stenCedFine;
00137
00138 LayoutData<BaseIVFAB<VoFStencil> > m_volumeStenc;
00139 LayoutData<BaseIVFAB<VoFStencil> > m_standardStenc;
00140
00141 LayoutData<IntVectSet> m_setsCedFine;
00142 LayoutData<IntVectSet> m_setsCoar;
00143
00144
00145
00146
00147 EBISLayout m_ebislCoar;
00148
00149 EBISLayout m_ebislCedFine;
00150
00151 private:
00152
00153
00154
00155 void operator= (const EBCoarToFineRedist&)
00156 {
00157 MayDay::Error("invalid operator");
00158 }
00159 EBCoarToFineRedist(const EBCoarToFineRedist&)
00160 {
00161 MayDay::Error("invalid operator");
00162 }
00163 };
00164 #include "NamespaceFooter.H"
00165 #endif