Intrepid2
Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType > Class Template Reference

Defines tensor-product cubature (integration) rules in Intrepid. More...

#include <Intrepid2_CubatureTensor.hpp>

Inheritance diagram for Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >:
Intrepid2::Cubature< void, double, double >

Public Types

using PointViewType = typename Cubature<DeviceType,pointValueType,weightValueType>::PointViewType
using weightViewType = typename Cubature<DeviceType,pointValueType,weightValueType>::weightViewType
using PointViewTypeAllocatable = typename Cubature<DeviceType,pointValueType,weightValueType>::PointViewTypeAllocatable
 KK: following should be updated with nate's tensor work.
using WeightViewTypeAllocatable = typename Cubature<DeviceType,pointValueType,weightValueType>::WeightViewTypeAllocatable
using TensorPointDataType = typename Cubature<DeviceType,pointValueType,weightValueType>::TensorPointDataType
using TensorWeightDataType = typename Cubature<DeviceType,pointValueType,weightValueType>::TensorWeightDataType
Public Types inherited from Intrepid2::Cubature< void, double, double >
using ExecSpaceType
using PointViewType
using weightViewType
using PointViewTypeAllocatable
using WeightViewTypeAllocatable
using TensorPointDataType
using TensorWeightDataType

Public Member Functions

template<typename cubPointValueType, class ... cubPointProperties, typename cubWeightValueType, class ... cubWeightProperties>
void getCubatureImpl (Kokkos::DynRankView< cubPointValueType, cubPointProperties... > cubPoints, Kokkos::DynRankView< cubWeightValueType, cubWeightProperties... > cubWeights) const
virtual void getCubature (PointViewType cubPoints, weightViewType cubWeights) const override
virtual TensorPointDataType allocateCubaturePoints () const override
 Returns a points container appropriate for passing to getCubature().
virtual TensorWeightDataType allocateCubatureWeights () const override
 Returns a weight container appropriate for passing to getCubature().
virtual void getCubature (const TensorPointDataType &tensorCubPoints, const TensorWeightDataType &tensorCubWeights) const override
 Returns tensor cubature points and weights. For non-tensor cubatures, the tensor structures are trivial, thin wrappers around the data returned by getCubature(). The provided containers should be pre-allocated through calls to allocateCubaturePoints() and allocateCubatureWeights().
virtual ordinal_type getNumPoints () const override
 Returns the number of cubature points.
virtual ordinal_type getDimension () const override
 Returns dimension of integration domain.
virtual const char * getName () const override
 Returns cubature name.
virtual ordinal_type getAccuracy () const override
 Returns dimension of the integration domain.
ordinal_type getNumCubatures () const
 Return the number of cubatures.
CubatureDirect< DeviceType, pointValueType, weightValueType > getCubatureComponent (ordinal_type i) const
 Return the number of cubatures.
void getAccuracy (ordinal_type *accuracy) const
 Returns max. degree of polynomials that are integrated exactly.
 CubatureTensor (const CubatureTensor &b)
template<typename CubatureType0, typename CubatureType1>
 CubatureTensor (const CubatureType0 cubature0, const CubatureType1 cubature1)
 Constructor.
template<typename CubatureType0, typename CubatureType1, typename CubatureType2>
 CubatureTensor (const CubatureType0 cubature0, const CubatureType1 cubature1, const CubatureType2 cubature2)
 Constructor.
template<typename DirectCubature>
 CubatureTensor (const CubatureTensor cubatureTensor, const DirectCubature cubatureExtension)
 Constructor for extending an existing CubatureTensor object with an additional direct cubature rule.
Public Member Functions inherited from Intrepid2::Cubature< void, double, double >
virtual void getCubature (PointViewType, weightViewType) const
 Returns cubature points and weights (return arrays must be pre-sized/pre-allocated).

Private Attributes

ordinal_type numCubatures_
 Array of cubature rules.
CubatureDirect< DeviceType, pointValueType, weightValueType > cubatures_ [Parameters::MaxTensorComponents]
ordinal_type dimension_
 Dimension of integration domain.

Detailed Description

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
class Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >

Defines tensor-product cubature (integration) rules in Intrepid.

Definition at line 31 of file Intrepid2_CubatureTensor.hpp.

Member Typedef Documentation

◆ PointViewType

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
using Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::PointViewType = typename Cubature<DeviceType,pointValueType,weightValueType>::PointViewType

Definition at line 53 of file Intrepid2_CubatureTensor.hpp.

