dune-fem 2.12-git
Loading...
Searching...
No Matches
subfunction.hh
Go to the documentation of this file.
1#ifndef DUNE_FEM_SUBFUNCTION_HH
2#define DUNE_FEM_SUBFUNCTION_HH
3
4#include <memory>
5#include <vector>
6
10
11namespace Dune
12{
13
14 namespace Fem
15 {
16
20 template <class DiscreteFunctionImp>
22 {
23 protected:
24 typedef DiscreteFunctionImp DiscreteFunctionType;
25 typedef typename DiscreteFunctionType :: DiscreteFunctionSpaceType SpaceType;
26 enum { dimRange = SpaceType :: dimRange };
27 typedef typename DiscreteFunctionType :: DofStorageType DofStorageType;
28 public:
29 typedef typename SpaceType :: template ToNewDimRange < 1 > :: Type SubSpaceType;
30
34
36 explicit SubFunctionStorage( DiscreteFunctionType& discreteFunction ) :
37 discreteFunction_( discreteFunction ),
38 space_( discreteFunction.space() ),
39 // FIXME: this line assumes that the 'subspaces' are constructed with only a grid part
40 // which fails with higher order 'DynamicLagrangeSpace' for example.
41 subSpace_( space_.gridPart (), space_.communicationInterface(), space_.communicationDirection() ),
42 subVector_( dimRange, nullptr ),
44 {}
45
47
55 {
56 assert( component < dimRange );
57 if( ! subDiscreteFunction_[ component ] )
58 {
59 subVector_[ component ] =
61 subDiscreteFunction_[ component ] =
63 }
64 return *( subDiscreteFunction_[ component ] );
65 }
66
67 protected:
73 };
74
75 } // namespace Fem
76
77} // namespace Dune
78
79#endif // #ifndef DUNE_FEM_SUBFUNCTION_HH
Definition subfunction.hh:22
SubVector< DofStorageType, SubMapperType > SubDofVectorType
Definition subfunction.hh:32
const SpaceType & space_
Definition subfunction.hh:69
SubSpaceType subSpace_
Definition subfunction.hh:70
DiscreteFunctionType::DofStorageType DofStorageType
Definition subfunction.hh:27
DiscreteFunctionType::DiscreteFunctionSpaceType SpaceType
Definition subfunction.hh:25
VectorDiscreteFunction< SubSpaceType, SubDofVectorType > SubDiscreteFunctionType
Definition subfunction.hh:33
SubDiscreteFunctionType & subFunction(std::size_t component) const
return a SubDiscreteFunction repsenting only one component of the original discrete function
Definition subfunction.hh:54
CombinedSubMapper< typename SubSpaceType ::MapperType, dimRange, PointBased > SubMapperType
Definition subfunction.hh:31
DiscreteFunctionType & discreteFunction_
Definition subfunction.hh:68
DiscreteFunctionImp DiscreteFunctionType
Definition subfunction.hh:24
@ dimRange
Definition subfunction.hh:26
SubFunctionStorage(DiscreteFunctionType &discreteFunction)
constructor storing the discrete function
Definition subfunction.hh:36
SpaceType::template ToNewDimRange< 1 >::Type SubSpaceType
Definition subfunction.hh:29
std::vector< std::unique_ptr< SubDofVectorType > > subVector_
Definition subfunction.hh:71
std::vector< std::unique_ptr< SubDiscreteFunctionType > > subDiscreteFunction_
Definition subfunction.hh:72
SubFunctionStorage(const SubFunctionStorage &)=delete
Definition vectorfunction/vectorfunction.hh:42
Definition combineddofstorage.hh:96
An implementation of DenseVector to extract a portion, not necessarly contiguos, of a vector.
Definition subvector.hh:161
T forward(T... args)