Dune Core Modules (2.10.0)

Dune::FiniteElementFactoryInterface< Geometry, VertexOrder > Class Template Reference

Factory interface for global-valued finite elements. More...

#include <dune/localfunctions/common/interface.hh>

Public Types

typedef ImplementationDefined FiniteElement
 Type of the finite element. More...
 

Public Member Functions

 FiniteElementFactoryInterface (...)
 Construct a finite element factory. More...
 
Finite element creation methods

Each finite element factory implementation must provide at least one of these methods. The signatures may be extended by additional parameters, but the parameters that are specified here should be given first and in the order specified here.

The return value of these functions is suitable for binding to a const reference – it will either be an rvalue (in which case binding to a const reference will create a copy whose lifetime is the same as the reference itself), or it will be an lvalue (in which case the factory must guarantee that it will be valid until the factory is destroyed or something else happens that explicitly invalidates all created finite elements).

In any case, since global-valued finite element objects are copy-constructible, it is also possible to use the returned value to initialize a finite element object instead of a const reference.

const FiniteElement make (const Geometry &, const VertexOrder &,...)
 create a finite element from a geometry and a vertex ordering
 
const FiniteElement make (const Geometry &,...)
 create a finite element from a geometry
 
const FiniteElement make (const VertexOrder &,...)
 create a finite element from a vertex ordering
 
const FiniteElement make (const GeometryType &,...)
 create a finite element from a geometry type More...
 
const FiniteElement make (...)
 create a finite element
 

Detailed Description

template<class Geometry, class VertexOrder>
class Dune::FiniteElementFactoryInterface< Geometry, VertexOrder >

Factory interface for global-valued finite elements.

The main purpose of the factory class is to provide a concept for caching. Take for instance a global-valued finite element that wraps a local finite element. The local finite element will typically have very few variants, and the global-valued finite element will just apply a geometric transformation to the derivatives. The wrapped local finite elements can be stored inside the factory and any global-valued finite elements created by the factory just contain references or pointers. This way the local finite elements don't need to be created anew for each global-valued finite element.

The other purpose is to semi-standardize the interface used to actually create finite elements. "Semi" because the information needed to create an actual global-valued finite element will vary between finite element types. There are however certain types of information that are needed by a larger subset of all available finite elements, so it makes sense to define a common encoding for these types of information. On the other hand this information is often expensive to obtain, so it makes sense to only provide it when it is actually needed.

Member Typedef Documentation

◆ FiniteElement

template<class Geometry , class VertexOrder >
typedef ImplementationDefined Dune::FiniteElementFactoryInterface< Geometry, VertexOrder >::FiniteElement

Type of the finite element.

Should be an implementation of FiniteElementInterface

Note
May be an inline class instead of a typedef.

Constructor & Destructor Documentation

◆ FiniteElementFactoryInterface()

template<class Geometry , class VertexOrder >
Dune::FiniteElementFactoryInterface< Geometry, VertexOrder >::FiniteElementFactoryInterface (   ...)

Construct a finite element factory.

Note
The arguments of the constructor are implementation specific.

Member Function Documentation

◆ make()

template<class Geometry , class VertexOrder >
const FiniteElement Dune::FiniteElementFactoryInterface< Geometry, VertexOrder >::make ( const GeometryType ,
  ... 
)

create a finite element from a geometry type

Note
This signature should only be used when only the geometry type but not the full geometry or vertex ordering are needed.

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Dec 27, 23:30, 2024)