LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
Loading...
Searching...
No Matches
lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR > Class Template Referencefinal

Local edge contributions to element vector. More...

#include <lf/fe/fe.h>

Public Types

using Scalar
 
using ElemVec = Eigen::Matrix<Scalar, Eigen::Dynamic, 1>
 

Public Member Functions

 ScalarLoadEdgeVectorProvider (std::shared_ptr< const ScalarFESpace< SCALAR > > fe_space, FUNCTOR g, EDGESELECTOR edge_sel=base::PredicateTrue{})
 Constructor.
 
bool isActive (const lf::mesh::Entity &cell) const
 all edges are active
 
ElemVec Eval (const lf::mesh::Entity &edge) const
 
 ~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_
 
std::shared_ptr< const ScalarFESpace< SCALAR > > fe_space_
 
quad::QuadRuleCache qr_cache_
 

Detailed Description

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
class lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >

Local edge contributions to element vector.

Template Parameters
SCALARunderlying scalar type of the ScalarFESpace, 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 based on quadrature rules supplied by the LehrFEM++ lf::quad::make_QuadRule() method.

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

Type requirements

  • The EDGESELECTOR type must provide
    bool operator(const lf::mesh::Entity &edge) const
    Interface class representing a topological entity in a cellular complex
    Definition entity.h:42
    which returns true, if the edge is to be included in assembly.

Definition at line 730 of file loc_comp_ellbvp.h.

Member Typedef Documentation

◆ ElemVec

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

Definition at line 734 of file loc_comp_ellbvp.h.

◆ Scalar

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
using lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::Scalar
Initial value:
internal::VectorElement_t< internal::MeshFunctionReturnType_t< R > > MeshFunctionReturnType
Determine the type of objects returned by a MeshFunction.

Definition at line 732 of file loc_comp_ellbvp.h.

Constructor & Destructor Documentation

◆ ScalarLoadEdgeVectorProvider() [1/3]

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ScalarLoadEdgeVectorProvider ( const ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR > & )
delete

◆ ScalarLoadEdgeVectorProvider() [2/3]

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ScalarLoadEdgeVectorProvider ( ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR > && )
defaultnoexcept

◆ ScalarLoadEdgeVectorProvider() [3/3]

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ScalarLoadEdgeVectorProvider ( std::shared_ptr< const ScalarFESpace< SCALAR > > fe_space,
FUNCTOR g,
EDGESELECTOR edge_sel = base::PredicateTrue{} )
inline

Constructor.

Parameters
fe_spaceScalarFESpace that supplied the finite elements.
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 757 of file loc_comp_ellbvp.h.

References ScalarLoadEdgeVectorProvider().

◆ ~ScalarLoadEdgeVectorProvider()

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::~ScalarLoadEdgeVectorProvider ( )
default

Member Function Documentation

◆ Eval()

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR>
ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::ElemVec lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::Eval ( const lf::mesh::Entity & edge) const

◆ isActive()

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
bool lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::isActive ( const lf::mesh::Entity & cell) const
inline

all edges are active

Definition at line 763 of file loc_comp_ellbvp.h.

References edge_sel_.

◆ operator=() [1/2]

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
ScalarLoadEdgeVectorProvider & lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::operator= ( const ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR > & )
delete

◆ operator=() [2/2]

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
ScalarLoadEdgeVectorProvider & lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::operator= ( ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR > && )
delete

Member Data Documentation

◆ edge_sel_

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
EDGESELECTOR lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::edge_sel_
private

Definition at line 777 of file loc_comp_ellbvp.h.

Referenced by isActive().

◆ fe_space_

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
std::shared_ptr<const ScalarFESpace<SCALAR> > lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::fe_space_
private

Definition at line 778 of file loc_comp_ellbvp.h.

Referenced by Eval().

◆ g_

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
FUNCTOR lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::g_
private

Definition at line 776 of file loc_comp_ellbvp.h.

Referenced by Eval().

◆ qr_cache_

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
quad::QuadRuleCache lf::fe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::qr_cache_
private

Definition at line 780 of file loc_comp_ellbvp.h.

Referenced by Eval().


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