Intrepid2
Public Types | Public Member Functions | Private Attributes | List of all members
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< DeviceType, pointValueType, weightValueType > Intrepid2::CubatureTensorPyr< DeviceType, pointValueType, weightValueType >

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< DeviceType, pointValueType, weightValueType >
using ExecSpaceType = typename DeviceType::execution_space
 
using PointViewType = Kokkos::DynRankView<pointValueType,Kokkos::LayoutStride,DeviceType>
 
using weightViewType = Kokkos::DynRankView<weightValueType,Kokkos::LayoutStride,DeviceType>
 
using PointViewTypeAllocatable = Kokkos::DynRankView<pointValueType,DeviceType>
 
using WeightViewTypeAllocatable = Kokkos::DynRankView<weightValueType,DeviceType>
 
using TensorPointDataType = TensorPoints<pointValueType,DeviceType>
 
using TensorWeightDataType = TensorData<weightValueType,DeviceType>
 

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
 Returns cubature points and weights (return arrays must be pre-sized/pre-allocated).
 
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.
 
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< DeviceType, pointValueType, weightValueType >
virtual void getCubature (PointViewType, weightViewType, PointViewType) const
 Returns cubature points and weights on physical cells (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 64 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 86 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 90 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 92 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 93 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 87 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 91 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 202 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 206 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 220 of file Intrepid2_CubatureTensor.hpp.

◆ 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 237 of file Intrepid2_CubatureTensor.hpp.

◆ 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 253 of file Intrepid2_CubatureTensor.hpp.

References Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getNumCubatures().

Member Function Documentation

◆ allocateCubaturePoints()

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

◆ allocateCubatureWeights()

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

◆ getAccuracy() [1/2]

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

◆ 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

◆ 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.

Reimplemented from Intrepid2::Cubature< DeviceType, pointValueType, weightValueType >.

Definition at line 145 of file Intrepid2_CubatureTensor.hpp.

References Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::getCubature(), and Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::numCubatures_.

◆ getCubature() [2/2]

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

Returns cubature points and weights (return arrays must be pre-sized/pre-allocated).

Parameters
cubPoints[out] - Array containing the cubature points.
cubWeights[out] - Array of corresponding cubature weights.

Reimplemented from Intrepid2::Cubature< DeviceType, pointValueType, weightValueType >.

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

Definition at line 99 of file Intrepid2_CubatureTensor.hpp.

References Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getCubatureImpl().

◆ 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 58 of file Intrepid2_CubatureTensorDef.hpp.

References Intrepid2::Parameters::MaxTensorComponents.

Referenced by Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getCubature().

◆ getDimension()

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

◆ 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< DeviceType, pointValueType, weightValueType >.

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

◆ getNumPoints()

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

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 72 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 76 of file Intrepid2_CubatureTensor.hpp.

Referenced by Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::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: