18 #include <unordered_map>
22 #include "NamespaceHeader.H"
25 typedef std::unordered_map<uint64_t, LayoutIndex>
LMap;
51 const Box& a_fromRegion,
52 const Box& a_toRegion);
99 const Box& left = item->toRegion;
100 const Box& right= rhs.item->toRegion;
107 return item->toRegion < rhs.item->toRegion;
111 return procID < rhs.procID;
165 bool a_exchange =
false,
172 bool a_exchange =
false,
179 bool a_exchange =
false,
187 bool a_exchange =
false,
196 bool a_exchange =
false,
203 bool a_exchange =
false,
210 bool a_exchange =
false,
218 bool a_exchange =
false,
224 bool a_includeSelf=
false);
230 bool a_includeSelf=
false,
231 bool a_reverse=
false);
263 virtual void clear();
357 :fromIndex(a_from), toIndex(a_to), fromRegion(a_region),
358 toRegion(a_region),
procID(-1)
364 const Box& a_fromRegion,
365 const Box& a_toRegion)
366 :fromIndex(a_from), toIndex(a_to), fromRegion(a_fromRegion),
367 toRegion(a_toRegion),
procID(-1)
400 inline bool ok()
const;
428 MayDay::Error(
"illegal local_from_to option for CopyIterator");
459 #include "NamespaceFooter.H"
void ghostDefine(const DisjointBoxLayout &a_src, const DisjointBoxLayout &a_dest, const ProblemDomain &a_domain, const IntVect &a_srcGhost)
performs the computation necessary for moving from ghost+valid cells to all valid cells in a_dest ...
std::vector< IndexTM< int, 2 > > m_range
Definition: Copier.H:318
int numReceives
Definition: Copier.H:124
int numLocalCellsToCopy() const
void reset()
Definition: Copier.H:454
#define CH_assert(cond)
Definition: CHArray.H:37
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:141
CopierBuffer m_buffers
Definition: Copier.H:316
Vector< MotionItem * > m_fromMotionPlan
Definition: Copier.H:325
int m_ncomps
Definition: Copier.H:78
bool bufferAllocated() const
virtual void exchangeDefine(const DisjointBoxLayout &a_grids, const IntVect &a_ghost, bool a_includeSelf=false)
alternative version of define for exchange copiers that uses new optimized neighborIterator ...
std::unordered_map< uint64_t, LayoutIndex > LMap
Definition: Copier.H:25
void defineFixedBoxSize(const DisjointBoxLayout &a_src, const LMap &a_lmap, const IntVect &a_ghost, const ProblemDomain &a_domain, bool a_includeSelf=false, bool a_reverse=false)
A not-necessarily-disjoint collective of boxes.
Definition: BoxLayout.H:145
one dimensional dynamic array
Definition: Vector.H:53
A strange but true thing to make copying from one boxlayoutdata to another fast.
Definition: Copier.H:152
std::ostream & operator<<(std::ostream &os, const Copier &copier)
std::vector< std::vector< bufEntry > > m_toMeUnpack
Definition: Copier.H:118
void defineFixedSizeNodesCollect(const DisjointBoxLayout &a_layout, const LMap &a_lmap, const IntVect &a_ghostSrc, const IntVect &a_ghostDst, const ProblemDomain &a_domain)
std::vector< bufEntry > m_fromMe
Definition: Copier.H:116
DisjointBoxLayout m_originPlan
Definition: Copier.H:334
bool m_isDefined
Definition: Copier.H:337
const MotionItem & operator()() const
Definition: Copier.H:432
size_t m_sendcapacity
Definition: Copier.H:82
bool isDefined(int ncomps) const
Definition: Copier.H:75
size_t size()
Definition: Copier.H:404
void reverse()
Definition: Copier.H:372
static Pool s_motionItemPool
Definition: Copier.H:329
bool operator==(const Copier &rhs) const
int procID
Definition: Copier.H:44
DataIndex toIndex
Definition: Copier.H:41
BoxLayout m_dest
Definition: Copier.H:335
Vector< MotionItem * > m_toMotionPlan
Definition: Copier.H:326
size_t m_reccapacity
Definition: Copier.H:85
void * m_recbuffer
Definition: Copier.H:83
MotionItem(const DataIndex &a_from, const DataIndex &a_to, const Box &a_region)
Definition: Copier.H:354
void coarsen(int a_refRatio)
int numSends
Definition: Copier.H:124
void * m_sendbuffer
Definition: Copier.H:80
int numToCellsToCopy() const
void trimMotion(const DisjointBoxLayout &a_exchangedLayout, const IntVect &a_ghost, const Vector< MotionItem * > &a_oldItems, Vector< MotionItem * > &a_newItems)
bool operator<(const FaceIndex &f1, const FaceIndex &f2)
Definition: FaceIndex.H:212
const IntVect & bigEnd() const
Definition: Box.H:1784
Pool is a class to optimize memory allocation.
Definition: Pool.H:63
bool lexLT(const IntVect &s) const
Definition: IntVect.H:908
bool buffersAllocated
Definition: Copier.H:330
A BoxLayout that has a concept of disjointedness.
Definition: DisjointBoxLayout.H:30
CopierBuffer()
null constructor, copy constructor and operator= can be compiler defined.
Definition: Copier.H:66
Vector< MotionItem * > m_localMotionPlan
Definition: Copier.H:324
const ProblemDomain & getPhysDomain(const DisjointBoxLayout &a_level) const
Box toRegion
Definition: Copier.H:43
static void Error(const char *const a_msg=m_nullString, int m_exitCode=CH_DEFAULT_ERROR_CODE)
Print out message to cerr and exit with the specified exit code.
unsigned int m_current
Definition: Copier.H:408
void operator++()
Definition: Copier.H:444
void trimEdges(const DisjointBoxLayout &a_exchangedLayout, const IntVect &ghost)
static const IntVect Zero
Definition: IntVect.H:658
int numFromCellsToCopy() const
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:469
Copier & operator=(const Copier &b)
Definition: DataIndex.H:114
bool ok() const
Definition: Copier.H:449
const MotionItem & operator[](size_t index) const
Definition: Copier.H:438
Copier()
null constructor, copy constructor and operator= can be compiler defined.
Definition: Copier.H:157
void setBufferAllocated(bool arg) const
local_from_to
Definition: Copier.H:385
An integer Vector in SpaceDim-dimensional space.
Definition: CHArray.H:42
size_t size() const
Definition: Vector.H:192
friend void dumpmemoryatexit()
bool isDefined() const
Definition: Copier.H:313
virtual void define(const DisjointBoxLayout &a_level, const BoxLayout &a_dest, bool a_exchange=false, IntVect a_shift=IntVect::Zero)
const Vector< MotionItem * > * m_motionplanPtr
Definition: Copier.H:407
DataIndex fromIndex
Definition: Copier.H:41
bool operator==(const MotionItem &rhs)
Definition: Copier.H:55
const IntVect & smallEnd() const
{ Accessors}
Definition: Box.H:1770
int procID()
local process ID
Box fromRegion
Definition: Copier.H:42
CopyIterator(const Copier &a_copier, local_from_to)
Definition: Copier.H:413
std::vector< bufEntry > m_toMe
Definition: Copier.H:117