Public Member Functions | |
| IntegralGroup (const Array< RCP< ElementIntegral > > &integrals, const Array< int > &resultIndices, int verb) | |
| IntegralGroup (const Array< int > &testID, const Array< int > &testBlock, const Array< int > &mvIndices, const Array< RCP< ElementIntegral > > &integrals, const Array< int > &resultIndices, const Array< MultipleDeriv > &derivs, int verb) | |
| IntegralGroup (const Array< int > &testID, const Array< int > &testBlock, const Array< int > &unkID, const Array< int > &unkBlock, const Array< RCP< ElementIntegral > > &integrals, const Array< int > &resultIndices, const Array< MultipleDeriv > &derivs, int verb) | |
| bool | isTwoForm () const |
| bool | isOneForm () const |
| bool | isZeroForm () const |
| int | nTestNodes () const |
| int | nUnkNodes () const |
| const Array< int > & | testID () const |
| const Array< int > & | unkID () const |
| const Array< int > & | testBlock () const |
| const Array< int > & | unkBlock () const |
| const Array< int > & | mvIndices () const |
| IntegrationCellSpecifier | usesMaximalCofacets () const |
| const Array< int > & | termUsesMaximalCofacets () const |
| const BasisFamily & | getTestBasis () const |
| Extract basis used for test functions in this integral group. | |
| const BasisFamily & | getUnknownBasis () const |
| Extract basis used for unknown functions in this integral group. | |
| bool | evaluate (const CellJacobianBatch &JTrans, const CellJacobianBatch &JVol, const Array< int > &isLocalFlag, const Array< int > &facetNum, const RCP< Array< int > > &cellLIDs, const Array< RCP< EvalVector > > &vectorCoeffs, const Array< double > &constantCoeffs, RCP< Array< double > > &A) const |
| int | integrationVerb () const |
| int | transformVerb () const |
| const Array< MultipleDeriv > & | derivs () const |
Private Member Functions | |
| int | findIntegrationVerb (const Array< RCP< ElementIntegral > > &integrals) const |
| int | findTransformVerb (const Array< RCP< ElementIntegral > > &integrals) const |
Private Attributes | |
| int | integrationVerb_ |
| int | transformVerb_ |
| int | order_ |
| int | nTestNodes_ |
| int | nUnkNodes_ |
| Array< int > | testID_ |
| Array< int > | unkID_ |
| Array< int > | testBlock_ |
| Array< int > | unkBlock_ |
| Array< int > | mvIndices_ |
| Array< RCP< ElementIntegral > > | integrals_ |
| Array< int > | resultIndices_ |
| Array< int > | termUsesMaximalCofacets_ |
| IntegrationCellSpecifier | requiresMaximalCofacet_ |
| Array< MultipleDeriv > | derivs_ |
IntegralGroup collects together several integrals having common properties that can be used either to eliminate redundant computations or to share storage an eliminate repeated allocations.
The integrations are done using calls to methods of the ElementIntegral class. Which subtype of ElementIntegral is used (e.g., RefIntegral, QuadratureIntegral) controls how the integrations are actually done. Reference integration does the integral exactly on a reference element, then transforms to a physical cell. This is only possible with constant coefficients on an affine cell. Quadrature integration proceeds by quadrature (duh!), and is needed for variable coefficients or non-affine cells.
Definition at line 68 of file SundanceIntegralGroup.hpp.
| IntegralGroup::IntegralGroup | ( | const Array< RCP< ElementIntegral > > & | integrals, |
| const Array< int > & | resultIndices, | ||
| int | verb | ||
| ) |
Definition at line 65 of file SundanceIntegralGroup.cpp.
References Sundance::AllTermsNeedCofacets, Sundance::NoTermsNeedCofacets, and SUNDANCE_MSG2.
| IntegralGroup::IntegralGroup | ( | const Array< int > & | testID, |
| const Array< int > & | testBlock, | ||
| const Array< int > & | mvIndices, | ||
| const Array< RCP< ElementIntegral > > & | integrals, | ||
| const Array< int > & | resultIndices, | ||
| const Array< MultipleDeriv > & | derivs, | ||
| int | verb | ||
| ) |
Definition at line 129 of file SundanceIntegralGroup.cpp.
References Sundance::AllTermsNeedCofacets, Sundance::NoTermsNeedCofacets, and SUNDANCE_MSG2.
| IntegralGroup::IntegralGroup | ( | const Array< int > & | testID, |
| const Array< int > & | testBlock, | ||
| const Array< int > & | unkID, | ||
| const Array< int > & | unkBlock, | ||
| const Array< RCP< ElementIntegral > > & | integrals, | ||
| const Array< int > & | resultIndices, | ||
| const Array< MultipleDeriv > & | derivs, | ||
| int | verb | ||
| ) |
Definition at line 201 of file SundanceIntegralGroup.cpp.
References Sundance::AllTermsNeedCofacets, Sundance::NoTermsNeedCofacets, and SUNDANCE_MSG2.
| const Array<MultipleDeriv>& Sundance::IntegralGroup::derivs | ( | ) | const [inline] |
Definition at line 161 of file SundanceIntegralGroup.hpp.
References derivs_.
Referenced by Sundance::MatrixVectorAssemblyKernel::fill().
| bool IntegralGroup::evaluate | ( | const CellJacobianBatch & | JTrans, |
| const CellJacobianBatch & | JVol, | ||
| const Array< int > & | isLocalFlag, | ||
| const Array< int > & | facetNum, | ||
| const RCP< Array< int > > & | cellLIDs, | ||
| const Array< RCP< EvalVector > > & | vectorCoeffs, | ||
| const Array< double > & | constantCoeffs, | ||
| RCP< Array< double > > & | A | ||
| ) | const |
Evaluate this integral group
Definition at line 280 of file SundanceIntegralGroup.cpp.
References integrationTimer(), Sundance::CellJacobianBatch::numCells(), Playa::Out::os(), SUNDANCE_MSG1, SUNDANCE_MSG2, SUNDANCE_MSG3, SUNDANCE_MSG4, SUNDANCE_MSG5, Sundance::MaximalQuadratureIntegral::transform(), Sundance::CurveQuadratureIntegral::transform(), Sundance::QuadratureIntegralBase::transform(), Sundance::ReducedIntegral::transform(), Sundance::RefIntegral::transform(), and Sundance::writeTable().
| int IntegralGroup::findIntegrationVerb | ( | const Array< RCP< ElementIntegral > > & | integrals | ) | const [private] |
Definition at line 435 of file SundanceIntegralGroup.cpp.
References integrationVerb(), and Playa::max().
| int IntegralGroup::findTransformVerb | ( | const Array< RCP< ElementIntegral > > & | integrals | ) | const [private] |
Definition at line 446 of file SundanceIntegralGroup.cpp.
References Playa::max(), and transformVerb().
| const BasisFamily& Sundance::IntegralGroup::getTestBasis | ( | ) | const [inline] |
Extract basis used for test functions in this integral group.
Definition at line 138 of file SundanceIntegralGroup.hpp.
References integrals_.
| const BasisFamily& Sundance::IntegralGroup::getUnknownBasis | ( | ) | const [inline] |
Extract basis used for unknown functions in this integral group.
Definition at line 141 of file SundanceIntegralGroup.hpp.
References integrals_.
| int Sundance::IntegralGroup::integrationVerb | ( | ) | const [inline] |
Definition at line 155 of file SundanceIntegralGroup.hpp.
References integrationVerb_.
Referenced by findIntegrationVerb().
| bool Sundance::IntegralGroup::isOneForm | ( | ) | const [inline] |
Indicate whether this is a group of one-forms
Definition at line 100 of file SundanceIntegralGroup.hpp.
References order_.
Referenced by Sundance::MatrixVectorAssemblyKernel::fill(), Sundance::FunctionalGradientAssemblyKernel::fill(), and Sundance::VectorAssemblyKernel::fill().
| bool Sundance::IntegralGroup::isTwoForm | ( | ) | const [inline] |
Indicate whether this is a group of two-forms
Definition at line 97 of file SundanceIntegralGroup.hpp.
References order_.
Referenced by Sundance::MatrixVectorAssemblyKernel::fill(), and Sundance::FunctionalGradientAssemblyKernel::fill().
| bool Sundance::IntegralGroup::isZeroForm | ( | ) | const [inline] |
Indicate whether this is a group of zero-forms
Definition at line 103 of file SundanceIntegralGroup.hpp.
References order_.
Referenced by Sundance::FunctionalGradientAssemblyKernel::fill().
| const Array<int>& Sundance::IntegralGroup::mvIndices | ( | ) | const [inline] |
Return the multivector column indices for the one-forms
Definition at line 126 of file SundanceIntegralGroup.hpp.
References mvIndices_.
Referenced by Sundance::MatrixVectorAssemblyKernel::fill(), and Sundance::VectorAssemblyKernel::fill().
| int Sundance::IntegralGroup::nTestNodes | ( | ) | const [inline] |
Return the number of rows in the local matrices or vectors computed by this integral group
Definition at line 107 of file SundanceIntegralGroup.hpp.
References nTestNodes_.
| int Sundance::IntegralGroup::nUnkNodes | ( | ) | const [inline] |
Return the number of columns in the local matrices computed by this integral group
Definition at line 111 of file SundanceIntegralGroup.hpp.
References nUnkNodes_.
| const Array<int>& Sundance::IntegralGroup::termUsesMaximalCofacets | ( | ) | const [inline] |
Array specifying which terms need maximal cofacets
Definition at line 134 of file SundanceIntegralGroup.hpp.
References termUsesMaximalCofacets_.
| const Array<int>& Sundance::IntegralGroup::testBlock | ( | ) | const [inline] |
Return the block numbers for the test functions
Definition at line 120 of file SundanceIntegralGroup.hpp.
References testBlock_.
Referenced by Sundance::MatrixVectorAssemblyKernel::fill(), and Sundance::VectorAssemblyKernel::fill().
| const Array<int>& Sundance::IntegralGroup::testID | ( | ) | const [inline] |
Return the test functions using this integral group
Definition at line 114 of file SundanceIntegralGroup.hpp.
References testID_.
Referenced by Sundance::MatrixVectorAssemblyKernel::fill(), and Sundance::VectorAssemblyKernel::fill().
| int Sundance::IntegralGroup::transformVerb | ( | ) | const [inline] |
Definition at line 158 of file SundanceIntegralGroup.hpp.
References transformVerb_.
Referenced by findTransformVerb().
| const Array<int>& Sundance::IntegralGroup::unkBlock | ( | ) | const [inline] |
Return the block numbers for the unk functions
Definition at line 123 of file SundanceIntegralGroup.hpp.
References unkBlock_.
Referenced by Sundance::MatrixVectorAssemblyKernel::fill().
| const Array<int>& Sundance::IntegralGroup::unkID | ( | ) | const [inline] |
Return the unknown functions using this integral group
Definition at line 117 of file SundanceIntegralGroup.hpp.
References unkID_.
Referenced by Sundance::MatrixVectorAssemblyKernel::fill().
| IntegrationCellSpecifier Sundance::IntegralGroup::usesMaximalCofacets | ( | ) | const [inline] |
Whether the group requires transformations based on a maximal cofacet
Definition at line 130 of file SundanceIntegralGroup.hpp.
References requiresMaximalCofacet_.
Referenced by Sundance::MatrixVectorAssemblyKernel::fill(), and Sundance::VectorAssemblyKernel::fill().
Array<MultipleDeriv> Sundance::IntegralGroup::derivs_ [private] |
Definition at line 214 of file SundanceIntegralGroup.hpp.
Referenced by derivs().
Array<RCP<ElementIntegral> > Sundance::IntegralGroup::integrals_ [private] |
Definition at line 202 of file SundanceIntegralGroup.hpp.
Referenced by getTestBasis(), and getUnknownBasis().
int Sundance::IntegralGroup::integrationVerb_ [private] |
Definition at line 172 of file SundanceIntegralGroup.hpp.
Referenced by integrationVerb().
Array<int> Sundance::IntegralGroup::mvIndices_ [private] |
Definition at line 199 of file SundanceIntegralGroup.hpp.
Referenced by mvIndices().
int Sundance::IntegralGroup::nTestNodes_ [private] |
Definition at line 181 of file SundanceIntegralGroup.hpp.
Referenced by nTestNodes().
int Sundance::IntegralGroup::nUnkNodes_ [private] |
Definition at line 184 of file SundanceIntegralGroup.hpp.
Referenced by nUnkNodes().
int Sundance::IntegralGroup::order_ [private] |
Definition at line 178 of file SundanceIntegralGroup.hpp.
Referenced by isOneForm(), isTwoForm(), and isZeroForm().
Definition at line 211 of file SundanceIntegralGroup.hpp.
Referenced by usesMaximalCofacets().
Array<int> Sundance::IntegralGroup::resultIndices_ [private] |
Definition at line 205 of file SundanceIntegralGroup.hpp.
Array<int> Sundance::IntegralGroup::termUsesMaximalCofacets_ [private] |
Definition at line 208 of file SundanceIntegralGroup.hpp.
Referenced by termUsesMaximalCofacets().
Array<int> Sundance::IntegralGroup::testBlock_ [private] |
Definition at line 193 of file SundanceIntegralGroup.hpp.
Referenced by testBlock().
Array<int> Sundance::IntegralGroup::testID_ [private] |
Definition at line 187 of file SundanceIntegralGroup.hpp.
Referenced by testID().
int Sundance::IntegralGroup::transformVerb_ [private] |
Definition at line 175 of file SundanceIntegralGroup.hpp.
Referenced by transformVerb().
Array<int> Sundance::IntegralGroup::unkBlock_ [private] |
Definition at line 196 of file SundanceIntegralGroup.hpp.
Referenced by unkBlock().
Array<int> Sundance::IntegralGroup::unkID_ [private] |
Definition at line 190 of file SundanceIntegralGroup.hpp.
Referenced by unkID().