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 #ifndef _COARSE_AVERAGE_H_
00029 #define _COARSE_AVERAGE_H_
00030
00031 #include "REAL.H"
00032 #include "BaseFab.H"
00033 #include "FArrayBox.H"
00034 #include "LevelData.H"
00035
00036 class DisjointBoxLayout;
00037
00039
00046 class CoarseAverage
00047 {
00048 public:
00050
00053 CoarseAverage();
00054
00056
00059 ~CoarseAverage();
00060
00062
00072 CoarseAverage(const DisjointBoxLayout& a_fine_domain,
00073 int a_numcomps,
00074 int a_ref_ratio);
00075
00077
00090 CoarseAverage(const DisjointBoxLayout& a_fine_domain,
00091 const DisjointBoxLayout& a_crse_domain,
00092 int a_numcomps,
00093 int a_ref_ratio);
00094
00096
00108 void
00109 define(const DisjointBoxLayout& a_fine_domain,
00110 int a_numcomps,
00111 int a_ref_ratio);
00112
00113
00115
00131 void
00132 define(const DisjointBoxLayout& a_fine_domain,
00133 const DisjointBoxLayout& a_crse_domain,
00134 int a_numcomps,
00135 int a_ref_ratio);
00136
00137
00139
00146 bool
00147 isDefined() const;
00148
00150
00170
00171
00172 void
00173 averageToCoarse(LevelData<FArrayBox>& a_coarse_data,
00174 const LevelData<FArrayBox>& a_fine_data);
00175
00176 protected:
00177 void
00178 averageGridData(BaseFab<Real>& a_coarse,
00179 const BaseFab<Real>& a_fine,
00180 int a_ref_ratio)
00181 const;
00182
00183 protected:
00184 bool is_defined;
00185
00186
00187 int m_ref_ratio;
00188
00189
00190 LevelData<FArrayBox> m_coarsened_fine_data;
00191
00192
00193 bool m_is_copier_defined;
00194
00195
00196 Copier m_copier;
00197
00198
00199
00200 };
00201
00202 #endif