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

Local edge contributions to element vector. More...

#include <lf/uscalfe/uscalfe.h>

Public Types

using Scalar = decltype(SCALAR(0) *mesh::utils::MeshFunctionReturnType< FUNCTOR >(0))
 
using ElemVec = Eigen::Matrix< Scalar, Eigen::Dynamic, 1 >
 

Public Member Functions

 ScalarLoadEdgeVectorProvider (std::shared_ptr< const UniformScalarFESpace< SCALAR > > fe_space, FUNCTOR g, EDGESELECTOR edge_sel=base::PredicateTrue{})
 Constructor, performs precomputations. More...
 
 ScalarLoadEdgeVectorProvider (std::shared_ptr< const UniformScalarFESpace< SCALAR > > fe_space, FUNCTOR g, lf::quad::QuadRule quadrule, EDGESELECTOR edge_sel=base::PredicateTrue{})
 Constructor, performs precomputations. More...
 
virtual bool isActive (const lf::mesh::Entity &cell)
 Default implement: all edges are active. More...
 
ElemVec Eval (const lf::mesh::Entity &edge)
 
virtual ~ScalarLoadEdgeVectorProvider ()=default
 
standard constructors
 ScalarLoadEdgeVectorProvider (const ScalarLoadEdgeVectorProvider &)=delete
 
 ScalarLoadEdgeVectorProvider (ScalarLoadEdgeVectorProvider &&) noexcept=default
 
ScalarLoadEdgeVectorProvideroperator= (const ScalarLoadEdgeVectorProvider &)=delete
 
ScalarLoadEdgeVectorProvideroperator= (ScalarLoadEdgeVectorProvider &&)=delete
 

Private Attributes

FUNCTOR g_
 
EDGESELECTOR edge_sel_
 
PrecomputedScalarReferenceFiniteElement< SCALAR > pfe_
 

Detailed Description

template<class SCALAR, class FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
class lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >

Local edge contributions to element vector.

Template Parameters
SCALARunderlying scalar type, usually double or complex<double>
FUNCTORSCALAR valued MeshFunction which defines the function \( g \)
EDGESELECTORselector type for active edges

The underlying local linear form for an edge \(e\) is

\[ v \mapsto \int_e g(\mathbf{x})\, \overline{v(\mathbf{x})}\,\mathrm{d}S\mathbf{x}\;, \]

where \(g\) is supposed to be a locally continuous source function.

Computations are either based on a quadrature rules supplied by the LehrFEM++ lf::quad::QuadRule module or on a user-supplied quadrature rule.

This class complies with the requirements for the template parameter ELEM_VEC_COMP of the function AssembleVectorLocally().

Logger

This class logs additional information to ScalarLoadEdgeVectorProvider(). See Loggers and Debug output for more information.

Type requirements

Definition at line 779 of file loc_comp_ellbvp.h.

Member Typedef Documentation

◆ ElemVec

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
using lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ElemVec = Eigen::Matrix<Scalar, Eigen::Dynamic, 1>

Definition at line 785 of file loc_comp_ellbvp.h.

◆ Scalar

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
using lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::Scalar = decltype(SCALAR(0) * mesh::utils::MeshFunctionReturnType<FUNCTOR>(0))

Definition at line 783 of file loc_comp_ellbvp.h.

Constructor & Destructor Documentation

◆ ScalarLoadEdgeVectorProvider() [1/4]

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ScalarLoadEdgeVectorProvider ( const ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR > &  )
delete

◆ ScalarLoadEdgeVectorProvider() [2/4]

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ScalarLoadEdgeVectorProvider ( ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR > &&  )
defaultnoexcept

◆ ScalarLoadEdgeVectorProvider() [3/4]

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ScalarLoadEdgeVectorProvider ( std::shared_ptr< const UniformScalarFESpace< SCALAR > >  fe_space,
FUNCTOR  g,
EDGESELECTOR  edge_sel = base::PredicateTrue{} 
)
inline

Constructor, performs precomputations.

Parameters
fe_spaceUniformScalarFESpace which describes the shape functions.
gfunctor object providing edge data
edge_selselector predicate for active edges.

This constructor selects one of LehrFEM++'s built-in quadrature rules with a degree of exactness twice as big as the polynomial degree of the finite element space.

Definition at line 808 of file loc_comp_ellbvp.h.

◆ ScalarLoadEdgeVectorProvider() [4/4]

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ScalarLoadEdgeVectorProvider ( std::shared_ptr< const UniformScalarFESpace< SCALAR > >  fe_space,
FUNCTOR  g,
lf::quad::QuadRule  quadrule,
EDGESELECTOR  edge_sel = base::PredicateTrue{} 
)
inline

Constructor, performs precomputations.

Parameters
fe_spaceUniformScalarFESpace which describes the shape functions.
gfunctor object providing edge data
quadruleuser-supplied quadrature rule object
edge_selselector predicate for active edges.

Definition at line 827 of file loc_comp_ellbvp.h.

◆ ~ScalarLoadEdgeVectorProvider()

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
virtual lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::~ScalarLoadEdgeVectorProvider ( )
virtualdefault

Member Function Documentation

◆ Eval()

template<class SCALAR , class FUNCTOR , class EDGESELECTOR >
ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ElemVec lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::Eval ( const lf::mesh::Entity edge)

◆ isActive()

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
virtual bool lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::isActive ( const lf::mesh::Entity cell)
inlinevirtual

Default implement: all edges are active.

Definition at line 841 of file loc_comp_ellbvp.h.

References lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::edge_sel_.

◆ operator=() [1/2]

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
ScalarLoadEdgeVectorProvider & lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::operator= ( const ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR > &  )
delete

◆ operator=() [2/2]

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
ScalarLoadEdgeVectorProvider & lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::operator= ( ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR > &&  )
delete

Member Data Documentation

◆ edge_sel_

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
EDGESELECTOR lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::edge_sel_
private

◆ g_

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
FUNCTOR lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::g_
private

Definition at line 856 of file loc_comp_ellbvp.h.

◆ pfe_

template<class SCALAR , class FUNCTOR , class EDGESELECTOR = base::PredicateTrue>
PrecomputedScalarReferenceFiniteElement<SCALAR> lf::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::pfe_
private

Definition at line 858 of file loc_comp_ellbvp.h.


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