#include <source/transfer/multiblock/MultiblockRefineSchedule.h>
Public Member Functions | |
MultiblockRefineSchedule (const std::string &fill_pattern, tbox::Pointer< hier::MultiblockPatchLevel< DIM > > dst_level, tbox::Pointer< hier::MultiblockPatchLevel< DIM > > src_level, tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > multiblock, tbox::Pointer< xfer::RefineAlgorithm< DIM > > refine_alg, tbox::Pointer< xfer::RefineTransactionFactory< DIM > > transaction_factory, MultiblockRefinePatchStrategy< DIM > *strategy, bool use_time_refinement=false) | |
MultiblockRefineSchedule (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, tbox::Pointer< xfer::RefineAlgorithm< DIM > > refine_alg, tbox::Pointer< xfer::RefineTransactionFactory< DIM > > transaction_factory, MultiblockRefinePatchStrategy< DIM > *strategy, bool use_time_refinement=false) | |
virtual | ~MultiblockRefineSchedule () |
void | fillData (double fill_time, bool do_physical_boundary_fill=true) const |
Execute the stored communication schedule and perform the data movement. | |
void | initializeSourceVector (hier::ComponentSelector &allocate_vector) const |
Initialize a vector to contain source data components. | |
const tbox::Pointer< xfer::RefineClasses< DIM > > & | getEquivalenceClasses () const |
Get the equivalence classes associated with the algorithm that created this schedule. | |
void | allocateScratchSpace (tbox::Pointer< hier::PatchLevel< DIM > > level, double fill_time, hier::ComponentSelector &allocate_vector) const |
Allocate scratch space on the specified level and return the allocated patch data indices in the component selector for later deallocation. | |
Classes | |
struct | SingularityPatch |
struct SingularityPatch allows a temporary patch that contains data near a singularity to be paired with a block id number. More... |
SAMRAI::xfer::MultiblockRefineSchedule< DIM >::MultiblockRefineSchedule | ( | const std::string & | fill_pattern, | |
tbox::Pointer< hier::MultiblockPatchLevel< DIM > > | dst_level, | |||
tbox::Pointer< hier::MultiblockPatchLevel< DIM > > | src_level, | |||
tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > | multiblock, | |||
tbox::Pointer< xfer::RefineAlgorithm< DIM > > | refine_alg, | |||
tbox::Pointer< xfer::RefineTransactionFactory< DIM > > | transaction_factory, | |||
MultiblockRefinePatchStrategy< DIM > * | strategy, | |||
bool | use_time_refinement = false | |||
) |
Constructor to create a MultiblockRefineSchedule that copies data from the interiors of source patch data components on the source level into the interiors and ghost cells of destination patch data components on the destination level. Only data on the intersection of the source and destination patch components will be copied. The source and destination patch levels must reside in the same Multiblock domain. In general, this constructor is called by a MultiblockRefineAlgorithm<DIM> object.
fill_pattern | Indicates which parts of the destination level to fill. See RefineSchedule for valid values. | |
dst_level | Pointer to destination level. | |
src_level | Pointer to source level. | |
multiblock | Multiblock patch hierarchy object containing all of the levels that hold the data being communicated | |
refine_alg | Pointer to an xfer::RefineAlgorithm<DIM> that will be used to create refine schedules that will do the data transfers and communication. In general, this is a data member of the calling MultiblockRefineAlgorithm<DIM> object. | |
transaction_factory | Transaction factory. | |
strategy | Pointer to a multiblock patch strategy object that provides user-defined boundary filling operations for patch boundaries that touch a multiblock singularity point, as well as user- defined physical boundary filling operations. This pointer may be null, in which case no boundary filling operations will occur. case no boundary filling operations will occur. | |
use_time_refinement | Let the destination level be filled using time refinement operations. This defaults to false because it should only be used in recursive calls within this class |
SAMRAI::xfer::MultiblockRefineSchedule< DIM >::MultiblockRefineSchedule | ( | 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, | |||
tbox::Pointer< xfer::RefineAlgorithm< DIM > > | refine_alg, | |||
tbox::Pointer< xfer::RefineTransactionFactory< DIM > > | transaction_factory, | |||
MultiblockRefinePatchStrategy< DIM > * | strategy, | |||
bool | use_time_refinement = false | |||
) |
Constructor to create a MultiblockRefineShedule that moves data from the interiors of source patch data components on the source level and coarser levels in the patch hierarchy into the interiors and ghost cells of destination patch data components on the destination level. Only data on the intersection of the source and destination patch components will be copied. If portions of the destination level remain unfilled, then the algorithm recursively fills those unfilled portions from coarser levels in the AMR hierarchy. The source and destination patch levels must reside in the same index space. However, the levels do not have to be in the same AMR patch hierarchy. In general, this constructor is called by a MultiblockRefineAlgorithm<DIM> object.
fill_pattern | Indicates which parts of the destination level to fill. See RefineSchedule for valid values. | |
dst_level | Pointer to destination level. | |
src_level | Pointer to source level. This pointer may be null, in which case the destination level will be filled only using data interpolated from coarser levels. | |
next_coarser_level | Integer number of next coarser level in 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 | Multiblock object containing all of the levels that hold the data being communicated | |
refine_alg | Pointer to an xfer::RefineAlgorithm<DIM> that will be used to create refine schedules that will do the data transfers and communication. In general, this is a data member of the calling MultiblockRefineAlgorithm<DIM> object. | |
transaction_factory | Transaction factory. | |
strategy | Pointer to a multiblock patch strategy object that provides user-defined boundary filling operations for patch boundaries that touch a multiblock singularity point, as well as user- defined physical boundary filling operations. This pointer may be null, in which case no boundary filling operations will occur. case no boundary filling operations will occur. | |
use_time_refinement | Let the destination level be filled using time refinement operations. This defaults to false because it should only be used in recursive calls within this class |
SAMRAI::xfer::MultiblockRefineSchedule< DIM >::~MultiblockRefineSchedule | ( | ) | [virtual] |
Virtual destructor
void SAMRAI::xfer::MultiblockRefineSchedule< DIM >::fillData | ( | double | fill_time, | |
bool | do_physical_boundary_fill = true | |||
) | const |
Execute the stored communication schedule and perform the data movement.
fill_time | Double simulation time when the fill take place. | |
do_physical_boundary_fill | Boolean flag used to bypass the physical boundary data filling operations on the destination level. The default value is true indicating that boundary data will be filled (assuming a non-null refine patch strategy pointer was passed to the createSchedule() function. Note that even when the value is false, boundary routines may be called on levels coarser than the destination level if such data is needed for proper interpolation. |
void SAMRAI::xfer::MultiblockRefineSchedule< DIM >::initializeSourceVector | ( | hier::ComponentSelector & | allocate_vector | ) | const |
Initialize a vector to contain source data components.
The component selector argument will be filled with the data component id's that have been registered as source items for the algorithm that created this schedule
const tbox::Pointer< xfer::RefineClasses< DIM > > & SAMRAI::xfer::MultiblockRefineSchedule< DIM >::getEquivalenceClasses | ( | ) | const |
Get the equivalence classes associated with the algorithm that created this schedule.
void SAMRAI::xfer::MultiblockRefineSchedule< DIM >::allocateScratchSpace | ( | tbox::Pointer< hier::PatchLevel< DIM > > | level, | |
double | fill_time, | |||
hier::ComponentSelector & | allocate_vector | |||
) | const |
Allocate scratch space on the specified level and return the allocated patch data indices in the component selector for later deallocation.
level | Level on which to allocate scratch space | |
fill_time | Simulation time | |
allocate_vector | The patch data indices associated with scratch space will be stored here to be used later for deallocation |