dune-localfunctions  2.11
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 // SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
4 // SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
5 #ifndef DUNE_PK2DLOCALFINITEELEMENT_HH
6 #define DUNE_PK2DLOCALFINITEELEMENT_HH
7 
8 #include <cstddef>
9 
10 #include <dune/geometry/type.hh>
11 
15 
16 namespace Dune
17 {
18 
19 
21 
28  template<class Geometry, class RF, std::size_t k>
30  typedef typename Geometry::ctype DF;
31  typedef Impl::LagrangeSimplexLocalBasis<DF,RF,2,k> LocalBasis;
32  typedef Impl::LagrangeSimplexLocalInterpolation<LocalBasis> LocalInterpolation;
33 
34  public:
38  struct Traits {
41  LocalInterpolation,
42  typename Basis::Traits
44  typedef Impl::LagrangeSimplexLocalCoefficients<2,k> Coefficients;
45  };
46 
47  private:
48  static const GeometryType gt;
49  static const LocalBasis localBasis;
50  static const LocalInterpolation localInterpolation;
51 
52  typename Traits::Basis basis_;
53  typename Traits::Interpolation interpolation_;
54  typename Traits::Coefficients coefficients_;
55 
56  public:
58 
71  template<class VertexOrder>
72  Pk2DFiniteElement(const Geometry &geometry,
73  const VertexOrder& vertexOrder) :
74  basis_(localBasis, geometry), interpolation_(localInterpolation),
75  coefficients_(vertexOrder.begin(0, 0))
76  { }
77 
78  const typename Traits::Basis& basis() const { return basis_; }
79  const typename Traits::Interpolation& interpolation() const
80  { return interpolation_; }
81  const typename Traits::Coefficients& coefficients() const
82  { return coefficients_; }
83  const GeometryType &type() const { return gt; }
84  };
85 
86  template<class Geometry, class RF, std::size_t k>
87  const GeometryType
88  Pk2DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
89 
90  template<class Geometry, class RF, std::size_t k>
91  const typename Pk2DFiniteElement<Geometry, RF, k>::LocalBasis
92  Pk2DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
93 
94  template<class Geometry, class RF, std::size_t k>
95  const typename Pk2DFiniteElement<Geometry, RF, k>::LocalInterpolation
96  Pk2DFiniteElement<Geometry, RF, k>::localInterpolation =
97  LocalInterpolation();
98 
100 
110  template<class Geometry, class RF, std::size_t k>
113 
115 
129  template<class VertexOrder>
130  const FiniteElement make(const Geometry& geometry,
131  const VertexOrder& vertexOrder)
132  { return FiniteElement(geometry, vertexOrder); }
133  };
134 }
135 
136 #endif
const Traits::Basis & basis() const
Definition: pk2d.hh:78
Pk2DFiniteElement< Geometry, RF, k > FiniteElement
Definition: pk2d.hh:112
Definition: pk2d.hh:38
Langrange finite element of arbitrary order on triangles.
Definition: pk2d.hh:29
Convert a local interpolation into a global interpolation.
Definition: localtoglobaladaptors.hh:149
const Traits::Interpolation & interpolation() const
Definition: pk2d.hh:79
Definition: bdfmcube.hh:17
Convert a simple scalar local basis into a global basis.
Definition: localtoglobaladaptors.hh:65
const Traits::Coefficients & coefficients() const
Definition: pk2d.hh:81
ImplementationDefined FiniteElement
Type of the finite element.
Definition: interface.hh:117
ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
Definition: pk2d.hh:39
const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
construct Pk2DFiniteElementFactory
Definition: pk2d.hh:130
Factory for Pk2DFiniteElement objects.
Definition: pk2d.hh:111
Pk2DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
construct a Pk2DFiniteElement
Definition: pk2d.hh:72
Impl::LagrangeSimplexLocalCoefficients< 2, k > Coefficients
Definition: pk2d.hh:44
LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
Definition: pk2d.hh:43
const GeometryType & type() const
Definition: pk2d.hh:83
LocalToGlobalBasisAdaptorTraits< typename LocalBasis::Traits, Geometry::coorddimension > Traits
Definition: localtoglobaladaptors.hh:84