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 NODEQUADCFINTERP_H
00032 #define NODEQUADCFINTERP_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 #include "NodeQuadCFInterp2.H"
00041
00043 class NodeQuadCFInterp
00047 {
00048 public:
00049
00051
00053
00055 NodeQuadCFInterp();
00056
00058
00061 NodeQuadCFInterp(const DisjointBoxLayout& a_grids,
00062 Real a_dx,
00063 const ProblemDomain& a_domain,
00064 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00065 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00066 int a_refToCoarse,
00067 int a_interpolationDegree = 2,
00068 int a_ncomp = 1);
00069
00070 NodeQuadCFInterp(const DisjointBoxLayout& a_grids,
00071 Real a_dx,
00072 const Box& a_domain,
00073 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00074 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00075 int a_refToCoarse,
00076 int a_interpolationDegree = 2,
00077 int a_ncomp = 1);
00079
00081 ~NodeQuadCFInterp();
00082
00084
00098 void define(const DisjointBoxLayout& a_grids,
00099 Real a_dx,
00100 const ProblemDomain& a_domain,
00101 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00102 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00103 int a_refToCoarse,
00104 int a_interpolationDegree = 2,
00105 int a_ncomp = 1);
00106
00107 void define(const DisjointBoxLayout& a_grids,
00108 Real a_dx,
00109 const Box& a_domain,
00110 const LayoutData<NodeCFIVS>* const a_loCFIVS,
00111 const LayoutData<NodeCFIVS>* const a_hiCFIVS,
00112 int a_refToCoarse,
00113 int a_interpolationDegree = 2,
00114 int a_ncomp = 1);
00115
00117
00121 void setDomainNodeBC(const DomainNodeBC& a_dombcIn);
00122
00123
00125
00127
00130 bool isDefined() const;
00131
00132
00134
00136
00145 void coarseFineInterp(LevelData<NodeFArrayBox>& a_phiFine,
00146 const LevelData<NodeFArrayBox>& a_phiCoarse,
00147 bool a_inhomogeneous);
00148
00149
00150 protected:
00151
00152
00153 DisjointBoxLayout m_grids;
00154
00155
00156 int m_ncomp;
00157
00158
00159 int m_refToCoarse;
00160
00161
00162 int m_coarsenings;
00163
00164
00165 bool m_isDefined;
00166
00167
00168 bool m_isBCDefined;
00169
00170
00171 Real m_dx;
00172
00173
00174 Real m_dxPenultimate;
00175
00176
00177 ProblemDomain m_domainPenultimate;
00178
00179
00180 DomainNodeBC m_dombc;
00181
00182
00183 Vector< LevelData<NodeFArrayBox>* > m_inter;
00184
00185
00186
00187
00188 Vector< NodeQuadCFInterp2* > m_qcfi2;
00189
00190
00191
00192
00193 Vector< LayoutData<NodeCFIVS>* > m_loCFIVScoarser;
00194 Vector< LayoutData<NodeCFIVS>* > m_hiCFIVScoarser;
00195
00196 private:
00197
00198
00199 void clearMemory();
00200
00201 void setDefaultValues();
00202 };
00203
00204 #endif