LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
sub_element_vector_provider.h
1#ifndef PROJECTS_DPG_SUB_ELEMENT_VECTOR_PROVIDER
2#define PROJECTS_DPG_SUB_ELEMENT_VECTOR_PROVIDER
3
13#include <lf/mesh/mesh.h>
14#include <lf/uscalfe/uscalfe.h>
15
16#include "dpg.h"
17
18namespace projects::dpg {
19
50template <typename SCALAR>
52 public:
55 using elem_vec_t = Eigen::Matrix<SCALAR, Eigen::Dynamic, 1>;
58
60 virtual ~SubElementVectorProvider() = default;
61
66
73 virtual bool isActive(const lf::mesh::Entity& /*cell*/) { return true; }
74
81 virtual ElemVec Eval(const lf::mesh::Entity& cell) = 0;
82
87 [[nodiscard]] virtual size_type TestComponent() const = 0;
88};
89
90} // namespace projects::dpg
91
92#endif // PROJECTS_DPG_SUB_ELEMENT_VECTOR_PROVIDER
Interface class representing a topological entity in a cellular complex
Definition: entity.h:39
Interface class providing element vectors associated with linear forms of a component of a cartesian/...
SubElementVectorProvider(const SubElementVectorProvider &)=delete
virtual bool isActive(const lf::mesh::Entity &)
All cells are considered active in the default implementation.
SubElementVectorProvider(SubElementVectorProvider &&) noexcept=default
virtual ElemVec Eval(const lf::mesh::Entity &cell)=0
main routine for the computation of (sub) element vectors
Eigen::Matrix< SCALAR, Eigen::Dynamic, 1 > elem_vec_t
internal type for element vectors
virtual size_type TestComponent() const =0
returns the index of the test space component which is the test space for the linear form
lf::assemble::size_type size_type
Definition: lagr_fe.h:30
Definition: assemble.h:30
Contains functionality for the implementation of DPG methods.
Definition: primal_dpg.h:33