dune-localfunctions  2.6-git
pk2d.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 #ifndef DUNE_PK2DLOCALFINITEELEMENT_HH
4 #define DUNE_PK2DLOCALFINITEELEMENT_HH
5 
6 #include <cstddef>
7 
8 #include <dune/geometry/type.hh>
9 
12 #include "pk2d/pk2dlocalbasis.hh"
15 
16 namespace Dune
17 {
18 
21  template<class D, class R, unsigned int k>
23  {
24  public:
30 
34  {}
35 
38  Pk2DLocalFiniteElement (int variant) :
39  coefficients(variant)
40  {}
41 
48  Pk2DLocalFiniteElement (const unsigned int vertexmap[3]) :
49  coefficients(vertexmap)
50  {}
51 
54  const typename Traits::LocalBasisType& localBasis () const
55  {
56  return basis;
57  }
58 
62  {
63  return coefficients;
64  }
65 
69  {
70  return interpolation;
71  }
72 
74  unsigned int size () const
75  {
76  return basis.size();
77  }
78 
81  static constexpr GeometryType type ()
82  {
83  return GeometryTypes::triangle;
84  }
85 
86  private:
88  Pk2DLocalCoefficients<k> coefficients;
90  };
91 
93 
100  template<class Geometry, class RF, std::size_t k>
102  typedef typename Geometry::ctype DF;
105 
106  public:
110  struct Traits {
114  typename Basis::Traits
117  };
118 
119  private:
120  static const GeometryType gt;
121  static const LocalBasis localBasis;
122  static const LocalInterpolation localInterpolation;
123 
124  typename Traits::Basis basis_;
125  typename Traits::Interpolation interpolation_;
126  typename Traits::Coefficients coefficients_;
127 
128  public:
130 
143  template<class VertexOrder>
144  Pk2DFiniteElement(const Geometry &geometry,
145  const VertexOrder& vertexOrder) :
146  basis_(localBasis, geometry), interpolation_(localInterpolation),
147  coefficients_(vertexOrder.begin(0, 0))
148  { }
149 
150  const typename Traits::Basis& basis() const { return basis_; }
151  const typename Traits::Interpolation& interpolation() const
152  { return interpolation_; }
153  const typename Traits::Coefficients& coefficients() const
154  { return coefficients_; }
155  const GeometryType &type() const { return gt; }
156  };
157 
158  template<class Geometry, class RF, std::size_t k>
159  const GeometryType
160  Pk2DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
161 
162  template<class Geometry, class RF, std::size_t k>
163  const typename Pk2DFiniteElement<Geometry, RF, k>::LocalBasis
164  Pk2DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
165 
166  template<class Geometry, class RF, std::size_t k>
167  const typename Pk2DFiniteElement<Geometry, RF, k>::LocalInterpolation
168  Pk2DFiniteElement<Geometry, RF, k>::localInterpolation =
169  LocalInterpolation();
170 
172 
182  template<class Geometry, class RF, std::size_t k>
185 
187 
201  template<class VertexOrder>
202  const FiniteElement make(const Geometry& geometry,
203  const VertexOrder& vertexOrder)
204  { return FiniteElement(geometry, vertexOrder); }
205  };
206 }
207 
208 #endif
Dune::Pk2DLocalCoefficients
Layout map for P0 elements.
Definition: pk2dlocalcoefficients.hh:22
Dune::Pk2DFiniteElement::interpolation
const Traits::Interpolation & interpolation() const
Definition: pk2d.hh:151
Dune::Pk2DFiniteElement::Pk2DFiniteElement
Pk2DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
construct a Pk2DFiniteElement
Definition: pk2d.hh:144
Dune::Pk2DLocalFiniteElement::localInterpolation
const Traits::LocalInterpolationType & localInterpolation() const
Definition: pk2d.hh:68
Dune::ScalarLocalToGlobalBasisAdaptor
Convert a simple scalar local basis into a global basis.
Definition: localtoglobaladaptors.hh:63
Dune::LocalFiniteElementTraits
traits helper struct
Definition: localfiniteelementtraits.hh:10
Dune::Pk2DLocalBasis
Lagrange shape functions of arbitrary order on the reference triangle.
Definition: pk2dlocalbasis.hh:27
Dune::Pk2DLocalFiniteElement::Pk2DLocalFiniteElement
Pk2DLocalFiniteElement(int variant)
Definition: pk2d.hh:38
Dune::LocalFiniteElementTraits::LocalInterpolationType
LI LocalInterpolationType
Definition: localfiniteelementtraits.hh:22
Dune::Pk2DFiniteElement::Traits::Coefficients
Pk2DLocalCoefficients< k > Coefficients
Definition: pk2d.hh:116
Dune::Pk2DFiniteElement::Traits::Basis
ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
Definition: pk2d.hh:111
Dune::Pk2DLocalFiniteElement::Pk2DLocalFiniteElement
Pk2DLocalFiniteElement()
Definition: pk2d.hh:33
Dune::Pk2DFiniteElement::basis
const Traits::Basis & basis() const
Definition: pk2d.hh:150
Dune::Pk2DLocalInterpolation
Definition: pk2dlocalinterpolation.hh:11
localtoglobaladaptors.hh
Dune::Pk2DFiniteElement
Langrange finite element of arbitrary order on triangles.
Definition: pk2d.hh:101
pk2dlocalcoefficients.hh
Dune::Pk2DFiniteElement::Traits::Interpolation
LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
Definition: pk2d.hh:115
Dune::LocalFiniteElementTraits::LocalCoefficientsType
LC LocalCoefficientsType
Definition: localfiniteelementtraits.hh:18
Dune::Pk2DFiniteElementFactory::make
const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
construct Pk2DFiniteElementFactory
Definition: pk2d.hh:202
Dune::Pk2DLocalFiniteElement::Pk2DLocalFiniteElement
Pk2DLocalFiniteElement(const unsigned int vertexmap[3])
Definition: pk2d.hh:48
Dune::Pk2DFiniteElement::type
const GeometryType & type() const
Definition: pk2d.hh:155
Dune::Pk2DLocalFiniteElement::Traits
LocalFiniteElementTraits< Pk2DLocalBasis< D, R, k >, Pk2DLocalCoefficients< k >, Pk2DLocalInterpolation< Pk2DLocalBasis< D, R, k > > > Traits
Definition: pk2d.hh:29
Dune::LocalToGlobalInterpolationAdaptor
Convert a local interpolation into a global interpolation.
Definition: localtoglobaladaptors.hh:147
Dune::Pk2DLocalFiniteElement::localBasis
const Traits::LocalBasisType & localBasis() const
Definition: pk2d.hh:54
Dune::Pk2DLocalFiniteElement::size
unsigned int size() const
Number of shape functions in this finite element.
Definition: pk2d.hh:74
Dune::Pk2DLocalFiniteElement::type
static constexpr GeometryType type()
Definition: pk2d.hh:81
localfiniteelementtraits.hh
Dune::Pk2DFiniteElementFactory
Factory for Pk2DFiniteElement objects.
Definition: pk2d.hh:183
Dune::Pk2DLocalFiniteElement
Definition: pk2d.hh:22
Dune::FiniteElementFactoryInterface::FiniteElement
ImplementationDefined FiniteElement
Type of the finite element.
Definition: interface.hh:115
Dune::Pk2DFiniteElementFactory::FiniteElement
Pk2DFiniteElement< Geometry, RF, k > FiniteElement
Definition: pk2d.hh:184
pk2dlocalbasis.hh
Dune::Pk2DFiniteElement::coefficients
const Traits::Coefficients & coefficients() const
Definition: pk2d.hh:153
Dune::Pk2DFiniteElement::Traits
Definition: pk2d.hh:110
Dune::Pk2DLocalFiniteElement::localCoefficients
const Traits::LocalCoefficientsType & localCoefficients() const
Definition: pk2d.hh:61
Dune::LocalFiniteElementTraits::LocalBasisType
LB LocalBasisType
Definition: localfiniteelementtraits.hh:14
Dune
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:15
pk2dlocalinterpolation.hh
Dune::ScalarLocalToGlobalBasisAdaptor::Traits
LocalToGlobalBasisAdaptorTraits< typename LocalBasis::Traits, Geometry::coorddimension > Traits
Definition: localtoglobaladaptors.hh:82