#include <source/transfer/datamovers/locally_active/LocallyActiveDataRefineSchedule.h>
Public Member Functions | |
LocallyActiveDataRefineSchedule (tbox::Pointer< hier::PatchLevel< DIM > > dst_level, tbox::Pointer< hier::LocallyActiveDataPatchLevelManager< DIM > > dst_level_mgr, tbox::Pointer< hier::PatchLevel< DIM > > src_level, tbox::Pointer< hier::LocallyActiveDataPatchLevelManager< DIM > > src_level_mgr, const tbox::Pointer< xfer::RefineClasses< DIM > > refine_classes, tbox::Pointer< xfer::LocallyActiveDataRefineTransactionFactory< DIM > > transaction_factory, xfer::LocallyActiveDataRefinePatchStrategy< DIM > *patch_strategy, bool use_time_interpolation=false) | |
Constructor to create a refine schedule that moves 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. | |
LocallyActiveDataRefineSchedule (tbox::Pointer< hier::PatchLevel< DIM > > dst_level, tbox::Pointer< hier::LocallyActiveDataPatchLevelManager< DIM > > dst_level_mgr, tbox::Pointer< hier::PatchLevel< DIM > > src_level, tbox::Pointer< hier::LocallyActiveDataPatchLevelManager< DIM > > src_level_mgr, int next_coarser_level, tbox::Pointer< hier::PatchHierarchy< DIM > > hierarchy, const tbox::Pointer< xfer::RefineClasses< DIM > > refine_classes, tbox::Pointer< xfer::LocallyActiveDataRefineTransactionFactory< DIM > > transaction_factory, xfer::LocallyActiveDataRefinePatchStrategy< DIM > *patch_strategy, bool use_time_interpolation=false) | |
Constructor to create a refine schedule 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. | |
virtual | ~LocallyActiveDataRefineSchedule () |
void | fillData (double fill_time, bool do_physical_boundary_fill=true) const |
Execute the stored communication schedule and perform the data movement. | |
virtual void | printClassData (std::ostream &stream) const |
Static Public Member Functions | |
static void | setScheduleGenerationMethod (const std::string &method) |
Source data is copied into the provided scratch space for temporary processing. The scratch space must contain sufficient ghost cells to accommodate the stencil width of the given interpolation operators and any physical boundary data that must be filled. The scratch data is copied into the destination space at the end of the process. The communication schedule is executed by calling member function fillData().
Each schedule object is typically created by a refine algorithm and represents the communication dependencies for a particular configuration of the AMR hierarchy. The communication schedule is only valid for that particular configuration and must be regenerated when the AMR patch hierarchy changes. However, as long as the patch levels involved in the creation of the schedule remain unchanged, the schedule may be used for multiple communication cycles. For more information about creating refine schedules for locally-active patch data, see the LocallyActiveDataRefineAlgorithm<DIM> header file.
NOTE: Algorithmic variations are available by calling the static method LocallyActiveDataRefineSchedule<DIM>::setScheduleGenerationMethod(), which sets the option for all instances of the class.
xfer::LocallyActiveRefinePatchStrategy
SAMRAI::xfer::LocallyActiveDataRefineSchedule< DIM >::LocallyActiveDataRefineSchedule | ( | tbox::Pointer< hier::PatchLevel< DIM > > | dst_level, | |
tbox::Pointer< hier::LocallyActiveDataPatchLevelManager< DIM > > | dst_level_mgr, | |||
tbox::Pointer< hier::PatchLevel< DIM > > | src_level, | |||
tbox::Pointer< hier::LocallyActiveDataPatchLevelManager< DIM > > | src_level_mgr, | |||
const tbox::Pointer< xfer::RefineClasses< DIM > > | refine_classes, | |||
tbox::Pointer< xfer::LocallyActiveDataRefineTransactionFactory< DIM > > | transaction_factory, | |||
xfer::LocallyActiveDataRefinePatchStrategy< DIM > * | patch_strategy, | |||
bool | use_time_interpolation = false | |||
) |
Constructor to create a refine schedule that moves 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 index space. However, the levels do not have to be in the same AMR patch hierarchy. Generally, this constructor is called by a LocallyActiveDataRefineAlgorithm<DIM> object.
dst_level | Pointer to destination patch level. | |
dst_level_mgr | Pointer to destination level data manager; cannot be null. | |
src_level | Pointer to source patch level. | |
src_level_mgr | Pointer to source level data manager; cannot be null. | |
refine_classes | Pointer to structure containing patch data and operator information. In general, this is constructed by the calling RefineAlgorithm<DIM> object. This pointer cannot be null. | |
transaction_factory | Pointer to a factory object that will create data transactions; cannot be null. | |
patch_strategy | Pointer to a refine patch strategy object that provides user-defined physical boundary filling operations. This pointer may be null, in which case no boundary filling operations will occur. | |
use_time_interpolation | Optional boolean flag indicating whether to use time interpolation when setting data on the destination level. Default is no time interpolation. |
SAMRAI::xfer::LocallyActiveDataRefineSchedule< DIM >::LocallyActiveDataRefineSchedule | ( | tbox::Pointer< hier::PatchLevel< DIM > > | dst_level, | |
tbox::Pointer< hier::LocallyActiveDataPatchLevelManager< DIM > > | dst_level_mgr, | |||
tbox::Pointer< hier::PatchLevel< DIM > > | src_level, | |||
tbox::Pointer< hier::LocallyActiveDataPatchLevelManager< DIM > > | src_level_mgr, | |||
int | next_coarser_level, | |||
tbox::Pointer< hier::PatchHierarchy< DIM > > | hierarchy, | |||
const tbox::Pointer< xfer::RefineClasses< DIM > > | refine_classes, | |||
tbox::Pointer< xfer::LocallyActiveDataRefineTransactionFactory< DIM > > | transaction_factory, | |||
xfer::LocallyActiveDataRefinePatchStrategy< DIM > * | patch_strategy, | |||
bool | use_time_interpolation = false | |||
) |
Constructor to create a refine schedule 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, where both data are defined, 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 LocallyActiveDataRefineAlgorithm<DIM> object.
dst_level | Pointer to destination patch level; cannot be null. | |
dst_level_mgr | Pointer to destination level data manager; cannot be null. | |
src_level | Pointer to source patch level; must be in same index space as destination level. This pointer may be null, in which case the destination level will be filled only using data interpolated from coarser levels in the AMR hierarchy. | |
src_level_mgr | Pointer to source level data manager; may be null only if src_level pointer is null. | |
next_coarser_level | Integer number of next coarser level in AMR patch hierarchy relative to the destination level. Note that when the destination level has number zero (i.e., the coarsest level), this value should be < 0. | |
hierarchy | Pointer to patch hierarchy. This pointer may be null only if the next_coarser_level number is < 0, indicating that there is no level in the hierarchy coarser than the destination level. | |
refine_classes | Pointer to structure containing patch data and operator information. In general, this is constructed by the calling LocallyActiveDataRefineAlgorithm<DIM> object. This pointer cannot be null. | |
transaction_factory | Pointer to a factory object that will create data transactions; cannot be null. | |
patch_strategy | Pointer to a refine patch strategy object that provides user-defined physical boundary filling operations. This pinter may be null, in which case no boundary filling or user-defined refine operations will occur. | |
use_time_interpolation | Optional boolean flag indicating whether to use time interpolation when setting data on the destination level. Default is no time interpolation. |
SAMRAI::xfer::LocallyActiveDataRefineSchedule< DIM >::~LocallyActiveDataRefineSchedule | ( | ) | [virtual] |
Virtual destructor for the schedule releases all internal storage.
void SAMRAI::xfer::LocallyActiveDataRefineSchedule< DIM >::setScheduleGenerationMethod | ( | const std::string & | method | ) | [static] |
Static function to set box intersection algorithm to use during schedule construction for all LocallyActiveDataRefineSchedule<DIM> objects. If this method is not called, the default will be used.
Note that the ability to change the method from the default case is disabled currently.
method | string identifying box intersection method. Valid choices are: "BOX_TREE" (default case), "BOX_GRAPH", and "ORIG_NSQUARED". More details can be found below in the comments for the generateSchedule() routine. |
void SAMRAI::xfer::LocallyActiveDataRefineSchedule< 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 time for filling operation. | |
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::LocallyActiveDataRefineSchedule< DIM >::printClassData | ( | std::ostream & | stream | ) | const [virtual] |
Print the refine schedule data to the specified data stream.
stream | Output data stream. |