LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
Public Types | Public Member Functions | Private Attributes | List of all members
projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR > Class Template Reference

Class for local quadrature based computations of sub vectors corresponding to load vectors. More...

#include <projects/dpg/loc_comp_dpg.h>

Inheritance diagram for projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >:
projects::dpg::SubElementVectorProvider< SCALAR >

Public Types

using elem_vec_t = typename SubElementVectorProvider< SCALAR >::elem_vec_t
 inherited types for element vectors More...
 
using ElemVec = typename SubElementVectorProvider< SCALAR >::ElemVec
 
- Public Types inherited from projects::dpg::SubElementVectorProvider< SCALAR >
using size_type = lf::uscalfe::size_type
 
using elem_vec_t = Eigen::Matrix< SCALAR, Eigen::Dynamic, 1 >
 internal type for element vectors More...
 
using ElemVec = elem_vec_t
 

Public Member Functions

 LoadElementVectorProvider (const LoadElementVectorProvider &)=delete
 
 LoadElementVectorProvider (LoadElementVectorProvider &&) noexcept=default
 
LoadElementVectorProvideroperator= (const LoadElementVectorProvider &)=delete
 
LoadElementVectorProvideroperator= (LoadElementVectorProvider &&)=delete
 
 LoadElementVectorProvider (std::shared_ptr< ProductUniformFESpace< SCALAR > > fe_space_test, size_type test_component, FUNCTOR f)
 Constructor: performs cell-independent precomputations. More...
 
ElemVec Eval (const lf::mesh::Entity &cell) override
 main routine for the computation of element vectors More...
 
size_type TestComponent () const override
 returns the index of the test space component \( v_{j_k} \) which is the test space for the linear form \( l_k \) More...
 
 ~LoadElementVectorProvider () override=default
 
- Public Member Functions inherited from projects::dpg::SubElementVectorProvider< SCALAR >
 SubElementVectorProvider ()=default
 
virtual ~SubElementVectorProvider ()=default
 
 SubElementVectorProvider (const SubElementVectorProvider &)=delete
 
 SubElementVectorProvider (SubElementVectorProvider &&) noexcept=default
 
SubElementVectorProvideroperator= (const SubElementVectorProvider &)=delete
 
SubElementVectorProvideroperator= (SubElementVectorProvider &&)=delete
 
virtual bool isActive (const lf::mesh::Entity &)
 All cells are considered active in the default implementation. More...
 
virtual ElemVec Eval (const lf::mesh::Entity &cell)=0
 main routine for the computation of (sub) element vectors More...
 
virtual size_type TestComponent () const =0
 returns the index of the test space component \( v_{j_k} \) which is the test space for the linear form \( l_k \) More...
 

Private Attributes

FUNCTOR f_
 functor providing the source function More...
 
std::array< lf::uscalfe::PrecomputedScalarReferenceFiniteElement< SCALAR >, 5 > fe_precomp_test_
 array containing precomputed information for the test space: fe_precomp_test_[i] contains the precomputed reference finite element for \( v\) on ref_el i. More...
 
size_type test_component_
 index of test component v More...
 

Detailed Description

template<typename SCALAR, typename FUNCTOR>
class projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >

Class for local quadrature based computations of sub vectors corresponding to load vectors.

Template Parameters
SCALARtype for the entries of the element vectors. Must be a fiel type such as 'double'.
FUNCTORa MeshFunction that defines the source function \( f \). It should be scalar-valued.
Note
This class complies with the type requirements for the template argument 'ELEM_VEC_COMP' of the function lf::assemble::AssembleVectorLocally89

The load vector corresponds to the local linear form

\[ v \mapsto \int_K f(\mathbf{x})\,v\,\mathrm{d}\mathbf{x}\;, \]

with source function \( f \). \(v \) is a component of the test space.

Template parameter requirement

Definition at line 1330 of file loc_comp_dpg.h.

Member Typedef Documentation

◆ elem_vec_t

template<typename SCALAR , typename FUNCTOR >
using projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::elem_vec_t = typename SubElementVectorProvider<SCALAR>::elem_vec_t

inherited types for element vectors

Definition at line 1335 of file loc_comp_dpg.h.

◆ ElemVec

