LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
Loading...
Searching...
No Matches
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
 
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.
 
 ScalarLoadEdgeVectorProvider (std::shared_ptr< const UniformScalarFESpace< SCALAR > > fe_space, FUNCTOR g, lf::quad::QuadRule quadrule, EDGESELECTOR edge_sel=base::PredicateTrue{})
 Constructor, performs precomputations.
 
virtual bool isActive (const lf::mesh::Entity &cell)
 Default implement: all edges are active.
 
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<base::Scalar SCALAR, mesh::utils::MeshFunction 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 786 of file loc_comp_ellbvp.h.

Member Typedef Documentation

◆ ElemVec

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

Definition at line 791 of file loc_comp_ellbvp.h.

◆ Scalar

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

Definition at line 788 of file loc_comp_ellbvp.h.

Constructor & Destructor Documentation

◆ ScalarLoadEdgeVectorProvider() [1/4]

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

◆ ScalarLoadEdgeVectorProvider() [2/4]

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

◆ ScalarLoadEdgeVectorProvider() [3/4]

template<base::Scalar SCALAR, mesh::utils::MeshFunction 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 814 of file loc_comp_ellbvp.h.

◆ ScalarLoadEdgeVectorProvider() [4/4]

template<base::Scalar SCALAR, mesh::utils::MeshFunction 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 833 of file loc_comp_ellbvp.h.

◆ ~ScalarLoadEdgeVectorProvider()

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

Member Function Documentation

◆ Eval()

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

◆ isActive()

template<base::Scalar SCALAR, mesh::utils::MeshFunction 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 847 of file loc_comp_ellbvp.h.

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

◆ operator=() [1/2]

template<base::Scalar SCALAR, mesh::utils::MeshFunction FUNCTOR, class EDGESELECTOR = base::PredicateTrue>
ScalarLoadEdgeVectorProvider & lf::uscalfe::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::uscalfe::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::uscalfe::ScalarLoadEdgeVectorProvider< SCALAR, FUNCTOR, EDGESELECTOR >::edge_sel_
private

◆ g_

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

Definition at line 862 of file loc_comp_ellbvp.h.

◆ pfe_

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

Definition at line 864 of file loc_comp_ellbvp.h.


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