dune-localfunctions 3.0-git
interface.hh
Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=4 sw=2 sts=2:
3
4#ifndef DUNE_LOCALFUNCTIONS_INTERFACE_HH
5#define DUNE_LOCALFUNCTIONS_INTERFACE_HH
6
7#ifndef HEADERCHECK
8#error This header exists for documentation purposes only and should never be included directly.
9#endif
10
11#include <array>
12#include <cstddef>
13#include <vector>
14
15
16#include <dune/geometry/type.hh>
17
19
20namespace Dune {
21
24 {
25 struct ImplementationDefined;
26
27 public:
29
32 struct Traits
33 {
35
40 typedef ImplementationDefined Basis;
42
47 typedef ImplementationDefined Coefficients;
49
54 typedef ImplementationDefined Interpolation;
55 };
56
58
68
70
74 const Traits::Basis& basis() const;
76
82
88 GeometryType type() const;
89 };
90
92
112 template<class Geometry, class VertexOrder>
114 {
115 struct ImplementationDefined;
116
117 public:
119
124 typedef ImplementationDefined FiniteElement;
125
127
131
152
154 const FiniteElement make(const Geometry&, const VertexOrder&, ...);
156 const FiniteElement make(const Geometry&, ...);
158 const FiniteElement make(const VertexOrder&, ...);
160
164 const FiniteElement make(const GeometryType&, ...);
166 const FiniteElement make(...);
167
169
170 };
171
174 {
175 struct ImplementationDefined;
176 enum { implementationDefined };
177
178 public:
180
185 struct Traits
186 {
189
191 typedef ImplementationDefined DomainField;
193 static const std::size_t dimDomainLocal = implementationDefined;
195 static const std::size_t dimDomainGlobal = implementationDefined;
197 typedef ImplementationDefined DomainLocal;
199 typedef ImplementationDefined DomainGlobal;
200
202
205
207 typedef ImplementationDefined RangeField;
209 static const std::size_t dimRange = implementationDefined;
211 typedef ImplementationDefined Range;
212
214
216
220 typedef ImplementationDefined Jacobian;
221
223 static const std::size_t diffOrder = implementationDefined;
224 };
225
227 std::size_t size () const;
229 std::size_t order () const;
230
233 std::vector<Traits::Range>& out) const;
234
236
240 std::vector<Traits::Jacobian>& out) const;
241
243
247 ( const std::array<std::size_t, Traits::dimDomainGlobal>& directions,
248 const Traits::DomainLocal& in,
249 std::vector<Traits::Range>& out) const;
250 };
251
254 {
256
260
262
271 template<typename F, typename C>
272 void interpolate (const F& f, std::vector<C>& out) const;
273 };
274
276
282 {
284 std::size_t size() const;
285
287 const LocalKey& localKey(std::size_t i) const;
288 };
289}
290#endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH
Definition brezzidouglasmarini1cube2d.hh:14
Interface for global-valued finite elements.
Definition interface.hh:24
GeometryType type() const
Extract geometry type of this finite element.
const Traits::Basis & basis() const
Extract basis of this finite element.
const Traits::Coefficients & coefficients() const
Extract coefficients of this finite element.
const Traits::Interpolation & interpolation() const
Extract interpolation of this finite element.
FiniteElementInterface(const FiniteElementInterface &)
Finite elements are CopyConstructible.
FiniteElementInterface(...)
Construct a finite element.
types of component objects
Definition interface.hh:33
ImplementationDefined Basis
type of the Basis
Definition interface.hh:40
ImplementationDefined Coefficients
type of the Coefficients
Definition interface.hh:47
ImplementationDefined Interpolation
type of the Interpolation
Definition interface.hh:54
Factory interface for global-valued finite elements.
Definition interface.hh:114
const FiniteElement make(const VertexOrder &,...)
create a finite element from a vertex ordering
const FiniteElement make(...)
create a finite element
const FiniteElement make(const GeometryType &,...)
create a finite element from a geometry type
FiniteElementFactoryInterface(...)
Construct a finite element factory.
ImplementationDefined FiniteElement
Type of the finite element.
Definition interface.hh:124
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
Interface for global-valued shape functions.
Definition interface.hh:174
void evaluateFunction(const Traits::DomainLocal &in, std::vector< Traits::Range > &out) const
Evaluate all shape functions at given position.
void evaluate(const std::array< std::size_t, Traits::dimDomainGlobal > &directions, const Traits::DomainLocal &in, std::vector< Traits::Range > &out) const
Evaluate derivatives of all shape functions at given position.
std::size_t order() const
Polynomial order of the shape functions for quadrature.
void evaluateJacobian(const Traits::DomainLocal &in, std::vector< Traits::Jacobian > &out) const
Evaluate Jacobian of all shape functions at given position.
std::size_t size() const
Number of shape functions.
types of domain and range
Definition interface.hh:186
ImplementationDefined RangeField
Field type of the range.
Definition interface.hh:207
ImplementationDefined DomainField
Field type of the domain.
Definition interface.hh:191
ImplementationDefined DomainGlobal
Type used for coordinate vectors in the world domain.
Definition interface.hh:199
static const std::size_t dimDomainGlobal
Dimension of the world coordinate system.
Definition interface.hh:195
ImplementationDefined Jacobian
Jacobian properties.
Definition interface.hh:220
ImplementationDefined Range
Type used for range values.
Definition interface.hh:211
static const std::size_t diffOrder
maximum number of partial derivatives supported
Definition interface.hh:223
static const std::size_t dimRange
Dimension of the range values.
Definition interface.hh:209
ImplementationDefined DomainLocal
Type used for coordinate vectors in the local domain.
Definition interface.hh:197
static const std::size_t dimDomainLocal
Dimension of the local coordinate system.
Definition interface.hh:193
Interface for global-valued interpolation.
Definition interface.hh:254
BasisInterface::Traits Traits
Export basis traits.
Definition interface.hh:259
void interpolate(const F &f, std::vector< C > &out) const
Determine coefficients interpolating a given function.
Interface for global-valued coefficients.
Definition interface.hh:282
const LocalKey & localKey(std::size_t i) const
get i'th index
std::size_t size() const
number of coefficients
Describe position of one degree of freedom.
Definition localkey.hh:21