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
00031 #ifndef NODEQUADCFINTERP2_H
00032 #define NODEQUADCFINTERP2_H
00033
00034 #include <cmath>
00035 #include <cstdlib>
00036 #include "BaseFab.H"
00037 #include "NodeFArrayBox.H"
00038 #include "NodeCFIVS.H"
00039 #include "NodeBC.H"
00040
00042 class NodeQuadCFInterp2
00130 {
00131 public:
00132
00134
00135
00137
00139 NodeQuadCFInterp2();
00140
00142
00145 NodeQuadCFInterp2(const DisjointBoxLayout& a_grids,
00146 const Box& a_domain,
00147 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00148 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00149 bool a_interfaceOnly,
00150 int a_interpolationDegree,
00151 int a_ncomp = 1);
00152
00154
00157 NodeQuadCFInterp2(const DisjointBoxLayout& a_grids,
00158 const ProblemDomain& a_domain,
00159 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00160 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00161 bool a_interfaceOnly,
00162 int a_interpolationDegree,
00163 int a_ncomp = 1);
00164
00166
00168 ~NodeQuadCFInterp2();
00169
00171
00184 void define(const DisjointBoxLayout& a_grids,
00185 const Box& a_domain,
00186 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00187 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00188 bool a_interfaceOnly,
00189 int a_interpolationDegree,
00190 int a_ncomp = 1);
00191
00192
00194
00207 void define(const DisjointBoxLayout& a_grids,
00208 const ProblemDomain& a_domain,
00209 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00210 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00211 bool a_interfaceOnly,
00212 int a_interpolationDegree,
00213 int a_ncomp = 1);
00214
00215
00217
00219
00222 bool isDefined() const;
00223
00225
00227
00235 void coarseFineInterp(LevelData<NodeFArrayBox>& a_phi,
00236 const LevelData<NodeFArrayBox>& a_phiCoarse);
00237
00238
00239 protected:
00240
00241
00242 DisjointBoxLayout m_grids;
00243
00244 ProblemDomain m_domain;
00245
00246 Box m_domainCoarseNodes;
00247
00248
00249 DisjointBoxLayout m_coarsenedGrids;
00250
00251
00252 LevelData<NodeFArrayBox> m_coarseCopy;
00253
00254
00255 bool m_interfaceOnly;
00256
00257
00258 int m_interpolationDegree;
00259
00260
00261 int m_ncomp;
00262
00263
00264 bool m_isDefined;
00265
00266
00267
00268 const LayoutData<NodeCFIVS>* m_loCFIVS;
00269 const LayoutData<NodeCFIVS>* m_hiCFIVS;
00270
00271
00272
00273
00274
00275
00276 private:
00277
00278
00279 void clearMemory();
00280
00281 void setDefaultValues();
00282
00283
00284 void interpLine(FArrayBox& a_fineFab,
00285 const FArrayBox& a_psiFab,
00286 const IntVectSet& a_psiFabNodes,
00287 const IntVect& a_iv,
00288 int a_idirOther);
00289
00290 };
00291
00292 #endif