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 #ifndef _EBCONSTANTCFINTERP_H_ 00012 #define _EBCONSTANTCFINTERP_H_ 00013 00014 #include "REAL.H" 00015 #include "Box.H" 00016 #include "RefCountedPtr.H" 00017 00018 #include "EBCellFAB.H" 00019 #include "EBISLayout.H" 00020 #include "CornerCopier.H" 00021 #include "NamespaceHeader.H" 00022 00023 /// 00024 /** 00025 Class to do constant extrapolation of data onto ONE ghost cell 00026 from neighboring internal data. 00027 */ 00028 class EBConstantCFInterp 00029 { 00030 public: 00031 /// 00032 EBConstantCFInterp(const DisjointBoxLayout& a_dbl, 00033 const EBISLayout& a_ebisl, 00034 const ProblemDomain& a_domain, 00035 const IntVect& a_nGhost); 00036 00037 /// 00038 ~EBConstantCFInterp(); 00039 00040 /// 00041 /** 00042 fills ghost cells over coarse fine interpolation with constant extrapolation 00043 */ 00044 void interpolate(LevelData<EBCellFAB>& a_soln); 00045 00046 protected: 00047 00048 DisjointBoxLayout m_dbl; 00049 EBISLayout m_ebisl; 00050 ProblemDomain m_domain; 00051 IntVect m_nGhost; 00052 CornerCopier m_cornerCopier; 00053 /// 00054 void interpolate(EBCellFAB& a_phi, 00055 const DataIndex& a_datInd, 00056 int a_idir, 00057 Side::LoHiSide a_hiorlo); 00058 00059 00060 private: 00061 00062 //strong construction is forced here 00063 EBConstantCFInterp() 00064 { 00065 MayDay::Error("invalid operator"); 00066 } 00067 00068 //copy constructor and operator= disallowed for all the usual reasons 00069 EBConstantCFInterp(const EBConstantCFInterp& a_opin) 00070 { 00071 MayDay::Error("invalid operator"); 00072 } 00073 00074 void operator=(const EBConstantCFInterp& a_opin) 00075 { 00076 MayDay::Error("invalid operator"); 00077 } 00078 }; 00079 00080 #include "NamespaceFooter.H" 00081 #endif