00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _SPREADINGCOPIER_H_
00012 #define _SPREADINGCOPIER_H_
00013
00014
00015 #include "DisjointBoxLayout.H"
00016 #include "Pool.H"
00017 #include "Vector.H"
00018 #include "ProblemDomain.H"
00019 #include "Copier.H"
00020 #include "NamespaceHeader.H"
00021
00023
00038 class SpreadingCopier : public Copier
00039 {
00040 public:
00041
00043 SpreadingCopier()
00044 {}
00045
00047 SpreadingCopier(const DisjointBoxLayout& a_level, const BoxLayout& a_dest,
00048 int a_transverseDir, bool a_exchange = false);
00049
00051 SpreadingCopier(const DisjointBoxLayout& a_level, const BoxLayout& a_dest,
00052 const ProblemDomain& a_domain,
00053 int a_transverseDir,
00054 bool a_exchange = false);
00055
00057 SpreadingCopier(const DisjointBoxLayout& a_level,
00058 const BoxLayout& a_dest,
00059 const IntVect& a_destGhost,
00060 int a_transverseDir,
00061 bool a_exchange = false);
00062
00064 SpreadingCopier(const DisjointBoxLayout& a_level,
00065 const BoxLayout& a_dest,
00066 const ProblemDomain& a_domain,
00067 const IntVect& a_destGhost,
00068 int a_transverseDir,
00069 bool a_exchange = false);
00070
00072 SpreadingCopier(const DisjointBoxLayout& a_level, const BoxLayout& a_dest,
00073 const Vector<int>& a_transverseDir, bool a_exchange = false);
00074
00076 SpreadingCopier(const DisjointBoxLayout& a_level, const BoxLayout& a_dest,
00077 const ProblemDomain& a_domain,
00078 const Vector<int>& a_transverseDir,
00079 bool a_exchange = false);
00080
00082 SpreadingCopier(const DisjointBoxLayout& a_level,
00083 const BoxLayout& a_dest,
00084 const IntVect& a_destGhost,
00085 const Vector<int>& a_transverseDir,
00086 bool a_exchange = false);
00087
00089
00091 SpreadingCopier(const DisjointBoxLayout& a_level,
00092 const BoxLayout& a_dest,
00093 const ProblemDomain& a_domain,
00094 const IntVect& a_destGhost,
00095 const Vector<int>& a_transverseDir,
00096 bool a_exchange = false);
00097
00099 virtual ~SpreadingCopier();
00100
00102 virtual void define(const DisjointBoxLayout& a_level,
00103 const BoxLayout& a_dest,
00104 int a_transverseDir,
00105 bool a_exchange = false);
00106
00108 virtual void define(const DisjointBoxLayout& a_level,
00109 const BoxLayout& a_dest,
00110 const ProblemDomain& a_domain,
00111 int a_transverseDir,
00112 bool a_exchange = false);
00113
00115 virtual void define(const DisjointBoxLayout& a_level,
00116 const BoxLayout& a_dest,
00117 const IntVect& a_destGhost,
00118 int a_transverseDir,
00119 bool a_exchange = false);
00120
00122 virtual void define(const BoxLayout& a_level,
00123 const BoxLayout& a_dest,
00124 const ProblemDomain& a_domain,
00125 const IntVect& a_destGhost,
00126 int a_transverseDir,
00127 bool a_exchange = false);
00128
00130 virtual void define(const DisjointBoxLayout& a_level,
00131 const BoxLayout& a_dest,
00132 const Vector<int>& a_transverseDir,
00133 bool a_exchange = false);
00134
00136 virtual void define(const DisjointBoxLayout& a_level,
00137 const BoxLayout& a_dest,
00138 const ProblemDomain& a_domain,
00139 const Vector<int>& a_transverseDir,
00140 bool a_exchange = false);
00141
00143 virtual void define(const DisjointBoxLayout& a_level,
00144 const BoxLayout& a_dest,
00145 const IntVect& a_destGhost,
00146 const Vector<int>& a_transverseDir,
00147 bool a_exchange = false);
00148
00150 virtual void define(const BoxLayout& a_level,
00151 const BoxLayout& a_dest,
00152 const ProblemDomain& a_domain,
00153 const IntVect& a_destGhost,
00154 const Vector<int>& a_transverseDir,
00155 bool a_exchange = false);
00156
00158
00165 void reverse();
00166
00167
00169 bool check(const DisjointBoxLayout& from, const BoxLayout& to) const;
00170
00171 int print() const;
00172
00173
00174 protected:
00175
00176 friend class CopyIterator;
00177
00178 friend void dumpmemoryatexit();
00179
00180 private:
00181
00182
00183 Vector<int> m_transverseDir;
00184
00185 };
00186
00187
00188
00189
00190
00191
00192
00193 #include "NamespaceFooter.H"
00194
00195 #endif