IBAMR  IBAMR version 0.19.
Public Member Functions | Private Attributes | List of all members
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 <MultiblockRefineSchedule.h>

Public Member Functions

 MultiblockRefineAlgorithm (tbox::Pointer< xfer::RefineAlgorithm< DIM > > refine_alg, tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > multiblock)
 MultiblockRefineAlgorithm constructor. More...
 
 ~MultiblockRefineAlgorithm ()
 Destructor. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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
 

Private Attributes

tbox::Pointer< xfer::RefineAlgorithm< DIM > > d_single_block_refine_alg
 
tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > d_multiblock_hierarchy
 

Detailed Description

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

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

◆ MultiblockRefineAlgorithm()

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_algPointer to a refine algorithm that should already be constructed.
multiblockThe Multiblock patch hierarchy on which this algorithm will operate.

◆ ~MultiblockRefineAlgorithm()

Member Function Documentation

◆ registerRefine() [1/2]

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
dstPatch data index filled on the destination level.
srcSource patch data index on the source level.
scratchPatch data index used as a temporary work space.
oprefinePointer 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().

◆ registerRefine() [2/2]

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
dstPatch data index filled on the destination level.
srcSource patch data index on source level and for the patch interiors on the destination level.
src_toldOld source patch data index for time interpolation.
src_tnewNew source patch data index for time interpolation.
scratchPatch data index used as a temporary work space.
oprefinePointer 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().
optimePointer to time interpolation operator. This pointer may not be null.

◆ createSchedule() [1/6]

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

Neither time nor spatial interpolation is performed.

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

◆ createSchedule() [2/6]

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

Neither time nor spatial interpolation is performed.

Returns
Pointer to MultiblockRefineSchedule that performs the data transfers.
Parameters
dst_levelPointer to destination level; cannot be null.
src_levelPointer to source level; cannot be null.
patch_strategyPointer to a multiblock patch strategy that provides user-defined singularity boundary filling operations.
transaction_factoryRefine transaction factory.

◆ createSchedule() [3/6]

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
Returns
Pointer to MultiblockRefineSchedule that performs the data transfers.
Parameters
levelPointer to destination MultiblockPatchLevel. This This pointer cannot be null.
next_coarser_levelInteger 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.
multiblockPointer to Multiblock object which contains all of the hierarchies from which data to fill level should come.
patch_strategyPointer to a multiblock patch strategy that provides user-defined singularity boundary filling operations.
transaction_factoryRefine transaction factory.

◆ createSchedule() [4/6]

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

◆ createSchedule() [5/6]

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
Returns
Pointer to MultiblockRefineSchedule that performs the data transfers.
Parameters
dst_levelPointer to destination level; cannot be null.
src_levelPointer to source level; cannot be null.
next_coarser_levelInteger 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.
multiblockPointer to Multiblock object which contains all of the hierarchies where the PatchLevels exist.
patch_strategyPointer to a multiblock patch strategy that provides user-defined singularity boundary filling operations.
transaction_factoryRefine transaction factory.

◆ createSchedule() [6/6]

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

Member Data Documentation

◆ d_single_block_refine_alg

template<int DIM>
tbox::Pointer< xfer::RefineAlgorithm<DIM> > SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::d_single_block_refine_alg
private

◆ d_multiblock_hierarchy

template<int DIM>
tbox::Pointer< hier::MultiblockPatchHierarchy<DIM> > SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::d_multiblock_hierarchy
private

The documentation for this class was generated from the following file: