00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013
00014 #ifndef _NODEQUADCFINTERP2_H_
00015 #define _NODEQUADCFINTERP2_H_
00016
00017 #include <cmath>
00018 #include <cstdlib>
00019 #include "BaseFab.H"
00020 #include "NodeFArrayBox.H"
00021 #include "LevelData.H"
00022 #include "NodeCFIVS.H"
00023 #include "NodeBC.H"
00024 #include "NamespaceHeader.H"
00025
00026
00028 class NodeQuadCFInterp2
00117 {
00118 public:
00119
00124
00126
00128 NodeQuadCFInterp2();
00129
00131
00134 NodeQuadCFInterp2(const DisjointBoxLayout& a_grids,
00135 const Box& a_domain,
00136 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00137 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00138 bool a_interfaceOnly,
00139 int a_interpolationDegree,
00140 int a_ncomp = 1,
00141 bool a_verbose = false);
00142
00144
00147 NodeQuadCFInterp2(const DisjointBoxLayout& a_grids,
00148 const ProblemDomain& a_domain,
00149 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00150 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00151 bool a_interfaceOnly,
00152 int a_interpolationDegree,
00153 int a_ncomp = 1,
00154 bool a_verbose = false);
00155
00157
00159 ~NodeQuadCFInterp2();
00160
00162
00166 void define(
00167 const DisjointBoxLayout& a_grids,
00169 const ProblemDomain& a_domain,
00171 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00173 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00175 bool a_interfaceOnly,
00177 int a_interpolationDegree,
00179 int a_ncomp = 1,
00181 bool a_verbose = false);
00182
00184
00188 void define(
00189 const DisjointBoxLayout& a_grids,
00191 const Box& a_domain,
00193 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00195 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00197 bool a_interfaceOnly,
00199 int a_interpolationDegree,
00201 int a_ncomp = 1,
00203 bool a_verbose = false);
00204
00205
00212
00214
00217 bool isDefined() const;
00218
00225
00227
00229 void setVerbose( bool a_verbose );
00230
00237
00239
00243 void coarseFineInterp(
00244 LevelData<NodeFArrayBox>& a_phi,
00246 const LevelData<NodeFArrayBox>& a_phiCoarse);
00247
00250 protected:
00251
00254 DisjointBoxLayout m_grids;
00255
00258 ProblemDomain m_domain;
00259
00262 Box m_domainCoarseNodes;
00263
00266 DisjointBoxLayout m_coarsenedGrids;
00267
00270 LevelData<NodeFArrayBox> m_coarseCopy;
00271
00274 bool m_interfaceOnly;
00275
00278 int m_interpolationDegree;
00279
00282 int m_ncomp;
00283
00286 bool m_isDefined;
00287
00291 const LayoutData<NodeCFIVS>* m_loCFIVS;
00292
00296 const LayoutData<NodeCFIVS>* m_hiCFIVS;
00297
00298
00299
00300
00301
00302
00305 bool m_verbose;
00306
00307 private:
00308
00309
00310 void clearMemory();
00311
00312 void setDefaultValues();
00313
00317 void interpLine(
00318 FArrayBox& a_fineFab,
00320 const FArrayBox& a_psiFab,
00322 const IntVectSet& a_psiFabNodes,
00324 const IntVect& a_iv,
00326 int a_idirOther);
00327
00328 };
00329
00330 #include "NamespaceFooter.H"
00331 #endif