HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
|
Matrix family obtained from a scalar family. More...
#include <basis.hpp>
Public Types | |
typedef Eigen::Matrix< double, N, N > | FunctionValue |
typedef MatrixGradient< N > | GradientValue |
typedef VectorRd | CurlValue |
typedef Eigen::Matrix< double, N, 1 > | DivergenceValue |
typedef void | RotorValue |
typedef void | HessianValue |
typedef ScalarFamilyType::GeometricSupport | GeometricSupport |
typedef ScalarFamilyType | AncestorType |
Public Member Functions | |
MatrixFamily (const ScalarFamilyType &scalar_family) | |
size_t | dimension () const |
Return the dimension of the family. | |
FunctionValue | function (size_t i, const VectorRd &x) const |
Evaluate the i-th basis function at point x. | |
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) | |
DivergenceValue | divergence (size_t i, const VectorRd &x) const |
Evaluate the divergence of the i-th basis function at point x. | |
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) | |
GradientValue | gradient (size_t i, const VectorRd &x) const |
Evaluate the gradient of the i-th basis function at point x. | |
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) | |
const ScalarFamilyType & | ancestor () const |
Return the ancestor (family that has been tensorized) | |
const size_t | matrixSize () const |
Return the dimension of the matrices in the family. | |
const Eigen::MatrixXd | transposeOperator () const |
Return the transpose operator, the rN^2 square matrix that to a given vector of coefficients on the Matrix family associates the vector of coefficients corresponding to the transpose. | |
const Eigen::MatrixXd | symmetriseOperator () const |
Return the symmetrisation operator, the rN^2 square matrix that to a given vector of coefficients on the Matrix family associates the vector of coefficients corresponding to the symmetrised matrix. | |
const Eigen::MatrixXd | symmetricBasis () const |
Returns the matrix that can be used, in a Family of this MatrixBasis, to create a basis of the subspace of symmetric matrices. | |
Static Public Attributes | |
static constexpr const TensorRankE | tensorRank = Matrix |
static constexpr const bool | hasAncestor = true |
static const bool | hasFunction = ScalarFamilyType::hasFunction |
static const bool | hasGradient = true |
static const bool | hasDivergence = ( ScalarFamilyType::hasGradient && N==dimspace ) |
static const bool | hasRotor = false |
static const bool | hasCurl = false |
static const bool | hasHessian = false |
Matrix family obtained from a scalar family.
The transformation into matrix is done the following way: if \((f_1,\ldots,f_r)\) is the family of scalar functions, and \((E_1,\ldots,E_{N^2})\) is the canonical basis of the space of NxN matrices, the matrix family is \((f_1E_1,f_2E_1,\ldots,f_rE_1,f_1E_2,\ldots...)\). The divergence is taken along each row, and \(E_m\) has 1 at position (mN, m/N)