00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _EBLEVELTGA_H_
00012 #define _EBLEVELTGA_H_
00013
00014 #include <iostream>
00015 #include <math.h>
00016 #include "SPACE.H"
00017 #include <stdlib.h>
00018 #include "REAL.H"
00019 #include "Box.H"
00020 #include "DisjointBoxLayout.H"
00021 #include "LevelData.H"
00022 #include "EBCellFAB.H"
00023 #include "EBLevelGrid.H"
00024 #include "EBFluxFAB.H"
00025 #include "EBFluxRegister.H"
00026 #include "ProblemDomain.H"
00027 #include "BaseLevelTGA.H"
00028 #include "NamespaceHeader.H"
00029
00030
00032
00035 class EBLevelTGA : public BaseLevelTGA<LevelData<EBCellFAB>, EBFluxFAB, EBFluxRegister>
00036 {
00037
00038 public:
00039
00041
00043 EBLevelTGA(const Vector<DisjointBoxLayout>& a_grids,
00044 const Vector<int>& a_refRat,
00045 const ProblemDomain& a_level0Domain,
00046 RefCountedPtr<AMRLevelOpFactory<LevelData<EBCellFAB> > >& a_opFact,
00047 const RefCountedPtr<AMRMultiGrid<LevelData<EBCellFAB> > >& a_solver)
00048 :BaseLevelTGA<LevelData<EBCellFAB>, EBFluxFAB, EBFluxRegister>(a_grids, a_refRat, a_level0Domain, a_opFact, a_solver)
00049 {
00050 m_isEBLGSet = false;
00051 }
00052
00054 virtual ~EBLevelTGA()
00055 {
00056 }
00057
00059
00063 void computeDiffusion(LevelData<EBCellFAB>& a_DiffusiveTerm,
00064 LevelData<EBCellFAB>& a_phiOld,
00065 LevelData<EBCellFAB>& a_src,
00066 EBFluxRegister* a_FineFluxRegPtr,
00067 EBFluxRegister* a_crseFluxRegPtr,
00068 const LevelData<EBCellFAB>* a_crsePhiOldPtr,
00069 const LevelData<EBCellFAB>* a_crsePhiNewPtr,
00070 Real a_oldTime,
00071 Real a_crseOldTime,
00072 Real a_crseNewTime,
00073 Real a_dt,
00074 int a_level);
00075
00077
00079 void updateSoln(LevelData<EBCellFAB>& a_phiNew,
00080 LevelData<EBCellFAB>& a_phiOld,
00081 LevelData<EBCellFAB>& a_src,
00082 EBFluxRegister* a_fineFluxRegPtr,
00083 EBFluxRegister* a_crseFluxRegPtr,
00084 const LevelData<EBCellFAB>* a_crsePhiOldPtr,
00085 const LevelData<EBCellFAB>* a_crsePhiNewPtr,
00086 Real a_oldTime,
00087 Real a_crseOldTime,
00088 Real a_crseNewTime,
00089 Real a_dt,
00090 int a_level,
00091 bool a_zeroPhi = true,
00092 int a_fluxStartComponent = 0);
00093
00094 void setSourceGhostCells(LevelData<EBCellFAB>& a_src,
00095 const DisjointBoxLayout& a_grids);
00096
00097 void setEBLG(Vector<EBLevelGrid>& a_eblg)
00098 {
00099 m_isEBLGSet = true;
00100 m_eblg = a_eblg;
00101 }
00102 protected:
00103 bool m_isEBLGSet;
00104 Vector<EBLevelGrid> m_eblg;
00105
00106 };
00107
00108 #include "NamespaceFooter.H"
00109 #endif
00110
00111