00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013 #ifndef _EBPWLFINEINTERP_H_
00014 #define _EBPWLFINEINTERP_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 "EBIndexSpace.H"
00026 #include "NamespaceHeader.H"
00027
00029
00031 class EBPWLFineInterp
00032 {
00033 public:
00035
00038 EBPWLFineInterp();
00039
00041 ~EBPWLFineInterp();
00042
00044
00057 EBPWLFineInterp(const DisjointBoxLayout& a_dblFine,
00058 const DisjointBoxLayout& a_dblCoar,
00059 const EBISLayout& a_ebislFine,
00060 const EBISLayout& a_ebislCoar,
00061 const ProblemDomain& a_domainCoar,
00062 const int& a_nref,
00063 const int& a_nvar,
00064 const EBIndexSpace* const ebisPtr = Chombo_EBIS::instance());
00065
00067
00079 void define(const DisjointBoxLayout& a_dblFine,
00080 const DisjointBoxLayout& a_dblCoar,
00081 const EBISLayout& a_ebislFine,
00082 const EBISLayout& a_ebislCoar,
00083 const ProblemDomain& a_domainCoar,
00084 const int& a_nref,
00085 const int& a_nvar,
00086 const EBIndexSpace* const ebisPtr = Chombo_EBIS::instance());
00087
00089
00093 bool isDefined() const;
00094
00096
00113 void
00114 interpolate(LevelData<EBCellFAB>& a_fineData,
00115 const LevelData<EBCellFAB>& a_coarseData,
00116 const Interval& a_variables);
00117
00118 protected:
00119 void
00120 interpolateFAB(EBCellFAB& a_fine,
00121 const EBCellFAB& a_coar,
00122 const DataIndex& a_datInd,
00123 const Interval& a_variables) const;
00124
00125 void makeDerivStencils();
00126
00127 void setDefaultValues();
00128
00129 bool m_isDefined;
00130
00131 DisjointBoxLayout m_coarsenedFineGrids;
00132 ProblemDomain m_coarDomain;
00133 EBISLayout m_coarsenedFineEBISL;
00134
00135 int m_refRat;
00136 int m_nComp;
00137 LevelData<EBCellFAB> m_coarsenedFineData;
00138
00139
00140 LayoutData<IntVectSet> m_irregRegions;
00141
00142
00143
00144 LayoutData<BaseIVFAB<VoFStencil> > m_hiStencils[SpaceDim];
00145 LayoutData<BaseIVFAB<VoFStencil> > m_loStencils[SpaceDim];
00146
00147 private:
00148
00149 EBPWLFineInterp(const EBPWLFineInterp& ebcin)
00150 {
00151 MayDay::Error("ebpwl 2 invalid operator");
00152 }
00153 void operator=(const EBPWLFineInterp& fabin)
00154 {
00155 MayDay::Error("ebpwl 3 invalid operator");
00156 }
00157 };
00158
00159 #include "NamespaceFooter.H"
00160 #endif