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