1 #ifndef DUNE_FEM_SPACE_LAGRANGE_CAPABILITIES_HH
2 #define DUNE_FEM_SPACE_LAGRANGE_CAPABILITIES_HH
3 
4 #include <dune/fem/gridpart/common/capabilities.hh>
5 #include <dune/fem/space/common/capabilities.hh>
6 #include <dune/fem/space/lagrange/declaration.hh>
7 
8 namespace Dune
9 {
10 
11   namespace Fem
12   {
13 
14     namespace Capabilities
15     {
16       // LagrangeDiscreteFunctionSpace
17       //------------------------------
18 
19       template< class FunctionSpace, class GridPart, int polOrder, class Storage >
20       struct hasFixedPolynomialOrder< LagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, polOrder, Storage > >
21       {
22         static const bool v = true;
23       };
24 
25 
26       template< class FunctionSpace, class GridPart, int polOrder, class Storage >
27       struct hasStaticPolynomialOrder< LagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, polOrder, Storage > >
28       {
29         static const bool v = true;
30         static const int order = polOrder;
31       };
32 
33 
34       template< class FunctionSpace, class GridPart, int polOrder, class Storage >
35       struct isContinuous< LagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, polOrder, Storage > >
36       {
37         static const bool v = Dune::Fem::GridPartCapabilities::isConforming< GridPart >::v;
38       };
39 
40 
41       template< class FunctionSpace, class GridPart, int polOrder, class Storage >
42       struct isLocalized< LagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, polOrder, Storage > >
43       {
44         static const bool v = true;
45       };
46 
47 
48       template< class FunctionSpace, class GridPart, int polOrder, class Storage >
49       struct isAdaptive< LagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, polOrder, Storage > >
50       {
51         static const bool v = true;
52       };
53 
54 
55       template< class FunctionSpace, class GridPart, int polOrder, class Storage >
56       struct threadSafe< LagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, polOrder, Storage > >
57       {
58         static const bool v = false;
59       };
60 
61 
62       template< class FunctionSpace, class GridPart, int polOrder, class Storage >
63       struct viewThreadSafe< LagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, polOrder, Storage > >
64       {
65         static const bool v = true;
66       };
67 
68 
69 
70       // DynamicLagrangeDiscreteFunctionSpace
71       //-------------------------------------
72 
73       template< class FunctionSpace, class GridPart, class Storage >
74       struct hasFixedPolynomialOrder< DynamicLagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, Storage > >
75       {
76         static const bool v = true;
77       };
78 
79 
80       // hasStaticPolynomialOrder we use default
81 
82       template< class FunctionSpace, class GridPart, class Storage >
83       struct isContinuous< DynamicLagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, Storage > >
84       {
85         static const bool v = Dune::Fem::GridPartCapabilities::isConforming< GridPart >::v;
86       };
87 
88 
89       template< class FunctionSpace, class GridPart, class Storage >
90       struct isLocalized< DynamicLagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, Storage > >
91       {
92         static const bool v = true;
93       };
94 
95 
96       template< class FunctionSpace, class GridPart, class Storage >
97       struct isAdaptive< DynamicLagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, Storage > >
98       {
99         static const bool v = true;
100       };
101 
102 
103       template< class FunctionSpace, class GridPart, class Storage >
104       struct threadSafe< DynamicLagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, Storage > >
105       {
106         static const bool v = false;
107       };
108 
109 
110       template< class FunctionSpace, class GridPart, class Storage >
111       struct viewThreadSafe< DynamicLagrangeDiscreteFunctionSpace< FunctionSpace, GridPart, Storage > >
112       {
113         static const bool v = true;
114       };
115 
116     } // namespace Capabilities
117 
118   } // namespace Fem
119 
120 } // namespace Dune
121 
122 #endif // #ifndef DUNE_FEM_SPACE_LAGRANGE_CAPABILITIES_HH
123