SAMRAI::xfer::MultiblockRefineAlgorithm< DIM > Class Template Reference

Class MultiblockRefineAlgorithm<DIM> is an extension of the concept of xfer::RefineAlgorithm<DIM> to be used in applications that require a multiblock domain. More...

#include <source/transfer/multiblock/MultiblockRefineAlgorithm.h>

List of all members.

Public Member Functions

 MultiblockRefineAlgorithm (tbox::Pointer< xfer::RefineAlgorithm< DIM > > refine_alg, tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > multiblock)
 MultiblockRefineAlgorithm constructor.
 ~MultiblockRefineAlgorithm ()
 Destructor.
void registerRefine (const int dst, const int src, const int scratch, tbox::Pointer< xfer::RefineOperator< DIM > > oprefine)
void registerRefine (const int dst, const int src, const int src_told, const int src_tnew, const int scratch, tbox::Pointer< xfer::RefineOperator< DIM > > oprefine, tbox::Pointer< xfer::TimeInterpolateOperator< DIM > > optime)
tbox::Pointer< MultiblockRefineSchedule<
DIM > > 
createSchedule (tbox::Pointer< hier::MultiblockPatchLevel< DIM > > level, MultiblockRefinePatchStrategy< DIM > *patch_strategy=((MultiblockRefinePatchStrategy< DIM > *) NULL), tbox::Pointer< xfer::RefineTransactionFactory< DIM > > transaction_factory=(xfer::RefineTransactionFactory< DIM > *) NULL) const
 Create a communication schedule that copies data from the interiors of the source components into the interior and boundary cells of the destination components on the same level where those sources and destinations overlap.
tbox::Pointer< MultiblockRefineSchedule<
DIM > > 
createSchedule (tbox::Pointer< hier::MultiblockPatchLevel< DIM > > dst_level, tbox::Pointer< hier::MultiblockPatchLevel< DIM > > src_level, MultiblockRefinePatchStrategy< DIM > *patch_strategy=((MultiblockRefinePatchStrategy< DIM > *) NULL), tbox::Pointer< xfer::RefineTransactionFactory< DIM > > transaction_factory=(xfer::RefineTransactionFactory< DIM > *) NULL) const
 Create a communication schedule that copies data from the interiors of the source components on a source level into the interior and boundary cells of the destination components on a destination level where those sources and destinations overlap.
tbox::Pointer< MultiblockRefineSchedule<
DIM > > 
createSchedule (tbox::Pointer< hier::MultiblockPatchLevel< DIM > > level, const int next_coarser_level, tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > multiblock, MultiblockRefinePatchStrategy< DIM > *patch_strategy=((MultiblockRefinePatchStrategy< DIM > *) NULL), tbox::Pointer< xfer::RefineTransactionFactory< DIM > > transaction_factory=(xfer::RefineTransactionFactory< DIM > *) NULL) const
 Create a communication schedule that copies data from the interiors of the source components into the interior and boundary cells of the destination components on the same level where those sources and destinations overlap. Data is moved from old and new sources on coarser levels when time interpolation is needed and from the source components on the patch level into the destination components.
tbox::Pointer< MultiblockRefineSchedule<
DIM > > 
createSchedule (const std::string &fill_pattern, tbox::Pointer< hier::MultiblockPatchLevel< DIM > > level, const int next_coarser_level, tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > multiblock, MultiblockRefinePatchStrategy< DIM > *patch_strategy=((MultiblockRefinePatchStrategy< DIM > *) NULL), tbox::Pointer< xfer::RefineTransactionFactory< DIM > > transaction_factory=(xfer::RefineTransactionFactory< DIM > *) NULL) const
tbox::Pointer< MultiblockRefineSchedule<
DIM > > 
createSchedule (tbox::Pointer< hier::MultiblockPatchLevel< DIM > > dst_level, tbox::Pointer< hier::MultiblockPatchLevel< DIM > > src_level, const int next_coarser_level, tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > multiblock, MultiblockRefinePatchStrategy< DIM > *patch_strategy=((MultiblockRefinePatchStrategy< DIM > *) NULL), tbox::Pointer< xfer::RefineTransactionFactory< DIM > > transaction_factory=(xfer::RefineTransactionFactory< DIM > *) NULL) const
 Create a communication schedule that moves data from the interiors of the source level and coarser hierarchy levels into the interior and boundary cells of the destination components on the destination level where those sources and destinations overlap. Data is moved from old and new sources on coarser levels when time interpolation is needed and from the source components on the source level into the destination components.
tbox::Pointer< MultiblockRefineSchedule<
DIM > > 
createSchedule (const std::string &fill_pattern, tbox::Pointer< hier::MultiblockPatchLevel< DIM > > dst_level, tbox::Pointer< hier::MultiblockPatchLevel< DIM > > src_level, const int next_coarser_level, tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > multiblock, MultiblockRefinePatchStrategy< DIM > *patch_strategy=((MultiblockRefinePatchStrategy< DIM > *) NULL), tbox::Pointer< xfer::RefineTransactionFactory< DIM > > transaction_factory=(xfer::RefineTransactionFactory< DIM > *) NULL) const


