1#ifndef DUNE_FEM_SPACE_LOCALFINITEELEMENT_CAPABILITIES_HH
2#define DUNE_FEM_SPACE_LOCALFINITEELEMENT_CAPABILITIES_HH
6#include <dune/fem/gridpart/common/capabilities.hh>
7#include <dune/fem/space/common/capabilities.hh>
8#include <dune/fem/space/shapefunctionset/selectcaching.hh>
10#include <dune/fem/quadrature/interpolationquadrature.hh>
21 template<
class LFEMap,
class FunctionSpace,
class Storage = CachingStorage >
22 class LocalFiniteElementSpace;
24 template<
class LFEMap,
class FunctionSpace,
class Storage = CachingStorage >
25 class DiscontinuousLocalFiniteElementSpace;
27 template<
class FunctionSpace,
class GridPart,
unsigned int order,
28 template<
class,
unsigned int >
class PointSet>
29 struct FixedOrderLagrangeFiniteElementMap;
32 namespace Capabilities
35 template<
class LFEMap,
class FunctionSpace,
class Storage >
36 struct hasFixedPolynomialOrder< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
38 static const bool v =
false;
41 template<
class LFEMap,
class FunctionSpace,
class Storage >
42 struct hasFixedPolynomialOrder< DiscontinuousLocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
44 static const bool v =
false;
48 template<
class LFEMap,
class FunctionSpace,
class Storage >
49 struct hasStaticPolynomialOrder< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
51 static const bool v =
false;
52 static const int order = 6;
55 template<
class LFEMap,
class FunctionSpace,
class Storage >
56 struct hasStaticPolynomialOrder< DiscontinuousLocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
58 static const bool v =
false;
59 static const int order = 6;
63 template<
class LFEMap,
class FunctionSpace,
class Storage >
64 struct isContinuous< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
66 static const bool v =
false;
69 template<
class LFEMap,
class FunctionSpace,
class Storage >
70 struct isContinuous< DiscontinuousLocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
72 static const bool v =
false;
76 template<
class LFEMap,
class FunctionSpace,
class Storage >
77 struct isLocalized< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
79 static const bool v =
true;
82 template<
class LFEMap,
class FunctionSpace,
class Storage >
83 struct isLocalized< DiscontinuousLocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
85 static const bool v =
true;
89 template<
class LFEMap,
class FunctionSpace,
class Storage >
90 struct isAdaptive< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
92 static const bool v =
false;
95 template<
class LFEMap,
class FunctionSpace,
class Storage >
96 struct isAdaptive< DiscontinuousLocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
98 static const bool v =
false;
102 template<
class LFEMap,
class FunctionSpace,
class Storage >
103 struct threadSafe< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
105 static const bool v =
false;
108 template<
class LFEMap,
class FunctionSpace,
class Storage >
109 struct threadSafe< DiscontinuousLocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
111 static const bool v =
false;
115 template<
class LFEMap,
class FunctionSpace,
class Storage >
116 struct viewThreadSafe< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
118 static const bool v =
false;
121 template<
class LFEMap,
class FunctionSpace,
class Storage >
122 struct viewThreadSafe< DiscontinuousLocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
124 static const bool v =
false;
128#if HAVE_DUNE_LOCALFUNCTIONS
132 struct DefaultQuadratureEquidistant
134 template <
class F,
int d>
135 using DefaultQuadratureTraits = Dune::Fem::EquidistantQuadratureTraits< F, d >;
138 static int volumeOrder (
const int k ) {
return k; }
139 static int surfaceOrder(
const int k ) {
return k; }
142 struct DefaultQuadratureGaussLobatto
144 template <
class F,
int d>
145 using DefaultQuadratureTraits = Dune::Fem::GaussLobattoQuadratureTraits< F, d >;
147 static int volumeOrder (
const int k ) {
return (k > 0) ? (2 * k - 1) : 0; }
148 static int surfaceOrder(
const int k ) {
return (k > 0) ? (2 * k - 1) : 0; }
151 struct DefaultQuadratureGaussLegendre
153 template <
class F,
int d>
154 using DefaultQuadratureTraits = Dune::Fem::GaussLegendreQuadratureTraits< F, d >;
156 static int volumeOrder (
const int k ) {
return 2 * k + 1; }
157 static int surfaceOrder(
const int k ) {
return 2 * k + 1; }
160 struct DefaultQuadratureCellCenters
162 template <
class F,
int d>
163 using DefaultQuadratureTraits = Dune::Fem::CellCentersQuadratureTraits< F, d >;
165 static int volumeOrder (
const int k ) {
return k; }
166 static int surfaceOrder(
const int k ) {
return k; }
170 template<
class LFEMap >
176 template <
class FunctionSpace,
class Gr
idPart,
unsigned int order >
177 struct DefaultQuadratureSpec<
Dune::Fem::FixedOrderLagrangeFiniteElementMap< FunctionSpace, GridPart, order, Dune::EquidistantPointSetDerived > >
178 :
public DefaultQuadratureEquidistant {};
181 template <
class FunctionSpace,
class Gr
idPart,
unsigned int order >
182 struct DefaultQuadratureSpec<
Dune::Fem::FixedOrderLagrangeFiniteElementMap< FunctionSpace, GridPart, order, Dune::GaussLobattoPointSet > >
183 :
public DefaultQuadratureGaussLobatto {};
186 template <
class FunctionSpace,
class Gr
idPart,
unsigned int order >
187 struct DefaultQuadratureSpec<
Dune::Fem::FixedOrderLagrangeFiniteElementMap< FunctionSpace, GridPart, order, Dune::GaussLegendrePointSet > >
188 :
public DefaultQuadratureGaussLegendre {};
191 template <
class FunctionSpace,
class Gr
idPart,
unsigned int order >
192 struct DefaultQuadratureSpec<
Dune::Fem::FixedOrderLagrangeFiniteElementMap< FunctionSpace, GridPart, order, Dune::CellCentersPointSet > >
193 :
public DefaultQuadratureCellCenters {};
196 template<
class LFEMap,
class FunctionSpace,
class Storage >
197 struct DefaultQuadrature< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
198 :
public detail::DefaultQuadratureSpec< LFEMap >
202 template<
class LFEMap,
class FunctionSpace,
class Storage >
203 struct DefaultQuadrature< DiscontinuousLocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
204 :
public detail::DefaultQuadratureSpec< LFEMap >
Dune namespace.
Definition: alignedallocator.hh:13
specialize when quadrature other than the standard quadrature should be used for volume and surface i...
Definition: capabilities.hh:132