HArD::Core3D
Hybrid Arbitrary Degree::Core 3D - Library to implement 3D schemes with vertex, edge, face and cell polynomials as unknowns
Public Types | Public Member Functions | Static Public Attributes | List of all members
HArDCore3D::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 VectorRd CurlValue
 
typedef double DivergenceValue
 
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...
 
CurlValue curlcurl (size_t i, const VectorRd &x) const
 Evaluate the curl curl of the i-th basis function at point x. We use the formula curl curl = - Laplace + grad div. More...
 
CurlValue curlcurl (size_t i, size_t iqn, const boost::multi_array< typename ScalarFamilyType::HessianValue, 2 > &ancestor_hessian_quad) const
 Evaluate the curl curl of the i-th basis function at a quadrature point iqn, knowing all the values of the Hessian 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 hasCurl = (ScalarFamilyType::hasGradient && N == dimspace)
 
static const bool hasHessian = false
 
static const bool hasCurlCurl = (ScalarFamilyType::hasHessian && N == dimspace)
 

Detailed Description

template<typename ScalarFamilyType, size_t N>
class HArDCore3D::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: