1 #ifndef DUNE_FEM_SPACE_COMBINEDSPACE_LAGRANGEPOINTSETEXPORTER_HH 2 #define DUNE_FEM_SPACE_COMBINEDSPACE_LAGRANGEPOINTSETEXPORTER_HH 3 4 5 namespace Dune 6 { 7 8 namespace Fem 9 { 10 11 namespace CombinedSpaceHelper 12 { 13 14 // forward declaration of LagrangeDiscreteFunctionSpace 15 // ---------------------------------------------------- 16 template< class FunctionSpaceImp, 17 class GridPartImp, 18 int polOrder, 19 class BasisFunctionStorageImp > 20 class LagrangeDiscreteFunctionSpace; 21 22 23 24 // Helper class for combined space to extract the Lagrange Point Set 25 // for one of the contained spaces. 26 // ----------------------------------------------------------------- 27 28 template <class DFSpace> 29 struct LagrangePointSetExporter 30 { 31 // for arbitrary spaces nothing needs to be done LagrangePointSetExporterDune::Fem::CombinedSpaceHelper::LagrangePointSetExporter32 LagrangePointSetExporter( const DFSpace& spc ) {} 33 }; 34 35 36 // specialization for Lagrange spaces 37 // ---------------------------------- 38 39 template <class FunctionSpaceImp, class GridPartImp, int polOrder, class BaseFunctionStorageImp > 40 struct LagrangePointSetExporter< 41 LagrangeDiscreteFunctionSpace< FunctionSpaceImp, GridPartImp, polOrder, BaseFunctionStorageImp > > 42 { 43 // export the tpye of LagrangePointSet 44 typedef LagrangeDiscreteFunctionSpace< FunctionSpaceImp, GridPartImp, polOrder, BaseFunctionStorageImp > LagrangeSpaceType; 45 typedef typename LagrangeSpaceType :: LagrangePointSetType LagrangePointSetType; 46 LagrangePointSetExporterDune::Fem::CombinedSpaceHelper::LagrangePointSetExporter47 LagrangePointSetExporter( const LagrangeSpaceType& spc ) 48 : lagrangeSpace_( spc ) {} 49 50 // return the lagrangepointset for a given entity 51 template <class Entity> lagrangePointSetDune::Fem::CombinedSpaceHelper::LagrangePointSetExporter52 const LagrangePointSetType& lagrangePointSet( const Entity& entity ) const 53 { 54 return lagrangeSpace_.lagrangePointSet( entity ); 55 } 56 57 private: 58 const LagrangeSpaceType& lagrangeSpace_; 59 }; 60 61 } // namespace CombinedSpaceHelper 62 63 } // namespace Fem 64 65 } // namespace Dune 66 67 #endif //#ifndef DUNE_FEM_SPACE_COMBINEDSPACE_LAGRANGEPOINTSETEXPORTER_HH 68