00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013 #ifndef _EBFINETOCOARREDIST_H_
00014 #define _EBFINETOCOARREDIST_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
00030
00031
00032
00033
00034
00035 class EBFineToCoarRedist
00036 {
00037 public:
00038
00039 friend class EBFluxRegister;
00040
00041
00042
00043
00044
00045
00046
00047
00048 void
00049 resetWeights(const LevelData<EBCellFAB>& a_modifierCoar,
00050 const int& a_ivar);
00051
00052
00053
00054
00055
00056 EBFineToCoarRedist();
00057
00058
00059 ~EBFineToCoarRedist();
00060
00061
00062
00063
00064
00065
00066
00067
00068 void define(const DisjointBoxLayout& a_dblFine,
00069 const DisjointBoxLayout& a_dblCoar,
00070 const EBISLayout& a_ebislFine,
00071 const EBISLayout& a_ebislCoar,
00072 const Box& a_domainCoar,
00073 const int& a_nref,
00074 const int& a_nvar,
00075 int a_redistRad = 1,
00076 const EBIndexSpace* const a_ebisPtr = Chombo_EBIS::instance());
00077
00078
00079
00080
00081
00082
00083 void define(const EBLevelGrid& a_eblgFine,
00084 const EBLevelGrid& a_eblgCoar,
00085 const int& a_nref,
00086 const int& a_nvar,
00087 const int& a_redistRad);
00088
00089
00090
00091
00092
00093
00094 void setToZero();
00095
00096
00097
00098
00099
00100
00101
00102
00103 void increment(const BaseIVFAB<Real>& a_fineMass,
00104 const DataIndex& a_fineDataIndex,
00105 const Interval& a_variables);
00106
00107
00108
00109
00110
00111 void redistribute(LevelData<EBCellFAB>& a_coarSolution,
00112 const Interval& a_variables);
00113
00114
00115 bool isDefined() const;
00116
00117 protected:
00118
00119
00120 void setDefaultValues();
00121 void defineDataHolders();
00122
00123 bool m_isDefined;
00124 int m_redistRad;
00125 int m_nComp;
00126 int m_refRat;
00127 Box m_domainCoar;
00128
00129
00130 DisjointBoxLayout m_gridsFine;
00131
00132 DisjointBoxLayout m_gridsCoar;
00133
00134
00135 DisjointBoxLayout m_gridsRefCoar;
00136
00137
00138 LevelData<BaseIVFAB<Real> > m_regsFine;
00139
00140 LevelData<BaseIVFAB<Real> > m_regsRefCoar;
00141
00142
00143
00144 LayoutData<BaseIVFAB<VoFStencil> > m_stenRefCoar;
00145 LayoutData<BaseIVFAB<VoFStencil> > m_volumeStenc;
00146 LayoutData<BaseIVFAB<VoFStencil> > m_standardStenc;
00147
00148 LevelData<EBCellFAB> m_densityCoar;
00149
00150 LayoutData<IntVectSet> m_setsFine;
00151
00152 LayoutData<IntVectSet> m_setsRefCoar;
00153
00154
00155 EBISLayout m_ebislFine;
00156
00157 EBISLayout m_ebislCoar;
00158
00159 EBISLayout m_ebislRefCoar;
00160
00161 private:
00162
00163
00164
00165 void operator= (const EBFineToCoarRedist&)
00166 {
00167 MayDay::Error("invalid operator");
00168 }
00169 EBFineToCoarRedist(const EBFineToCoarRedist&)
00170 {
00171 MayDay::Error("invalid operator");
00172 }
00173 };
00174 #include "NamespaceFooter.H"
00175 #endif