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

Interface class providing sub element matrices associated with bilinear forms between components of Cartesian product spaces. More...

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

Inheritance diagram for projects::dpg::SubElementMatrixProvider< SCALAR >:
projects::dpg::ConvectionElementMatrixProvider< SCALAR, CONVECTION_COEFF_1, CONVECTION_COEFF_2 > projects::dpg::DiffusionElementMatrixProvider< SCALAR, DIFF_COEFF > projects::dpg::FluxElementMatrixProvider< SCALAR, DIFF_COEFF > projects::dpg::ReactionElementMatrixProvider< SCALAR, REACTION_COEFF > projects::dpg::TraceElementMatrixProvider< SCALAR, COEFF >

Public Types

using size_type = lf::uscalfe::size_type
 
using elem_mat_t = Eigen::Matrix< SCALAR, Eigen::Dynamic, Eigen::Dynamic >
 internal type for element matrices More...
 
using ElemMat = elem_mat_t
 

Public Member Functions

 SubElementMatrixProvider ()=default
 
virtual ~SubElementMatrixProvider ()=default
 
 SubElementMatrixProvider (const SubElementMatrixProvider &)=delete
 standard constructors More...
 
 SubElementMatrixProvider (SubElementMatrixProvider &&) noexcept=default
 
SubElementMatrixProvideroperator= (const SubElementMatrixProvider &)=delete
 
SubElementMatrixProvideroperator= (SubElementMatrixProvider &&)=delete
 
virtual bool isActive (const lf::mesh::Entity &)
 All cells are considered active in the default implementation. More...
 
virtual ElemMat Eval (const lf::mesh::Entity &cell)=0
 main routine for the computation of (sub) element matrices More...
 
virtual size_type TrialComponent () const =0
 returns the index of the trial space component \( u_{i_k} \) which is the trial space for the bilinear form \( b_k \) 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 bilinear form \( b_k \) More...
 

Detailed Description

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

Interface class providing sub element matrices associated with bilinear forms between components of Cartesian product spaces.

Template Parameters
SCALARtype for the entries of the element matrices. Ususally 'double'
Note
This interface class complies with the type requirements for the template argument ENTITY_MATRIX_PROVIDER of the function lf::assemble::AssembleMatrixLocally().

This class provides sub element matrices used to construct element matrices associated to bilinear forms \( b: U \times V \rightarrow \mathbb{R} \) between two product spaces (c.f. ProductUniformFEDofHandler, ProductUniformFESpace)

\[ U = U_0 \times U_1 \times \dots \times U_{n-1} \]

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

that have the following structure

\[ b((u_1, \dots, u_{n-1}),(v_1, \dots v_{m-1})) = \sum_{k} b_k(u_{i_k},v_{j_k}) \]

with

\[ b_k : U_{i_k} \times V_{j_k} \rightarrow \mathbb{R} \]

This class allows the evaluation of element matries associated to such "building block" bilinear forms \( b_k \) and provides information about the occuring components \( u_{i_k}, v_{j_k} \). Using this information, the evaluated element matrices are used as sub matrices to construct the element matrices associated to the bilinear form \( b \) in the class ProductElementMatrixProvider.

Definition at line 55 of file sub_element_matrix_provider.h.

Member Typedef Documentation

◆ elem_mat_t

template<typename SCALAR >
using projects::dpg::SubElementMatrixProvider< SCALAR >::elem_mat_t = Eigen::Matrix<SCALAR, Eigen::Dynamic, Eigen::Dynamic>

internal type for element matrices

Definition at line 59 of file sub_element_matrix_provider.h.

◆ ElemMat

template<typename SCALAR >
using projects::dpg::SubElementMatrixProvider< SCALAR >::ElemMat = elem_mat_t

Return type of the Eval() method

Definition at line 61 of file sub_element_matrix_provider.h.

◆ size_type

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

Definition at line 57 of file sub_element_matrix_provider.h.

Constructor & Destructor Documentation

◆ SubElementMatrixProvider() [1/3]

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

◆ ~SubElementMatrixProvider()

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

◆ SubElementMatrixProvider() [2/3]

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

standard constructors

◆ SubElementMatrixProvider() [3/3]

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

Member Function Documentation

◆ Eval()

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

◆ isActive()

template<typename SCALAR >
virtual bool projects::dpg::SubElementMatrixProvider< 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 78 of file sub_element_matrix_provider.h.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ TestComponent()

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

◆ TrialComponent()

template<typename SCALAR >
virtual size_type projects::dpg::SubElementMatrixProvider< SCALAR >::TrialComponent ( ) const
pure virtual

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