Public Member Functions | |
CurveQuadratureIntegral (const CellType &maxCellType, const bool isConstantIntegral, const QuadratureFamily &quad, const ParametrizedCurve &globalCurve, const Mesh &mesh, int verb) | |
CurveQuadratureIntegral (const CellType &maxCellType, const bool isConstantIntegral, const BasisFamily &testBasis, int alpha, int testDerivOrder, const QuadratureFamily &quad, const ParametrizedCurve &globalCurve, const Mesh &mesh, int verb) | |
CurveQuadratureIntegral (const CellType &maxCellType, const bool isConstantIntegral, const BasisFamily &testBasis, int alpha, int testDerivOrder, const BasisFamily &unkBasis, int beta, int unkDerivOrder, const QuadratureFamily &quad, const ParametrizedCurve &globalCurve, const Mesh &mesh, int verb) | |
virtual | ~CurveQuadratureIntegral () |
virtual void | transform (const CellJacobianBatch &JTrans, const CellJacobianBatch &JVol, const Array< int > &isLocalFlag, const Array< int > &facetNum, const RCP< Array< int > > &cellLIDs, const double constCoeff, const double *const coeff, RCP< Array< double > > &A) const |
virtual void | transformZeroForm (const CellJacobianBatch &JTrans, const CellJacobianBatch &JVol, const Array< int > &isLocalFlag, const Array< int > &facetIndex, const RCP< Array< int > > &cellLIDs, const double constCoeff, const double *const coeff, RCP< Array< double > > &A) const |
virtual void | transformTwoForm (const CellJacobianBatch &JTrans, const CellJacobianBatch &JVol, const Array< int > &facetIndex, const RCP< Array< int > > &cellLIDs, const double constCoeff, const double *const coeff, RCP< Array< double > > &A) const |
void | transformOneForm (const CellJacobianBatch &JTrans, const CellJacobianBatch &JVol, const Array< int > &facetIndex, const RCP< Array< int > > &cellLIDs, const double constCoeff, const double *const coeff, RCP< Array< double > > &A) const |
Private Member Functions | |
void | updateRefCellInformation (int maxCellLID, const ParametrizedCurve &curve) const |
void | updateRefCellIntegralOneForm (int maxCellLID, int cellInBatch) const |
void | updateRefCellIntegralTwoForm (int maxCellLID, int cellInBatch) const |
void | transformSummingFirst (int nCells, const CellJacobianBatch &JVol, const Array< int > &facetIndex, const RCP< Array< int > > &cellLIDs, const double constCoeff, const double *const GPtr, const double *const coeff, RCP< Array< double > > &A) const |
void | transformSummingLast (int nCells, const Array< int > &facetIndex, const RCP< Array< int > > &cellLIDs, const double *const GPtr, const double *const coeff, RCP< Array< double > > &A) const |
bool | useSumFirstMethod () const |
double & | wValue (int q, int testDerivDir, int testNode, int unkDerivDir, int unkNode) const |
const double & | wValue (int facetCase, int q, int testDerivDir, int testNode, int unkDerivDir, int unkNode) const |
double & | wValue (int q, int testDerivDir, int testNode) const |
Private Attributes | |
QuadratureFamily | quad_ |
Array< Point > | quadPts_ |
Array< double > | quadWeights_ |
Array< double > | W_ |
bool | useSumFirstMethod_ |
bool | useConstCoeff_ |
Array< Point > | quadCurveDerivs_ |
Array< Point > | quadCurveNormals_ |
Definition at line 45 of file SundanceCurveQuadratureIntegral.hpp.
CurveQuadratureIntegral::CurveQuadratureIntegral | ( | const CellType & | maxCellType, | |
const bool | isConstantIntegral, | |||
const QuadratureFamily & | quad, | |||
const ParametrizedCurve & | globalCurve, | |||
const Mesh & | mesh, | |||
int | verb | |||
) |
Construct a zero-form to be computed by quadrature
Definition at line 66 of file SundanceCurveQuadratureIntegral.cpp.
References Sundance::Mesh::cellType(), Sundance::ElementIntegral::describe(), Sundance::QuadratureFamily::getPoints(), Playa::Out::os(), quadCurveDerivs_, quadCurveNormals_, quadPts_, quadWeights_, Sundance::ElementIntegral::setupVerb(), Sundance::Mesh::spatialDim(), SUNDANCE_MSG1, and W_.
CurveQuadratureIntegral::CurveQuadratureIntegral | ( | const CellType & | maxCellType, | |
const bool | isConstantIntegral, | |||
const BasisFamily & | testBasis, | |||
int | alpha, | |||
int | testDerivOrder, | |||
const QuadratureFamily & | quad, | |||
const ParametrizedCurve & | globalCurve, | |||
const Mesh & | mesh, | |||
int | verb | |||
) |
Construct a one form to be computed by quadrature
Definition at line 106 of file SundanceCurveQuadratureIntegral.cpp.
References Sundance::ElementIntegral::assertLinearForm(), Sundance::Mesh::cellType(), Sundance::ElementIntegral::describe(), Sundance::QuadratureFamily::getPoints(), Sundance::ElementIntegral::nNodesTest(), Sundance::ElementIntegral::nRefDerivTest(), Playa::Out::os(), quadCurveDerivs_, quadCurveNormals_, quadPts_, quadWeights_, Sundance::ElementIntegral::setupVerb(), Sundance::Mesh::spatialDim(), SUNDANCE_MSG1, and W_.
CurveQuadratureIntegral::CurveQuadratureIntegral | ( | const CellType & | maxCellType, | |
const bool | isConstantIntegral, | |||
const BasisFamily & | testBasis, | |||
int | alpha, | |||
int | testDerivOrder, | |||
const BasisFamily & | unkBasis, | |||
int | beta, | |||
int | unkDerivOrder, | |||
const QuadratureFamily & | quad, | |||
const ParametrizedCurve & | globalCurve, | |||
const Mesh & | mesh, | |||
int | verb | |||
) |
Construct a two-form to be computed by quadrature
Definition at line 150 of file SundanceCurveQuadratureIntegral.cpp.
References Sundance::ElementIntegral::assertBilinearForm(), Sundance::Mesh::cellType(), Sundance::ElementIntegral::describe(), Sundance::QuadratureFamily::getPoints(), Sundance::ElementIntegral::nNodesTest(), Sundance::ElementIntegral::nNodesUnk(), Sundance::ElementIntegral::nRefDerivTest(), Sundance::ElementIntegral::nRefDerivUnk(), Playa::Out::os(), quadCurveDerivs_, quadCurveNormals_, quadPts_, quadWeights_, Sundance::ElementIntegral::setupVerb(), Sundance::Mesh::spatialDim(), SUNDANCE_MSG1, and W_.
virtual Sundance::CurveQuadratureIntegral::~CurveQuadratureIntegral | ( | ) | [inline, virtual] |
virtual dtor
Definition at line 85 of file SundanceCurveQuadratureIntegral.hpp.
virtual void Sundance::CurveQuadratureIntegral::transform | ( | const CellJacobianBatch & | JTrans, | |
const CellJacobianBatch & | JVol, | |||
const Array< int > & | isLocalFlag, | |||
const Array< int > & | facetNum, | |||
const RCP< Array< int > > & | cellLIDs, | |||
const double | constCoeff, | |||
const double *const | coeff, | |||
RCP< Array< double > > & | A | |||
) | const [inline, virtual] |
Definition at line 88 of file SundanceCurveQuadratureIntegral.hpp.
References Sundance::ElementIntegral::order(), transformOneForm(), transformTwoForm(), and transformZeroForm().
Referenced by Sundance::IntegralGroup::evaluate().
void CurveQuadratureIntegral::transformOneForm | ( | const CellJacobianBatch & | JTrans, | |
const CellJacobianBatch & | JVol, | |||
const Array< int > & | facetIndex, | |||
const RCP< Array< int > > & | cellLIDs, | |||
const double | constCoeff, | |||
const double *const | coeff, | |||
RCP< Array< double > > & | A | |||
) | const |
Definition at line 424 of file SundanceCurveQuadratureIntegral.cpp.
References Sundance::ElementIntegral::addFlops(), Sundance::ElementIntegral::alpha(), Sundance::ElementIntegral::createOneFormTransformationMatrix(), Sundance::CellJacobianBatch::detJ(), Sundance::ElementIntegral::G(), Sundance::ElementIntegral::integrationVerb(), maxCellQuadratureTimer(), Sundance::ElementIntegral::nNodes(), Sundance::CellJacobianBatch::numCells(), Sundance::ElementIntegral::order(), Playa::Out::os(), quadCurveDerivs_, quadWeights_, SUNDANCE_MSG2, SUNDANCE_MSG4, SUNDANCE_MSG5, Sundance::ElementIntegral::testDerivOrder(), transformSummingFirst(), Sundance::ElementIntegral::transformVerb(), updateRefCellIntegralOneForm(), useConstCoeff_, W_, and Sundance::writeTable().
Referenced by transform().
void CurveQuadratureIntegral::transformSummingFirst | ( | int | nCells, | |
const CellJacobianBatch & | JVol, | |||
const Array< int > & | facetIndex, | |||
const RCP< Array< int > > & | cellLIDs, | |||
const double | constCoeff, | |||
const double *const | GPtr, | |||
const double *const | coeff, | |||
RCP< Array< double > > & | A | |||
) | const [private] |
Do the integration by summing reference quantities over quadrature points and then transforming the sum to physical quantities.
Definition at line 608 of file SundanceCurveQuadratureIntegral.cpp.
References Sundance::CellJacobianBatch::detJ(), and Sundance::CellJacobianBatch::numCells().
Referenced by transformOneForm(), and transformTwoForm().
void Sundance::CurveQuadratureIntegral::transformSummingLast | ( | int | nCells, | |
const Array< int > & | facetIndex, | |||
const RCP< Array< int > > & | cellLIDs, | |||
const double *const | GPtr, | |||
const double *const | coeff, | |||
RCP< Array< double > > & | A | |||
) | const [private] |
Do the integration by transforming to physical coordinates at each quadrature point, and then summing
void CurveQuadratureIntegral::transformTwoForm | ( | const CellJacobianBatch & | JTrans, | |
const CellJacobianBatch & | JVol, | |||
const Array< int > & | facetIndex, | |||
const RCP< Array< int > > & | cellLIDs, | |||
const double | constCoeff, | |||
const double *const | coeff, | |||
RCP< Array< double > > & | A | |||
) | const [virtual] |
Definition at line 521 of file SundanceCurveQuadratureIntegral.cpp.
References Sundance::ElementIntegral::alpha(), Sundance::ElementIntegral::beta(), Sundance::ElementIntegral::createTwoFormTransformationMatrix(), Sundance::ElementIntegral::G(), Sundance::ElementIntegral::integrationVerb(), maxCellQuadratureTimer(), Sundance::ElementIntegral::nNodes(), Sundance::CellJacobianBatch::numCells(), Sundance::ElementIntegral::order(), quadCurveDerivs_, quadWeights_, SUNDANCE_MSG2, Sundance::ElementIntegral::testDerivOrder(), transformSummingFirst(), Sundance::ElementIntegral::transformVerb(), Sundance::ElementIntegral::unkDerivOrder(), updateRefCellIntegralTwoForm(), useConstCoeff_, and W_.
Referenced by transform().
void CurveQuadratureIntegral::transformZeroForm | ( | const CellJacobianBatch & | JTrans, | |
const CellJacobianBatch & | JVol, | |||
const Array< int > & | isLocalFlag, | |||
const Array< int > & | facetIndex, | |||
const RCP< Array< int > > & | cellLIDs, | |||
const double | constCoeff, | |||
const double *const | coeff, | |||
RCP< Array< double > > & | A | |||
) | const [virtual] |
Definition at line 330 of file SundanceCurveQuadratureIntegral.cpp.
References maxCellQuadratureTimer(), Sundance::CellJacobianBatch::numCells(), Playa::Out::os(), SUNDANCE_MSG1, SUNDANCE_MSG5, and Sundance::writeTable().
Referenced by transform().
void CurveQuadratureIntegral::updateRefCellInformation | ( | int | maxCellLID, | |
const ParametrizedCurve & | curve | |||
) | const [private] |
updates the reference cell information (quadPoints,derivatives,normals)
Definition at line 196 of file SundanceCurveQuadratureIntegral.cpp.
References Sundance::ElementIntegral::cellType(), Sundance::Mesh::getCurvePoints(), Sundance::CurveIntegralCalc::getCurveQuadPoints(), Sundance::Mesh::hasCurvePoints(), Sundance::ElementIntegral::integrationVerb(), Sundance::ElementIntegral::mesh(), quad_, quadCurveDerivs_, quadCurveNormals_, quadPts_, Sundance::Mesh::setCurvePoints(), Sundance::ElementIntegral::spatialDim(), and SUNDANCE_MSG3.
Referenced by updateRefCellIntegralOneForm(), and updateRefCellIntegralTwoForm().
void CurveQuadratureIntegral::updateRefCellIntegralOneForm | ( | int | maxCellLID, | |
int | cellInBatch | |||
) | const [private] |
updates the W_ for the given cell for one form Integral
Definition at line 221 of file SundanceCurveQuadratureIntegral.cpp.
References Sundance::ElementIntegral::chop(), Sundance::ElementIntegral::dim(), Sundance::ElementIntegral::evalCellType(), Sundance::ElementIntegral::globalCurve(), Sundance::ElementIntegral::integrationVerb(), Sundance::ElementIntegral::nNodesTest(), Sundance::ElementIntegral::nRefDerivTest(), quadPts_, quadWeights_, Sundance::BasisFamily::refEval(), Sundance::ElementIntegral::setupVerb(), SUNDANCE_MSG1, SUNDANCE_MSG2, Sundance::ElementIntegral::testBasis(), Sundance::ElementIntegral::testDerivOrder(), updateRefCellInformation(), W_, and wValue().
Referenced by transformOneForm().
void CurveQuadratureIntegral::updateRefCellIntegralTwoForm | ( | int | maxCellLID, | |
int | cellInBatch | |||
) | const [private] |
updates the W_ for the given cell for two form Integral
Definition at line 265 of file SundanceCurveQuadratureIntegral.cpp.
References Sundance::ElementIntegral::chop(), Sundance::ElementIntegral::dim(), Sundance::ElementIntegral::evalCellType(), Sundance::ElementIntegral::globalCurve(), Sundance::ElementIntegral::integrationVerb(), Sundance::ElementIntegral::nNodesTest(), Sundance::ElementIntegral::nNodesUnk(), Sundance::ElementIntegral::nRefDerivTest(), Sundance::ElementIntegral::nRefDerivUnk(), quadPts_, quadWeights_, Sundance::BasisFamily::refEval(), Sundance::ElementIntegral::setupVerb(), SUNDANCE_MSG1, SUNDANCE_MSG2, Sundance::ElementIntegral::testBasis(), Sundance::ElementIntegral::testDerivOrder(), Sundance::ElementIntegral::unkBasis(), Sundance::ElementIntegral::unkDerivOrder(), updateRefCellInformation(), W_, and wValue().
Referenced by transformTwoForm().
bool Sundance::CurveQuadratureIntegral::useSumFirstMethod | ( | ) | const [inline, private] |
Determine whether to do this batch of integrals using the sum-first method or the sum-last method
Definition at line 163 of file SundanceCurveQuadratureIntegral.hpp.
References useSumFirstMethod_.
double& Sundance::CurveQuadratureIntegral::wValue | ( | int | q, | |
int | testDerivDir, | |||
int | testNode | |||
) | const [inline, private] |
Definition at line 190 of file SundanceCurveQuadratureIntegral.hpp.
References Sundance::ElementIntegral::nNodesTest(), Sundance::ElementIntegral::nRefDerivTest(), and W_.
const double& Sundance::CurveQuadratureIntegral::wValue | ( | int | facetCase, | |
int | q, | |||
int | testDerivDir, | |||
int | testNode, | |||
int | unkDerivDir, | |||
int | unkNode | |||
) | const [inline, private] |
Definition at line 177 of file SundanceCurveQuadratureIntegral.hpp.
References Sundance::ElementIntegral::nNodesTest(), Sundance::ElementIntegral::nNodesUnk(), Sundance::ElementIntegral::nRefDerivTest(), Sundance::ElementIntegral::nRefDerivUnk(), and W_.
double& Sundance::CurveQuadratureIntegral::wValue | ( | int | q, | |
int | testDerivDir, | |||
int | testNode, | |||
int | unkDerivDir, | |||
int | unkNode | |||
) | const [inline, private] |
Definition at line 166 of file SundanceCurveQuadratureIntegral.hpp.
References Sundance::ElementIntegral::nNodesTest(), Sundance::ElementIntegral::nNodesUnk(), Sundance::ElementIntegral::nRefDerivTest(), Sundance::ElementIntegral::nRefDerivUnk(), and W_.
Referenced by updateRefCellIntegralOneForm(), and updateRefCellIntegralTwoForm().
The quadrature family needed for curve integration
Definition at line 194 of file SundanceCurveQuadratureIntegral.hpp.
Referenced by updateRefCellInformation().
Array<Point> Sundance::CurveQuadratureIntegral::quadCurveDerivs_ [mutable, private] |
The derivative of the curve at the curve
Definition at line 213 of file SundanceCurveQuadratureIntegral.hpp.
Referenced by CurveQuadratureIntegral(), transformOneForm(), transformTwoForm(), and updateRefCellInformation().
Array<Point> Sundance::CurveQuadratureIntegral::quadCurveNormals_ [mutable, private] |
The derivative of the curve at the curve
Definition at line 216 of file SundanceCurveQuadratureIntegral.hpp.
Referenced by CurveQuadratureIntegral(), and updateRefCellInformation().
Array<Point> Sundance::CurveQuadratureIntegral::quadPts_ [mutable, private] |
The quadrature points
Definition at line 197 of file SundanceCurveQuadratureIntegral.hpp.
Referenced by CurveQuadratureIntegral(), updateRefCellInformation(), updateRefCellIntegralOneForm(), and updateRefCellIntegralTwoForm().
Array<double> Sundance::CurveQuadratureIntegral::quadWeights_ [private] |
The standard weights
Definition at line 200 of file SundanceCurveQuadratureIntegral.hpp.
Referenced by CurveQuadratureIntegral(), transformOneForm(), transformTwoForm(), updateRefCellIntegralOneForm(), and updateRefCellIntegralTwoForm().
bool Sundance::CurveQuadratureIntegral::useConstCoeff_ [private] |
weather to use constant coefficients
Definition at line 210 of file SundanceCurveQuadratureIntegral.hpp.
Referenced by transformOneForm(), and transformTwoForm().
bool Sundance::CurveQuadratureIntegral::useSumFirstMethod_ [private] |
Definition at line 207 of file SundanceCurveQuadratureIntegral.hpp.
Referenced by useSumFirstMethod().
Array<double> Sundance::CurveQuadratureIntegral::W_ [mutable, private] |
Definition at line 204 of file SundanceCurveQuadratureIntegral.hpp.
Referenced by CurveQuadratureIntegral(), transformOneForm(), transformTwoForm(), updateRefCellIntegralOneForm(), updateRefCellIntegralTwoForm(), and wValue().