00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013 #ifndef _EBLEVELREDIST_H_
00014 #define _EBLEVELREDIST_H_
00015
00016 #include "REAL.H"
00017 #include "FArrayBox.H"
00018 #include "LevelData.H"
00019 #include "DisjointBoxLayout.H"
00020 #include "EBISLayout.H"
00021 #include "EBCellFAB.H"
00022 #include "Interval.H"
00023 #include "Stencils.H"
00024 #include "BaseIVFAB.H"
00025 #include "RedistStencil.H"
00026 #include "NamespaceHeader.H"
00027
00028
00029
00030
00031 class EBLevelRedist
00032 {
00033 public:
00034
00035
00036
00037
00038 EBLevelRedist();
00039
00040
00041 ~EBLevelRedist();
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 EBLevelRedist(const DisjointBoxLayout& a_dbl,
00052 const EBISLayout& a_ebisl,
00053 const ProblemDomain& a_domain,
00054 const int& a_ncomp,
00055 int a_redistRad = 1,
00056 bool a_do2DStencil = false);
00057
00058
00059
00060
00061
00062
00063 void define(const DisjointBoxLayout& a_dbl,
00064 const EBISLayout& a_ebisl,
00065 const ProblemDomain& a_domain,
00066 const int& a_ncomp,
00067 int a_redistRad = 1,
00068 bool a_do2DStencil = false);
00069
00070
00071
00072
00073
00074
00075
00076
00077 void resetWeights(const LevelData<EBCellFAB>& modifier,
00078 const int& ivar);
00079
00080
00081
00082
00083
00084
00085
00086 void increment(const BaseIVFAB<Real>& massDiff,
00087 const DataIndex& datInd,
00088 const Interval& variables);
00089
00090
00091
00092
00093
00094
00095 void redistribute(LevelData<EBCellFAB>& solution,
00096 const Interval& variables);
00097
00098
00099
00100
00101
00102
00103
00104
00105 void redistribute(LevelData<EBCellFAB>& a_solution,
00106 const Interval& a_srcVar,
00107 const Interval& a_dstVar);
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117 void fixExplicitLap(const LevelData<EBCellFAB>& a_kappaLap,
00118 LevelData<EBCellFAB>& a_solution,
00119 const Interval& variables);
00120
00121
00122
00123
00124
00125
00126 bool isDefined() const;
00127
00128
00129
00130
00131
00132 void setToZero();
00133
00134 protected:
00135 int redistRad;
00136 RedistStencil m_stencil;
00137 int m_ncomp;
00138 int m_redistRad;
00139 DisjointBoxLayout m_grids;
00140 ProblemDomain m_domain;
00141 EBISLayout m_ebisl;
00142 bool m_isDefined;
00143 LevelData<BaseIVFAB<Real> > m_buffer;
00144 LayoutData<IntVectSet> m_sets;
00145 private:
00146
00147
00148 void operator=(const EBLevelRedist& a_stenin)
00149 {
00150 MayDay::Error("Invalid operator");
00151 }
00152
00153 EBLevelRedist(const EBLevelRedist& a_stenin)
00154 {
00155 MayDay::Error("Invalid operator");
00156 }
00157 };
00158
00159 #include "NamespaceFooter.H"
00160 #endif