#include <source/transfer/operators/CoarsenOperator.h>
Inheritance diagram for SAMRAI::xfer::CoarsenOperator< DIM >:
Public Member Functions | |
CoarsenOperator () | |
virtual | ~CoarsenOperator () |
virtual bool | findCoarsenOperator (const tbox::Pointer< hier::Variable< DIM > > &var, const std::string &op_name) const =0 |
virtual const std::string & | getOperatorName () const=0 |
virtual int | getOperatorPriority () const=0 |
virtual hier::IntVector< DIM > | getStencilWidth () const=0 |
virtual void | coarsen (hier::Patch< DIM > &coarse, const hier::Patch< DIM > &fine, const int dst_component, const int src_component, const hier::Box< DIM > &coarse_box, const hier::IntVector< DIM > &ratio) const =0 |
To add a new coarsening operator (either for a new patch data type or for a new time coarsening routine on an existing type), define the operator by inheriting from this abstract base class. The operator subclass must implement the coarsening operation in the coarsen() function, and provide a response to a general operator request in the findCoarsenOperator() function. The stencil width and operator priority must be returned from the getStencilWidth() and getOperatorPriority() functions, respectively. Then, the new operator must be added to the operator list for the appropriate transfer geometry object using the Geometry<DIM>::addSpatialCOarsenOperator() function.
Since spatial coarsening operators usually depend on patch data centering and data type as well as the mesh coordinate system, they are defined in the geometry package.
SAMRAI::xfer::CoarsenOperator< DIM >::CoarsenOperator | ( | ) |
The default constructor for the coarsening operator does nothing interesting.
SAMRAI::xfer::CoarsenOperator< DIM >::~CoarsenOperator | ( | ) | [virtual] |
The virtual destructor for the coarsening operator does nothing interesting.
virtual bool SAMRAI::xfer::CoarsenOperator< DIM >::findCoarsenOperator | ( | const tbox::Pointer< hier::Variable< DIM > > & | var, | |
const std::string & | op_name | |||
) | const [pure virtual] |
Return true if the coarsening operation matches the variable and name string identifier request; false, otherwise.
Implemented in SAMRAI::pdat::NodeComplexInjection< DIM >, SAMRAI::pdat::NodeDoubleInjection< DIM >, SAMRAI::pdat::NodeFloatInjection< DIM >, SAMRAI::pdat::NodeIntegerInjection< DIM >, SAMRAI::pdat::OuternodeDoubleConstantCoarsen< DIM >, SAMRAI::geom::CartesianCellComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianCellDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianCellFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOutersideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianSideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideFloatWeightedAverage< DIM >, and SAMRAI::geom::SkeletonCoarsen< DIM >.
virtual const std::string& SAMRAI::xfer::CoarsenOperator< DIM >::getOperatorName | ( | ) | const [pure virtual] |
Return name string identifier of the coarsening operation.
Implemented in SAMRAI::pdat::NodeComplexInjection< DIM >, SAMRAI::pdat::NodeDoubleInjection< DIM >, SAMRAI::pdat::NodeFloatInjection< DIM >, SAMRAI::pdat::NodeIntegerInjection< DIM >, SAMRAI::pdat::OuternodeDoubleConstantCoarsen< DIM >, SAMRAI::geom::CartesianCellComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianCellDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianCellFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOutersideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianSideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideFloatWeightedAverage< DIM >, and SAMRAI::geom::SkeletonCoarsen< DIM >.
virtual int SAMRAI::xfer::CoarsenOperator< DIM >::getOperatorPriority | ( | ) | const [pure virtual] |
Return the priority of this operator relative to other coarsening operators. The SAMRAI transfer routines guarantee that coarsening using operators with lower priority will be performed before those with higher priority.
Implemented in SAMRAI::pdat::NodeComplexInjection< DIM >, SAMRAI::pdat::NodeDoubleInjection< DIM >, SAMRAI::pdat::NodeFloatInjection< DIM >, SAMRAI::pdat::NodeIntegerInjection< DIM >, SAMRAI::pdat::OuternodeDoubleConstantCoarsen< DIM >, SAMRAI::geom::CartesianCellComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianCellDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianCellFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOutersideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianSideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideFloatWeightedAverage< DIM >, and SAMRAI::geom::SkeletonCoarsen< DIM >.
virtual hier::IntVector<DIM> SAMRAI::xfer::CoarsenOperator< DIM >::getStencilWidth | ( | ) | const [pure virtual] |
Return the stencil width associated with the coarsening operator. The SAMRAI transfer routines guarantee that the source patch will contain sufficient ghost cell data surrounding the interior to satisfy the stencil width requirements for each coarsening operator.
Implemented in SAMRAI::pdat::NodeComplexInjection< DIM >, SAMRAI::pdat::NodeDoubleInjection< DIM >, SAMRAI::pdat::NodeFloatInjection< DIM >, SAMRAI::pdat::NodeIntegerInjection< DIM >, SAMRAI::pdat::OuternodeDoubleConstantCoarsen< DIM >, SAMRAI::geom::CartesianCellComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianCellDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianCellFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOutersideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianSideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideFloatWeightedAverage< DIM >, and SAMRAI::geom::SkeletonCoarsen< DIM >.
virtual void SAMRAI::xfer::CoarsenOperator< DIM >::coarsen | ( | hier::Patch< DIM > & | coarse, | |
const hier::Patch< DIM > & | fine, | |||
const int | dst_component, | |||
const int | src_component, | |||
const hier::Box< DIM > & | coarse_box, | |||
const hier::IntVector< DIM > & | ratio | |||
) | const [pure virtual] |
Coarsen the source component on the fine patch to the destination component on the coarse patch. The coarsening operation is performed on the intersection of the destination patch and the coarse box. The fine patch is guaranteed to contain sufficient data for the stencil width of the coarsening operator.
Implemented in SAMRAI::pdat::NodeComplexInjection< DIM >, SAMRAI::pdat::NodeDoubleInjection< DIM >, SAMRAI::pdat::NodeFloatInjection< DIM >, SAMRAI::pdat::NodeIntegerInjection< DIM >, SAMRAI::pdat::OuternodeDoubleConstantCoarsen< DIM >, SAMRAI::geom::CartesianCellComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianCellDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianCellFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianEdgeFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianFaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianOuterfaceFloatWeightedAverage< DIM >, SAMRAI::geom::CartesianOutersideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideComplexWeightedAverage< DIM >, SAMRAI::geom::CartesianSideDoubleWeightedAverage< DIM >, SAMRAI::geom::CartesianSideFloatWeightedAverage< DIM >, and SAMRAI::geom::SkeletonCoarsen< DIM >.