dune-fem  2.8-git
space/localfiniteelement/capabilities.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_SPACE_LOCALFINITEELEMENT_CAPABILITIES_HH
2 #define DUNE_FEM_SPACE_LOCALFINITEELEMENT_CAPABILITIES_HH
3 
4 
5 
9 
11 
12 namespace Dune
13 {
14 
15  namespace Fem
16  {
17 
18  // External Forward Declarations
19  // -----------------------------
20 
21  template< class LFEMap, class FunctionSpace, class Storage = CachingStorage >
22  class LocalFiniteElementSpace;
23 
24  template< class LFEMap, class FunctionSpace, class Storage = CachingStorage >
25  class DiscontinuousLocalFiniteElementSpace;
26 
27  template< class FunctionSpace, class GridPart, unsigned int order,
28  template< class, unsigned int > class PointSet>
30 
31 
32  namespace Capabilities
33  {
34 
35  template< class LFEMap, class FunctionSpace, class Storage >
37  {
38  static const bool v = false;
39  };
40 
41  template< class LFEMap, class FunctionSpace, class Storage >
43  {
44  static const bool v = false;
45  };
46 
47 
48  template< class LFEMap, class FunctionSpace, class Storage >
50  {
51  static const bool v = false;
52  static const int order = 111;
53  };
54 
55  template< class LFEMap, class FunctionSpace, class Storage >
57  {
58  static const bool v = false;
59  static const int order = 111;
60  };
61 
62 
63  template< class LFEMap, class FunctionSpace, class Storage >
64  struct isContinuous< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
65  {
66  static const bool v = false;
67  };
68 
69  template< class LFEMap, class FunctionSpace, class Storage >
71  {
72  static const bool v = false;
73  };
74 
75 
76  template< class LFEMap, class FunctionSpace, class Storage >
77  struct isLocalized< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
78  {
79  static const bool v = true;
80  };
81 
82  template< class LFEMap, class FunctionSpace, class Storage >
84  {
85  static const bool v = true;
86  };
87 
88 
89  template< class LFEMap, class FunctionSpace, class Storage >
90  struct isAdaptive< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
91  {
92  static const bool v = false;
93  };
94 
95  template< class LFEMap, class FunctionSpace, class Storage >
97  {
98  static const bool v = false;
99  };
100 
101 
102  template< class LFEMap, class FunctionSpace, class Storage >
103  struct threadSafe< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
104  {
105  static const bool v = false;
106  };
107 
108  template< class LFEMap, class FunctionSpace, class Storage >
110  {
111  static const bool v = false;
112  };
113 
114 
115  template< class LFEMap, class FunctionSpace, class Storage >
117  {
118  static const bool v = false;
119  };
120 
121  template< class LFEMap, class FunctionSpace, class Storage >
123  {
124  static const bool v = false;
125  };
126 
127 
128 #if HAVE_DUNE_LOCALFUNCTIONS
129  namespace detail
130  {
131 
132  struct DefaultQuadratureGaussLobatto
133  {
134  template <class F, int d>
135  using DefaultQuadratureTraits = Dune::Fem::GaussLobattoQuadratureTraits< F, d >;
136 
137  static int volumeOrder ( const int k ) { return (k > 0) ? (2 * k - 1) : 0; }
138  static int surfaceOrder( const int k ) { return (k > 0) ? (2 * k - 1) : 0; }
139  };
140 
141  struct DefaultQuadratureGaussLegendre
142  {
143  template <class F, int d>
144  using DefaultQuadratureTraits = Dune::Fem::GaussLegendreQuadratureTraits< F, d >;
145 
146  static int volumeOrder ( const int k ) { return 2 * k + 1; }
147  static int surfaceOrder( const int k ) { return 2 * k + 1; }
148  };
149 
150  // default uses the default values for all spaces (see space/common/capabilities.hh)
151  template< class LFEMap >
152  struct DefaultQuadratureSpec : public Dune::Fem::Capabilities::DefaultQuadrature< LFEMap >
153  {};
154 
155 
157  template < class FunctionSpace, class GridPart, unsigned int order >
158  struct DefaultQuadratureSpec< Dune::Fem::FixedOrderLagrangeFiniteElementMap< FunctionSpace, GridPart, order, Dune::GaussLobattoPointSet > >
159  : public DefaultQuadratureGaussLobatto {};
160 
162  template < class FunctionSpace, class GridPart, unsigned int order >
163  struct DefaultQuadratureSpec< Dune::Fem::FixedOrderLagrangeFiniteElementMap< FunctionSpace, GridPart, order, Dune::GaussLegendrePointSet > >
164  : public DefaultQuadratureGaussLegendre {};
165 
166  } // end namespace detail
167 
168  template< class LFEMap, class FunctionSpace, class Storage >
169  struct DefaultQuadrature< LocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
170  : public detail::DefaultQuadratureSpec< LFEMap >
171  {
172  };
173 
174  template< class LFEMap, class FunctionSpace, class Storage >
175  struct DefaultQuadrature< DiscontinuousLocalFiniteElementSpace< LFEMap, FunctionSpace, Storage > >
176  : public detail::DefaultQuadratureSpec< LFEMap >
177  {
178  };
179 #endif // #ifndef HAVE_DUNE_LOCALFUNCTIONS
180 
181 
182  } // namespace Capabilities
183 
184  } // namespace Fem
185 
186 } // namespace Dune
187 
188 
189 #endif // #ifndef DUNE_FEM_SPACE_LOCALFINITEELEMENT_CAPABILITIES_HH
Definition: bindguard.hh:11
Definition: defaultquadratures.hh:24
specialize with true if polynomial order does not depend on the grid (part) entity
Definition: space/common/capabilities.hh:24
static const bool v
Definition: space/common/capabilities.hh:25
specialize with true if polynomial order fixed and compile time static
Definition: space/common/capabilities.hh:37
static const bool v
Definition: space/common/capabilities.hh:38
static const int order
Definition: space/common/capabilities.hh:39
specialize with true if space is always continuous
Definition: space/common/capabilities.hh:50
static const bool v
Definition: space/common/capabilities.hh:51
specialize with true if the space is localized, * i.e., the basis function set is based on a shape fu...
Definition: space/common/capabilities.hh:68
static const bool v
Definition: space/common/capabilities.hh:69
specialize with true if space can be used with AdaptiveDiscreteFunction
Definition: space/common/capabilities.hh:81
static const bool v
Definition: space/common/capabilities.hh:82
specialize with true if the space implementation is thread safe
Definition: space/common/capabilities.hh:94
static const bool v
Definition: space/common/capabilities.hh:95
specialize with true if the space implementation is thread safe, while it is not modified
Definition: space/common/capabilities.hh:108
static const bool v
Definition: space/common/capabilities.hh:109
specialize when quadrature other than the standard quadrature should be used for volume and surface i...
Definition: space/common/capabilities.hh:132
A vector valued function space.
Definition: functionspace.hh:60
Rannacher-Turek Space.
Definition: localfiniteelement/space.hh:115
Rannacher-Turek Space.
Definition: dgspace.hh:130
Definition: space/localfiniteelement/capabilities.hh:29