00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _DIVERGENCESTENCIL_H_
00012 #define _DIVERGENCESTENCIL_H_
00013
00014 #include "AggStencil.H"
00015 #include "Stencils.H"
00016 #include "Vector.H"
00017 #include "REAL.H"
00018 #include "EBCellFAB.H"
00019 #include "EBFaceFAB.H"
00020 #include "EBFluxFAB.H"
00021 #include "BaseIVFAB.H"
00022 #include "CH_Timer.H"
00023 #include "EBISBox.H"
00024 #include "RefCountedPtr.H"
00025 #include "NamespaceHeader.H"
00026
00027
00028
00029
00030 class DivergenceStencil
00031 {
00032 public:
00033
00034
00035
00036
00037
00038 DivergenceStencil(const EBCellFAB & a_diveFluxFaB,
00039 const EBFluxFAB & a_faceFluxFAB,
00040 const BaseIVFAB<Real> & a_bndyFluxFAB,
00041 const Box & a_grid,
00042 const EBISBox & a_ebisBox,
00043 const RealVect & a_dx,
00044 bool a_useEBFlux = true);
00045
00046
00047 ~DivergenceStencil()
00048 {
00049 }
00050
00051
00052
00053
00054
00055 void divergence(EBCellFAB & a_divF,
00056 const EBFluxFAB & a_faceFlux,
00057 const BaseIVFAB<Real> & a_bndryFlux,
00058 const int & a_destVar,
00059 bool incrementOnly = false);
00060 protected:
00061 bool m_useEBFlux;
00062 Box m_grid;
00063 RealVect m_dx;
00064 RefCountedPtr< AggStencil<EBFaceFAB, EBCellFAB> > m_openStencil[CH_SPACEDIM];
00065 RefCountedPtr< AggStencil<BaseIVFAB<Real>, EBCellFAB> > m_bdryStencil;
00066
00067 private:
00068
00069
00070
00071 DivergenceStencil();
00072
00073
00074 DivergenceStencil& operator=(const DivergenceStencil& stenin);
00075
00076
00077 DivergenceStencil(const DivergenceStencil& stenin);
00078
00079 };
00080
00081 #include "NamespaceFooter.H"
00082 #endif