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