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