dune-localfunctions 3.0-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
15
16namespace Dune
17{
18
21 template<class D, class R, unsigned int k>
23 {
24 public:
30
34 {
35 gt.makeTriangle();
36 }
37
40 Pk2DLocalFiniteElement (int variant) : coefficients(variant)
41 {
42 gt.makeTriangle();
43 }
44
51 Pk2DLocalFiniteElement (const unsigned int vertexmap[3]) : coefficients(vertexmap)
52 {
53 gt.makeTriangle();
54 }
55
58 const typename Traits::LocalBasisType& localBasis () const
59 {
60 return basis;
61 }
62
66 {
67 return coefficients;
68 }
69
73 {
74 return interpolation;
75 }
76
78 unsigned int size () const
79 {
80 return basis.size();
81 }
82
85 GeometryType type () const
86 {
87 return gt;
88 }
89
91 {
92 return new Pk2DLocalFiniteElement(*this);
93 }
94
95 private:
97 Pk2DLocalCoefficients<k> coefficients;
99 GeometryType gt;
100 };
101
103
110 template<class Geometry, class RF, std::size_t k>
112 typedef typename Geometry::ctype DF;
115
116 public:
128
129 private:
130 static const GeometryType gt;
131 static const LocalBasis localBasis;
132 static const LocalInterpolation localInterpolation;
133
134 typename Traits::Basis basis_;
135 typename Traits::Interpolation interpolation_;
136 typename Traits::Coefficients coefficients_;
137
138 public:
140
153 template<class VertexOrder>
154 Pk2DFiniteElement(const Geometry &geometry,
155 const VertexOrder& vertexOrder) :
156 basis_(localBasis, geometry), interpolation_(localInterpolation),
157 coefficients_(vertexOrder.begin(0, 0))
158 { }
159
160 const typename Traits::Basis& basis() const { return basis_; }
161 const typename Traits::Interpolation& interpolation() const
162 { return interpolation_; }
163 const typename Traits::Coefficients& coefficients() const
164 { return coefficients_; }
165 const GeometryType &type() const { return gt; }
166 };
167
168 template<class Geometry, class RF, std::size_t k>
169 const GeometryType
170 Pk2DFiniteElement<Geometry, RF, k>::gt(GeometryType::simplex, 2);
171
172 template<class Geometry, class RF, std::size_t k>
173 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalBasis
174 Pk2DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
175
176 template<class Geometry, class RF, std::size_t k>
177 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalInterpolation
178 Pk2DFiniteElement<Geometry, RF, k>::localInterpolation =
179 LocalInterpolation();
180
182
192 template<class Geometry, class RF, std::size_t k>
195
197
211 template<class VertexOrder>
212 const FiniteElement make(const Geometry& geometry,
213 const VertexOrder& vertexOrder)
214 { return FiniteElement(geometry, vertexOrder); }
215 };
216}
217
218#endif
Definition brezzidouglasmarini1cube2d.hh:14
traits helper struct
Definition localfiniteelementtraits.hh:11
LB LocalBasisType
Definition localfiniteelementtraits.hh:14
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:18
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:22
Traits class for local-to-global basis adaptors.
Definition localtoglobaladaptors.hh:28
Convert a simple scalar local basis into a global basis.
Definition localtoglobaladaptors.hh:65
Convert a local interpolation into a global interpolation.
Definition localtoglobaladaptors.hh:149
Definition pk2d.hh:23
unsigned int size() const
Number of shape functions in this finite element.
Definition pk2d.hh:78
Pk2DLocalFiniteElement(int variant)
Definition pk2d.hh:40
const Traits::LocalInterpolationType & localInterpolation() const
Definition pk2d.hh:72
const Traits::LocalBasisType & localBasis() const
Definition pk2d.hh:58
Pk2DLocalFiniteElement * clone() const
Definition pk2d.hh:90
LocalFiniteElementTraits< Pk2DLocalBasis< D, R, k >, Pk2DLocalCoefficients< k >, Pk2DLocalInterpolation< Pk2DLocalBasis< D, R, k > > > Traits
Definition pk2d.hh:29
GeometryType type() const
Definition pk2d.hh:85
const Traits::LocalCoefficientsType & localCoefficients() const
Definition pk2d.hh:65
Pk2DLocalFiniteElement(const unsigned int vertexmap[3])
Definition pk2d.hh:51
Pk2DLocalFiniteElement()
Definition pk2d.hh:33
Langrange finite element of arbitrary order on triangles.
Definition pk2d.hh:111
Pk2DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
construct a Pk2DFiniteElement
Definition pk2d.hh:154
const Traits::Interpolation & interpolation() const
Definition pk2d.hh:161
const Traits::Basis & basis() const
Definition pk2d.hh:160
const Traits::Coefficients & coefficients() const
Definition pk2d.hh:163
const GeometryType & type() const
Definition pk2d.hh:165
Definition pk2d.hh:120
ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
Definition pk2d.hh:121
Pk2DLocalCoefficients< k > Coefficients
Definition pk2d.hh:126
LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
Definition pk2d.hh:125
Factory for Pk2DFiniteElement objects.
Definition pk2d.hh:193
Pk2DFiniteElement< Geometry, RF, k > FiniteElement
Definition pk2d.hh:194
const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
construct Pk2DFiniteElementFactory
Definition pk2d.hh:212
Lagrange shape functions of arbitrary order on the reference triangle.
Definition pk2dlocalbasis.hh:28
Layout map for P0 elements.
Definition pk2dlocalcoefficients.hh:23
Definition pk2dlocalinterpolation.hh:12