Dune Core Modules (2.7.0)

interface.hh
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 
18 #include <dune/localfunctions/common/localkey.hh>
19 
20 namespace Dune {
21 
24  {
25  struct ImplementationDefined;
26 
27  public:
29 
32  struct Traits
33  {
35 
42 
49 
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 
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 
193  enum {
196  };
199 
201 
204 
208  enum {
211  };
214 
216 
218 
223  };
224 
226  std::size_t size () const;
228  std::size_t order () const;
229 
232  std::vector<Traits::RangeType>& out) const;
233 
236  std::vector<Traits::Jacobian>& out) const;
237 
243  void partial(const std::array<unsigned int,Traits::dimDomain>& order,
244  const typename Traits::DomainType& in,
245  std::vector<typename Traits::RangeType>& out) const;
246  };
247 
250  {
252 
256 
258 
267  template<typename F, typename C>
268  void interpolate (const F& f, std::vector<C>& out) const;
269  };
270 
272 
278  {
280  std::size_t size() const;
281 
283  const LocalKey& localKey(std::size_t i) const;
284  };
285 }
286 #endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH
Interface for global-valued shape functions.
Definition: interface.hh:174
void partial(const std::array< unsigned int, Traits::dimDomain > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of any order of all shape functions.
void evaluateFunction(const Traits::DomainType &in, std::vector< Traits::RangeType > &out) const
Evaluate all shape functions at given position.
std::size_t order() const
Polynomial order of the shape functions for quadrature.
void evaluateJacobian(const Traits::DomainType &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.
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:115
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 finite elements.
Definition: interface.hh:24
GeometryType type() const
Extract geometry type of this finite element.
const Traits::Coefficients & coefficients() const
Extract coefficients of this finite element.
const Traits::Basis & basis() const
Extract basis of this finite element.
FiniteElementInterface(const FiniteElementInterface &)
Finite elements are CopyConstructible.
FiniteElementInterface(...)
Construct a finite element.
const Traits::Interpolation & interpolation() const
Extract interpolation of this finite element.
Unique label for each type of entities that can occur in DUNE grids.
Definition: type.hh:279
Wrapper class for geometries.
Definition: geometry.hh:67
Describe position of one degree of freedom.
Definition: localkey.hh:21
@ implementationDefined
Dummy integral value used for documentation purposes.
Definition: documentation.hh:53
Dune namespace.
Definition: alignedallocator.hh:14
types of domain and range
Definition: interface.hh:186
ImplementationDefined Jacobian
Jacobian properties.
Definition: interface.hh:222
ImplementationDefined DomainType
Type used for coordinate vectors in the domain.
Definition: interface.hh:198
@ dimRange
dimension of the range
Definition: interface.hh:210
ImplementationDefined RangeFieldType
Field type of the range.
Definition: interface.hh:206
ImplementationDefined DomainFieldType
Field type of the domain.
Definition: interface.hh:191
ImplementationDefined RangeType
Type used for range values.
Definition: interface.hh:213
@ dimDomain
dimension of the domain
Definition: interface.hh:195
Interface for global-valued coefficients.
Definition: interface.hh:278
const LocalKey & localKey(std::size_t i) const
get i'th index
std::size_t size() const
number of coefficients
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
Dummy struct used for documentation purposes.
Definition: documentation.hh:40
Interface for global-valued interpolation.
Definition: interface.hh:250
BasisInterface::Traits Traits
Export basis traits.
Definition: interface.hh:255
void interpolate(const F &f, std::vector< C > &out) const
Determine coefficients interpolating a given function.
A unique label for each type of element that can occur in a grid.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 16, 22:29, 2024)