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 #include "DisjointBoxLayout.H"
00015 #include "Pool.H"
00016 #include "Vector.H"
00017 #include "ProblemDomain.H"
00018 #include "Copier.H"
00019 #include "NamespaceHeader.H"
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 class SpreadingCopier : public Copier
00038 {
00039 public:
00040
00041
00042 SpreadingCopier()
00043 {}
00044
00045
00046 SpreadingCopier(const DisjointBoxLayout& a_level, const BoxLayout& a_dest,
00047 int a_transverseDir, bool a_exchange = false);
00048
00049
00050 SpreadingCopier(const DisjointBoxLayout& a_level, const BoxLayout& a_dest,
00051 const ProblemDomain& a_domain,
00052 int a_transverseDir,
00053 bool a_exchange = false);
00054
00055
00056 SpreadingCopier(const DisjointBoxLayout& a_level,
00057 const BoxLayout& a_dest,
00058 const IntVect& a_destGhost,
00059 int a_transverseDir,
00060 bool a_exchange = false);
00061
00062
00063 SpreadingCopier(const DisjointBoxLayout& a_level,
00064 const BoxLayout& a_dest,
00065 const ProblemDomain& a_domain,
00066 const IntVect& a_destGhost,
00067 int a_transverseDir,
00068 bool a_exchange = false);
00069
00070
00071 SpreadingCopier(const DisjointBoxLayout& a_level, const BoxLayout& a_dest,
00072 const Vector<int>& a_transverseDir, bool a_exchange = false);
00073
00074
00075 SpreadingCopier(const DisjointBoxLayout& a_level, const BoxLayout& a_dest,
00076 const ProblemDomain& a_domain,
00077 const Vector<int>& a_transverseDir,
00078 bool a_exchange = false);
00079
00080
00081 SpreadingCopier(const DisjointBoxLayout& a_level,
00082 const BoxLayout& a_dest,
00083 const IntVect& a_destGhost,
00084 const Vector<int>& a_transverseDir,
00085 bool a_exchange = false);
00086
00087
00088
00089
00090 SpreadingCopier(const DisjointBoxLayout& a_level,
00091 const BoxLayout& a_dest,
00092 const ProblemDomain& a_domain,
00093 const IntVect& a_destGhost,
00094 const Vector<int>& a_transverseDir,
00095 bool a_exchange = false);
00096
00097
00098 virtual ~SpreadingCopier();
00099
00100
00101 virtual void define(const DisjointBoxLayout& a_level,
00102 const BoxLayout& a_dest,
00103 int a_transverseDir,
00104 bool a_exchange = false);
00105
00106
00107 virtual void define(const DisjointBoxLayout& a_level,
00108 const BoxLayout& a_dest,
00109 const ProblemDomain& a_domain,
00110 int a_transverseDir,
00111 bool a_exchange = false);
00112
00113
00114 virtual void define(const DisjointBoxLayout& a_level,
00115 const BoxLayout& a_dest,
00116 const IntVect& a_destGhost,
00117 int a_transverseDir,
00118 bool a_exchange = false);
00119
00120
00121 virtual void define(const BoxLayout& a_level,
00122 const BoxLayout& a_dest,
00123 const ProblemDomain& a_domain,
00124 const IntVect& a_destGhost,
00125 int a_transverseDir,
00126 bool a_exchange = false);
00127
00128
00129 virtual void define(const DisjointBoxLayout& a_level,
00130 const BoxLayout& a_dest,
00131 const Vector<int>& a_transverseDir,
00132 bool a_exchange = false);
00133
00134
00135 virtual void define(const DisjointBoxLayout& a_level,
00136 const BoxLayout& a_dest,
00137 const ProblemDomain& a_domain,
00138 const Vector<int>& a_transverseDir,
00139 bool a_exchange = false);
00140
00141
00142 virtual void define(const DisjointBoxLayout& a_level,
00143 const BoxLayout& a_dest,
00144 const IntVect& a_destGhost,
00145 const Vector<int>& a_transverseDir,
00146 bool a_exchange = false);
00147
00148
00149 virtual void define(const BoxLayout& a_level,
00150 const BoxLayout& a_dest,
00151 const ProblemDomain& a_domain,
00152 const IntVect& a_destGhost,
00153 const Vector<int>& a_transverseDir,
00154 bool a_exchange = false);
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164 void reverse();
00165
00166
00167 bool check(const DisjointBoxLayout& from, const BoxLayout& to) const;
00168
00169 int print() const;
00170
00171
00172 protected:
00173
00174 friend class CopyIterator;
00175
00176 friend void dumpmemoryatexit();
00177
00178 private:
00179
00180
00181 Vector<int> m_transverseDir;
00182 };
00183
00184
00185
00186
00187
00188 #include "NamespaceFooter.H"
00189
00190 #endif