Public Member Functions | |
| QuadratureEvalMediator (const Mesh &mesh, int cellDim, const QuadratureFamily &quad) | |
| virtual | ~QuadratureEvalMediator () |
| virtual void | evalCoordExpr (const CoordExpr *expr, RCP< EvalVector > &vec) const |
| Evaluate the given coordinate expression, putting its numerical values in the given EvalVector. | |
| virtual void | evalDiscreteFuncElement (const DiscreteFuncElement *expr, const Array< MultiIndex > &mi, Array< RCP< EvalVector > > &vec) const |
| Evaluate the given discrete function, putting its numerical values in the given EvalVector. | |
| virtual void | evalCellDiameterExpr (const CellDiameterExpr *expr, RCP< EvalVector > &vec) const |
| Evaluate the given cell diameter expression, putting its numerical values in the given EvalVector. | |
| virtual void | evalCellVectorExpr (const CellVectorExpr *expr, RCP< EvalVector > &vec) const |
| Evaluate the given cell vector expression, putting its numerical values in the given EvalVector. | |
| virtual void | setCellType (const CellType &cellType, const CellType &maxCellType, bool isInternalBdry) |
| Update the cell type. | |
| virtual void | print (std::ostream &os) const |
| Array< Array< double > > * | getRefBasisVals (const BasisFamily &basis, int diffOrder) const |
| RCP< Array< Array< Array < double > > > > | getFacetRefBasisVals (const BasisFamily &basis, int diffOrder) const |
| int | numQuadPts (const CellType &cellType) const |
| int | numEvaluationCases () const |
| Return the number of different cases for which reference basis functions must be evaluated. | |
Static Public Member Functions | |
| static double & | totalFlops () |
| static void | addFlops (const double &flops) |
| static Time & | coordEvaluationTimer () |
Private Member Functions | |
| void | fillFunctionCache (const DiscreteFunctionData *f, const MultiIndex &mi) const |
| void | computePhysQuadPts () const |
Private Attributes | |
| int | numEvaluationCases_ |
| QuadratureFamily | quad_ |
| Map< CellType, int > | numQuadPtsForCellType_ |
| Map< CellType, RCP< Array < Point > > > | quadPtsForReferenceCell_ |
| quadPtsForReferenceCell_ stores quadrature points using the cell's coordinate system, i.e., points on a line are stored in 1D coordinates regardless of the dimension of the maximal cell. | |
| Map< CellType, RCP< Array < Array< Point > > > > | quadPtsReferredToMaxCell_ |
| quadPtsReferredToMaxCell_ stores quadrature points using the maximal cell's coordinate system, i.e., points on a line are stored in 2D coordinates if the line is a facet of a triangle, and so on. | |
| Array< Point > | physQuadPts_ |
| Array< Map< OrderedPair < BasisFamily, CellType >, RCP < Array< Array< Array< double > > > > > > | refFacetBasisVals_ |
Definition at line 48 of file SundanceQuadratureEvalMediator.hpp.
| Sundance::QuadratureEvalMediator::QuadratureEvalMediator | ( | const Mesh & | mesh, |
| int | cellDim, | ||
| const QuadratureFamily & | quad | ||
| ) |
| virtual Sundance::QuadratureEvalMediator::~QuadratureEvalMediator | ( | ) | [inline, virtual] |
Definition at line 59 of file SundanceQuadratureEvalMediator.hpp.
| static void Sundance::QuadratureEvalMediator::addFlops | ( | const double & | flops | ) | [inline, static] |
Definition at line 106 of file SundanceQuadratureEvalMediator.hpp.
References totalFlops().
Referenced by computePhysQuadPts(), and fillFunctionCache().
| void QuadratureEvalMediator::computePhysQuadPts | ( | ) | const [private] |
Definition at line 862 of file SundanceQuadratureEvalMediator.cpp.
References addFlops(), Sundance::ElementIntegral::alwaysUseCofacets(), Sundance::StdFwkEvalMediator::cacheIsValid(), Sundance::StdFwkEvalMediator::cellDim(), Sundance::StdFwkEvalMediator::cellLID(), Sundance::StdFwkEvalMediator::cellType(), Sundance::StdFwkEvalMediator::cofacetCellLID(), Sundance::StdFwkEvalMediator::facetIndices(), Sundance::Map< Key, Value, Compare >::get(), Sundance::StdFwkEvalMediator::isInternalBdry(), Sundance::StdFwkEvalMediator::maxCellDim(), Sundance::StdFwkEvalMediator::mesh(), physQuadPts_, Sundance::Mesh::pushForward(), quadPtsForReferenceCell_, quadPtsReferredToMaxCell_, SUNDANCE_MSG2, SUNDANCE_MSG3, SUNDANCE_OUT, Sundance::CellJacobianBatch::totalFlops(), totalFlops(), and Sundance::AbstractEvalMediator::verb().
Referenced by evalCoordExpr().
| Time & QuadratureEvalMediator::coordEvaluationTimer | ( | ) | [static] |
Definition at line 74 of file SundanceQuadratureEvalMediator.cpp.
| void QuadratureEvalMediator::evalCellDiameterExpr | ( | const CellDiameterExpr * | expr, |
| RCP< EvalVector > & | vec | ||
| ) | const [virtual] |
Evaluate the given cell diameter expression, putting its numerical values in the given EvalVector.
Implements Sundance::AbstractEvalMediator.
Definition at line 164 of file SundanceQuadratureEvalMediator.cpp.
References Sundance::StdFwkEvalMediator::cellDim(), Sundance::StdFwkEvalMediator::cellLID(), Sundance::StdFwkEvalMediator::cellType(), Sundance::Mesh::getCellDiameters(), Sundance::StdFwkEvalMediator::mesh(), numQuadPts(), SUNDANCE_MSG2, SUNDANCE_MSG3, Sundance::ExprBase::toString(), and Sundance::AbstractEvalMediator::verb().
| void QuadratureEvalMediator::evalCellVectorExpr | ( | const CellVectorExpr * | expr, |
| RCP< EvalVector > & | vec | ||
| ) | const [virtual] |
Evaluate the given cell vector expression, putting its numerical values in the given EvalVector.
Implements Sundance::AbstractEvalMediator.
Definition at line 192 of file SundanceQuadratureEvalMediator.cpp.
References Sundance::StdFwkEvalMediator::cellDim(), Sundance::StdFwkEvalMediator::cellLID(), Sundance::StdFwkEvalMediator::cellType(), Sundance::CellVectorExpr::componentIndex(), Sundance::CellVectorExpr::isNormal(), Sundance::StdFwkEvalMediator::mesh(), numQuadPts(), Sundance::Mesh::outwardNormals(), SUNDANCE_MSG2, SUNDANCE_MSG3, Sundance::Mesh::tangentsToEdges(), Sundance::ExprBase::toString(), and Sundance::AbstractEvalMediator::verb().
| void QuadratureEvalMediator::evalCoordExpr | ( | const CoordExpr * | expr, |
| RCP< EvalVector > & | vec | ||
| ) | const [virtual] |
Evaluate the given coordinate expression, putting its numerical values in the given EvalVector.
Implements Sundance::AbstractEvalMediator.
Definition at line 232 of file SundanceQuadratureEvalMediator.cpp.
References computePhysQuadPts(), Sundance::CoordExpr::dir(), physQuadPts_, SUNDANCE_MSG2, SUNDANCE_MSG3, Sundance::ExprBase::toString(), and Sundance::AbstractEvalMediator::verb().
| void QuadratureEvalMediator::evalDiscreteFuncElement | ( | const DiscreteFuncElement * | expr, |
| const Array< MultiIndex > & | mi, | ||
| Array< RCP< EvalVector > > & | vec | ||
| ) | const [virtual] |
Evaluate the given discrete function, putting its numerical values in the given EvalVector.
Implements Sundance::AbstractEvalMediator.
Definition at line 402 of file SundanceQuadratureEvalMediator.cpp.
References Sundance::DiscreteFunctionData::discreteSpace(), Sundance::MultiIndex::firstOrderDirection(), Sundance::DiscreteFunctionData::getData(), Sundance::DiscreteFuncElement::myIndex(), Sundance::FuncElementBase::name(), Sundance::DiscreteSpace::nFunc(), Sundance::MultiIndex::order(), Sundance::Out::os(), SUNDANCE_MSG1, SUNDANCE_MSG2, SUNDANCE_MSG3, SUNDANCE_MSG4, and vecPtr().
| void QuadratureEvalMediator::fillFunctionCache | ( | const DiscreteFunctionData * | f, |
| const MultiIndex & | mi | ||
| ) | const [private] |
Definition at line 565 of file SundanceQuadratureEvalMediator.cpp.
References addFlops(), Sundance::ElementIntegral::alwaysUseCofacets(), Sundance::CellJacobianBatch::applyInvJ(), Sundance::CellJacobianBatch::cellDim(), Sundance::StdFwkEvalMediator::cellDim(), Sundance::StdFwkEvalMediator::cellLID(), Sundance::StdFwkEvalMediator::cellType(), Sundance::StdFwkEvalMediator::cofacetCellLID(), Sundance::StdFwkEvalMediator::cofacetCellsAreReady(), Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::StdFwkEvalMediator::dfCache(), Sundance::StdFwkEvalMediator::dfCacheIsValid(), Sundance::AbstractEvalMediator::dfVerb(), Sundance::StdFwkEvalMediator::facetIndices(), Sundance::StdFwkEvalMediator::fCache(), Sundance::StdFwkEvalMediator::fCacheIsValid(), Sundance::Map< Key, Value, Compare >::get(), getFacetRefBasisVals(), Sundance::DiscreteFunctionData::getLocalValues(), getRefBasisVals(), Sundance::StdFwkEvalMediator::JTrans(), Sundance::StdFwkEvalMediator::localValueCache(), Sundance::StdFwkEvalMediator::localValueCacheIsValid(), Sundance::StdFwkEvalMediator::mapStructCache(), Sundance::StdFwkEvalMediator::maxCellDim(), Sundance::StdFwkEvalMediator::maxCellType(), Sundance::CellJacobianBatch::numCells(), numQuadPts(), Sundance::MultiIndex::order(), Sundance::Out::os(), Sundance::Map< Key, Value, Compare >::put(), Sundance::StdFwkEvalMediator::setupFacetTransformations(), Sundance::CellJacobianBatch::spatialDim(), SUNDANCE_MSG2, SUNDANCE_MSG4, and totalFlops().
| RCP< Array< Array< Array< double > > > > QuadratureEvalMediator::getFacetRefBasisVals | ( | const BasisFamily & | basis, |
| int | diffOrder | ||
| ) | const |
Definition at line 257 of file SundanceQuadratureEvalMediator.cpp.
References Sundance::ElementIntegral::alwaysUseCofacets(), Sundance::BasisFamily::dim(), Sundance::Out::os(), Sundance::BasisFamily::refEval(), SUNDANCE_MSG2, and SUNDANCE_OUT.
Referenced by fillFunctionCache().
| Array< Array< double > > * QuadratureEvalMediator::getRefBasisVals | ( | const BasisFamily & | basis, |
| int | diffOrder | ||
| ) | const |
Definition at line 392 of file SundanceQuadratureEvalMediator.cpp.
Referenced by fillFunctionCache().
| int Sundance::QuadratureEvalMediator::numEvaluationCases | ( | ) | const [inline] |
Return the number of different cases for which reference basis functions must be evaluated.
If we're on maximal cells, this will be one. If we're on lower-dimensional cells, this will be equal to the number of cellDim-dimensional facets of the maximal cells.
Definition at line 115 of file SundanceQuadratureEvalMediator.hpp.
References numEvaluationCases_.
Referenced by setCellType().
| int QuadratureEvalMediator::numQuadPts | ( | const CellType & | cellType | ) | const |
Definition at line 156 of file SundanceQuadratureEvalMediator.cpp.
References Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::Map< Key, Value, Compare >::get(), and numQuadPtsForCellType_.
Referenced by evalCellDiameterExpr(), evalCellVectorExpr(), and fillFunctionCache().
| void QuadratureEvalMediator::print | ( | std::ostream & | os | ) | const [virtual] |
Implements Sundance::Printable.
Definition at line 912 of file SundanceQuadratureEvalMediator.cpp.
References Sundance::StdFwkEvalMediator::cacheIsValid(), Sundance::StdFwkEvalMediator::cellLID(), and physQuadPts_.
| void QuadratureEvalMediator::setCellType | ( | const CellType & | cellType, |
| const CellType & | maxCellType, | ||
| bool | isInternalBdry | ||
| ) | [virtual] |
Update the cell type.
Reimplemented from Sundance::StdFwkEvalMediator.
Definition at line 79 of file SundanceQuadratureEvalMediator.cpp.
References Sundance::StdFwkEvalMediator::cellDim(), Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::StdFwkEvalMediator::forbidCofacetIntegrations(), Sundance::QuadratureFamily::getFacetPoints(), Sundance::QuadratureFamily::getPoints(), Sundance::StdFwkEvalMediator::integrationCellSpec(), Sundance::StdFwkEvalMediator::isInternalBdry(), numEvaluationCases(), numEvaluationCases_, Sundance::numFacets(), numQuadPtsForCellType_, Sundance::Map< Key, Value, Compare >::put(), quad_, quadPtsForReferenceCell_, quadPtsReferredToMaxCell_, SUNDANCE_MSG2, and Sundance::AbstractEvalMediator::verb().
| static double& Sundance::QuadratureEvalMediator::totalFlops | ( | ) | [inline, static] |
Definition at line 102 of file SundanceQuadratureEvalMediator.hpp.
Referenced by addFlops(), computePhysQuadPts(), fillFunctionCache(), and Sundance::SundanceGlobal::finalize().
int Sundance::QuadratureEvalMediator::numEvaluationCases_ [private] |
Definition at line 133 of file SundanceQuadratureEvalMediator.hpp.
Referenced by numEvaluationCases(), and setCellType().
Map<CellType, int> Sundance::QuadratureEvalMediator::numQuadPtsForCellType_ [private] |
Definition at line 139 of file SundanceQuadratureEvalMediator.hpp.
Referenced by numQuadPts(), and setCellType().
Array<Point> Sundance::QuadratureEvalMediator::physQuadPts_ [mutable, private] |
Definition at line 156 of file SundanceQuadratureEvalMediator.hpp.
Referenced by computePhysQuadPts(), evalCoordExpr(), and print().
Definition at line 136 of file SundanceQuadratureEvalMediator.hpp.
Referenced by setCellType().
Map<CellType, RCP<Array<Point> > > Sundance::QuadratureEvalMediator::quadPtsForReferenceCell_ [private] |
quadPtsForReferenceCell_ stores quadrature points using the cell's coordinate system, i.e., points on a line are stored in 1D coordinates regardless of the dimension of the maximal cell.
This tabulation of quad pts is used in push forward operations because it saves some pointer chasing within the mesh's pushForward() function.
Definition at line 147 of file SundanceQuadratureEvalMediator.hpp.
Referenced by computePhysQuadPts(), and setCellType().
Map<CellType, RCP<Array<Array<Point> > > > Sundance::QuadratureEvalMediator::quadPtsReferredToMaxCell_ [private] |
quadPtsReferredToMaxCell_ stores quadrature points using the maximal cell's coordinate system, i.e., points on a line are stored in 2D coordinates if the line is a facet of a triangle, and so on.
These quadrature points are used in basis function evaluations.
Definition at line 153 of file SundanceQuadratureEvalMediator.hpp.
Referenced by computePhysQuadPts(), and setCellType().
Array<Map<OrderedPair<BasisFamily, CellType>, RCP<Array<Array<Array<double> > > > > > Sundance::QuadratureEvalMediator::refFacetBasisVals_ [mutable, private] |
Definition at line 159 of file SundanceQuadratureEvalMediator.hpp.