Sundance::IntegralGroup Class Reference

List of all members.

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 BasisFamilygetTestBasis () const
 Extract basis used for test functions in this integral group.
const BasisFamilygetUnknownBasis () 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< MultipleDerivderivs_


Detailed Description

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 57 of file SundanceIntegralGroup.hpp.


Constructor & Destructor Documentation

IntegralGroup::IntegralGroup ( const Array< RCP< ElementIntegral > > &  integrals,
const Array< int > &  resultIndices,
int  verb 
)

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 
)

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 
)


Member Function Documentation

const Array<MultipleDeriv>& Sundance::IntegralGroup::derivs (  )  const [inline]

Definition at line 150 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

int IntegralGroup::findIntegrationVerb ( const Array< RCP< ElementIntegral > > &  integrals  )  const [private]

Definition at line 424 of file SundanceIntegralGroup.cpp.

References integrationVerb(), and Playa::max().

int IntegralGroup::findTransformVerb ( const Array< RCP< ElementIntegral > > &  integrals  )  const [private]

Definition at line 435 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 127 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 130 of file SundanceIntegralGroup.hpp.

References integrals_.

int Sundance::IntegralGroup::integrationVerb (  )  const [inline]

Definition at line 144 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 89 of file SundanceIntegralGroup.hpp.

References order_.

Referenced by Sundance::VectorAssemblyKernel::fill(), Sundance::MatrixVectorAssemblyKernel::fill(), and Sundance::FunctionalGradientAssemblyKernel::fill().

bool Sundance::IntegralGroup::isTwoForm (  )  const [inline]

Indicate whether this is a group of two-forms

Definition at line 86 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 92 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 115 of file SundanceIntegralGroup.hpp.

References mvIndices_.

Referenced by Sundance::VectorAssemblyKernel::fill(), and Sundance::MatrixVectorAssemblyKernel::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 96 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 100 of file SundanceIntegralGroup.hpp.

References nUnkNodes_.

const Array<int>& Sundance::IntegralGroup::termUsesMaximalCofacets (  )  const [inline]

Array specifying which terms need maximal cofacets

Definition at line 123 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 109 of file SundanceIntegralGroup.hpp.

References testBlock_.

Referenced by Sundance::VectorAssemblyKernel::fill(), and Sundance::MatrixVectorAssemblyKernel::fill().

const Array<int>& Sundance::IntegralGroup::testID (  )  const [inline]

Return the test functions using this integral group

Definition at line 103 of file SundanceIntegralGroup.hpp.

References testID_.

Referenced by Sundance::VectorAssemblyKernel::fill(), and Sundance::MatrixVectorAssemblyKernel::fill().

int Sundance::IntegralGroup::transformVerb (  )  const [inline]

Definition at line 147 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 112 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 106 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 119 of file SundanceIntegralGroup.hpp.

References requiresMaximalCofacet_.

Referenced by Sundance::VectorAssemblyKernel::fill(), and Sundance::MatrixVectorAssemblyKernel::fill().


Member Data Documentation

Definition at line 203 of file SundanceIntegralGroup.hpp.

Referenced by derivs().

Definition at line 191 of file SundanceIntegralGroup.hpp.

Referenced by getTestBasis(), and getUnknownBasis().

Definition at line 161 of file SundanceIntegralGroup.hpp.

Referenced by integrationVerb().

Definition at line 188 of file SundanceIntegralGroup.hpp.

Referenced by mvIndices().

Definition at line 170 of file SundanceIntegralGroup.hpp.

Referenced by nTestNodes().

Definition at line 173 of file SundanceIntegralGroup.hpp.

Referenced by nUnkNodes().

Definition at line 167 of file SundanceIntegralGroup.hpp.

Referenced by isOneForm(), isTwoForm(), and isZeroForm().

Definition at line 200 of file SundanceIntegralGroup.hpp.

Referenced by usesMaximalCofacets().

Definition at line 194 of file SundanceIntegralGroup.hpp.

Definition at line 197 of file SundanceIntegralGroup.hpp.

Referenced by termUsesMaximalCofacets().

Definition at line 182 of file SundanceIntegralGroup.hpp.

Referenced by testBlock().

Array<int> Sundance::IntegralGroup::testID_ [private]

Definition at line 176 of file SundanceIntegralGroup.hpp.

Referenced by testID().

Definition at line 164 of file SundanceIntegralGroup.hpp.

Referenced by transformVerb().

Array<int> Sundance::IntegralGroup::unkBlock_ [private]

Definition at line 185 of file SundanceIntegralGroup.hpp.

Referenced by unkBlock().

Array<int> Sundance::IntegralGroup::unkID_ [private]

Definition at line 179 of file SundanceIntegralGroup.hpp.

Referenced by unkID().

Site Contact