1#ifndef DUNE_FEM_SPACE_COMBINEDSPACE_POWERSPACE_HH
2#define DUNE_FEM_SPACE_COMBINEDSPACE_POWERSPACE_HH
8#include <dune/common/math.hh>
10#include <dune/grid/common/grid.hh>
30 template<
class DiscreteFunctionSpace,
int N >
31 class PowerDiscreteFunctionSpace;
37 template<
class DiscreteFunctionSpace,
int N >
67 typedef typename GridPartType::GridType
GridType;
69 typedef typename GridPartType::template Codim< 0 >::IteratorType
IteratorType;
76 static const int codimension = DiscreteFunctionSpace::Traits::codimension;
78 static_assert( DiscreteFunctionSpace::FunctionSpaceType::dimRange == 1,
79 "PowerDiscreteFunctionSpace only works for ContainedSpaces with dimRange = 1" );
82 typedef typename ScalarBasisFunctionSetType::FunctionSpaceType::RangeFieldType
RangeFieldType;
95 template<
class DiscreteFunction,
101 typedef typename DiscreteFunctionSpace::
104 typedef typename DiscreteFunctionSpace::
111 return new BlockMapperType( spaceTuple->gridPart(), spaceTuple->blockMapper() );
116 CommunicationDirection commDirection )
118 return std::make_shared< DiscreteFunctionSpace >( gridPart, commInterface, commDirection );
121 template<
class Entity >
127 template<
class T,
class F >
130 return f( value, *tuple );
146 template<
class DiscreteFunctionSpace,
int N >
175 const InterfaceType commInterface = InteriorBorder_All_Interface,
176 const CommunicationDirection commDirection = ForwardCommunication )
195 return BaseType::template subDiscreteFunctionSpace< 0 >();
207 template<
class DiscreteFunctionSpace,
int N,
class NewFunctionSpace >
217 template<
class DiscreteFunctionSpace,
int N >
227 :
BaseType( space.containedSpace() )
Definition: bindguard.hh:11
static std::shared_ptr< T > referenceToSharedPtr(T &t)
Definition: memory.hh:19
Implementation of DofAlignment.
Definition: basisfunctionset/vectorial.hh:141
Builds a vectorial basis function set from given scalar basis function set.
Definition: basisfunctionset/vectorial.hh:279
ToNewDimRangeFunctionSpace< ScalarFunctionSpaceType, dimRange >::Type FunctionSpaceType
Definition: basisfunctionset/vectorial.hh:293
Definition: combinedspace/generic.hh:23
Definition: combinedspace/interpolation.hh:25
Definition: lagrangepointsetexporter.hh:30
Definition: powerlocalrestrictprolong.hh:24
mapper allocating one DoF per subentity of a given codimension
Definition: powermapper.hh:330
Definition: powerspace.hh:150
PowerDiscreteFunctionSpaceTraits< DiscreteFunctionSpace, N > Traits
Definition: powerspace.hh:156
InterpolationType interpolation(const EntityType &entity) const
return local interpolation object
Definition: powerspace.hh:199
ThisType & operator=(const ThisType &)=delete
const ContainedDiscreteFunctionSpaceType & containedSpace() const
return tuple of const References to the contained sub spaces
Definition: powerspace.hh:193
PowerDiscreteFunctionSpace(GridPartType &gridPart, const InterfaceType commInterface=InteriorBorder_All_Interface, const CommunicationDirection commDirection=ForwardCommunication)
constructor
Definition: powerspace.hh:174
Traits::EntityType EntityType
Definition: powerspace.hh:166
Traits::GridPartType GridPartType
type of grid part
Definition: powerspace.hh:158
PowerDiscreteFunctionSpace(std::shared_ptr< DiscreteFunctionSpace > space)
Definition: powerspace.hh:185
PowerDiscreteFunctionSpace(const DiscreteFunctionSpace &space)
Definition: powerspace.hh:181
PowerSpaceInterpolation< ThisType, N > InterpolationType
type of local Interpolation
Definition: powerspace.hh:164
PowerDiscreteFunctionSpace(const ThisType &)=delete
DiscreteFunctionSpace ContainedDiscreteFunctionSpaceType
type of contained discrete function space
Definition: powerspace.hh:161
Definition: powerspace.hh:39
static T accumulate(const DiscreteFunctionSpaceTupleType &tuple, T value, F &&f)
Definition: powerspace.hh:128
GridPartType::GridType GridType
Definition: powerspace.hh:67
PowerDiscreteFunctionSpace< DiscreteFunctionSpace, N > DiscreteFunctionSpaceType
Definition: powerspace.hh:74
GridPartType::template Codim< 0 >::IteratorType IteratorType
Definition: powerspace.hh:69
static BlockMapperType * getBlockMapper(const DiscreteFunctionSpaceTupleType &spaceTuple)
Definition: powerspace.hh:109
GridPartType::IntersectionType IntersectionType
Definition: powerspace.hh:71
DiscreteFunctionSpace::BasisFunctionSetType ScalarBasisFunctionSetType
implementation of basefunction set
Definition: powerspace.hh:81
GridPartType::IndexSetType IndexSetType
Definition: powerspace.hh:68
IteratorType::Entity EntityType
Definition: powerspace.hh:70
ScalarBasisFunctionSetType::FunctionSpaceType::RangeFieldType RangeFieldType
Definition: powerspace.hh:82
BasisFunctionSetType::FunctionSpaceType FunctionSpaceType
Definition: powerspace.hh:92
static DiscreteFunctionSpaceTupleType createSpaces(GridPartType &gridPart, InterfaceType commInterface, CommunicationDirection commDirection)
Definition: powerspace.hh:115
DiscreteFunctionSpace::LocalBlockIndices LocalBlockIndices
Definition: powerspace.hh:89
static BasisFunctionSetType getBasisFunctionSet(const Entity &entity, const DiscreteFunctionSpaceTupleType &tuple)
Definition: powerspace.hh:122
PowerMapper< GridPartType, typename DiscreteFunctionSpace::BlockMapperType, N > BlockMapperType
Definition: powerspace.hh:86
std::shared_ptr< DiscreteFunctionSpace > DiscreteFunctionSpaceTupleType
Definition: powerspace.hh:41
VectorialBasisFunctionSet< ScalarBasisFunctionSetType, FieldVector< RangeFieldType, N >, VerticalDofAlignment > BasisFunctionSetType
Definition: powerspace.hh:83
static const int codimension
Definition: powerspace.hh:76
DiscreteFunctionSpace::GridPartType GridPartType
Definition: powerspace.hh:66
Definition: powerspace.hh:46
static const Type & subDiscreteFunctionSpace(const DiscreteFunctionSpaceTupleType &tuple)
Definition: powerspace.hh:54
Type::BlockMapperType BlockMapperType
Definition: powerspace.hh:51
DiscreteFunctionSpace Type
Definition: powerspace.hh:48
static BlockMapperType & subBlockMapper(const DiscreteFunctionSpaceTupleType &tuple)
Definition: powerspace.hh:59
Definition: powerspace.hh:99
DiscreteFunctionSpace::template CommDataHandle< DiscreteFunction, Operation >::Type Type
type of data handle
Definition: powerspace.hh:102
DiscreteFunctionSpace::template CommDataHandle< DiscreteFunction, Operation >::OperationType OperationType
type of operatation to perform on scatter
Definition: powerspace.hh:105
PowerDiscreteFunctionSpace< DiscreteFunctionSpace, NewFunctionSpace::dimRange > Type
Definition: powerspace.hh:210
Definition: powerspace.hh:220
DefaultLocalRestrictProlong(const DiscreteFunctionSpacesType &space)
Definition: powerspace.hh:226
Definition: discretefunctionspace.hh:133
GridPartType & gridPart() const
Definition: discretefunctionspace.hh:745
Definition: common/localrestrictprolong.hh:16