00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _LEVELTGA_H_
00012 #define _LEVELTGA_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 <FArrayBox.H>
00023 #include "FluxBox.H"
00024 #include "LevelFluxRegister.H"
00025 #include <ProblemDomain.H>
00026 #include "BaseLevelTGA.H"
00027 #include "NamespaceHeader.H"
00028
00029
00031
00034 class LevelTGA : public BaseLevelTGA<LevelData<FArrayBox>, FluxBox, LevelFluxRegister>
00035 {
00036
00037 public:
00038
00040
00042 LevelTGA(const Vector<DisjointBoxLayout>& a_grids,
00043 const Vector<int>& a_refRat,
00044 const ProblemDomain& a_level0Domain,
00045 RefCountedPtr<AMRLevelOpFactory<LevelData<FArrayBox> > >& a_opFact,
00046 const RefCountedPtr<AMRMultiGrid<LevelData<FArrayBox> > >& a_solver)
00047 :BaseLevelTGA<LevelData<FArrayBox>, FluxBox, LevelFluxRegister>(a_grids, a_refRat, a_level0Domain, a_opFact, a_solver)
00048 {
00049 ;
00050 }
00051
00053 virtual ~LevelTGA()
00054 {
00055 }
00056
00058
00062 void computeDiffusion(LevelData<FArrayBox>& a_DiffusiveTerm,
00063 LevelData<FArrayBox>& a_phiOld,
00064 LevelData<FArrayBox>& a_src,
00065 LevelFluxRegister* a_FineFluxRegPtr,
00066 LevelFluxRegister* a_crseFluxRegPtr,
00067 const LevelData<FArrayBox>* a_crsePhiOldPtr,
00068 const LevelData<FArrayBox>* a_crsePhiNewPtr,
00069 Real a_oldTime,
00070 Real a_crseOldTime,
00071 Real a_crseNewTime,
00072 Real a_dt,
00073 int a_level);
00074
00076
00078 void updateSoln(LevelData<FArrayBox>& a_phiNew,
00079 LevelData<FArrayBox>& a_phiOld,
00080 LevelData<FArrayBox>& a_src,
00081 LevelFluxRegister* a_fineFluxRegPtr,
00082 LevelFluxRegister* a_crseFluxRegPtr,
00083 const LevelData<FArrayBox>* a_crsePhiOldPtr,
00084 const LevelData<FArrayBox>* a_crsePhiNewPtr,
00085 Real a_oldTime,
00086 Real a_crseOldTime,
00087 Real a_crseNewTime,
00088 Real a_dt,
00089 int a_level,
00090 bool a_zeroPhi = true,
00091 int a_fluxStartComponent = 0);
00092
00093 void setSourceGhostCells(LevelData<FArrayBox>& a_src,
00094 const DisjointBoxLayout& a_grids);
00095 protected:
00096
00097 };
00098
00099 #include "NamespaceFooter.H"
00100 #endif
00101
00102