00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013 #ifndef _REDISTSTENCIL_H_
00014 #define _REDISTSTENCIL_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
00026 #include "NamespaceHeader.H"
00027
00028
00029 extern bool g_alwaysRedist;
00030
00031
00032
00033
00034
00035
00036
00037
00038 class RedistStencil
00039 {
00040 public:
00041
00042
00043
00044
00045 RedistStencil();
00046
00047
00048 ~RedistStencil();
00049
00050
00051
00052
00053
00054
00055
00056 RedistStencil(const DisjointBoxLayout& a_dbl,
00057 const EBISLayout& a_ebisl,
00058 const ProblemDomain& a_domain,
00059 const int& a_redistRadius);
00060
00061
00062
00063
00064
00065
00066 void define(const DisjointBoxLayout& a_dbl,
00067 const EBISLayout& a_ebisl,
00068 const ProblemDomain& a_domain,
00069 const int& a_redistRadius,
00070 bool a_do2DStencil = false);
00071
00072
00073
00074
00075
00076
00077 bool isDefined() const;
00078
00079
00080
00081
00082
00083
00084
00085
00086 void resetWeights(const LevelData<EBCellFAB>& a_modifier,
00087 const int& a_ivar);
00088
00089
00090
00091
00092
00093
00094 const BaseIVFAB<VoFStencil >&
00095 operator[](const DataIndex& datInd) const;
00096
00097
00098
00099
00100
00101 void deepCopy(const RedistStencil& a_stenin);
00102
00103
00104
00105
00106 int getRedistRadius() const;
00107
00108 protected:
00109
00110 LayoutData<BaseIVFAB<VoFStencil > > m_stencil;
00111 LayoutData<BaseIVFAB<VoFStencil > > m_volsten;
00112
00113 DisjointBoxLayout m_grids;
00114
00115 ProblemDomain m_domain;
00116
00117 EBISLayout m_ebisl;
00118
00119 bool m_isDefined;
00120 bool m_hasDefaultWeights;
00121 bool m_alwaysRedist;
00122
00123 int m_redistRadius;
00124
00125 private:
00126
00127 void computePointStencil(VoFStencil& a_stencil,
00128 const VolIndex& a_srcVoF,
00129 const DataIndex& a_datInd,
00130 const bool& a_do2DStencil);
00131
00132
00133 RedistStencil(const RedistStencil& ebcin)
00134 {
00135 MayDay::Error("rdsi 2 invalid operator");
00136 }
00137 void operator=(const RedistStencil& fabin)
00138 {
00139 MayDay::Error("rdsi 3 invalid operator");
00140 }
00141 };
00142
00143 #include "NamespaceFooter.H"
00144
00145 #endif