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). More...
 
virtual TensorPointDataType allocateCubaturePoints () const override
 Returns a points container appropriate for passing to getCubature(). More...
 
virtual TensorWeightDataType allocateCubatureWeights () const override
 Returns a weight container appropriate for passing to getCubature(). More...
 
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(). More...
 
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. More...
 
template<typename CubatureType0 , typename CubatureType1 , typename CubatureType2 >
 CubatureTensor (const CubatureType0 cubature0, const CubatureType1 cubature1, const CubatureType2 cubature2)
 Constructor. More...
 
template<typename DirectCubature >
 CubatureTensor (const CubatureTensor cubatureTensor, const DirectCubature cubatureExtension)
 Constructor for extending an existing CubatureTensor object with an additional direct cubature rule. More...
 
- 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). More...
 

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.

Constructor & Destructor Documentation

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.

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.

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 Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::getNumCubatures().

Member Function Documentation

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual TensorPointDataType Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::allocateCubaturePoints ( ) const
inlineoverridevirtual
template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
virtual TensorWeightDataType Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::allocateCubatureWeights ( ) const
inlineoverridevirtual
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 66 of file Intrepid2_CubatureTensor.hpp.

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

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

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

Definition at line 112 of file Intrepid2_CubatureTensor.hpp.

References Intrepid2::TensorData< Scalar, DeviceType >::getTensorComponent(), Intrepid2::TensorPoints< PointScalar, DeviceType >::getTensorComponent(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView(), and Intrepid2::CubatureTensor< DeviceType, pointValueType, weightValueType >::numCubatures_.

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

References Intrepid2::Parameters::MaxTensorComponents.

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


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