◆ PointViewTypeAllocatable

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
using Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::PointViewTypeAllocatable = typename Cubature<DeviceType,pointValueType,weightValueType>::PointViewTypeAllocatable

KK: following should be updated with nate's tensor work.

Definition at line 57 of file Intrepid2_CubatureTensor.hpp.

◆ TensorPointDataType

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
using Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::TensorPointDataType = typename Cubature<DeviceType,pointValueType,weightValueType>::TensorPointDataType

Definition at line 59 of file Intrepid2_CubatureTensor.hpp.

◆ TensorWeightDataType

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
using Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::TensorWeightDataType = typename Cubature<DeviceType,pointValueType,weightValueType>::TensorWeightDataType

Definition at line 60 of file Intrepid2_CubatureTensor.hpp.

◆ weightViewType

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
using Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::weightViewType = typename Cubature<DeviceType,pointValueType,weightValueType>::weightViewType

Definition at line 54 of file Intrepid2_CubatureTensor.hpp.

◆ WeightViewTypeAllocatable

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
using Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::WeightViewTypeAllocatable = typename Cubature<DeviceType,pointValueType,weightValueType>::WeightViewTypeAllocatable

Definition at line 58 of file Intrepid2_CubatureTensor.hpp.

Constructor & Destructor Documentation

◆ CubatureTensor() [1/5]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::CubatureTensor ( )
inline

Definition at line 175 of file Intrepid2_CubatureTensor.hpp.

◆ CubatureTensor() [2/5]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::CubatureTensor ( const CubatureTensor< DeviceType, pointValueType, weightValueType > & b)
inline

Definition at line 179 of file Intrepid2_CubatureTensor.hpp.

◆ CubatureTensor() [3/5]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
template<typename CubatureType0, typename CubatureType1>
Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::CubatureTensor ( const CubatureType0 cubature0,
const CubatureType1 cubature1 )
inline

Constructor.

Parameters
cubature1[in] - First direct cubature rule.
cubature2[in] - Second direct cubature rule.

Definition at line 193 of file Intrepid2_CubatureTensor.hpp.

References dimension_, getDimension(), and numCubatures_.

◆ CubatureTensor() [4/5]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
template<typename CubatureType0, typename CubatureType1, typename CubatureType2>
Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::CubatureTensor ( const CubatureType0 cubature0,
const CubatureType1 cubature1,
const CubatureType2 cubature2 )
inline

Constructor.

Parameters
cubature1[in] - First direct cubature rule.
cubature2[in] - Second direct cubature rule.
cubature3[in] - Third direct cubature rule.

Definition at line 210 of file Intrepid2_CubatureTensor.hpp.

References dimension_, getDimension(), and numCubatures_.

◆ CubatureTensor() [5/5]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
template<typename DirectCubature>
Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::CubatureTensor ( const CubatureTensor< DeviceType, pointValueType, weightValueType > cubatureTensor,
const DirectCubature cubatureExtension )
inline

Constructor for extending an existing CubatureTensor object with an additional direct cubature rule.

Parameters
cubatureTensor[in] - Existing CubatureTensor object.
cubatureExtension[in] - The direct cubature rule to use to extend in the new dimension.

Definition at line 226 of file Intrepid2_CubatureTensor.hpp.

References dimension_, getDimension(), getNumCubatures(), and numCubatures_.

Member Function Documentation

◆ allocateCubaturePoints()

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual TensorPointDataType Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::allocateCubaturePoints ( ) const
inlineoverridevirtual

Returns a points container appropriate for passing to getCubature().

Returns
cubPoints - Data structure sized for the cubature points.

Reimplemented from Intrepid2::Cubature< void, double, double >.

Reimplemented in Intrepid2::CubatureTensorPyr< DeviceType, pointValueType, weightValueType >.

Definition at line 76 of file Intrepid2_CubatureTensor.hpp.

References getDimension(), getNumPoints(), and numCubatures_.

◆ allocateCubatureWeights()

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual TensorWeightDataType Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::allocateCubatureWeights ( ) const
inlineoverridevirtual

Returns a weight container appropriate for passing to getCubature().

Returns
cubWeights - Data structure sized for the cubature weights.

Reimplemented from Intrepid2::Cubature< void, double, double >.

Reimplemented in Intrepid2::CubatureTensorPyr< DeviceType, pointValueType, weightValueType >.

Definition at line 92 of file Intrepid2_CubatureTensor.hpp.

References getNumPoints(), and numCubatures_.

