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

Class providing element vectors associated with linear forms on cartesian/product spaces. More...

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

Public Types

using elem_vec_t = typename SubElementVectorProvider< SCALAR >::elem_vec_t
 internal type for element vectors More...
 
using ElemVec = typename SubElementVectorProvider< SCALAR >::ElemVec
 

Public Member Functions

 ProductElementVectorProvider (const ProductElementVectorProvider &)=delete
 Standard constructors. More...
 
 ProductElementVectorProvider (ProductElementVectorProvider &&) noexcept=default
 
ProductElementVectorProvideroperator= (const ProductElementVectorProvider &)=delete
 
ProductElementVectorProvideroperator= (ProductElementVectorProvider &&)=delete
 
 ProductElementVectorProvider (std::shared_ptr< ProductUniformFESpace< SCALAR > > fe_space_test, std::vector< std::shared_ptr< SubElementVectorProvider< SCALAR > > > subproviders)
 main constructor More...
 
virtual bool isActive (const lf::mesh::Entity &)
 All cells are considered active in the default implementation. More...
 
ElemVec Eval (const lf::mesh::Entity &cell)
 main routine for the computation of element vectors More...
 
virtual ~ProductElementVectorProvider ()=default
 virtual destructor More...
 

Private Attributes

std::shared_ptr< ProductUniformFESpace< SCALAR > > fe_space_test_
 
std::vector< std::shared_ptr< SubElementVectorProvider< SCALAR > > > subproviders_
 

Detailed Description

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

Class providing element vectors associated with linear forms on cartesian/product spaces.

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

This class provides element vectors associated to linar 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 has 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} \]

The evaluation of element vectors for such "building block" linear forms \( l_k \) is performed by means of the SubElementVectorProvider interface.

This class takes a vector of such SubElementVectorProviders in its constructor and builds the element vector for the bilinear form \( l \) by stacking together the sub vectors (using the rules of local dof ordering specified in ProductUniformFEDofHandler).

Definition at line 59 of file product_element_vector_provider.h.

Member Typedef Documentation

◆ elem_vec_t

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

internal type for element vectors

Definition at line 62 of file product_element_vector_provider.h.

◆ ElemVec

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

Return type of the Eval() method

Definition at line 64 of file product_element_vector_provider.h.

Constructor & Destructor Documentation

◆ ProductElementVectorProvider() [1/3]

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

Standard constructors.

◆ ProductElementVectorProvider() [2/3]

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

◆ ProductElementVectorProvider() [3/3]

template<typename SCALAR >
projects::dpg::ProductElementVectorProvider< SCALAR >::ProductElementVectorProvider ( std::shared_ptr< ProductUniformFESpace< SCALAR > >  fe_space_test,
std::vector< std::shared_ptr< SubElementVectorProvider< SCALAR > > >  subproviders 
)
inline

main constructor

Parameters
fe_space_testthe product test finite element space \( V \) of the linear form
subprovidersa vector of SubElementVectorProviders, that evaluate element vectors associated to the "building block" liinear forms \( l_k \)

Definition at line 83 of file product_element_vector_provider.h.

◆ ~ProductElementVectorProvider()

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

virtual destructor

Member Function Documentation

◆ Eval()

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

main routine for the computation of element vectors

Parameters
cellrefernce to the cell for which the element vector should be computed
Returns
a small vector, containing the element vector.

Definition at line 125 of file product_element_vector_provider.h.

◆ isActive()

template<typename SCALAR >
virtual bool projects::dpg::ProductElementVectorProvider< 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 96 of file product_element_vector_provider.h.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

Member Data Documentation

◆ fe_space_test_

template<typename SCALAR >
std::shared_ptr<ProductUniformFESpace<SCALAR> > projects::dpg::ProductElementVectorProvider< SCALAR >::fe_space_test_
private

shared pointer to the test (product) finite element space

Definition at line 111 of file product_element_vector_provider.h.

◆ subproviders_

template<typename SCALAR >
std::vector<std::shared_ptr<SubElementVectorProvider<SCALAR> > > projects::dpg::ProductElementVectorProvider< SCALAR >::subproviders_
private

vector of pointers to providers that provide "building block" element vectors

Definition at line 114 of file product_element_vector_provider.h.


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