00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef LEVEL_WAVEOPERATOR_H
00012 #define LEVEL_WAVEOPERATOR_H
00013
00014
00015
00016
00017
00018 #include "FArrayBox.H"
00019 #include "DisjointBoxLayout.H"
00020 #include "LevelData.H"
00021 #include "QuadCFInterp.H"
00022 #include "ExtrapFillPatch.H"
00023 #include "LevelFluxRegister.H"
00024 #include "ProblemDomain.H"
00025 #include "WaveOpF_F.H"
00026 #include "UsingNamespace.H"
00027
00029
00032 class LevelWaveOperator
00033 {
00034 public:
00036
00039 LevelWaveOperator();
00040
00042
00046 ~LevelWaveOperator();
00047
00049
00056 void define(const DisjointBoxLayout& a_thisDisjointBoxLayout,
00057 const DisjointBoxLayout& a_coarserDisjointBoxLayout,
00058 const ProblemDomain& a_domain,
00059 const int& a_refineCoarse,
00060 const int& a_numStates,
00061 const Real& a_dx,
00062 const bool& a_hasCoarser,
00063 const bool& a_hasFiner);
00064
00066
00078 void eval(LevelData<FArrayBox>& a_Phi,
00079 LevelData<FArrayBox>& a_LOfPhi,
00080 LevelFluxRegister& a_finerFluxRegister,
00081 LevelFluxRegister& a_coarserFluxRegister,
00082 const LevelData<FArrayBox>& a_phiCoarseOld,
00083 const Real& a_TCoarseOld,
00084 const LevelData<FArrayBox>& a_phiCoarseNew,
00085 const Real& a_TCoarseNew,
00086 Real a_time,
00087 Real a_fluxweight);
00089
00103 void avgdown(
00104 LevelData<FArrayBox>& a_Phi,
00105 LevelData<FArrayBox>& a_phiCoarse);
00106
00107 protected:
00108
00109 bool m_defined;
00110
00111
00112 DisjointBoxLayout m_grids;
00113
00114
00115 QuadCFInterp m_patcher;
00116
00117
00118 Real m_dx;
00119
00120
00121 ProblemDomain m_domain;
00122
00123
00124 int m_refineCoarse;
00125
00126
00127 int m_numFluxes;
00128
00129 int m_numGhost;
00130 int m_numFields;
00131
00132
00133 bool m_hasCoarser;
00134 bool m_hasFiner;
00135
00136 private:
00137
00138 void operator=(const LevelWaveOperator& a_input)
00139 {
00140 MayDay::Error("invalid operator");
00141 }
00142
00143
00144 LevelWaveOperator(const LevelWaveOperator& a_input)
00145 {
00146 MayDay::Error("invalid operator");
00147 }
00148 };
00149
00150 #endif