00001 #ifdef CH_LANG_CC 00002 /* 00003 * _______ __ 00004 * / ___/ / ___ __ _ / / ___ 00005 * / /__/ _ \/ _ \/ V \/ _ \/ _ \ 00006 * \___/_//_/\___/_/_/_/_.__/\___/ 00007 * Please refer to Copyright.txt, in Chombo's root directory. 00008 */ 00009 #endif 00010 00011 // dtgraves weds oct 3 2001 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 #include "NamespaceHeader.H" 00026 00028 00034 class RedistStencil 00035 { 00036 public: 00038 00041 RedistStencil(); 00042 00044 ~RedistStencil(); 00045 00047 00052 RedistStencil(const DisjointBoxLayout& a_dbl, 00053 const EBISLayout& a_ebisl, 00054 const ProblemDomain& a_domain, 00055 const int& a_redistRadius); 00056 00058 00062 void define(const DisjointBoxLayout& a_dbl, 00063 const EBISLayout& a_ebisl, 00064 const ProblemDomain& a_domain, 00065 const int& a_redistRadius); 00066 00068 00072 bool isDefined() const; 00073 00075 00081 void resetWeights(const LevelData<EBCellFAB>& a_modifier, 00082 const int& a_ivar); 00083 00085 00089 const BaseIVFAB<VoFStencil >& 00090 operator[](const DataIndex& datInd) const; 00091 00093 00096 void deepCopy(const RedistStencil& a_stenin); 00097 00099 00101 int getRedistRadius() const; 00102 00103 protected: 00104 00105 LayoutData<BaseIVFAB<VoFStencil > > m_stencil; 00106 LayoutData<BaseIVFAB<VoFStencil > > m_volsten; 00107 DisjointBoxLayout m_grids; 00108 ProblemDomain m_domain; 00109 EBISLayout m_ebisl; 00110 bool m_isDefined; 00111 bool m_hasDefaultWeights; 00112 int m_redistRadius; 00113 00114 private: 00115 //internal use 00116 void computePointStencil(VoFStencil& a_stencil, 00117 const VolIndex& a_srcVoF, 00118 const DataIndex& a_datInd); 00119 00120 //disallowed for all the usual reasons 00121 RedistStencil(const RedistStencil& ebcin) 00122 { 00123 MayDay::Error("rdsi 2 invalid operator"); 00124 } 00125 void operator=(const RedistStencil& fabin) 00126 { 00127 MayDay::Error("rdsi 3 invalid operator"); 00128 } 00129 }; 00130 00131 #include "NamespaceFooter.H" 00132 #endif