00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _GENINTERP_H_
00029 #define _GENINTERP_H_
00030
00031 #include "REAL.H"
00032 #include "LevelData.H"
00033 #include "ProblemDomain.H"
00034
00035 class DisjointBoxLayout;
00036
00038
00043 template <class T> class GenMGInterp
00044 {
00045 public:
00047 GenMGInterp();
00048
00050 GenMGInterp(const DisjointBoxLayout& a_fineDomain,
00051 int a_numcomps,
00052 int a_refRatio,
00053 const Box& a_problemDomain);
00054
00056 GenMGInterp(const DisjointBoxLayout& a_fineDomain,
00057 int a_numcomps,
00058 int a_refRatio,
00059 const ProblemDomain& a_problemDomain);
00060
00062 ~GenMGInterp();
00063
00065 bool isDefined() const;
00066
00068
00071 void define(const DisjointBoxLayout& a_fineDomain,
00072 int a_numcomps,
00073 int a_refRatio,
00074 const Box& a_problemDomain);
00075
00077
00080 void define(const DisjointBoxLayout& a_fineDomain,
00081 int a_numcomps,
00082 int a_refRatio,
00083 const ProblemDomain& a_problemDomain);
00084
00086
00089 void interpToFine(T& a_fineData,
00090 const T& a_coarseData);
00091
00092 protected:
00093 bool m_isDefined;
00094
00095
00096 int m_refRatio;
00097
00098
00099
00100 T m_coarsenedFineData;
00101 DisjointBoxLayout m_grids;
00102
00103
00104 ProblemDomain m_problemDomain;
00105 };
00106
00107 #include "GenMGInterpImplem.H"
00108
00109 #endif