dune-localfunctions  2.6-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 
20 namespace 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 
80  const Traits::Coefficients& coefficients() const;
82 
86  const Traits::Interpolation& interpolation() const;
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 
151 
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 
232  void evaluateFunction(const Traits::DomainLocal& in,
233  std::vector<Traits::Range>& out) const;
234 
236  void evaluateJacobian(const Traits::DomainLocal& in,
237  std::vector<Traits::Jacobian>& out) const;
238 
240 
243  void evaluate
244  ( const std::array<std::size_t, Traits::dimDomainGlobal>& directions,
245  const Traits::DomainLocal& in,
246  std::vector<Traits::Range>& out) const;
247  };
248 
251  {
253 
257 
259 
268  template<typename F, typename C>
269  void interpolate (const F& f, std::vector<C>& out) const;
270  };
271 
273 
279  {
281  std::size_t size() const;
282 
284  const LocalKey& localKey(std::size_t i) const;
285  };
286 }
287 #endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH
Dune::FiniteElementInterface::interpolation
const Traits::Interpolation & interpolation() const
Extract interpolation of this finite element.
Dune::BasisInterface::Traits::dimRange
static const std::size_t dimRange
Dimension of the range values.
Definition: interface.hh:209
Dune::BasisInterface::evaluateFunction
void evaluateFunction(const Traits::DomainLocal &in, std::vector< Traits::Range > &out) const
Evaluate all shape functions at given position.
Dune::InterpolationInterface::interpolate
void interpolate(const F &f, std::vector< C > &out) const
Determine coefficients interpolating a given function.
Dune::FiniteElementInterface::Traits::Interpolation
ImplementationDefined Interpolation
type of the Interpolation
Definition: interface.hh:54
Dune::BasisInterface::Traits::diffOrder
static const std::size_t diffOrder
maximum number of partial derivatives supported
Definition: interface.hh:223
Dune::BasisInterface::Traits
types of domain and range
Definition: interface.hh:185
Dune::BasisInterface::Traits::RangeField
ImplementationDefined RangeField
Field type of the range.
Definition: interface.hh:207
Dune::BasisInterface::Traits::Jacobian
ImplementationDefined Jacobian
Jacobian properties.
Definition: interface.hh:220
Dune::FiniteElementInterface::FiniteElementInterface
FiniteElementInterface(...)
Construct a finite element.
Dune::CoefficientsInterface::size
std::size_t size() const
number of coefficients
localkey.hh
Dune::FiniteElementInterface::coefficients
const Traits::Coefficients & coefficients() const
Extract coefficients of this finite element.
Dune::BasisInterface::Traits::Range
ImplementationDefined Range
Type used for range values.
Definition: interface.hh:211
Dune::FiniteElementFactoryInterface::make
const FiniteElement make(const Geometry &, const VertexOrder &,...)
create a finite element from a geometry and a vertex ordering
Dune::BasisInterface::Traits::dimDomainLocal
static const std::size_t dimDomainLocal
Dimension of the local coordinate system.
Definition: interface.hh:193
Dune::FiniteElementInterface::Traits
types of component objects
Definition: interface.hh:32
Dune::BasisInterface::evaluateJacobian
void evaluateJacobian(const Traits::DomainLocal &in, std::vector< Traits::Jacobian > &out) const
Evaluate Jacobian of all shape functions at given position.
Dune::BasisInterface::Traits::dimDomainGlobal
static const std::size_t dimDomainGlobal
Dimension of the world coordinate system.
Definition: interface.hh:195
Dune::BasisInterface::Traits::DomainGlobal
ImplementationDefined DomainGlobal
Type used for coordinate vectors in the world domain.
Definition: interface.hh:199
Dune::InterpolationInterface
Interface for global-valued interpolation.
Definition: interface.hh:250
Dune::BasisInterface::evaluate
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.
Dune::FiniteElementInterface::basis
const Traits::Basis & basis() const
Extract basis of this finite element.
Dune::BasisInterface
Interface for global-valued shape functions.
Definition: interface.hh:173
Dune::FiniteElementInterface
Interface for global-valued finite elements.
Definition: interface.hh:23
Dune::InterpolationInterface::Traits
BasisInterface::Traits Traits
Export basis traits.
Definition: interface.hh:256
Dune::FiniteElementFactoryInterface
Factory interface for global-valued finite elements.
Definition: interface.hh:113
Dune::FiniteElementFactoryInterface::FiniteElement
ImplementationDefined FiniteElement
Type of the finite element.
Definition: interface.hh:115
Dune::BasisInterface::Traits::DomainLocal
ImplementationDefined DomainLocal
Type used for coordinate vectors in the local domain.
Definition: interface.hh:197
Dune::BasisInterface::size
std::size_t size() const
Number of shape functions.
Dune::FiniteElementInterface::type
GeometryType type() const
Extract geometry type of this finite element.
Dune::FiniteElementInterface::Traits::Coefficients
ImplementationDefined Coefficients
type of the Coefficients
Definition: interface.hh:47
Dune::BasisInterface::order
std::size_t order() const
Polynomial order of the shape functions for quadrature.
Dune::FiniteElementFactoryInterface::FiniteElementFactoryInterface
FiniteElementFactoryInterface(...)
Construct a finite element factory.
Dune::BasisInterface::Traits::DomainField
ImplementationDefined DomainField
Field type of the domain.
Definition: interface.hh:191
Dune::CoefficientsInterface::localKey
const LocalKey & localKey(std::size_t i) const
get i'th index
Dune::LocalKey
Describe position of one degree of freedom.
Definition: localkey.hh:20
Dune::FiniteElementInterface::Traits::Basis
ImplementationDefined Basis
type of the Basis
Definition: interface.hh:40
Dune
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:15
Dune::CoefficientsInterface
Interface for global-valued coefficients.
Definition: interface.hh:278