Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

Copier Class Reference

A strange but true thing to make copying from one boxlayoutdata to another fast. More...

#include <Copier.H>

Inheritance diagram for Copier:

Inheritance graph
[legend]
Collaboration diagram for Copier:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Copier ()
 null constructor, copy constructor and operator= can be compiler defined.
 Copier (const DisjointBoxLayout &a_level, const BoxLayout &a_dest, bool a_exchange=false)
 Copier (const DisjointBoxLayout &a_level, const BoxLayout &a_dest, const ProblemDomain &a_domain, bool a_exchange=false)
 this constructor contains support for periodic BC's
 Copier (const DisjointBoxLayout &a_level, const BoxLayout &a_dest, const IntVect &a_destGhost, bool a_exchange=false)
 Copier to copy data into the valid and invalid regions of a_dest from a_level.
 Copier (const DisjointBoxLayout &a_level, const BoxLayout &a_dest, const ProblemDomain &a_domain, const IntVect &a_destGhost, bool a_exchange=false)
 Copier to copy data into the valid and invalid regions of a_dest from a_level with support for periodic BCs.
virtual ~Copier ()
virtual void define (const DisjointBoxLayout &a_level, const BoxLayout &a_dest, bool a_exchange=false)
virtual void define (const DisjointBoxLayout &a_level, const BoxLayout &a_dest, const ProblemDomain &a_domain, bool a_exchange=false)
 contains support for periodic BCs
virtual void define (const DisjointBoxLayout &a_level, const BoxLayout &a_dest, const IntVect &a_destGhost, bool a_exchange=false)
virtual void define (const BoxLayout &a_level, const BoxLayout &a_dest, const ProblemDomain &a_domain, const IntVect &a_destGhost, bool a_exchange=false)
 contains support for periodic BCs
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 valid.
virtual void clear ()
bool check (const DisjointBoxLayout &from, const BoxLayout &to) const
 check that this Copier object corresponds to these two BoxLayouts.
int print () const
bool bufferAllocated () const
void setBufferAllocated (bool arg) const
int numLocalCellsToCopy () const
int numFromCellsToCopy () const
int numToCellsToCopy () const

Protected Attributes

Vector< MotionItem * > m_localMotionPlan
Vector< MotionItem * > m_fromMotionPlan
Vector< MotionItem * > m_toMotionPlan
bool buffersAllocated

Static Protected Attributes

static Pool s_motionItemPool

Friends

class CopyIterator
void dumpmemoryatexit ()

Detailed Description

A strange but true thing to make copying from one boxlayoutdata to another fast.

class to handle the organization of data from a LevelData to a BoxLayoutData defined over the same index space. The idea behind this object is twofold: A) there is a significant amount of information that can be computed once and reused from one copy to the next for a LevelData and BoxLayoutData that have unchanging BoxLayouts underneath them. In these cases, LevelData::copyTo methods has an optional argument. That way, in cases where the operation is only performed a single time, we do not waste our time building optimizing data, etc. B) when we interface with KeLP, this class maps quite well with the existing KeLP API (class MotionPlan).

pains have been taken to not have this class be templated. Thus it does not actually perform the copying itself (which would require knowledge of the template class type). It provides an iterator interface to MotionItems that specify the required work. LevelData provides the copyTo methods.


Constructor & Destructor Documentation

Copier::Copier  )  [inline]
 

null constructor, copy constructor and operator= can be compiler defined.

Copier::Copier const DisjointBoxLayout a_level,
const BoxLayout a_dest,
bool  a_exchange = false
 

Copier::Copier const DisjointBoxLayout a_level,
const BoxLayout a_dest,
const ProblemDomain a_domain,
bool  a_exchange = false
 

this constructor contains support for periodic BC's

Copier::Copier const DisjointBoxLayout a_level,
const BoxLayout a_dest,
const IntVect a_destGhost,
bool  a_exchange = false
 

Copier to copy data into the valid and invalid regions of a_dest from a_level.

Copier::Copier const DisjointBoxLayout a_level,
const BoxLayout a_dest,
const ProblemDomain a_domain,
const IntVect a_destGhost,
bool  a_exchange = false
 

Copier to copy data into the valid and invalid regions of a_dest from a_level with support for periodic BCs.

virtual Copier::~Copier  )  [virtual]
 


Member Function Documentation

bool Copier::bufferAllocated  )  const
 

bool Copier::check const DisjointBoxLayout from,
const BoxLayout to
const
 

check that this Copier object corresponds to these two BoxLayouts.

virtual void Copier::clear  )  [virtual]
 

Reimplemented in CornerCopier.

virtual void Copier::define const BoxLayout a_level,
const BoxLayout a_dest,
const ProblemDomain a_domain,
const IntVect a_destGhost,
bool  a_exchange = false
[virtual]
 

contains support for periodic BCs

Reimplemented in CornerCopier.

virtual void Copier::define const DisjointBoxLayout a_level,
const BoxLayout a_dest,
const IntVect a_destGhost,
bool  a_exchange = false
[virtual]
 

Reimplemented in CornerCopier.

virtual void Copier::define const DisjointBoxLayout a_level,
const BoxLayout a_dest,
const ProblemDomain a_domain,
bool  a_exchange = false
[virtual]
 

contains support for periodic BCs

Reimplemented in CornerCopier.

virtual void Copier::define const DisjointBoxLayout a_level,
const BoxLayout a_dest,
bool  a_exchange = false
[virtual]
 

Reimplemented in CornerCopier.

void Copier::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 valid.

instead of copying from the valid of a_src to the valid+ghost of a_dest, this routine defines a Copier that moves data from the ghost+valid region of a_src to the valid region of a_dest. This is used by LevelFluxRegister.

int Copier::numFromCellsToCopy  )  const
 

int Copier::numLocalCellsToCopy  )  const
 

int Copier::numToCellsToCopy  )  const
 

int Copier::print  )  const
 

void Copier::setBufferAllocated bool  arg  )  const
 


Friends And Related Function Documentation

friend class CopyIterator [friend]
 

void dumpmemoryatexit  )  [friend]
 


Member Data Documentation

bool Copier::buffersAllocated [mutable, protected]
 

Vector<MotionItem*> Copier::m_fromMotionPlan [protected]
 

Vector<MotionItem*> Copier::m_localMotionPlan [protected]
 

Vector<MotionItem*> Copier::m_toMotionPlan [protected]
 

Pool Copier::s_motionItemPool [static, protected]
 


The documentation for this class was generated from the following file:
Generated on Wed Oct 5 12:46:09 2005 for Chombo&AMRIdealMHD by  doxygen 1.4.1