#include <source/transfer/multiblock/MultiblockRefineAlgorithm.h>
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 |
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>.
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.
refine_alg | Pointer to a refine algorithm that should already be constructed. | |
multiblock | The Multiblock patch hierarchy on which this algorithm will operate. |
SAMRAI::xfer::MultiblockRefineAlgorithm< DIM >::~MultiblockRefineAlgorithm | ( | ) |
Destructor.
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.
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(). |
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.
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. |
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.
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. |
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.
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. |
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.
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. |
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 |
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.
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. |
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 |