Intrepid2
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType > Class Template Reference

Defines direct cubature (integration) rules in Intrepid. More...

#include <Intrepid2_CubatureDirect.hpp>

Inheritance diagram for Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >:
Intrepid2::Cubature< DeviceType, pointValueType, weightValueType > Intrepid2::CubatureDirectLineGauss< DeviceType, pointValueType, weightValueType > Intrepid2::CubatureDirectLineGaussJacobi20< DeviceType, pointValueType, weightValueType > Intrepid2::CubatureDirectTetDefault< DeviceType, pointValueType, weightValueType > Intrepid2::CubatureDirectTriDefault< DeviceType, pointValueType, weightValueType > Intrepid2::CubaturePolylib< DeviceType, pointValueType, weightValueType >

Classes

struct  CubatureData
 Cubature data is defined on exec space and deep-copied when an object is created. More...
 
struct  CubatureDataStatic
 Cubature data is defined on the host space and is static. More...
 

Public Types

typedef Cubature< DeviceType, pointValueType, weightValueType >::PointViewType PointViewType
 
typedef Cubature< DeviceType, pointValueType, weightValueType >::weightViewType weightViewType
 
- 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

virtual void getCubature (PointViewType cubPoints, weightViewType cubWeights) const override
 Returns cubature points and weights (return arrays must be pre-sized/pre-allocated).
 
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 max. degree of polynomials that are integrated exactly. The return vector has size 1.
 
 CubatureDirect (const CubatureDirect &b)
 
CubatureDirectoperator= (const CubatureDirect &b)
 
 CubatureDirect (const ordinal_type degree, const ordinal_type dimension)
 
- Public Member Functions inherited from Intrepid2::Cubature< DeviceType, pointValueType, weightValueType >
virtual TensorPointDataType allocateCubaturePoints () const
 Returns a points container appropriate for passing to getCubature().
 
virtual TensorWeightDataType allocateCubatureWeights () const
 Returns a weight container appropriate for passing to getCubature().
 
virtual void getCubature (PointViewType, weightViewType, PointViewType) const
 Returns cubature points and weights on physical cells (return arrays must be pre-sized/pre-allocated).
 
virtual void getCubature (const TensorPointDataType &tensorCubPoints, const TensorWeightDataType &tensorCubWeights) const
 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().
 

Protected Member Functions

template<typename cubPointValueType , class ... cubPointProperties, typename cubWeightValueType , class ... cubWeightProperties>
void getCubatureFromData (Kokkos::DynRankView< cubPointValueType, cubPointProperties... > cubPoints, Kokkos::DynRankView< cubWeightValueType, cubWeightProperties... > cubWeights, const CubatureData cubData) const
 Returns cubature points and weights.
 

Protected Attributes

ordinal_type degree_
 The degree of polynomials that are integrated exactly by this cubature rule.
 
ordinal_type dimension_
 Dimension of integration domain.
 
CubatureData cubatureData_
 Cubature data on device.
 

Detailed Description

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

Defines direct cubature (integration) rules in Intrepid.

Cubature template (rule) consists of cubature points and cubature weights. Intrepid provides a small collection of frequently used cubature rule templates for FEM reconstructions on simplices (edge, tri, tet) and pyramid cells.

For quad, hex, and triprism rules, see tensor-product rules defined in the class CubatureTensor, and its derived classes.

Cubature rules for simplices and the pyramid are stored in the cubature_data_ array.

All templates are defined on a reference cell and can be mapped to physical space cells by the methods available in the MultiCell class.

Definition at line 76 of file Intrepid2_CubatureDirect.hpp.

Member Typedef Documentation

◆ PointViewType

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
typedef Cubature<DeviceType,pointValueType,weightValueType>::PointViewType Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::PointViewType

Definition at line 181 of file Intrepid2_CubatureDirect.hpp.

◆ weightViewType

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
typedef Cubature<DeviceType,pointValueType,weightValueType>::weightViewType Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::weightViewType

Definition at line 182 of file Intrepid2_CubatureDirect.hpp.

Constructor & Destructor Documentation

◆ CubatureDirect() [1/3]

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

Definition at line 226 of file Intrepid2_CubatureDirect.hpp.

◆ CubatureDirect() [2/3]

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

Definition at line 231 of file Intrepid2_CubatureDirect.hpp.

◆ CubatureDirect() [3/3]

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::CubatureDirect ( const ordinal_type degree,
const ordinal_type dimension )
inline

Definition at line 243 of file Intrepid2_CubatureDirect.hpp.

Member Function Documentation

◆ getAccuracy()

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

Returns max. degree of polynomials that are integrated exactly. The return vector has size 1.

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

Definition at line 222 of file Intrepid2_CubatureDirect.hpp.

References Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::degree_.

◆ getCubature()

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

◆ getCubatureFromData()

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
template<typename cubPointValueType , class ... cubPointProperties, typename cubWeightValueType , class ... cubWeightProperties>
void Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::getCubatureFromData ( Kokkos::DynRankView< cubPointValueType, cubPointProperties... > cubPoints,
Kokkos::DynRankView< cubWeightValueType, cubWeightProperties... > cubWeights,
const CubatureData cubData ) const
inlineprotected

◆ getDimension()

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

◆ getName()

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

◆ getNumPoints()

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

◆ operator=()

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

Definition at line 236 of file Intrepid2_CubatureDirect.hpp.

Member Data Documentation

◆ cubatureData_

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
CubatureData Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::cubatureData_
protected

◆ degree_

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
ordinal_type Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::degree_
protected

◆ dimension_

template<typename DeviceType = void, typename pointValueType = double, typename weightValueType = double>
ordinal_type Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::dimension_
protected

Dimension of integration domain.

Definition at line 124 of file Intrepid2_CubatureDirect.hpp.

Referenced by Intrepid2::CubatureDirect< DeviceType, pointValueType, weightValueType >::getDimension().


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