#include <source/transfer/multiblock/MultiblockCoarsenSchedule.h>
Public Member Functions | |
MultiblockCoarsenSchedule (tbox::Pointer< hier::MultiblockPatchLevel< DIM > > crse_level, tbox::Pointer< hier::MultiblockPatchLevel< DIM > > fine_level, const tbox::Pointer< xfer::CoarsenClasses< DIM > > coarsen_classes, tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > multiblock, MultiblockCoarsenPatchStrategy< DIM > *coarsen_strategy, MultiblockRefinePatchStrategy< DIM > *refine_strategy, bool fill_coarse_data) | |
Constructor for coarsen schedule from fine level to coarse level. | |
virtual | ~MultiblockCoarsenSchedule () |
The virtual destructor for the schedule releases all internal storage. | |
void | coarsenData () const |
Execute the stored communication schedule and perform the data movement. | |
const tbox::Pointer< xfer::CoarsenClasses< DIM > > & | getEquivalenceClasses () const |
Return const reference to the pointer to coarsen equivalence classes used in schedule. |
Typically, data is coarsened from the interiors of source patch components on the source patch level into interiors of destination patch components on the destination level. If a coarsen operator has a non-zero ghost cell width, then the source ghost cells must be filled before the coarsen schedule is executed. The communication schedule is executed by calling member function coarsenData().
Each schedule object is typically created by a coarsen algorithm and represents 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 coarsen schedules, see the MultiblockCoarsenAlgorithm<DIM> header file.
SAMRAI::xfer::MultiblockCoarsenSchedule< DIM >::MultiblockCoarsenSchedule | ( | tbox::Pointer< hier::MultiblockPatchLevel< DIM > > | crse_level, | |
tbox::Pointer< hier::MultiblockPatchLevel< DIM > > | fine_level, | |||
const tbox::Pointer< xfer::CoarsenClasses< DIM > > | coarsen_classes, | |||
tbox::Pointer< hier::MultiblockPatchHierarchy< DIM > > | multiblock, | |||
MultiblockCoarsenPatchStrategy< DIM > * | coarsen_strategy, | |||
MultiblockRefinePatchStrategy< DIM > * | refine_strategy, | |||
bool | fill_coarse_data | |||
) |
Constructor for coarsen schedule from fine level to coarse level.
Constructor to create a coarsen schedule that coarsens data from source patch data components on the fine level into the destination patch data components on the coarse level. In general, this constructor is called by a MultiblockCoarsenAlgorithm<DIM> object. For possible variations on data coarsening, see the Multiblock_CoarsenAlgorithm<DIM> class header information.
If the coarsening operators require data from ghost cells, then the associated source patch data components must have a sufficient ghost cell width and and they must be filled with valid data before calling coarsenData().
crse_level | Pointer to coarse (destination) patch level. | |
fine_level | Pointer to fine (source) patch level. | |
coarsen_classes | Pointer to structure containing patch data and operator information. In general, this is constructed by the calling xfer::CoarsenAlgorithm<DIM> object. | |
multiblock | Multiblock hierarchy where the operation occurs | |
coarsen_strategy | Pointer to a coarsen patch strategy object that provides user-defined coarsen operations. This pointer may be null, in which case no user-defined coarsen operations will be performed. | |
refine_strategy | Pointer to a refine patch strategy object that provides user-defined coarsen operations. This is needed in specific cases where a user-defined coarsen operation requires data to be filled on the coarse scratch level prior to execution of the coarsening operator. If such functionality is not needed, set this pointer to null. | |
fill_coarse_data | Boolean indicating whether coarse data should be filled before coarsening operations are done. |
SAMRAI::xfer::MultiblockCoarsenSchedule< DIM >::~MultiblockCoarsenSchedule | ( | ) | [virtual] |
The virtual destructor for the schedule releases all internal storage.
void SAMRAI::xfer::MultiblockCoarsenSchedule< DIM >::coarsenData | ( | ) | const |
Execute the stored communication schedule and perform the data movement.
const tbox::Pointer< xfer::CoarsenClasses< DIM > > & SAMRAI::xfer::MultiblockCoarsenSchedule< DIM >::getEquivalenceClasses | ( | ) | const |
Return const reference to the pointer to coarsen equivalence classes used in schedule.