Detailed Description

template<int DIM>
class SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >

Class MultiblockRefineAlgorithm<DIM> is an extension of the concept of xfer::RefineAlgorithm<DIM> to be used in applications that require a multiblock domain.

This class requires a pointer to a previously-constructed xfer::RefineAlgorithm<DIM>. It contains four routines that create a MultiblockRefineSchedule<DIM> object, each analagous to the createSchedule() routines in xfer::RefineAlgorithm<DIM>.

See also:
MultiblockPatchHierarchy

MultiblockRefineSchedule

MultiblockRefineAlgorithm

xfer::RefineAlgorithm


Constructor & Destructor Documentation

template<int DIM>
SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::MultiblockRefineAlgorithm ( tbox::Pointer< xfer::RefineAlgorithm< DIM > >  refine_alg,
tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > >  multiblock 
)

MultiblockRefineAlgorithm constructor.

Constructor for MultiblockRefineAlgorithm takes a pointer to an xfer::RefineAlgorithm, that is used to create communication schedules. Refinement operations should be registered with the RefineAlgorithm before this class will do anything useful.

Parameters:
refine_alg Pointer to a refine algorithm that should already be constructed.
multiblock The Multiblock patch hierarchy on which this algorithm will operate.

template<int DIM>
SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::~MultiblockRefineAlgorithm (  ) 

Destructor.


Member Function Documentation

template<int DIM>
void SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::registerRefine ( const int  dst,
const int  src,
const int  scratch,
tbox::Pointer< xfer::RefineOperator< DIM > >  oprefine 
)

Register a refine operation with the refine algorithm object. This routine does not support time interpolation. Data values will be moved from the source component to the destination component using scratch component as a temporary work space. The scratch component must have sufficient ghost cells to cover the required operator stencil width and any needed physical boundary ghost cells.

Parameters:
dst Patch data index filled on the destination level.
src Source patch data index on the source level.
scratch Patch data index used as a temporary work space.
oprefine Pointer to refinement operator. This may be a null pointer. In this case, refinement must be handled by the refine patch strategy member functions. See the comments for xfer::RefinePatchStrategy<DIM>::preprocessRefine() and xfer::RefinePatchStrategy<DIM>::postprocessRefine().

template<int DIM>
void SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::registerRefine ( const int  dst,
const int  src,
const int  src_told,
const int  src_tnew,
const int  scratch,
tbox::Pointer< xfer::RefineOperator< DIM > >  oprefine,
tbox::Pointer< xfer::TimeInterpolateOperator< DIM > >  optime 
)

Register a refine operation with the refine algorithm object. This routine supports time interpolation. Time interpolation will take place between the old and new source data components on coarser levels. On the destination level, data will be moved from the source component to the destination component using scratch component as a temporary work space. The scratch component must have sufficient ghost cells to cover the required operator stencil width and any needed physical boundary ghost cells. The time interpolation operator cannot be null. When assertion checking is active, passing in a null pointer will result in an unrecoverable exception.

Parameters:
dst Patch data index filled on the destination level.
src Source patch data index on source level and for the patch interiors on the destination level.
src_told Old source patch data index for time interpolation.
src_tnew New source patch data index for time interpolation.
scratch Patch data index used as a temporary work space.
oprefine Pointer to refinement operator. This may be a null pointer. In this case, refinement must be handled by the refine patch strategy member functions. See the comments for xfer::RefinePatchStrategy<DIM>::preprocessRefine() and xfer::RefinePatchStrategy<DIM>::postprocessRefine().
optime Pointer to time interpolation operator. This pointer may not be null.

template<int DIM>
tbox::Pointer< MultiblockRefineSchedule< DIM > > SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::createSchedule ( tbox::Pointer< hier::MultiblockPatchLevel< DIM > >  level,
MultiblockRefinePatchStrategy< DIM > *  patch_strategy = ((MultiblockRefinePatchStrategy< DIM > *) NULL),
tbox::Pointer< xfer::RefineTransactionFactory< DIM > >  transaction_factory = (xfer::RefineTransactionFactory< DIM > *) NULL 
) const

Create a communication schedule that copies data from the interiors of the source components into the interior and boundary cells of the destination components on the same level where those sources and destinations overlap.

Neither time nor spatial interpolation is performed.

Returns:
Pointer to MultiblockRefineSchedule that performs the data transfers.
Parameters:
level Pointer to MultiblockPatchLevel which contains PatchLevels on which interpatch transfers occur. This pointer cannot be null.
patch_strategy Pointer to a multiblock patch strategy that provides user-defined singularity boundary filling operations.
transaction_factory Refine transaction factory.

template<int DIM>
tbox::Pointer< MultiblockRefineSchedule< DIM > > SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::createSchedule ( tbox::Pointer< hier::MultiblockPatchLevel< DIM > >  dst_level,
tbox::Pointer< hier::MultiblockPatchLevel< DIM > >  src_level,
MultiblockRefinePatchStrategy< DIM > *  patch_strategy = ((MultiblockRefinePatchStrategy< DIM > *) NULL),
tbox::Pointer< xfer::RefineTransactionFactory< DIM > >  transaction_factory = (xfer::RefineTransactionFactory< DIM > *) NULL 
) const

