#include <GeometryService.H>
Public Types | |
enum | InOut { Regular, Covered, Irregular } |
Public Member Functions | |
GeometryService () | |
virtual | ~GeometryService () |
virtual bool | isRegular (const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const =0 |
virtual bool | isCovered (const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const =0 |
virtual bool | isIrregular (const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const |
virtual void | fillGraph (BaseFab< int > &a_regIrregCovered, Vector< IrregNode > &a_nodes, const Box &a_validRegion, const Box &a_ghostRegion, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx, const DataIndex &a_di) const =0 |
virtual bool | canGenerateMultiCells () const |
virtual InOut | InsideOutside (const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const |
virtual bool | generatesHigherOrderMoments () const |
return true if the geometry service generates higher order moments | |
virtual InOut | InsideOutside (const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx, const DataIndex &a_di) const |
virtual void | postMakeBoxLayout (const DisjointBoxLayout &a_dbl, const RealVect &a_dx) |
virtual void | makeGrids (const ProblemDomain &a_domain, DisjointBoxLayout &a_grids, const int &a_maxGridSize, const int &a_maxIrregGridSize) |
Static Public Member Functions | |
static bool | intersection (const RealVect &a_lo1, const RealVect &a_hi1, const RealVect &a_lo2, const RealVect &a_hi2) |
handy functions to do rectangle intersections in real space | |
static bool | intersection (const Box &a_region, const RealVect &a_origin, const Real &a_dx, const RealVect &a_lower, const RealVect &a_upper) |
GeometryService::GeometryService | ( | ) |
virtual GeometryService::~GeometryService | ( | ) | [virtual] |
virtual bool GeometryService::isRegular | ( | const Box & | a_region, | |
const ProblemDomain & | a_domain, | |||
const RealVect & | a_origin, | |||
const Real & | a_dx | |||
) | const [pure virtual] |
Return true if every cell in region is regular at the refinement described by dx.
Implemented in AllRegularService, MultiSlabService, SlabService, GeometryShop, and WrappedGShop.
virtual bool GeometryService::isCovered | ( | const Box & | a_region, | |
const ProblemDomain & | a_domain, | |||
const RealVect & | a_origin, | |||
const Real & | a_dx | |||
) | const [pure virtual] |
Return true if every cell in region is covered at the refinement described by dx.
Implemented in AllRegularService, MultiSlabService, SlabService, GeometryShop, and WrappedGShop.
virtual bool GeometryService::isIrregular | ( | const Box & | a_region, | |
const ProblemDomain & | a_domain, | |||
const RealVect & | a_origin, | |||
const Real & | a_dx | |||
) | const [virtual] |
Reimplemented in GeometryShop, and WrappedGShop.
virtual void GeometryService::fillGraph | ( | BaseFab< int > & | a_regIrregCovered, | |
Vector< IrregNode > & | a_nodes, | |||
const Box & | a_validRegion, | |||
const Box & | a_ghostRegion, | |||
const ProblemDomain & | a_domain, | |||
const RealVect & | a_origin, | |||
const Real & | a_dx, | |||
const DataIndex & | a_di | |||
) | const [pure virtual] |
irregGraph contains a complete list of irregular vofs. \ validRegion is the the region of the graph \ domain is the domain of compuation \ regIrregCovered = 1 for regular, 0 for irregular, -1 for covered. regIrregCovered must contain the valid region grown by 1. \ In chombospeak, \ ghostregion = (grow(validRegion, 1) & domain); This overloaded method will be called when the GeometryService was asked to make the grids with makeGrids()
Implemented in AllRegularService, MultiSlabService, SlabService, GeometryShop, and WrappedGShop.
virtual bool GeometryService::canGenerateMultiCells | ( | ) | const [virtual] |
Reimplemented in GeometryShop, and WrappedGShop.
virtual InOut GeometryService::InsideOutside | ( | const Box & | a_region, | |
const ProblemDomain & | a_domain, | |||
const RealVect & | a_origin, | |||
const Real & | a_dx | |||
) | const [virtual] |
virtual bool GeometryService::generatesHigherOrderMoments | ( | ) | const [inline, virtual] |
return true if the geometry service generates higher order moments
Most of the geometry generating objects we have do *not* generate higher order moments (they only generate the standard stuff (volume fractions, area fractions and centroids)). WrappedGShop, does generate the higher order stuff so that one can return true;
Reimplemented in AllRegularService, and WrappedGShop.
virtual InOut GeometryService::InsideOutside | ( | const Box & | a_region, | |
const ProblemDomain & | a_domain, | |||
const RealVect & | a_origin, | |||
const Real & | a_dx, | |||
const DataIndex & | a_di | |||
) | const [inline, virtual] |
This overloaded method will be called when the GeometryService was asked to make the grids with makeGrids()
References InsideOutside().
static bool GeometryService::intersection | ( | const RealVect & | a_lo1, | |
const RealVect & | a_hi1, | |||
const RealVect & | a_lo2, | |||
const RealVect & | a_hi2 | |||
) | [static] |
handy functions to do rectangle intersections in real space
static bool GeometryService::intersection | ( | const Box & | a_region, | |
const RealVect & | a_origin, | |||
const Real & | a_dx, | |||
const RealVect & | a_lower, | |||
const RealVect & | a_upper | |||
) | [static] |
virtual void GeometryService::postMakeBoxLayout | ( | const DisjointBoxLayout & | a_dbl, | |
const RealVect & | a_dx | |||
) | [virtual] |
virtual void GeometryService::makeGrids | ( | const ProblemDomain & | a_domain, | |
DisjointBoxLayout & | a_grids, | |||
const int & | a_maxGridSize, | |||
const int & | a_maxIrregGridSize | |||
) | [inline, virtual] |
A GeometryService has three options for implementing this function 1) do nothing, allow the empty base implementation to remain in place as a null-op 2) take the makeGrids call as a directive: Here are the grids EBIndexSpace is wanting to use, configure yourself accordingly to make this efficient for you. 3) discard the DisjointBoxLayout EBIndexSpace would like and insert your own implementation of layout EBIndexSpace will faithfully use a_grids returned from this function, including it's load balance.
Reimplemented in GeometryShop.