00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _FOURTHORDERFINEINTERP_H_
00012 #define _FOURTHORDERFINEINTERP_H_
00013
00014 #include "FArrayBox.H"
00015 #include "DisjointBoxLayout.H"
00016 #include "LevelData.H"
00017 #include "ProblemDomain.H"
00018 #include "FourthOrderPatchInterp.H"
00019 #include "NamespaceHeader.H"
00020
00021
00022
00023
00024
00025 class FourthOrderFineInterp
00026 {
00027 public:
00028
00029
00030
00031
00032 FourthOrderFineInterp();
00033
00034
00035
00036
00037
00038
00039 ~FourthOrderFineInterp();
00040
00041
00042
00043
00044
00045 void define(
00046 const DisjointBoxLayout& a_layout,
00047
00048 const int& a_numStates,
00049
00050 const int& a_refineCoarse,
00051
00052 const ProblemDomain& a_domain,
00053
00054 const int& a_coarseGhostsFill = 0,
00055
00056 Interval a_fixedDims = Interval() );
00057
00058
00059
00060
00061
00062 const BaseFab<IntVect>& getStencil(const DataIterator& a_dit) const;
00063
00064
00065
00066
00067
00068 const BaseFab<IntVect>& getStencil(const DataIndex& a_dind) const;
00069
00070
00071
00072
00073
00074 LevelData<FArrayBox>& coarsenedFineData();
00075
00076
00077
00078
00079
00080 FourthOrderPatchInterp& patchInterp();
00081
00082
00083
00084
00085
00086 void interpToFine(
00087 LevelData<FArrayBox>& a_fine,
00088
00089 const LevelData<FArrayBox>& a_coarse);
00090
00091
00092
00093
00094
00095
00096 void interpOnPatch(
00097
00098 FArrayBox& a_fine,
00099
00100 const FArrayBox& a_coarse,
00101
00102 const DataIterator& a_dit);
00103
00104
00105
00106
00107
00108
00109 void interpOnPatch(
00110
00111 FArrayBox& a_fine,
00112
00113 const FArrayBox& a_coarse,
00114
00115 const DataIndex& a_dind);
00116
00117
00118
00119
00120
00121
00122
00123 void interpOnPatch(
00124
00125 FArrayBox& a_fine,
00126
00127 const FArrayBox& a_coarse,
00128
00129 const DataIterator& a_dit,
00130
00131 const IntVectSet& a_ivs);
00132
00133
00134
00135
00136
00137
00138 void interpOnPatch(
00139
00140 FArrayBox& a_fine,
00141
00142 const FArrayBox& a_coarse,
00143
00144 const DataIndex& a_dind,
00145
00146 const IntVectSet& a_ivs);
00147
00148 protected:
00149
00150
00151 DisjointBoxLayout m_layout;
00152
00153
00154 DisjointBoxLayout m_layoutCoarsened;
00155
00156
00157 FourthOrderPatchInterp m_patchInterp;
00158
00159
00160 LevelData< BaseFab<IntVect> > m_stencilHere;
00161
00162
00163 IntVect m_ghostVect;
00164
00165
00166 LevelData<FArrayBox> m_coarseData;
00167
00168
00169 ProblemDomain m_domain;
00170
00171
00172 int m_refineCoarse;
00173
00174
00175 Interval m_fixedDims;
00176
00177
00178 IntVect m_refineVect;
00179
00180
00181 int m_numStates;
00182
00183
00184 int m_maxStencilDist;
00185
00186
00187 int m_coarseGhostsFill;
00188
00189
00190 bool m_defined;
00191
00192 private:
00193
00194
00195 void operator=(const FourthOrderFineInterp&);
00196 FourthOrderFineInterp(const FourthOrderFineInterp&);
00197 };
00198
00199 #include "NamespaceFooter.H"
00200 #endif