00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _EBCFCOPY_H_
00012 #define _EBCFCOPY_H_
00013
00014 #include "REAL.H"
00015 #include "FArrayBox.H"
00016 #include "LevelData.H"
00017 #include "DisjointBoxLayout.H"
00018 #include "Interval.H"
00019
00020 #include "EBISLayout.H"
00021 #include "EBCellFAB.H"
00022 #include "EBIndexSpace.H"
00023 #include "EBStencil.H"
00024 #include "EBLevelGrid.H"
00025
00026 #include "NamespaceHeader.H"
00027
00028
00029
00030
00031
00032
00033
00034 class EBCFCopy
00035 {
00036 public:
00037
00038
00039
00040
00041 EBCFCopy();
00042
00043
00044 ~EBCFCopy();
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 EBCFCopy(const DisjointBoxLayout & a_dblFine,
00061 const DisjointBoxLayout & a_dblCoar,
00062 const EBISLayout & a_ebislFine,
00063 const EBISLayout & a_ebislCoar,
00064 const ProblemDomain & a_domainCoar,
00065 const int & a_nref,
00066 const int & a_nvar,
00067 const EBIndexSpace * a_ebisPtr,
00068 const IntVect & a_ghostCellsPhi,
00069 const bool & a_layoutChanged = true);
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085 void define(const DisjointBoxLayout & a_dblFine,
00086 const DisjointBoxLayout & a_dblCoar,
00087 const EBISLayout & a_ebislFine,
00088 const EBISLayout & a_ebislCoar,
00089 const ProblemDomain & a_domainCoar,
00090 const int & a_nref,
00091 const int & a_nvar,
00092 const EBIndexSpace * a_ebisPtr,
00093 const IntVect & a_ghostCellsPhi,
00094 const bool & a_layoutChanged = true);
00095
00096
00097
00098
00099
00100
00101 bool isDefined() const;
00102
00103
00104
00105
00106
00107
00108 void copy(LevelData<EBCellFAB> & a_fineData,
00109 const LevelData<EBCellFAB> & a_coarseData,
00110 const Interval & a_variables);
00111
00112
00113
00114
00115
00116
00117
00118 void copySameLayout(LevelData<EBCellFAB> & a_fineData,
00119 const LevelData<EBCellFAB> & a_coarseData,
00120 const Interval & a_variables);
00121
00122 protected:
00123 void copyFAB(EBCellFAB & a_refCoar,
00124 const Box & a_coarBox,
00125 const EBCellFAB & a_fine,
00126 const DataIndex & a_datInd,
00127 const Interval & a_variables) const;
00128
00129 void setDefaultValues();
00130
00131 void defineStencils();
00132
00133 bool m_isDefined;
00134
00135 IntVect m_ghost;
00136
00137 DisjointBoxLayout m_coarGrids;
00138 DisjointBoxLayout m_fineGrids;
00139
00140 ProblemDomain m_coarDomain;
00141 ProblemDomain m_fineDomain;
00142
00143 EBISLayout m_coarEBISL;
00144 EBISLayout m_fineEBISL;
00145
00146 int m_refRat;
00147 int m_nComp;
00148
00149 bool m_layoutChanged;
00150 bool m_coarsenable;
00151
00152
00153
00154
00155
00156
00157 DisjointBoxLayout m_buffGrids;
00158 EBISLayout m_buffEBISL;
00159
00160
00161 Copier m_copierFtoRC;
00162 Copier m_copierRCtoF;
00163
00164
00165 LayoutData<RefCountedPtr<EBStencil> > m_copyEBStencil;
00166
00167 private:
00168
00169 EBCFCopy(const EBCFCopy& ebcin)
00170 {
00171 MayDay::Error("EBCFCopy 2 invalid operator");
00172 }
00173 void operator=(const EBCFCopy& fabin)
00174 {
00175 MayDay::Error("EBCFCopy 3 invalid operator");
00176 }
00177
00178 };
00179
00180 #include "NamespaceFooter.H"
00181
00182 #endif