template<typename SCALAR , typename FUNCTOR >
using projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::ElemVec = typename SubElementVectorProvider<SCALAR>::ElemVec

Definition at line 1336 of file loc_comp_dpg.h.

Constructor & Destructor Documentation

◆ LoadElementVectorProvider() [1/3]

template<typename SCALAR , typename FUNCTOR >
projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::LoadElementVectorProvider ( const LoadElementVectorProvider< SCALAR, FUNCTOR > &  )
delete

◆ LoadElementVectorProvider() [2/3]

template<typename SCALAR , typename FUNCTOR >
projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::LoadElementVectorProvider ( LoadElementVectorProvider< SCALAR, FUNCTOR > &&  )
defaultnoexcept

◆ LoadElementVectorProvider() [3/3]

template<typename SCALAR , typename FUNCTOR >
projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::LoadElementVectorProvider ( std::shared_ptr< ProductUniformFESpace< SCALAR > >  fe_space_test,
size_type  test_component,
FUNCTOR  f 
)

Constructor: performs cell-independent precomputations.

Parameters
fe_space_testcollection of specifications for the fe space
test_componentIndex of the test space component \(v\)
fmesh function for the scalar valued source function

This constructor uses local quadrature rules with twice the degree of exactnes of the polynomial degree of \( v\)

Definition at line 1393 of file loc_comp_dpg.h.

References projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::fe_precomp_test_, lf::base::RefEl::kQuad(), lf::base::RefEl::kTria(), lf::quad::make_QuadRule(), and projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::test_component_.

◆ ~LoadElementVectorProvider()

template<typename SCALAR , typename FUNCTOR >
projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::~LoadElementVectorProvider ( )
overridedefault

Member Function Documentation

◆ Eval()

template<typename SCALAR , typename FUNCTOR >
LoadElementVectorProvider< SCALAR, FUNCTOR >::ElemVec projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::Eval ( const lf::mesh::Entity cell)
overridevirtual

main routine for the computation of element vectors

Parameters
cellreference to a (triangular or quadrilateral) cell for which the element vector should be computed
Returns
small column vector containing the element vector.

Implements projects::dpg::SubElementVectorProvider< SCALAR >.

Definition at line 1417 of file loc_comp_dpg.h.

References lf::geometry::Geometry::DimLocal(), lf::mesh::Entity::Geometry(), lf::base::RefEl::Id(), lf::geometry::Geometry::IntegrationElement(), and lf::mesh::Entity::RefEl().

◆ operator=() [1/2]

template<typename SCALAR , typename FUNCTOR >
LoadElementVectorProvider & projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::operator= ( const LoadElementVectorProvider< SCALAR, FUNCTOR > &  )
delete

◆ operator=() [2/2]

template<typename SCALAR , typename FUNCTOR >
LoadElementVectorProvider & projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::operator= ( LoadElementVectorProvider< SCALAR, FUNCTOR > &&  )
delete

◆ TestComponent()

template<typename SCALAR , typename FUNCTOR >
size_type projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::TestComponent ( ) const
inlineoverridevirtual

returns the index of the test space component \( v_{j_k} \) which is the test space for the linear form \( l_k \)

Implements projects::dpg::SubElementVectorProvider< SCALAR >.

Definition at line 1366 of file loc_comp_dpg.h.

References projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::test_component_.

Member Data Documentation

◆ f_

template<typename SCALAR , typename FUNCTOR >
FUNCTOR projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::f_
private

functor providing the source function

Definition at line 1374 of file loc_comp_dpg.h.

◆ fe_precomp_test_

template<typename SCALAR , typename FUNCTOR >
std::array<lf::uscalfe::PrecomputedScalarReferenceFiniteElement<SCALAR>, 5> projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::fe_precomp_test_
private

array containing precomputed information for the test space: fe_precomp_test_[i] contains the precomputed reference finite element for \( v\) on ref_el i.

Definition at line 1379 of file loc_comp_dpg.h.

Referenced by projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::LoadElementVectorProvider().

◆ test_component_

template<typename SCALAR , typename FUNCTOR >
size_type projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >::test_component_
private

The documentation for this class was generated from the following file: