00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _NWOEBQUADCFINTERP_H_
00012 #define _NWOEBQUADCFINTERP_H_
00013
00014 #include <iostream>
00015 #include <math.h>
00016 #include "SPACE.H"
00017 #include <stdlib.h>
00018 #include "REAL.H"
00019 #include "IntVect.H"
00020 #include "Box.H"
00021 #include "BaseFab.H"
00022 #include "DisjointBoxLayout.H"
00023 #include "LevelData.H"
00024 #include "FArrayBox.H"
00025 #include "QuadCFStencil.H"
00026 #include "ProblemDomain.H"
00027 #include "TensorFineStencilSet.H"
00028 #include "REAL.H"
00029 #include "AggStencil.H"
00030 #include "FArrayBox.H"
00031 #include "LevelData.H"
00032 #include "DisjointBoxLayout.H"
00033 #include "EBISLayout.H"
00034 #include "EBCellFAB.H"
00035 #include "Interval.H"
00036 #include "Stencils.H"
00037 #include "QuadCFInterp.H"
00038 #include "BaseIVFAB.H"
00039 #include "TensorCFInterp.H"
00040 #include "CornerCopier.H"
00041 #include "EBCFData.H"
00042 #include "EBQuadCFInterp.H"
00043 #include "NamespaceHeader.H"
00044
00045
00046 class NWOEBQuadCFInterp
00047 {
00048 public:
00049
00050
00051 NWOEBQuadCFInterp(const DisjointBoxLayout& a_gridsFine,
00052 const DisjointBoxLayout& a_gridsCoar,
00053 const EBISLayout& a_ebislFine,
00054 const EBISLayout& a_ebislCoar,
00055 const ProblemDomain& a_domainCoar,
00056 const int& a_nref,
00057 const int& a_nvar,
00058 const Real& a_dxFine,
00059 const IntVect& a_ghost,
00060 const LayoutData<IntVectSet>& a_cfivs);
00061
00062
00063 ~NWOEBQuadCFInterp()
00064 { }
00065
00066
00067
00068
00069
00070 void coarseFineInterp(LevelData<EBCellFAB>& a_phif,
00071 const LevelData<EBCellFAB>& a_phic,
00072 int isrc, int idst, int inco);
00073
00074
00075
00076
00077
00078
00079
00080
00081 void coarseFineInterpH(LevelData<EBCellFAB>& a_phif,
00082 int isrc, int idst, int inco);
00083
00084
00085 protected:
00086 void
00087 defineInternals(const LayoutData<IntVectSet>& a_cfivs);
00088 void
00089 defineStencils (const LayoutData<IntVectSet>& a_cfivs);
00090
00091 void
00092 getStencils(Vector<RefCountedPtr< BaseStencil> > & a_stencils,
00093 Vector<RefCountedPtr< BaseIndex > > & a_baseDstVoFs,
00094 const IntVectSet & a_cfivs,
00095 const EBISBox & a_ebisFine,
00096 const EBISBox & a_ebisCoFi,
00097 const DataIndex & a_dit);
00098
00099
00100 void
00101 getStencil(VoFStencil & a_stencil,
00102 const VolIndex & a_vofFine,
00103 const EBISBox & a_ebisFine,
00104 const EBISBox & a_ebisCoFi,
00105 const DataIndex & a_dit);
00106
00107 DisjointBoxLayout m_gridsFine;
00108 DisjointBoxLayout m_gridsCoar;
00109 DisjointBoxLayout m_gridsCoFi;
00110 EBISLayout m_ebislFine;
00111 EBISLayout m_ebislCoar;
00112 EBISLayout m_ebislCoFi;
00113 ProblemDomain m_domainCoar;
00114 int m_nref;
00115 int m_nvar;
00116 Real m_dxFine;
00117 IntVect m_ghost;
00118 LayoutData<RefCountedPtr< AggStencil<EBCellFAB, EBCellFAB> > > m_stencil;
00119 LevelData<EBCellFAB> m_bufferCoFi;
00120
00121
00122 private:
00123
00124 NWOEBQuadCFInterp()
00125 {
00126 MayDay::Error("invalid operator");
00127 }
00128
00129
00130 NWOEBQuadCFInterp(NWOEBQuadCFInterp& a_input)
00131 {
00132 MayDay::Error("invalid operator");
00133 }
00134
00135
00136 void operator=(NWOEBQuadCFInterp& a_input)
00137 {
00138 MayDay::Error("invalid operator");
00139 }
00140
00141 };
00142
00143 #include "NamespaceFooter.H"
00144 #endif