LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
|
Element vector provider for Whitney one forms. More...
Public Member Functions | |
WhitneyOneVectorProvider (const std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Vector3d &)> &f) | |
Constructor. More... | |
Eigen::Matrix< SCALAR, Eigen::Dynamic, 1 > | Eval (const lf::mesh::Entity &entity) const |
Compute the element vector for a given triangle off the mesh. More... | |
bool | isActive (const lf::mesh::Entity &entity) const |
All entities are regarded as active. More... | |
Private Attributes | |
const std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Vector3d &)> | f_ |
Element vector provider for Whitney one forms.
The linear form is given by
\[ (\mathbf{v}) \mapsto \int\limits_K \mathbf{f} \cdot \mathbf{v} \,\mathrm{d}x, \quad \mathbf{f}, \mathbf{v} \in \mathbf{H}(\text{curl}_{\Gamma}, \partial\mathbf{S}) \]
The element vector provider works in a 3 dimensional world with 2 dimensional triangular cells.
Basis functions are the Whitney 1-forms, surface edge elements for \(v\)
The whitney 1-forms, surface edge elements are associated with edges and defined as
\[ \mathbf{b}_i = s_i (\lambda_i \mathbf{grad}_{\Gamma}(\lambda_{i+1}) - \lambda_{i+1} \mathbf{grad}_{\Gamma}(\lambda_{i})) \]
with \( \lambda_i \) barycentric basis functions and \( s_i \) is a sign of the function based on the relative orientation of the edge in the mesh.
Definition at line 56 of file whitney_one_vector_provider.h.
|
inline |
Constructor.
SCALAR | representing the scalar field, on which the codomain is based on |
f | a tangential vector field functor required to be defined on the mesh |
Definition at line 67 of file whitney_one_vector_provider.h.
|
inline |
Compute the element vector for a given triangle off the mesh.
entity | The mesh triangle to compute the element vector for |
Definition at line 79 of file whitney_one_vector_provider.h.
References lf::uscalfe::FeLagrangeO1Tria< SCALAR >::EvalReferenceShapeFunctions(), projects::hldo_sphere::assemble::WhitneyOneVectorProvider< SCALAR >::f_, lf::mesh::Entity::Geometry(), lf::geometry::Geometry::Global(), lf::uscalfe::FeLagrangeO1Tria< SCALAR >::GradientsReferenceShapeFunctions(), lf::base::RefEl::kTria(), lf::quad::make_TriaQR_EdgeMidpointRule(), lf::base::RefEl::NodeCoords(), lf::mesh::Entity::RefEl(), lf::mesh::Entity::RelativeOrientations(), and lf::mesh::to_sign().
|
inline |
All entities are regarded as active.
Definition at line 153 of file whitney_one_vector_provider.h.
|
private |
Definition at line 156 of file whitney_one_vector_provider.h.
Referenced by projects::hldo_sphere::assemble::WhitneyOneVectorProvider< SCALAR >::Eval().