00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013
00014 #ifndef _NODEQCFI_H_
00015 #define _NODEQCFI_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 "NodeQuadCFInterp2.H"
00024 #include "NodeBCFunc.H"
00025 #include "NamespaceHeader.H"
00026
00028 class NodeQCFI
00032 {
00033 public:
00034
00039
00041
00043 NodeQCFI();
00044
00046
00049 NodeQCFI(const DisjointBoxLayout& a_grids,
00050 Real a_dx,
00051 const ProblemDomain& a_domain,
00052 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00053 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00054 int a_refToCoarse,
00055 NodeBCFunc a_bc,
00056 int a_interpolationDegree = 2,
00057 int a_ncomp = 1,
00058 bool a_verbose = false);
00059
00061
00064 NodeQCFI(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 NodeBCFunc a_bc,
00071 int a_interpolationDegree = 2,
00072 int a_ncomp = 1,
00073 bool a_verbose = false);
00074
00076
00078 ~NodeQCFI();
00079
00081
00085 void define(
00086 const DisjointBoxLayout& a_grids,
00088 Real a_dx,
00090 const ProblemDomain& a_domain,
00092 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00094 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00096 int a_refToCoarse,
00097 NodeBCFunc a_bc,
00099 int a_interpolationDegree = 2,
00101 int a_ncomp = 1,
00103 bool a_verbose = false);
00104
00106
00110 void define(
00111 const DisjointBoxLayout& a_grids,
00113 Real a_dx,
00115 const Box& a_domain,
00117 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00119 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00121 int a_refToCoarse,
00122 NodeBCFunc a_bc,
00124 int a_interpolationDegree = 2,
00126 int a_ncomp = 1,
00128 bool a_verbose = false);
00129
00130
00131
00138
00140
00143 bool isDefined() const;
00144
00151
00153
00155 void setVerbose( bool a_verbose );
00156
00163
00165
00169 void coarseFineInterp(
00170 LevelData<NodeFArrayBox>& a_phiFine,
00172 const LevelData<NodeFArrayBox>& a_phiCoarse,
00174 bool a_inhomogeneous);
00175
00178 protected:
00179
00180 NodeBCFunc m_bc;
00183 DisjointBoxLayout m_grids;
00184
00187 int m_ncomp;
00188
00191 int m_refToCoarse;
00192
00196 int m_coarsenings;
00197
00200 bool m_isDefined;
00201
00204 Real m_dx;
00205
00208 Real m_dxPenultimate;
00209
00212 ProblemDomain m_domainPenultimate;
00213
00217 Vector< LevelData<NodeFArrayBox>* > m_inter;
00218
00223 Vector< NodeQuadCFInterp2* > m_qcfi2;
00224
00228 Vector< LayoutData<NodeCFIVS>* > m_loCFIVScoarser;
00229
00233 Vector< LayoutData<NodeCFIVS>* > m_hiCFIVScoarser;
00234
00237 bool m_verbose ;
00238
00239 private:
00240
00241
00242 void clearMemory();
00243
00244 void setDefaultValues();
00245 };
00246
00247 #include "NamespaceFooter.H"
00248 #endif