7#ifndef DUNE_FUNCTIONS_FUNCTIONSPACEBASES_HIERARCHICALLAGRANGEBASIS_HH
8#define DUNE_FUNCTIONS_FUNCTIONSPACEBASES_HIERARCHICALLAGRANGEBASIS_HH
12#include <dune/common/exceptions.hh>
14#include <dune/localfunctions/hierarchical/hierarchicalp2.hh>
20#include <dune/geometry/type.hh>
43 template<
typename GV,
int k,
typename R =
double>
46 template<
typename GV,
typename R>
48 :
public LFEPreBasisMixin<GV, LagrangeSimplexLocalFiniteElement<typename GV::ctype,R,GV::dimension,1>>
53 Base(gridView, [](GeometryType gt, int) -> std::size_t { return gt.isVertex() ? 1 : 0; })
55 for (
auto gt : gridView.indexSet().types(0)) {
57 DUNE_THROW(Dune::NotImplemented,
58 "Hierarchical Lagrange basis only implemented for simplex grids.");
63 template<
typename GV,
typename R>
65 :
public LFEPreBasisMixin<GV, HierarchicalP2LocalFiniteElement<typename GV::ctype,R,GV::dimension>>
70 Base(gridView, [](GeometryType gt, int) -> std::size_t { return (gt.isVertex() || gt.isLine()) ? 1 : 0; })
72 for (
auto gt : gridView.indexSet().types(0)) {
74 DUNE_THROW(Dune::NotImplemented,
75 "Hierarchical Lagrange basis only implemented for simplex grids.");
81 namespace BasisFactory {
91 template<
int k,
typename R=
double>
94 static_assert(0 < k && k <= 2);
95 return [](
const auto& gridView) {
112 template<
typename GV,
int k,
typename R=
double>
auto hierarchicalLagrange()
A factory that can create a HierarchicalLagrange pre-basis.
Definition hierarchicallagrangebasis.hh:92
Definition polynomial.hh:17
Global basis for given pre-basis.
Definition defaultglobalbasis.hh:50
A pre-basis for a hierarchical Lagrange basis.
Definition hierarchicallagrangebasis.hh:44
HierarchicalLagrangePreBasis(const GV &gridView)
Definition hierarchicallagrangebasis.hh:52
HierarchicalLagrangePreBasis(const GV &gridView)
Definition hierarchicallagrangebasis.hh:69
A pre-basis mixin class parametrized with a local finite-element and a DOF layout.
Definition lfeprebasismixin.hh:57