DOLFIN-X
DOLFIN-X C++ interface
|
Finite Element, containing the dof layout on a reference element, and various methods for evaluating and transforming the basis. More...
#include <FiniteElement.h>
Public Member Functions | |
FiniteElement (const ufc_finite_element &ufc_element) | |
Create finite element from UFC finite element. More... | |
virtual | ~FiniteElement ()=default |
Destructor. | |
std::string | signature () const |
String identifying the finite element. More... | |
mesh::CellType | cell_shape () const |
Cell shape. More... | |
int | space_dimension () const |
Dimension of the finite element function space. More... | |
int | block_size () const |
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 |
The value size, e.g. 1 for a scalar function, 2 for a 2D vector. More... | |
int | reference_value_size () const |
The value size, e.g. 1 for a scalar function, 2 for a 2D vector for the reference element. More... | |
int | value_rank () const |
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 |
The finite element family. More... | |
void | evaluate_reference_basis (Eigen::Tensor< double, 3, Eigen::RowMajor > &reference_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 Eigen::Ref< const Eigen::Array< double, Eigen::Dynamic, 1 >> &detJ, const Eigen::Tensor< double, 3, Eigen::RowMajor > &K, const std::uint32_t permutation_info) 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 Eigen::Ref< const Eigen::Array< double, Eigen::Dynamic, 1 >> &detJ, const Eigen::Tensor< double, 3, Eigen::RowMajor > &K, const std::uint32_t permutation_info) const |
Push basis function (derivatives) forward to physical element. | |
const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > & | dof_reference_coordinates () const |
Tabulate the reference coordinates of all dofs on an element. More... | |
void | transform_values (ufc_scalar_t *reference_values, const Eigen::Ref< const Eigen::Array< ufc_scalar_t, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >> &physical_values, const Eigen::Ref< const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor >> &coordinate_dofs) const |
Map values of field from physical to reference space which has been evaluated at points given by dof_reference_coordinates() | |
int | num_sub_elements () const |
Return the number of sub elements (for a mixed element) | |
std::size_t | hash () const |
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. | |
Finite Element, containing the dof layout on a reference element, and various methods for evaluating and transforming the basis.
|
explicit |
Create finite element from UFC finite element.
[in] | ufc_element | UFC finite element |
int FiniteElement::block_size | ( | ) | const |
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.
mesh::CellType FiniteElement::cell_shape | ( | ) | const |
Cell shape.
const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > & FiniteElement::dof_reference_coordinates | ( | ) | const |
Tabulate the reference coordinates of all dofs on an element.
std::string FiniteElement::family | ( | ) | const |
The finite element family.
int FiniteElement::reference_value_size | ( | ) | const |
The value size, e.g. 1 for a scalar function, 2 for a 2D vector for the reference element.
std::string FiniteElement::signature | ( | ) | const |
String identifying the finite element.
int FiniteElement::space_dimension | ( | ) | const |
Dimension of the finite element function space.
int FiniteElement::value_rank | ( | ) | const |
Rank of the value space.
int FiniteElement::value_size | ( | ) | const |
The value size, e.g. 1 for a scalar function, 2 for a 2D vector.