Intrepid2
Static Public Member Functions | List of all members
Intrepid2::IntegrationTools< DeviceType > Class Template Reference

Provides support for structure-aware integration. More...

#include <Intrepid2_IntegrationTools.hpp>

Static Public Member Functions

template<class Scalar >
static Data< Scalar, DeviceType > allocateIntegralData (const TransformedBasisValues< Scalar, DeviceType > vectorDataLeft, const TensorData< Scalar, DeviceType > cellMeasures, const TransformedBasisValues< Scalar, DeviceType > vectorDataRight)
 Allocates storage for the contraction of vectorDataLeft and vectorDataRight containers on point and space dimensions, weighting each point according to cellMeasures. More...
 
template<class Scalar >
static void integrate (Data< Scalar, DeviceType > integrals, const TransformedBasisValues< Scalar, DeviceType > &vectorDataLeft, const TensorData< Scalar, DeviceType > &cellMeasures, const TransformedBasisValues< Scalar, DeviceType > &vectorDataRight, const bool sumInto=false, double *approximateFlops=NULL)
 Contracts vectorDataLeft and vectorDataRight containers on point and space dimensions, weighting each point according to cellMeasures, and stores the result in outputValues. The integrals container can be constructed using allocateIntegralData(). More...
 

Detailed Description

template<typename DeviceType = void>
class Intrepid2::IntegrationTools< DeviceType >

Provides support for structure-aware integration.

Definition at line 45 of file Intrepid2_IntegrationTools.hpp.

Member Function Documentation

template<typename DeviceType >
template<class Scalar >
Data< Scalar, DeviceType > Intrepid2::IntegrationTools< DeviceType >::allocateIntegralData ( const TransformedBasisValues< Scalar, DeviceType >  vectorDataLeft,
const TensorData< Scalar, DeviceType >  cellMeasures,
const TransformedBasisValues< Scalar, DeviceType >  vectorDataRight 
)
static

Allocates storage for the contraction of vectorDataLeft and vectorDataRight containers on point and space dimensions, weighting each point according to cellMeasures.

Parameters
vectorDataRight[in] - Left input container, with logical shape (C,F,P,D)
cellMeasures[in] - Point weight container, with logical shape (C,P)
vectorDataLeft[in] - Right input container with logical shape (C,F,P,D)
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.
Returns
integrals, a container with logical shape (C,F,F), suitable for passing as the first argument to the integrate() variant that takes an Intrepid2::Data object as its first, integrals, argument.

Definition at line 1868 of file Intrepid2_IntegrationToolsDef.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getDimensionInfo(), Intrepid2::TensorData< Scalar, DeviceType >::getTensorComponent(), Intrepid2::Data< DataScalar, DeviceType >::isValid(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::numCells(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::numFields(), and Intrepid2::TransformedBasisValues< Scalar, DeviceType >::transform().

template<typename DeviceType >
template<class Scalar >
void Intrepid2::IntegrationTools< DeviceType >::integrate ( Data< Scalar, DeviceType >  integrals,
const TransformedBasisValues< Scalar, DeviceType > &  basisValuesLeft,
const TensorData< Scalar, DeviceType > &  cellMeasures,
const TransformedBasisValues< Scalar, DeviceType > &  basisValuesRight,
const bool  sumInto = false,
double *  approximateFlops = NULL 
)
static

Contracts vectorDataLeft and vectorDataRight containers on point and space dimensions, weighting each point according to cellMeasures, and stores the result in outputValues. The integrals container can be constructed using allocateIntegralData().

Parameters
outputValues[out] - Output array, with logical shape (C,F,F)
vectorDataRight[in] - Left input container, with logical shape (C,F,P,D)
cellMeasures[in] - Point weight container, with logical shape (C,P)
vectorDataLeft[in] - Right input container with logical shape (C,F,P,D)
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.
approxFlops[in] - if not NULL, the double pointed to will be set with an estimated number of floating point operations. Intended for performance assessment purposes.

Two use cases:

  1. affine tensor-topology mesh: cellMeasures is a simple tensor product in this case.
  2. arbitrary mesh: cellMeasures has trivial tensor product structure (one tensorial component).

Definition at line 1926 of file Intrepid2_IntegrationToolsDef.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::allocateInPlaceCombinationResult(), Intrepid2::Data< DataScalar, DeviceType >::allocateMatMatResult(), Intrepid2::TensorArgumentIterator::argument(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::axisAligned(), Intrepid2::Data< DataScalar, DeviceType >::clear(), Intrepid2::TensorData< Scalar, DeviceType >::extent_int(), Intrepid2::Data< DataScalar, DeviceType >::extent_int(), Intrepid2::Data< DataScalar, DeviceType >::getDataExtent(), Intrepid2::Data< DataScalar, DeviceType >::getExtents(), Intrepid2::TensorData< Scalar, DeviceType >::getTensorComponent(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView2(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView3(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingViewRank(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingViewSize(), Intrepid2::Data< DataScalar, DeviceType >::getVariationTypes(), INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, Intrepid2::TensorData< Scalar, DeviceType >::isValid(), Intrepid2::Data< DataScalar, DeviceType >::isValid(), Intrepid2::Parameters::MaxTensorComponents, Intrepid2::DataTools::multiplyByCPWeights(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::numCells(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::numFields(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::numPoints(), Intrepid2::TensorData< Scalar, DeviceType >::numTensorComponents(), Intrepid2::Data< DataScalar, DeviceType >::rank(), Intrepid2::TensorArgumentIterator::setEnumerationIndex(), Intrepid2::Data< DataScalar, DeviceType >::shallowCopy(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::spaceDim(), Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceProduct(), Intrepid2::Data< DataScalar, DeviceType >::storeMatMat(), Intrepid2::Impl::F_Integrate< Scalar, DeviceType, integralViewRank >::teamSize(), Intrepid2::Impl::F_IntegratePointValueCache< Scalar, DeviceType, integralViewRank >::teamSize(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::transform(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::transformWeight(), Intrepid2::DataTools::transposeMatrix(), and Intrepid2::TransformedBasisValues< Scalar, DeviceType >::vectorData().


The documentation for this class was generated from the following files: