HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Public Types | Public Member Functions | Static Public Attributes | List of all members
HArDCore2D::TensorizedVectorFamily< ScalarFamilyType, N > Class Template Reference

Vector family obtained by tensorization of a scalar family. More...

#include <basis.hpp>

Public Types

typedef Eigen::Matrix< double, N, 1 > FunctionValue
 
typedef Eigen::Matrix< double, N, dimspaceGradientValue
 
typedef GradientValue CurlValue
 
typedef double DivergenceValue
 
typedef double RotorValue
 
typedef void HessianValue
 
typedef ScalarFamilyType::GeometricSupport GeometricSupport
 
typedef ScalarFamilyType AncestorType
 

Public Member Functions

 TensorizedVectorFamily (const ScalarFamilyType &scalar_family)
 
size_t dimension () const
 Return the dimension of the family. More...
 
FunctionValue function (size_t i, const VectorRd &x) const
 Evaluate the i-th basis function at point x. More...
 
FunctionValue function (size_t i, size_t iqn, const boost::multi_array< double, 2 > &ancestor_value_quad) const
 Evaluate the i-th basis function at a quadrature point iqn, knowing all the values of ancestor basis functions at the quadrature nodes (provided by eval_quad) More...
 
GradientValue gradient (size_t i, const VectorRd &x) const
 Evaluate the gradient of the i-th basis function at point x. More...
 
GradientValue gradient (size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
 Evaluate the gradient of the i-th basis function at a quadrature point iqn, knowing all the gradients of ancestor basis functions at the quadrature nodes (provided by eval_quad) More...
 
CurlValue curl (size_t i, const VectorRd &x) const
 Evaluate the curl of the i-th basis function at point x. More...
 
CurlValue curl (size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
 Evaluate the curl of the i-th basis function at a quadrature point iqn, knowing all the gradients of ancestor basis functions at the quadrature nodes (provided by eval_quad) More...
 
DivergenceValue divergence (size_t i, const VectorRd &x) const
 Evaluate the divergence of the i-th basis function at point x. More...
 
DivergenceValue divergence (size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
 Evaluate the divergence of the i-th basis function at a quadrature point iqn, knowing all the gradients of ancestor basis functions at the quadrature nodes (provided by eval_quad) More...
 
RotorValue rotor (size_t i, const VectorRd &x) const
 Evaluate the scalar rotor of the i-th basis function at point x. More...
 
RotorValue rotor (size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
 Evaluate the scalar rotor of the i-th basis function at a quadrature point iqn, knowing all the gradients of ancestor basis functions at the quadrature nodes (provided by eval_quad) More...
 
constexpr const ScalarFamilyType & ancestor () const
 Return the ancestor (family that has been tensorized) More...
 
size_t max_degree () const
 Returns the maximum degree of the basis functions. More...
 

Static Public Attributes

constexpr static const TensorRankE tensorRank = Vector
 
constexpr static const bool hasAncestor = true
 
static const bool hasFunction = ScalarFamilyType::hasFunction
 
static const bool hasGradient = ScalarFamilyType::hasGradient
 
static const bool hasDivergence = ( ScalarFamilyType::hasGradient && N==dimspace )
 
static const bool hasRotor = ( ScalarFamilyType::hasGradient && N==dimspace )
 
static const bool hasCurl = ( ScalarFamilyType::hasGradient && N==dimspace )
 
static const bool hasHessian = false
 

Detailed Description

template<typename ScalarFamilyType, size_t N>
class HArDCore2D::TensorizedVectorFamily< ScalarFamilyType, N >

Vector family obtained by tensorization of a scalar family.

The tensorization is done the following way: if \((f_1,...,f_r)\) is the family of scalar functions, the tensorized family of rank N is given by (where all vectors are columns of size N):

\(\left(\begin{array}{c}f_1\\0\\\vdots\\0\end{array}\right)\); \(\left(\begin{array}{c}f_2\\0\\\vdots\\0\end{array}\right)\);...; \(\left(\begin{array}{c}f_r\\0\\\vdots\\0\end{array}\right)\); \(\left(\begin{array}{c}0\\f_1\\0\\\vdots\\0\end{array}\right)\); \(\left(\begin{array}{c}0\\f_2\\0\\\vdots\\0\end{array}\right)\);...; \(\left(\begin{array}{c}0\\f_r\\0\\\vdots\\0\end{array}\right)\);...; \(\left(\begin{array}{c}0\\\vdots\\0\\f_1\end{array}\right)\);...; \(\left(\begin{array}{c}0\\\vdots\\0\\f_r\end{array}\right)\)

The gradient values are therefore matrices of size N*r, where the gradients of the scalar functions are put in rows:

\(\left(\begin{array}{c}(\nabla f_1)^t\\0\\\vdots\\0\end{array}\right)\); \(\left(\begin{array}{c}(\nabla f_2)^t\\0\\\vdots\\0\end{array}\right)\);...; \(\left(\begin{array}{c}(\nabla f_r)^t\\0\\\vdots\\0\end{array}\right)\); \(\left(\begin{array}{c}0\\(\nabla f_1)^t\\0\\\vdots\\0\end{array}\right)\); \(\left(\begin{array}{c}0\\(\nabla f_2)^t\\0\\\vdots\\0\end{array}\right)\);...; \(\left(\begin{array}{c}0\\(\nabla f_r)^t\\0\\\vdots\\0\end{array}\right)\);...; \(\left(\begin{array}{c}0\\\vdots\\0\\(\nabla f_1)^t\end{array}\right)\);...; \(\left(\begin{array}{c}0\\\vdots\\0\\(\nabla f_r)^t\end{array}\right)\)


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