00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _EBPWQUADFINEINTERP_H_
00012 #define _EBPWQUADFINEINTERP_H_
00013
00014 #include "REAL.H"
00015 #include "FArrayBox.H"
00016 #include "LevelData.H"
00017 #include "DisjointBoxLayout.H"
00018 #include "EBISLayout.H"
00019 #include "EBCellFAB.H"
00020 #include "Interval.H"
00021 #include "Stencils.H"
00022 #include "BaseIVFAB.H"
00023 #include "EBIndexSpace.H"
00024 #include "NamespaceHeader.H"
00025
00027
00029 class EBPWQuadFineInterp
00030 {
00031 public:
00033
00036 EBPWQuadFineInterp();
00037
00039 ~EBPWQuadFineInterp();
00040
00042
00055 EBPWQuadFineInterp(const DisjointBoxLayout& a_dblFine,
00056 const DisjointBoxLayout& a_dblCoar,
00057 const EBISLayout& a_ebislFine,
00058 const EBISLayout& a_ebislCoar,
00059 const ProblemDomain& a_domainCoar,
00060 const int& a_nref,
00061 const int& a_nvar,
00062 const EBIndexSpace* const ebisPtr = Chombo_EBIS::instance());
00063
00064 EBPWQuadFineInterp(const DisjointBoxLayout& a_dblFine,
00065 const DisjointBoxLayout& a_dblCoar,
00066 const EBISLayout& a_ebislFine,
00067 const EBISLayout& a_ebislCoar,
00068 const ProblemDomain& a_domainCoar,
00069 const int& a_nref,
00070 const int& a_nvar,
00071 const bool& a_doQuadraticInterior,
00072 const EBIndexSpace* const ebisPtr = Chombo_EBIS::instance());
00073
00074
00076
00088 void define(const DisjointBoxLayout& a_dblFine,
00089 const DisjointBoxLayout& a_dblCoar,
00090 const EBISLayout& a_ebislFine,
00091 const EBISLayout& a_ebislCoar,
00092 const ProblemDomain& a_domainCoar,
00093 const int& a_nref,
00094 const int& a_nvar,
00095 const EBIndexSpace* const ebisPtr = Chombo_EBIS::instance());
00096
00098
00102 bool isDefined() const;
00103
00105
00122 void
00123 interpolate(LevelData<EBCellFAB>& a_fineData,
00124 const LevelData<EBCellFAB>& a_coarseData,
00125 const Interval& a_variables);
00126
00127 protected:
00128 void
00129 interpolateFAB(EBCellFAB& a_fine,
00130 const EBCellFAB& a_coar,
00131 const DataIndex& a_datInd,
00132 const Interval& a_variables) const;
00133
00134 void makeDerivStencils();
00135
00136 void setDefaultValues();
00137
00138 bool m_isDefined;
00139 bool m_doQuadraticInterior;
00140
00141 DisjointBoxLayout m_coarsenedFineGrids;
00142 ProblemDomain m_coarDomain;
00143 EBISLayout m_coarsenedFineEBISL;
00144
00145 int m_refRat;
00146 int m_nComp;
00147 LevelData<EBCellFAB> m_coarsenedFineData;
00148
00149
00150 LayoutData<IntVectSet> m_irregRegions;
00151
00152
00153
00154 LayoutData<BaseIVFAB<VoFStencil> > m_hiStencils[SpaceDim];
00155 LayoutData<BaseIVFAB<VoFStencil> > m_loStencils[SpaceDim];
00156
00157 private:
00158
00159 EBPWQuadFineInterp(const EBPWQuadFineInterp& ebcin)
00160 {
00161 MayDay::Error("ebpwl 2 invalid operator");
00162 }
00163 void operator=(const EBPWQuadFineInterp& fabin)
00164 {
00165 MayDay::Error("ebpwl 3 invalid operator");
00166 }
00167 };
00168
00169 #include "NamespaceFooter.H"
00170 #endif