Create a communication schedule that copies data from the interiors of the source components on a source level into the interior and boundary cells of the destination components on a destination level where those sources and destinations overlap.

Neither time nor spatial interpolation is performed.

Returns:
Pointer to MultiblockRefineSchedule that performs the data transfers.
Parameters:
dst_level Pointer to destination level; cannot be null.
src_level Pointer to source level; cannot be null.
patch_strategy Pointer to a multiblock patch strategy that provides user-defined singularity boundary filling operations.
transaction_factory Refine transaction factory.

template<int DIM>
tbox::Pointer< MultiblockRefineSchedule< DIM > > SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::createSchedule ( tbox::Pointer< hier::MultiblockPatchLevel< DIM > >  level,
const int  next_coarser_level,
tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > >  multiblock,
MultiblockRefinePatchStrategy< DIM > *  patch_strategy = ((MultiblockRefinePatchStrategy< DIM > *) NULL),
tbox::Pointer< xfer::RefineTransactionFactory< DIM > >  transaction_factory = (xfer::RefineTransactionFactory< DIM > *) NULL 
) const

Create a communication schedule that copies data from the interiors of the source components into the interior and boundary cells of the destination components on the same level where those sources and destinations overlap. Data is moved from old and new sources on coarser levels when time interpolation is needed and from the source components on the patch level into the destination components.

Returns:
Pointer to MultiblockRefineSchedule that performs the data transfers.
Parameters:
level Pointer to destination MultiblockPatchLevel. This This pointer cannot be null.
next_coarser_level Integer number of next coarser MultiblockPatchLevel relative to the destination level. Note that when the destination level has number zero (i.e., the coarsest level), this value should be < 0.
multiblock Pointer to Multiblock object which contains all of the hierarchies from which data to fill level should come.
patch_strategy Pointer to a multiblock patch strategy that provides user-defined singularity boundary filling operations.
transaction_factory Refine transaction factory.

template<int DIM>
tbox::Pointer< MultiblockRefineSchedule< DIM > > SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::createSchedule ( const std::string &  fill_pattern,
tbox::Pointer< hier::MultiblockPatchLevel< DIM > >  level,
const int  next_coarser_level,
tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > >  multiblock,
MultiblockRefinePatchStrategy< DIM > *  patch_strategy = ((MultiblockRefinePatchStrategy< DIM > *) NULL),
tbox::Pointer< xfer::RefineTransactionFactory< DIM > >  transaction_factory = (xfer::RefineTransactionFactory< DIM > *) NULL 
) const

template<int DIM>
tbox::Pointer< MultiblockRefineSchedule< DIM > > SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::createSchedule ( tbox::Pointer< hier::MultiblockPatchLevel< DIM > >  dst_level,
tbox::Pointer< hier::MultiblockPatchLevel< DIM > >  src_level,
const int  next_coarser_level,
tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > >  multiblock,
MultiblockRefinePatchStrategy< DIM > *  patch_strategy = ((MultiblockRefinePatchStrategy< DIM > *) NULL),
tbox::Pointer< xfer::RefineTransactionFactory< DIM > >  transaction_factory = (xfer::RefineTransactionFactory< DIM > *) NULL 
) const

Create a communication schedule that moves data from the interiors of the source level and coarser hierarchy levels into the interior and boundary cells of the destination components on the destination level where those sources and destinations overlap. Data is moved from old and new sources on coarser levels when time interpolation is needed and from the source components on the source level into the destination components.

Returns:
Pointer to MultiblockRefineSchedule that performs the data transfers.
Parameters:
dst_level Pointer to destination level; cannot be null.
src_level Pointer to source level; cannot be null.
next_coarser_level Integer number of next coarser MultiblockPatchLevel relative to the destination level. Note that when the destination level has number zero (i.e., the coarsest level), this value should be < 0.
multiblock Pointer to Multiblock object which contains all of the hierarchies where the PatchLevels exist.
patch_strategy Pointer to a multiblock patch strategy that provides user-defined singularity boundary filling operations.
transaction_factory Refine transaction factory.

template<int DIM>
tbox::Pointer< MultiblockRefineSchedule< DIM > > SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::createSchedule ( const std::string &  fill_pattern,
tbox::Pointer< hier::MultiblockPatchLevel< DIM > >  dst_level,
tbox::Pointer< hier::MultiblockPatchLevel< DIM > >  src_level,
const int  next_coarser_level,
tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > >  multiblock,
MultiblockRefinePatchStrategy< DIM > *  patch_strategy = ((MultiblockRefinePatchStrategy< DIM > *) NULL),
tbox::Pointer< xfer::RefineTransactionFactory< DIM > >  transaction_factory = (xfer::RefineTransactionFactory< DIM > *) NULL 
) const


The documentation for this class was generated from the following files:
Generated on Thu Jun 18 11:29:11 2009 for SAMRAI by  doxygen 1.5.1