dune-pdelab  2.7-git
Public Types | Public Member Functions | List of all members
Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType > Class Template Reference

Integrate monomials over the reference element. More...

#include <dune/pdelab/finiteelement/l2orthonormal.hh>

Inheritance diagram for Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >:
Inheritance graph

Public Types

enum  { n = Traits::template Size<k,d>::value }
 
typedef Dune::FieldMatrix< FieldType, n, nLowprecMat
 
typedef Dune::FieldMatrix< ComputationFieldType, n, nHighprecMat
 

Public Member Functions

 OrthonormalPolynomialBasis ()
 
template<class LFE >
 OrthonormalPolynomialBasis (const LFE &lfe)
 
int size (int l)
 
template<typename Point , typename Result >
void evaluateFunction (const Point &x, Result &r) const
 
template<typename Point , typename Result >
void evaluateJacobian (const Point &x, Result &r) const
 
template<typename Point , typename Result >
void evaluateFunction (int l, const Point &x, Result &r) const
 
template<typename Point , typename Result >
void evaluateJacobian (int l, const Point &x, Result &r) const
 

Detailed Description

template<typename FieldType, int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
class Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >

Integrate monomials over the reference element.

Computes an L_2 orthonormal basis of P_k on the given reference element. The basis polynomials are stored in a monomial representation. With the matrix coeffs private to this class we have

\[ phi_i(x) = \sum_{j=0}{n_k-1} c[i][j] x^{\alpha_j} \qquad (1) \]

with n_k : the dimension of P_k alpha_j : the exponents of the j-th monomial

The class can be used to evaluate polynomials with any degree l smaller or equal to the compile-time parameter k.

Calculating derivatives. From (1) we have

\begin{align*} \partial_s \phi_i(x) &= \sum_{j=0}{n_k-1} c[i][j] \partial_s x^{(\alpha_{j1},...,\alpha_{jd})} \\ &= \sum_{j=0}{n_k-1} c[i][j] * \alpha_js * x^{\beta_j} \end{align*}

where beta_jr = alpha_jr-1 if r=s and alpha_jr else.

Template Parameters
FieldTypeType to represent coefficients after computation.
kThe polynomial degreee.
dThe space dimension.
GeometryType::BasicTypeThe reference element
ComputationFieldTypeType to do computations with. Might be high precission.
basisTypeType of the polynomial basis. eiter Pk or Qk

Member Typedef Documentation

◆ HighprecMat

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
typedef Dune::FieldMatrix<ComputationFieldType,n,n> Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >::HighprecMat

◆ LowprecMat

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
typedef Dune::FieldMatrix<FieldType,n,n> Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >::LowprecMat

Member Enumeration Documentation

◆ anonymous enum

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
anonymous enum
Enumerator

Constructor & Destructor Documentation

◆ OrthonormalPolynomialBasis() [1/2]

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >::OrthonormalPolynomialBasis ( )
inline

◆ OrthonormalPolynomialBasis() [2/2]

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
template<class LFE >
Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >::OrthonormalPolynomialBasis ( const LFE &  lfe)
inline

Member Function Documentation

◆ evaluateFunction() [1/2]

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
template<typename Point , typename Result >
void Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >::evaluateFunction ( const Point &  x,
Result &  r 
) const
inline

◆ evaluateFunction() [2/2]

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
template<typename Point , typename Result >
void Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >::evaluateFunction ( int  l,
const Point &  x,
Result &  r 
) const
inline

◆ evaluateJacobian() [1/2]

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
template<typename Point , typename Result >
void Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >::evaluateJacobian ( const Point &  x,
Result &  r 
) const
inline

◆ evaluateJacobian() [2/2]

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
template<typename Point , typename Result >
void Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >::evaluateJacobian ( int  l,
const Point &  x,
Result &  r 
) const
inline

◆ size()

template<typename FieldType , int k, int d, Dune::GeometryType::BasicType bt, typename ComputationFieldType = FieldType, BasisType basisType = BasisType::Pk>
int Dune::PB::OrthonormalPolynomialBasis< FieldType, k, d, bt, ComputationFieldType, basisType >::size ( int  l)
inline

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