00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013
00014 #ifndef NODEQUADCFINTERP_H
00015 #define NODEQUADCFINTERP_H
00016
00017 #include <cmath>
00018 #include <cstdlib>
00019 #include "BaseFab.H"
00020 #include "NodeFArrayBox.H"
00021 #include "NodeCFIVS.H"
00022 #include "LevelData.H"
00023 #include "NodeBC.H"
00024 #include "NodeQuadCFInterp2.H"
00025
00026 #include "UsingNamespace.H"
00027
00029 class NodeQuadCFInterp
00033 {
00034 public:
00035
00040
00042
00044 NodeQuadCFInterp();
00045
00047
00050 NodeQuadCFInterp(const DisjointBoxLayout& a_grids,
00051 Real a_dx,
00052 const ProblemDomain& a_domain,
00053 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00054 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00055 int a_refToCoarse,
00056 int a_interpolationDegree = 2,
00057 int a_ncomp = 1,
00058 bool a_verbose = false);
00059
00061
00064 NodeQuadCFInterp(const DisjointBoxLayout& a_grids,
00065 Real a_dx,
00066 const Box& a_domain,
00067 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00068 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00069 int a_refToCoarse,
00070 int a_interpolationDegree = 2,
00071 int a_ncomp = 1,
00072 bool a_verbose = false);
00073
00075
00077 ~NodeQuadCFInterp();
00078
00080
00084 void define(
00085 const DisjointBoxLayout& a_grids,
00087 Real a_dx,
00089 const ProblemDomain& a_domain,
00091 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00093 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00095 int a_refToCoarse,
00097 int a_interpolationDegree = 2,
00099 int a_ncomp = 1,
00101 bool a_verbose = false);
00102
00104
00108 void define(
00109 const DisjointBoxLayout& a_grids,
00111 Real a_dx,
00113 const Box& a_domain,
00115 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00117 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00119 int a_refToCoarse,
00121 int a_interpolationDegree = 2,
00123 int a_ncomp = 1,
00125 bool a_verbose = false);
00126
00128
00133 void setDomainNodeBC(const DomainNodeBC& a_dombcIn);
00134
00135
00142
00144
00147 bool isDefined() const;
00148
00155
00157
00159 void setVerbose( bool a_verbose );
00160
00167
00169
00173 void coarseFineInterp(
00174 LevelData<NodeFArrayBox>& a_phiFine,
00176 const LevelData<NodeFArrayBox>& a_phiCoarse,
00178 bool a_inhomogeneous);
00179
00182 protected:
00183
00186 DisjointBoxLayout m_grids;
00187
00190 int m_ncomp;
00191
00194 int m_refToCoarse;
00195
00199 int m_coarsenings;
00200
00203 bool m_isDefined;
00204
00207 bool m_isBCDefined;
00208
00211 Real m_dx;
00212
00215 Real m_dxPenultimate;
00216
00219 ProblemDomain m_domainPenultimate;
00220
00223 DomainNodeBC m_dombc;
00224
00228 Vector< LevelData<NodeFArrayBox>* > m_inter;
00229
00234 Vector< NodeQuadCFInterp2* > m_qcfi2;
00235
00239 Vector< LayoutData<NodeCFIVS>* > m_loCFIVScoarser;
00240
00244 Vector< LayoutData<NodeCFIVS>* > m_hiCFIVScoarser;
00245
00248 bool m_verbose ;
00249
00250 private:
00251
00252
00253 void clearMemory();
00254
00255 void setDefaultValues();
00256 };
00257
00258 #endif