Abstract base class defining the interface for all concrete transaction factory objects that generate data transaction objects used with a RefineSchedule<DIM> object. A concrete subclass will allocate new transaction objects. This class is an example of the `‘Abstract Factory’' method described in the Design Patterns book by Gamma, et al.
More...
|
| | RefineTransactionFactory () |
| | Default constructor. More...
|
| |
| virtual | ~RefineTransactionFactory () |
| | Virtual destructor. More...
|
| |
| virtual void | setRefineItems (const typename RefineClasses< DIM >::Data **refine_items, int num_refine_items)=0 |
| | Pure virtual function to set the array of RefineClass::Data items associated with the refine schedule. Typical concrete transactions used by the schedule use this information to communicate data. This operation is called by the refine schedule during the execution of the RefineSchedule<DIM>::fillData() routine before data communication operations begin. More...
|
| |
| virtual void | unsetRefineItems ()=0 |
| | Pure virtual function to clear the array of RefineClass::Data items associated with the refine schedule. This operation is called by the refine schedule after data communication operations are complete. More...
|
| |
| virtual tbox::Pointer< tbox::Transaction > | allocate (tbox::Pointer< hier::PatchLevel< DIM > > dst_level, tbox::Pointer< hier::PatchLevel< DIM > > src_level, tbox::Pointer< hier::BoxOverlap< DIM > > overlap, int dst_patch_id, int src_patch_id, int ritem_id, const hier::Box< DIM > &box=hier::Box< DIM >(), bool use_time_interpolation=false, tbox::Pointer< tbox::Arena > pool=(tbox::Arena *) NULL) const =0 |
| | Pure virtual function to allocate a concrete refine transaction object. This routine is called by the refine schedule during construction of the schedule. More...
|
| |
| virtual void | setTransactionTime (double fill_time) |
| | Virtual function to set simulation time for transaction objects. This operation is called by the refine schedule during the execution of the RefineSchedule<DIM>::fillData() routine before data communication operations begin. This function is optional for the concrete transaction factory object. The default implementation is a no-op. More...
|
| |
| virtual void | preprocessScratchSpace (tbox::Pointer< hier::PatchLevel< DIM > > level, double fill_time, const hier::ComponentSelector &preprocess_vector) const |
| | Virtual function allowing transaction factory to preprocess scratch space data before transactactions use it if they need to. This function is optional for the concrete transaction factory object.
The default implementation is a no-op. More...
|
| |
template<int DIM>
class SAMRAI::xfer::RefineTransactionFactory< DIM >
To add a new type of Transaction object MyRefineTransaction:
- Implement a concrete RefineTransactionFactory<DIM> object as a subclass that is derived from this RefineTransactionFactory<DIM> base class. Implement the abstract virtual functions as appropriate for the concrete subclass; in particular, the allocate() function must return a new instance of the desired transaction object.
- The type of the transaction allocated by the concrete factory is a Transaction<DIM>. Thus, the new transaction object must be derived from the Transaction<DIM> base class and implement the abstract virtual functions declared by the base class.
- See also
- tbox::Transaction