◆ getAccuracy() [1/2]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual ordinal_type Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getAccuracy ( ) const
inlineoverridevirtual

Returns dimension of the integration domain.

Reimplemented from Intrepid2::Cubature< void, double, double >.

Definition at line 149 of file Intrepid2_CubatureTensor.hpp.

References getAccuracy(), and numCubatures_.

Referenced by getAccuracy(), and getAccuracy().

◆ getAccuracy() [2/2]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
void Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getAccuracy ( ordinal_type * accuracy) const
inline

Returns max. degree of polynomials that are integrated exactly.

Definition at line 170 of file Intrepid2_CubatureTensor.hpp.

References getAccuracy(), and numCubatures_.

◆ getCubature() [1/2]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual void Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getCubature ( const TensorPointDataType & tensorCubPoints,
const TensorWeightDataType & tensorCubWeights ) const
inlineoverridevirtual

Returns tensor cubature points and weights. For non-tensor cubatures, the tensor structures are trivial, thin wrappers around the data returned by getCubature(). The provided containers should be pre-allocated through calls to allocateCubaturePoints() and allocateCubatureWeights().

Parameters
cubPoints[out] - TensorPoints structure containing the cubature points.
cubWeights[out] - TensorData structure containing cubature weights.

Definition at line 112 of file Intrepid2_CubatureTensor.hpp.

References numCubatures_.

◆ getCubature() [2/2]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual void Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getCubature ( PointViewType cubPoints,
weightViewType cubWeights ) const
inlineoverridevirtual

Definition at line 66 of file Intrepid2_CubatureTensor.hpp.

◆ getCubatureComponent()

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
CubatureDirect< DeviceType, pointValueType, weightValueType > Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getCubatureComponent ( ordinal_type i) const
inline

Return the number of cubatures.

Definition at line 164 of file Intrepid2_CubatureTensor.hpp.

◆ getCubatureImpl()

template<typename DT, typename PT, typename WT>
template<typename cubPointValueType, class ... cubPointProperties, typename cubWeightValueType, class ... cubWeightProperties>
void Intrepid2::CubatureTensor< DT, PT, WT >::getCubatureImpl ( Kokkos::DynRankView< cubPointValueType, cubPointProperties... > cubPoints,
Kokkos::DynRankView< cubWeightValueType, cubWeightProperties... > cubWeights ) const

here create mirror view and copy does not work

here create mirror view and copy does not work

Definition at line 25 of file Intrepid2_CubatureTensorDef.hpp.

References Intrepid2::Parameters::MaxTensorComponents, and numCubatures_.

◆ getDimension()

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual ordinal_type Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getDimension ( ) const
inlineoverridevirtual

Returns dimension of integration domain.

Reimplemented from Intrepid2::Cubature< void, double, double >.

Definition at line 135 of file Intrepid2_CubatureTensor.hpp.

References dimension_.

Referenced by allocateCubaturePoints(), CubatureTensor(), CubatureTensor(), and CubatureTensor().

◆ getName()

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual const char * Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getName ( ) const
inlineoverridevirtual

Returns cubature name.

Reimplemented from Intrepid2::Cubature< void, double, double >.

Definition at line 143 of file Intrepid2_CubatureTensor.hpp.

◆ getNumCubatures()

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
ordinal_type Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getNumCubatures ( ) const
inline

Return the number of cubatures.

Definition at line 158 of file Intrepid2_CubatureTensor.hpp.

References numCubatures_.

Referenced by CubatureTensor().

◆ getNumPoints()

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual ordinal_type Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getNumPoints ( ) const
inlineoverridevirtual

Returns the number of cubature points.

Reimplemented from Intrepid2::Cubature< void, double, double >.

Definition at line 124 of file Intrepid2_CubatureTensor.hpp.

References getNumPoints(), and numCubatures_.

Referenced by allocateCubaturePoints(), allocateCubatureWeights(), and getNumPoints().

Member Data Documentation

◆ cubatures_

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
CubatureDirect<DeviceType,pointValueType,weightValueType> Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::cubatures_[Parameters::MaxTensorComponents]
private

Definition at line 39 of file Intrepid2_CubatureTensor.hpp.

◆ dimension_

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
ordinal_type Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::dimension_
private

Dimension of integration domain.

Definition at line 43 of file Intrepid2_CubatureTensor.hpp.

Referenced by CubatureTensor(), CubatureTensor(), CubatureTensor(), and getDimension().

◆ numCubatures_

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
ordinal_type Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::numCubatures_
private

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