LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
|
Provides the local element matrix for a mesh entity.
An EntityMatrixProvider is an object that provides a local element matrix for a given mesh entity. EntityMatrixProvider's are mostly used together with lf::assemble::AssembleMatrixLocally
to assemble a sparse system matrix.
The type EMP
satisfies the Concept EntityMatrixProvider
if given
emp
an object of type EMP
e
is a lf::mesh::Entity objectSCALAR
is an Eigen supported scalar datatype (e.g. double
)ROWS
is the number of rows of the local element matrix or Eigen::Dynamic
COLS
is the number of columns of the local element matrix or Eigen::Dynamic
the following expressions are valid:
expression | return type | semantics |
---|---|---|
emp.isActive(e) | bool | Defines whether the entity e is taken into account by the assembly routine. |
emp.Eval(e) | Eigen::Matrix<SCALAR, ROWS, COLS> | Returns the local element matrix for mesh entity e . Is only called if emp.isActive(e)==true . |
Eval()
may sacrifice efficiency because it may entail additional allocation of dynamic memory. However, this design was chosen for the sake of readability of the code and in order to avoid nasty memory access errors that often occur when passing a matrix by reference.The concept of a EntityMatrixProvider is widely used in the lf::assemble
and lf::uscalfe
modules:
lf::assemble::AssembleMatrixLocally()
accepts an EntityMatrixProvider
which in turn defines how the (sparse) system matrix is assembled.Examples for classes implementing the concept EntityMatrixProvider are lf::uscalfe::LinearFELaplaceElementMatrix and lf::uscalfe::ReactionDiffusionElementMatrixProvider
Implementing Classes | |
class | lf::fe::DiffusionElementMatrixProvider< SCALAR, DIFF_COEFF > |
Class for computing element matrices for general scalar-valued finite elements and homogeneous 2nd-order elliptic bilinear forms. More... | |
class | lf::fe::MassElementMatrixProvider< SCALAR, REACTION_COEFF > |
Class for local quadrature based computation of element matrix for Lagrangian finite elements and a weighted \(L^2\) inner product. More... | |
class | lf::fe::MassEdgeMatrixProvider< SCALAR, COEFF, EDGESELECTOR > |
Quadrature-based computation of local mass matrix for an edge. More... | |
class | lf::uscalfe::LinearFELaplaceElementMatrix |
Computing the element matrix for the (negative) Laplacian and linear finite elements. More... | |
class | lf::uscalfe::ReactionDiffusionElementMatrixProvider< SCALAR, DIFF_COEFF, REACTION_COEFF > |
Class for local quadrature based computations for Lagrangian finite elements and second-order scalar elliptic BVPs. More... | |
class | lf::uscalfe::MassEdgeMatrixProvider< SCALAR, COEFF, EDGESELECTOR > |
Quadrature-based computation of local mass matrix for an edge. More... | |