LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
Public Types | Public Member Functions | List of all members
projects::dpg::SubElementVectorProvider< SCALAR > Class Template Referenceabstract

Interface class providing element vectors associated with linear forms of a component of a cartesian/product space. More...

#include </home/nico/bildung/SemVI/thesis/lehrfempp/projects/dpg/sub_element_vector_provider.h>

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

Public Types

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

 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...
 

Detailed Description

template<typename SCALAR>
class projects::dpg::SubElementVectorProvider< SCALAR >

Interface class providing element vectors associated with linear forms of a component of a cartesian/product space.

Template Parameters
SCALARtype for the entries of the elemnt matrices. Ususlly 'double'
Note
This interface class complies with the requirements for the template parameter ELEM_VEC_COMP of the function AssembleVectorLocally().

This class provides sub element vectors used to construct element vectors associated to linear forms \( l: V \rightarrow \mathbb R \) on a product space (c.f. ProductUniformFEDofHandler, ProductUniformFESpace)

\[ V = V_0 \times V_1 \times \dots \times V_{m-1} \]

that have the following structure

\[ l((v_1, \dots v_{m-1})) = \sum_{k} l_k(v_{j_k}) \]

with

\[ l_k : V_{j_k} \rightarrow \mathbb{R} \]

This class allows the evaluation of element vectors associated to such "building block" linear forms \( l_k \) and provides information about the occuring component \( v_{j_k} \). Using this information, the evaluated element vectors are used as sub vectors to construct the element matrix associated to the linear form \( l \) in the class ProductElementVectorProvider.

Definition at line 51 of file sub_element_vector_provider.h.

Member Typedef Documentation

◆ elem_vec_t

template<typename SCALAR >
using projects::dpg::SubElementVectorProvider< SCALAR >::elem_vec_t = Eigen::Matrix<SCALAR, Eigen::Dynamic, 1>

internal type for element vectors

Definition at line 55 of file sub_element_vector_provider.h.

◆ ElemVec

template<typename SCALAR >
using projects::dpg::SubElementVectorProvider< SCALAR >::ElemVec = elem_vec_t

Return type of the Eval() method

Definition at line 57 of file sub_element_vector_provider.h.

◆ size_type

template<typename SCALAR >
using projects::dpg::SubElementVectorProvider< SCALAR >::size_type = lf::uscalfe::size_type

Definition at line 53 of file sub_element_vector_provider.h.

Constructor & Destructor Documentation

◆ SubElementVectorProvider() [1/3]

template<typename SCALAR >
projects::dpg::SubElementVectorProvider< SCALAR >::SubElementVectorProvider ( )
default

◆ ~SubElementVectorProvider()

template<typename SCALAR >
virtual projects::dpg::SubElementVectorProvider< SCALAR >::~SubElementVectorProvider ( )
virtualdefault

◆ SubElementVectorProvider() [2/3]

template<typename SCALAR >
projects::dpg::SubElementVectorProvider< SCALAR >::SubElementVectorProvider ( const SubElementVectorProvider< SCALAR > &  )
delete

◆ SubElementVectorProvider() [3/3]

template<typename SCALAR >
projects::dpg::SubElementVectorProvider< SCALAR >::SubElementVectorProvider ( SubElementVectorProvider< SCALAR > &&  )
defaultnoexcept

Member Function Documentation

◆ Eval()

template<typename SCALAR >
virtual ElemVec projects::dpg::SubElementVectorProvider< SCALAR >::Eval ( const lf::mesh::Entity cell)
pure virtual

main routine for the computation of (sub) element vectors

Parameters
cellrefernce to the cell for which the (sub) element vector should be computed
Returns
a small vector, containing the "building block" element vector.

Implemented in projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >.

◆ isActive()

template<typename SCALAR >
virtual bool projects::dpg::SubElementVectorProvider< SCALAR >::isActive ( const lf::mesh::Entity )
inlinevirtual

All cells are considered active in the default implementation.

This method is meant to be overloaded if assembly should be restricted to a subset of cells.

Definition at line 73 of file sub_element_vector_provider.h.

◆ operator=() [1/2]

template<typename SCALAR >
SubElementVectorProvider & projects::dpg::SubElementVectorProvider< SCALAR >::operator= ( const SubElementVectorProvider< SCALAR > &  )
delete

◆ operator=() [2/2]

template<typename SCALAR >
SubElementVectorProvider & projects::dpg::SubElementVectorProvider< SCALAR >::operator= ( SubElementVectorProvider< SCALAR > &&  )
delete

◆ TestComponent()

template<typename SCALAR >
virtual size_type projects::dpg::SubElementVectorProvider< SCALAR >::TestComponent ( ) const
pure virtual

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

Implemented in projects::dpg::LoadElementVectorProvider< SCALAR, FUNCTOR >.


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