Finite Element, containing the dof layout on a reference element, and various methods for evaluating and transforming the basis.
More...
|
| FiniteElement (const ufc_finite_element &ufc_element) |
| Create finite element from UFC finite element. More...
|
|
| FiniteElement (const FiniteElement &element)=default |
| Copy constructor.
|
|
| FiniteElement (FiniteElement &&element)=default |
| Move constructor.
|
|
virtual | ~FiniteElement ()=default |
| Destructor.
|
|
FiniteElement & | operator= (const FiniteElement &element)=default |
| Copy assignment.
|
|
FiniteElement & | operator= (FiniteElement &&element)=default |
| Move assignment.
|
|
std::string | signature () const noexcept |
| String identifying the finite element. More...
|
|
mesh::CellType | cell_shape () const noexcept |
| Cell shape. More...
|
|
int | space_dimension () const noexcept |
| Dimension of the finite element function space. More...
|
|
int | block_size () const noexcept |
| Block size of the finite element function space. For VectorElements and TensorElements, this is the number of DOFs colocated at each DOF point. For other elements, this is always 1. More...
|
|
int | value_size () const noexcept |
| The value size, e.g. 1 for a scalar function, 2 for a 2D vector. More...
|
|
int | reference_value_size () const noexcept |
| The value size, e.g. 1 for a scalar function, 2 for a 2D vector for the reference element. More...
|
|
int | value_rank () const noexcept |
| Rank of the value space. More...
|
|
int | value_dimension (int i) const |
| Return the dimension of the value space for axis i.
|
|
std::string | family () const noexcept |
| The finite element family. More...
|
|
void | evaluate_reference_basis (Eigen::Tensor< double, 3, Eigen::RowMajor > &values, const Eigen::Ref< const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >> &X) const |
| Evaluate all basis functions at given points in reference cell.
|
|
void | evaluate_reference_basis_derivatives (Eigen::Tensor< double, 4, Eigen::RowMajor > &reference_values, int order, const Eigen::Ref< const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >> &X) const |
| Evaluate all basis function derivatives of given order at given points in reference cell.
|
|
void | transform_reference_basis (Eigen::Tensor< double, 3, Eigen::RowMajor > &values, const Eigen::Tensor< double, 3, Eigen::RowMajor > &reference_values, const Eigen::Ref< const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >> &X, const Eigen::Tensor< double, 3, Eigen::RowMajor > &J, const tcb::span< const double > &detJ, const Eigen::Tensor< double, 3, Eigen::RowMajor > &K) const |
| Push basis functions forward to physical element.
|
|
void | transform_reference_basis_derivatives (Eigen::Tensor< double, 4, Eigen::RowMajor > &values, std::size_t order, const Eigen::Tensor< double, 4, Eigen::RowMajor > &reference_values, const Eigen::Ref< const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >> &X, const Eigen::Tensor< double, 3, Eigen::RowMajor > &J, const tcb::span< const double > &detJ, const Eigen::Tensor< double, 3, Eigen::RowMajor > &K) const |
| Push basis function (derivatives) forward to physical element.
|
|
int | num_sub_elements () const noexcept |
| Get the number of sub elements (for a mixed element) More...
|
|
std::size_t | hash () const noexcept |
| Return simple hash of the signature string.
|
|
std::shared_ptr< const FiniteElement > | extract_sub_element (const std::vector< int > &component) const |
| Extract sub finite element for component.
|
|
bool | interpolation_ident () const noexcept |
| Check if interpolation into the finite element space is an identity operation given the evaluation on an expression at specific points, i.e. the degree-of-freedom are equal to point evaluations. The function will return true for Lagrange elements. More...
|
|
Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > | interpolation_points () const noexcept |
| Points on the reference cell at which an expression need to be evaluated in order to interpolate the expression in the finite element space. For Lagrange elements the points will just be the nodal positions. For other elements the points will typically be the quadrature points used to evaluate moment degrees of freedom. More...
|
|
void | interpolate (const Eigen::Array< ufc_scalar_t, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > &values, std::uint32_t cell_permutation, tcb::span< ufc_scalar_t > dofs) const |
|
bool | needs_permutation_data () const noexcept |
|
void | apply_dof_transformation (double *data, std::uint32_t cell_permutation, int block_size) const |
| Apply permutation to some data. More...
|
|
void | apply_dof_transformation_to_scalar (ufc_scalar_t *data, std::uint32_t cell_permutation, int block_size) const |
| Apply permutation to some data. More...
|
|
Finite Element, containing the dof layout on a reference element, and various methods for evaluating and transforming the basis.