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
00029
00030 #ifndef NODEQUADCFINTERP2_H
00031 #define NODEQUADCFINTERP2_H
00032
00033 #include <cmath>
00034 #include <cstdlib>
00035 #include "BaseFab.H"
00036 #include "NodeFArrayBox.H"
00037 #include "NodeCFIVS.H"
00038 #include "NodeBC.H"
00039
00041 class NodeQuadCFInterp2
00272 {
00273 public:
00274
00276
00277
00279
00281 NodeQuadCFInterp2();
00282
00283 NodeQuadCFInterp2(const DisjointBoxLayout& a_grids,
00284 Real a_dx,
00285 const ProblemDomain& a_domain,
00286 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00287 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00288 bool a_interfaceOnly,
00289 int a_interpolationDegree,
00290 int a_ncomp = 1);
00291
00293
00295 ~NodeQuadCFInterp2();
00296
00298
00312 void define(const DisjointBoxLayout& a_grids,
00313 Real a_dx,
00314 const ProblemDomain& a_domain,
00315 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00316 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00317 bool a_interfaceOnly,
00318 int a_interpolationDegree,
00319 int a_ncomp = 1);
00320
00322
00324
00327 bool isDefined() const;
00328
00330
00332
00340 void coarseFineInterp(LevelData<NodeFArrayBox>& a_phiFine,
00341 const LevelData<NodeFArrayBox>& a_phiCoarse);
00342
00343
00344 protected:
00345
00346
00347 DisjointBoxLayout m_grids;
00348
00349 ProblemDomain m_domain;
00350
00351
00352 BoxLayout m_gridsNodes;
00353
00354
00355 BoxLayout m_coarsenedGridsNodes;
00356
00357
00358 Box m_domainCoarseNodes;
00359
00360
00361 LevelData<NodeFArrayBox> m_coarseCopy;
00362
00363
00364 bool m_interfaceOnly;
00365
00366
00367 int m_interpolationDegree;
00368
00369
00370 int m_ncomp;
00371
00372
00373 Real m_dx;
00374
00375
00376 bool m_isDefined;
00377
00378
00379
00380 const LayoutData<NodeCFIVS>* m_loCFIVS;
00381 const LayoutData<NodeCFIVS>* m_hiCFIVS;
00382
00383
00384
00385
00386
00387
00388 BoxLayoutData< BaseFab<int> > m_mask;
00389
00390 BoxLayoutData< BaseFab<int> > m_maskCoarse;
00391
00392 private:
00393
00394
00395 void getMask();
00396
00397 void clearMemory();
00398
00399 void setDefaultValues();
00400
00401 void interpLine(FArrayBox& a_fineFab,
00402 const FArrayBox& a_psiFab,
00403 const IntVectSet& a_psiFabNodes,
00404 const BaseFab<int>& a_maskFab,
00405 const BaseFab<int>& a_maskCoarseFab,
00406 const IntVect& a_iv,
00407 int a_idirOther);
00408 };
00409
00410 #endif