dune-fem  2.8-git
space/common/capabilities.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_SPACE_COMMON_CAPABILITIES_HH
2 #define DUNE_FEM_SPACE_COMMON_CAPABILITIES_HH
3 
4 #include <type_traits>
5 
7 
8 namespace Dune
9 {
10 
11  namespace Fem
12  {
13 
14  namespace Capabilities
15  {
16 
22  template< class DiscreteFunctionSpace >
24  {
25  static const bool v = false;
26  };
27 
28 
29 
35  template< class DiscreteFunctionSpace >
37  {
38  static const bool v = false;
39  static const int order = -1;
40  };
41 
42 
43 
48  template< class DiscreteFunctionSpace >
49  struct isContinuous
50  {
51  static const bool v = false;
52  };
53 
54 
55 
66  template< class DiscreteFunctionSpace >
67  struct isLocalized
68  {
69  static const bool v = false;
70  };
71 
72 
73 
79  template< class DiscreteFunctionSpace >
80  struct isAdaptive
81  {
82  static const bool v = false;
83  };
84 
85 
86 
92  template< class DiscreteFunctionSpace >
93  struct threadSafe
94  {
95  static const bool v = false;
96  };
97 
98 
99 
106  template< class DiscreteFunctionSpace >
108  {
109  static const bool v = false;
110  };
111 
112 
118  template< class DiscreteFunctionSpace >
120  {
121  static const bool v = false;
122  };
123 
124 
130  template< class DiscreteFunctionSpace >
132  {
133  // traits specifying the quadrature points used for CachingQuadrature or ElementQuadrature.
134  template <class F, int d>
136 
138  static int volumeOrder( const int k ) { return 2 * k; }
140  static int surfaceOrder( const int k ) { return 2 * k + 1; }
141  };
142 
143 
144  namespace Impl
145  {
146 
147  template< class DFS >
148  std::true_type hasInterpolation ( const DFS &, decltype( std::declval< const DFS & >().interpolation() ) * = nullptr );
149 
150  std::false_type hasInterpolation ( ... );
151 
152  } // namespace Impl
153 
154 
163  template< class DiscreteFunctionSpace >
165  {
166  static const bool v = decltype( Impl::hasInterpolation( std::declval< const DiscreteFunctionSpace & >() ) )::value;
167  };
168 
169 
170 
171  // const specialization
172  // --------------------
173 
174  template< class DiscreteFunctionSpace >
176  {
178  };
179 
180  template< class DiscreteFunctionSpace >
182  {
185  };
186 
187  template< class DiscreteFunctionSpace >
189  {
191  };
192 
193  template< class DiscreteFunctionSpace >
195  {
197  };
198 
199  template< class DiscreteFunctionSpace >
201  {
203  };
204 
205  template< class DiscreteFunctionSpace >
207  {
209  };
210 
211  template< class DiscreteFunctionSpace >
213  {
215  };
216 
217  template< class DiscreteFunctionSpace >
219  {
221  };
222 
223  template< class DiscreteFunctionSpace >
225  {
227  };
228 
229  template< class DiscreteFunctionSpace >
231  : public DefaultQuadrature< DiscreteFunctionSpace >
232  {};
233 
234  } // namespace Capabilities
235 
236  } // namespace Fem
237 
238 } // namespace Dune
239 
240 #endif // #ifndef DUNE_FEM_SPACE_COMMON_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 with true if for a space the basis functions are sorted by the polynomial order,...
Definition: space/common/capabilities.hh:120
static const bool v
Definition: space/common/capabilities.hh:121
specialize when quadrature other than the standard quadrature should be used for volume and surface i...
Definition: space/common/capabilities.hh:132
static int volumeOrder(const int k)
return quadrature order for volume quadratures for given polynomial order k
Definition: space/common/capabilities.hh:138
static int surfaceOrder(const int k)
return quadrature order for surface quadratures (i.e. over intersections) for given polynomial order ...
Definition: space/common/capabilities.hh:140
determine whether a discrete function space provides a (local) interpolation
Definition: space/common/capabilities.hh:165
static const bool v
Definition: space/common/capabilities.hh:166
discrete function space