Intrepid
Public Member Functions | Private Attributes | Static Private Attributes | List of all members
Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight > Class Template Reference

Utilizes cubature (integration) rules contained in the library Polylib (Spencer Sherwin, Aeronautics, Imperial College London) within Intrepid. More...

#include <Intrepid_CubaturePolylib.hpp>

Inheritance diagram for Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >:
Intrepid::Cubature< Scalar, ArrayPoint, ArrayWeight >

Public Member Functions

 CubaturePolylib (int degree=0, EIntrepidPLPoly pt_type=PL_GAUSS, Scalar alpha=0.0, Scalar beta=0.0)
 Constructor.
 
void getCubature (ArrayPoint &cubPoints, ArrayWeight &cubWeights) const
 Returns cubature points and weights (return arrays must be pre-sized/pre-allocated).
 
void getCubature (ArrayPoint &cubPoints, ArrayWeight &cubWeights, ArrayPoint &cellCoords) const
 Returns cubature points and weights. Method for physical space cubature, throws an exception.
 
int getNumPoints () const
 Returns the number of cubature points.
 
virtual int getDimension () const
 Returns dimension of integration domain.
 
void getAccuracy (std::vector< int > &accuracy) const
 Returns max. degree of polynomials that are integrated exactly. The return vector has size 1.
 
const char * getName () const
 Returns cubature name.
 
virtual void getCubature (ArrayPoint &cubPoints, ArrayWeight &cubWeights) const =0
 Returns cubature points and weights (return arrays must be pre-sized/pre-allocated).
 
virtual void getCubature (ArrayPoint &cubPoints, ArrayWeight &cubWeights, ArrayPoint &cellVertices) const =0
 Returns cubature points and weights on physical cells (return arrays must be pre-sized/pre-allocated).
 
virtual int getNumPoints () const =0
 Returns the number of cubature points.
 
virtual int getDimension () const =0
 Returns dimension of the integration domain.
 
virtual void getAccuracy (std::vector< int > &accuracy) const =0
 Returns algebraic accuracy (e.g. max. degree of polynomial that is integrated exactly). For tensor-product or sparse rules, algebraic accuracy for each coordinate direction is returned.
 

Private Attributes

int degree_
 The degree of polynomials that are integrated exactly by this cubature rule.
 
int dimension_
 Dimension of integration domain.
 
EIntrepidPLPoly poly_type_
 Type of integration points.
 
Scalar alpha_
 Jacobi parameter alpha.
 
Scalar beta_
 Jacobi parameter beta.
 

Static Private Attributes

static const char * cubature_name_ = "INTREPID_CUBATURE_POLYLIB"
 Cubature name.
 

Detailed Description

template<class Scalar, class ArrayPoint = FieldContainer<Scalar>, class ArrayWeight = ArrayPoint>
class Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >

Utilizes cubature (integration) rules contained in the library Polylib (Spencer Sherwin, Aeronautics, Imperial College London) within Intrepid.

They are based on zeros of Jacobi polynomials, e.g. Legendre (alpha=beta=0, default), Chebyshev (alpha=beta=-0.5), etc. They are given on the interval [-1,1] and are optimal with respect to the following requirements, yielding 4 subclasses:

Definition at line 74 of file Intrepid_CubaturePolylib.hpp.

Constructor & Destructor Documentation

◆ ~CubaturePolylib()

template<class Scalar , class ArrayPoint = FieldContainer<Scalar>, class ArrayWeight = ArrayPoint>
Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::~CubaturePolylib ( )
inline

Definition at line 105 of file Intrepid_CubaturePolylib.hpp.

◆ CubaturePolylib()

template<class Scalar , class ArrayPoint , class ArrayWeight >
Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::CubaturePolylib ( int  degree = 0,
EIntrepidPLPoly  pt_type = PL_GAUSS,
Scalar  alpha = 0.0,
Scalar  beta = 0.0 
)

Constructor.

Parameters
degree[in] - The degree of polynomials that are integrated exactly by this cubature rule. Default: 0.

Definition at line 52 of file Intrepid_CubaturePolylibDef.hpp.

Member Function Documentation

