00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _NODECOARSEAVERAGE_H_
00012 #define _NODECOARSEAVERAGE_H_
00013
00014 #include "REAL.H"
00015 #include "BaseFab.H"
00016 #include "IntVectSet.H"
00017 #include "NodeFArrayBox.H"
00018 #include "LevelData.H"
00019 #include "DisjointBoxLayout.H"
00020 #include "BitSet.H"
00021 #include "NamespaceHeader.H"
00022
00024
00025 class NodeCoarseAverage
00032 {
00033 public:
00034
00039
00041
00043 NodeCoarseAverage();
00044
00046
00049 NodeCoarseAverage(const DisjointBoxLayout& a_gridsFine,
00050 const DisjointBoxLayout& a_gridsCoarse,
00051 int a_numcomps,
00052 int a_refRatio,
00053 const ProblemDomain& a_domainFine);
00054
00056
00059 NodeCoarseAverage(const DisjointBoxLayout& a_gridsFine,
00060 const DisjointBoxLayout& a_gridsCoarse,
00061 int a_numcomps,
00062 int a_refRatio,
00063 const Box& a_domainFine);
00064
00066
00069 NodeCoarseAverage(const DisjointBoxLayout& a_gridsCoarse,
00070 int a_numcomps,
00071 int a_refRatio,
00072 const ProblemDomain& a_domainFine);
00073
00075
00078 NodeCoarseAverage(const DisjointBoxLayout& a_gridsCoarse,
00079 int a_numcomps,
00080 int a_refRatio,
00081 const Box& a_domainFine);
00082
00084
00086 ~NodeCoarseAverage();
00087
00089
00091 void define(
00092 const DisjointBoxLayout& a_gridsFine,
00094 const DisjointBoxLayout& a_gridsCoarse,
00096 int a_numcomps,
00098 int a_refRatio,
00100 const ProblemDomain& a_domainFine);
00101
00103
00105 void define(
00106 const DisjointBoxLayout& a_gridsFine,
00108 const DisjointBoxLayout& a_gridsCoarse,
00110 int a_numcomps,
00112 int a_refRatio,
00114 const Box& a_domainFine);
00115
00116
00118
00121 void define(
00122 const DisjointBoxLayout& a_gridsCoarse,
00124 int a_numcomps,
00126 int a_refRatio,
00128 const ProblemDomain& a_domainFine);
00129
00131
00134 void define(
00135 const DisjointBoxLayout& a_gridsCoarse,
00137 int a_numcomps,
00139 int a_refRatio,
00141 const Box& a_domainFine);
00142
00149
00151
00154 bool isDefined() const;
00155
00157
00160 void setVerbose( bool a_verbose );
00161
00162
00169
00171
00188
00189
00190 void averageToCoarse(
00191 LevelData<NodeFArrayBox>& a_coarse,
00193 LevelData<NodeFArrayBox>& a_fine);
00194
00197 protected:
00198
00201 bool is_defined;
00202
00205 bool m_verbose;
00206
00209 int m_refRatio;
00210
00213 int m_numcomps;
00214
00217 ProblemDomain m_domainCoarse;
00218
00222 Box m_refbox;
00223
00226 FArrayBox m_weights;
00227
00230 bool m_sameGrids;
00231
00234 DisjointBoxLayout m_coarsenedGrids;
00235
00238 LevelData<NodeFArrayBox> m_coarsenedFine;
00239
00242 LayoutData< Vector<IntVectSet> > m_IVSV;
00243
00246 LayoutData< BitSet > m_IVSVfull;
00247
00250 LayoutData< Vector<IntVectSet> > m_IVSVsame;
00251 };
00252
00253 #include "NamespaceFooter.H"
00254 #endif