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 #ifndef NODEMASKAVERAGE2_H
00030 #define NODEMASKAVERAGE2_H
00031
00032 #include "REAL.H"
00033 #include "BaseFab.H"
00034 #include "NodeFArrayBox.H"
00035 #include "LevelData.H"
00036 #include "DisjointBoxLayout.H"
00037
00039
00040 class NodeMaskAverage2
00048 {
00049 public:
00050
00052
00054
00056 NodeMaskAverage2();
00057
00059
00062 NodeMaskAverage2(const DisjointBoxLayout& a_gridsFine,
00063 const DisjointBoxLayout& a_gridsCoarse,
00064 int a_numcomps,
00065 const ProblemDomain& a_domainFine,
00066 Real a_dx);
00067
00069
00072 NodeMaskAverage2(const DisjointBoxLayout& a_gridsCoarse,
00073 int a_numcomps,
00074 const ProblemDomain& a_domainFine,
00075 Real a_dx);
00076
00078
00080 ~NodeMaskAverage2();
00081
00083
00096 void define(const DisjointBoxLayout& a_gridsFine,
00097 const DisjointBoxLayout& a_gridsCoarse,
00098 int a_numcomps,
00099 const ProblemDomain& a_domainFine,
00100 Real a_dx);
00101
00102
00104
00116 void define(const DisjointBoxLayout& a_gridsCoarse,
00117 int a_numcomps,
00118 const ProblemDomain& a_domainFine,
00119 Real a_dx);
00120
00121
00123
00125
00128 bool isDefined() const;
00129
00130
00132
00134
00154
00155
00156 void averageToCoarse(LevelData<NodeFArrayBox>& a_coarse,
00157 LevelData<NodeFArrayBox>& a_fine);
00158
00159 protected:
00160
00161 void getWeights(const DisjointBoxLayout& a_gridsFine);
00162
00163 bool is_defined;
00164
00165 Box m_refbox;
00166
00167
00168 Real m_dx;
00169
00170
00171 bool m_sameGrids;
00172
00173
00174 DisjointBoxLayout m_coarsenedFineGrids;
00175
00176
00177
00178 LevelData<NodeFArrayBox> m_coarsenedFine;
00179
00180
00181
00182 LayoutData< Vector<IntVectSet> > m_IVSV;
00183
00184
00185 LayoutData< Vector<IntVectSet> > m_IVSVsame;
00186
00187
00188 LevelData<NodeFArrayBox> m_weights;
00189
00190
00191 BoxLayoutData< BaseFab<int> > m_mask;
00192
00193 void clearMemory();
00194 };
00195
00196 #endif