◆ getAccuracy()

template<class Scalar , class ArrayPoint , class ArrayWeight >
void Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getAccuracy ( std::vector< int > &  accuracy) const
virtual

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

Implements Intrepid::Cubature< Scalar, ArrayPoint, ArrayWeight >.

Definition at line 107 of file Intrepid_CubaturePolylibDef.hpp.

◆ getCubature() [1/2]

template<class Scalar , class ArrayPoint , class ArrayWeight >
void Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getCubature ( ArrayPoint &  cubPoints,
ArrayWeight &  cubWeights 
) const
virtual

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.

Implements Intrepid::Cubature< Scalar, ArrayPoint, ArrayWeight >.

Definition at line 119 of file Intrepid_CubaturePolylibDef.hpp.

References Intrepid::IntrepidPolylib::zwgj(), Intrepid::IntrepidPolylib::zwglj(), Intrepid::IntrepidPolylib::zwgrjm(), and Intrepid::IntrepidPolylib::zwgrjp().

◆ getCubature() [2/2]

template<class Scalar , class ArrayPoint , class ArrayWeight >
void Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getCubature ( ArrayPoint &  cubPoints,
ArrayWeight &  cubWeights,
ArrayPoint &  cellCoords 
) const
virtual

Returns cubature points and weights. Method for physical space cubature, throws an exception.

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

Implements Intrepid::Cubature< Scalar, ArrayPoint, ArrayWeight >.

Definition at line 161 of file Intrepid_CubaturePolylibDef.hpp.

◆ getDimension()

template<class Scalar , class ArrayPoint , class ArrayWeight >
int Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getDimension
virtual

Returns dimension of integration domain.

Implements Intrepid::Cubature< Scalar, ArrayPoint, ArrayWeight >.

Definition at line 73 of file Intrepid_CubaturePolylibDef.hpp.

◆ getName()

template<class Scalar , class ArrayPoint , class ArrayWeight >
const char * Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getName

Returns cubature name.

Definition at line 66 of file Intrepid_CubaturePolylibDef.hpp.

◆ getNumPoints()

template<class Scalar , class ArrayPoint , class ArrayWeight >
int Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getNumPoints
virtual

Returns the number of cubature points.

Implements Intrepid::Cubature< Scalar, ArrayPoint, ArrayWeight >.

Definition at line 80 of file Intrepid_CubaturePolylibDef.hpp.

Member Data Documentation

◆ alpha_

template<class Scalar , class ArrayPoint = FieldContainer<Scalar>, class ArrayWeight = ArrayPoint>
Scalar Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::alpha_
private

Jacobi parameter alpha.

Definition at line 92 of file Intrepid_CubaturePolylib.hpp.

◆ beta_

template<class Scalar , class ArrayPoint = FieldContainer<Scalar>, class ArrayWeight = ArrayPoint>
Scalar Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::beta_
private

Jacobi parameter beta.

Definition at line 96 of file Intrepid_CubaturePolylib.hpp.

◆ cubature_name_

template<class Scalar , class ArrayPoint , class ArrayWeight >
const char * Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::cubature_name_ = "INTREPID_CUBATURE_POLYLIB"
staticprivate

Cubature name.

Definition at line 100 of file Intrepid_CubaturePolylib.hpp.

◆ degree_

template<class Scalar , class ArrayPoint = FieldContainer<Scalar>, class ArrayWeight = ArrayPoint>
int Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::degree_
private

The degree of polynomials that are integrated exactly by this cubature rule.

Definition at line 80 of file Intrepid_CubaturePolylib.hpp.

◆ dimension_

template<class Scalar , class ArrayPoint = FieldContainer<Scalar>, class ArrayWeight = ArrayPoint>
int Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::dimension_
private

Dimension of integration domain.

Definition at line 84 of file Intrepid_CubaturePolylib.hpp.

◆ poly_type_

template<class Scalar , class ArrayPoint = FieldContainer<Scalar>, class ArrayWeight = ArrayPoint>
EIntrepidPLPoly Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::poly_type_
private

Type of integration points.

Definition at line 88 of file Intrepid_CubaturePolylib.hpp.


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