|
dune-fem 2.12-git
|
Loading...
Searching...
No Matches
tuplespace.hh
Go to the documentation of this file.
46 typedef std::tuple< std::shared_ptr< DiscreteFunctionSpaces > ... > DiscreteFunctionSpaceTupleType;
54 typedef typename std::tuple_element< i, DiscreteFunctionSpaceTupleType >::type::element_type Type;
81 static_assert( Std::are_all_same< typename DiscreteFunctionSpaces::GridPartType::template Codim< 0 >::EntityType ... >::value,
84 static_assert( Std::are_all_same< std::integral_constant< int, DiscreteFunctionSpaces::Traits::codimension > ... >::value,
96 typedef TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces ... > DiscreteFunctionSpaceType;
99 typedef TupleBasisFunctionSet< CombineOp, typename DiscreteFunctionSpaces::BasisFunctionSetType ... > BasisFunctionSetType;
102 typedef TupleMapper< GridPartType, NonBlockMapper< typename DiscreteFunctionSpaces::BlockMapperType, DiscreteFunctionSpaces::localBlockSize > ... > BlockMapperType;
129 static DiscreteFunctionSpaceTupleType createSpaces ( GridPartType &gridPart, InterfaceType commInterface,
143 static BasisFunctionSetType getBasisFunctionSet ( const Entity &entity, const DiscreteFunctionSpaceTupleType &tuple )
145 return getBasisFunctionSet( entity, tuple, std::index_sequence_for< DiscreteFunctionSpaces ... >() );
160 static BlockMapperType *getBlockMapper ( const DiscreteFunctionSpaceTupleType &tuple, std::index_sequence< i ... > )
162 return new BlockMapperType( SubDiscreteFunctionSpace< 0 >::subDiscreteFunctionSpace( tuple ).gridPart(),
167 static BasisFunctionSetType getBasisFunctionSet ( const Entity &entity, const DiscreteFunctionSpaceTupleType &tuple,
170 return BasisFunctionSetType( SubDiscreteFunctionSpace< i >::subDiscreteFunctionSpace( tuple ).basisFunctionSet( entity ) ... );
192 : public GenericCombinedDiscreteFunctionSpace< TupleDiscreteFunctionSpaceTraits< CombineOp, DiscreteFunctionSpaces ... > >
195 typedef GenericCombinedDiscreteFunctionSpace< TupleDiscreteFunctionSpaceTraits< CombineOp, DiscreteFunctionSpaces ... > > BaseType;
296 DUNE_THROW(NotImplemented,"TupleDiscreteFunctionSpaceImpl::getMark: This method has to be called on the subspaces!");
302 DUNE_THROW(NotImplemented,"TupleDiscreteFunctionSpaceImpl::mark: This method has to be called on the subspaces!");
307 std::tuple< const DiscreteFunctionSpaces & ... > spaceTuple ( std::index_sequence< i ... > ) const
309 return std::tuple< const DiscreteFunctionSpaces & ... >( BaseType::template subDiscreteFunctionSpace< i >() ... );
313 InterpolationImplType localInterpolation ( const EntityType &entity, std::index_sequence< i ... > ) const
338 return acc< i+1, prev && capability< typename std::tuple_element< i, SpaceTuple >::type >::v >();
360 return acc< i+1, (p == capability< typename std::tuple_element< i, SpaceTuple >::type >::order) ? p : -1 >();
364 static const int order = acc<0, capability< typename std::tuple_element< 0, SpaceTuple >::type >::order>();
371 struct hasFixedPolynomialOrder< TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces ... > >
373 static const bool v = detail::LogicAnd< hasFixedPolynomialOrder, DiscreteFunctionSpaces ... >::v;
377 struct hasStaticPolynomialOrder< TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces ... > >
403 struct isPAdaptiveSpace< TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces ... > >
421 struct DifferentDiscreteFunctionSpace< TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces... >, NewFunctionSpace >
423 static_assert( (NewFunctionSpace::dimRange % TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces... >::dimRange == 0),
424 "DifferentDiscreteFunctionSpace can only be applied to TupleFunctionSpace, if new dimRange is a multiple of the original one." );
427 static const int factor = (NewFunctionSpace::dimRange / TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces... >::dimRange);
430 using NewSubFunctionSpace = typename ToNewDimRangeFunctionSpace< NewFunctionSpace, factor*DiscreteFunctionSpace::dimRange >::Type;
442 class DefaultLocalRestrictProlong< TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces ... > >
445 typedef DefaultLocalRestrictProlong< TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces ... > > ThisType;
446 typedef TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces ... > DiscreteFunctionSpacesType;
458 using TupleDiscreteFunctionSpace = TupleDiscreteFunctionSpaceImpl< TupleSpaceProduct, DiscreteFunctionSpaces ... >;
462 using SummationDiscreteFunctionSpace = TupleDiscreteFunctionSpaceImpl< TupleSpaceSummation, DiscreteFunctionSpaces ... >;
465 using EnrichedDiscreteFunctionSpace = SummationDiscreteFunctionSpace< DiscreteFunctionSpaces ... >;
constexpr void forEach(Range &&range, F &&f)
#define DUNE_THROW(E,...)
CommunicationDirection
InterfaceType
ForwardCommunication
InteriorBorder_All_Interface
STL namespace.
static std::shared_ptr< T > referenceToSharedPtr(T &t)
Definition memory.hh:19
Definition utility.hh:147
Definition space/basisfunctionset/tuple.hh:34
Definition space/basisfunctionset/tuple.hh:35
Definition space/basisfunctionset/tuple.hh:39
CombinationType::FunctionSpaceType FunctionSpaceType
type of analytical combined function space
Definition space/basisfunctionset/tuple.hh:195
Definition combinedspace/generic.hh:23
Traits::GridPartType GridPartType
Definition combinedspace/generic.hh:36
Definition combinedspace/interpolation.hh:106
Definition tuplelocalrestrictprolong.hh:31
mapper allocating one DoF per subentity of a given codimension
Definition tuplemapper.hh:632
Definition tuplespace.hh:193
void mark(const KeyType &key, const EntityType &entity) const
Definition tuplespace.hh:300
std::tuple< const DiscreteFunctionSpaces &... > spaceTuple() const
return tuple of const References to the contained sub spaces
Definition tuplespace.hh:272
TupleDiscreteFunctionSpaceImpl(std::shared_ptr< const DiscreteFunctionSpaces >... spaces)
constructor
Definition tuplespace.hh:253
BaseType::EntityType EntityType
Definition tuplespace.hh:201
InterpolationImplType interpolation(const EntityType &entity) const
Definition tuplespace.hh:283
decltype(std::index_sequence_for< DiscreteFunctionSpaces ... >()) Sequence
Definition tuplespace.hh:198
InterpolationType interpolation() const
Definition tuplespace.hh:277
Traits::InterpolationImplType InterpolationImplType
Definition tuplespace.hh:203
LocalInterpolationWrapper< ThisType > InterpolationType
Definition tuplespace.hh:205
TupleDiscreteFunctionSpaceImpl(DiscreteFunctionSpaces &&... spaces)
constructor
Definition tuplespace.hh:231
TupleDiscreteFunctionSpaceImpl(const ThisType &)=delete
ThisType & operator=(const ThisType &)=delete
BaseType::Traits Traits
Definition tuplespace.hh:199
InterpolationImplType localInterpolation(const EntityType &entity) const
Definition tuplespace.hh:288
Traits::DiscreteFunctionSpaceTupleType DiscreteFunctionSpaceTupleType
Definition tuplespace.hh:206
TupleDiscreteFunctionSpaceImpl(const DiscreteFunctionSpaces &... spaces)
constructor
Definition tuplespace.hh:242
KeyType getMark(const EntityType &entity) const
Definition tuplespace.hh:294
BaseType::GridPartType GridPartType
Definition tuplespace.hh:200
std::tuple< const DiscreteFunctionSpaces &... > spaceTuple(std::index_sequence< i ... >) const
Definition tuplespace.hh:307
InterpolationImplType localInterpolation(const EntityType &entity, std::index_sequence< i ... >) const
Definition tuplespace.hh:313
TupleDiscreteFunctionSpaceImpl(DiscreteFunctionSpaceTupleType spaceTuple)
constructor
Definition tuplespace.hh:264
Definition tuplespace.hh:41
TupleSpaceInterpolation< CombineOp, DiscreteFunctionSpaces ... > InterpolationImplType
Definition tuplespace.hh:110
TupleDiscreteFunctionSpaceImpl< CombineOp, DiscreteFunctionSpaces ... > DiscreteFunctionSpaceType
Definition tuplespace.hh:96
static const int codimension
Definition tuplespace.hh:86
TupleBasisFunctionSet< CombineOp, typename DiscreteFunctionSpaces::BasisFunctionSetType ... > BasisFunctionSetType
implementation of basefunction set
Definition tuplespace.hh:99
SubDiscreteFunctionSpace< 0 >::Type::GridPartType GridPartType
Definition tuplespace.hh:88
GridPartType::template Codim< 0 >::IteratorType IteratorType
Definition tuplespace.hh:91
BasisFunctionSetType::FunctionSpaceType FunctionSpaceType
Definition tuplespace.hh:108
TupleMapper< GridPartType, NonBlockMapper< typename DiscreteFunctionSpaces::BlockMapperType, DiscreteFunctionSpaces::localBlockSize > ... > BlockMapperType
Definition tuplespace.hh:102
static BlockMapperType * getBlockMapper(const DiscreteFunctionSpaceTupleType &tuple, std::index_sequence< i ... >)
Definition tuplespace.hh:160
GridPartType::IndexSetType IndexSetType
Definition tuplespace.hh:90
static BasisFunctionSetType getBasisFunctionSet(const Entity &entity, const DiscreteFunctionSpaceTupleType &tuple)
Definition tuplespace.hh:143
static BasisFunctionSetType getBasisFunctionSet(const Entity &entity, const DiscreteFunctionSpaceTupleType &tuple, std::index_sequence< i ... >)
Definition tuplespace.hh:167
GridPartType::GridType GridType
Definition tuplespace.hh:89
static T accumulate(const DiscreteFunctionSpaceTupleType &tuple, T value, F &&f)
Definition tuplespace.hh:149
IteratorType::Entity EntityType
Definition tuplespace.hh:92
std::index_sequence< 0 > LocalBlockIndices
Definition tuplespace.hh:105
std::tuple< std::shared_ptr< DiscreteFunctionSpaces > ... > DiscreteFunctionSpaceTupleType
Definition tuplespace.hh:46
GridPartType::IntersectionType IntersectionType
Definition tuplespace.hh:93
static DiscreteFunctionSpaceTupleType createSpaces(GridPartType &gridPart, InterfaceType commInterface, CommunicationDirection commDirection)
Definition tuplespace.hh:129
static BlockMapperType * getBlockMapper(const DiscreteFunctionSpaceTupleType &spaceTuple)
Definition tuplespace.hh:123
Definition tuplespace.hh:52
static BlockMapperType & subBlockMapper(const DiscreteFunctionSpaceTupleType &tuple)
Definition tuplespace.hh:69
Type::BlockMapperType BlockMapperType
Definition tuplespace.hh:57
static NonBlockMapperType subNonBlockMapper(const DiscreteFunctionSpaceTupleType &tuple)
Definition tuplespace.hh:74
std::tuple_element< i, DiscreteFunctionSpaceTupleType >::type::element_type Type
Definition tuplespace.hh:54
static const Type & subDiscreteFunctionSpace(const DiscreteFunctionSpaceTupleType &tuple)
Definition tuplespace.hh:63
NonBlockMapper< BlockMapperType, Type::localBlockSize > NonBlockMapperType
Definition tuplespace.hh:60
Definition tuplespace.hh:115
DefaultCommunicationHandler< DiscreteFunction, Operation > Type
type of data handle
Definition tuplespace.hh:117
Operation OperationType
type of operatation to perform on scatter
Definition tuplespace.hh:119
detail::PolOrder< hasStaticPolynomialOrder, DiscreteFunctionSpaces ... > PolOrder
Definition tuplespace.hh:379
TupleDiscreteFunctionSpaceImpl< CombineOp, typename DifferentDiscreteFunctionSpace< DiscreteFunctionSpaces, NewSubFunctionSpace< DiscreteFunctionSpaces > >::Type... > Type
Definition tuplespace.hh:433
Definition tuplespace.hh:444
DefaultLocalRestrictProlong(const DiscreteFunctionSpacesType &space)
Definition tuplespace.hh:450
specialize with true if polynomial order does not depend on the grid (part) entity
Definition space/common/capabilities.hh:24
static const bool v
Definition space/common/capabilities.hh:25
specialize with true if polynomial order fixed and compile time static
Definition space/common/capabilities.hh:37
static const bool v
Definition space/common/capabilities.hh:38
static const int order
Definition space/common/capabilities.hh:39
specialize with true if space is always continuous
Definition space/common/capabilities.hh:50
static const bool v
Definition space/common/capabilities.hh:51
specialize with true if the space is localized, * i.e., the basis function set is based on a shape fu...
Definition space/common/capabilities.hh:68
static const bool v
Definition space/common/capabilities.hh:69
specialize with true if space can be used with AdaptiveDiscreteFunction
Definition space/common/capabilities.hh:81
specialize with true if space can be used with p-adaptation
Definition space/common/capabilities.hh:93
static const bool v
Definition space/common/capabilities.hh:94
specialize with true if the space implementation is thread safe
Definition space/common/capabilities.hh:105
static const bool v
Definition space/common/capabilities.hh:106
Default communication handler for discrete functions.
Definition defaultcommhandler.hh:38
Definition discretefunctionspace.hh:134
FunctionSpaceTraits Traits
type of traits class
Definition discretefunctionspace.hh:188
GridPartType::template Codim< Traits::codimension >::EntityType EntityType
type of entity of codimension 0
Definition discretefunctionspace.hh:224
GridPartType & gridPart() const
Definition discretefunctionspace.hh:766
convert functions space to space with new dim range
Definition functionspace.hh:250
Definition common/localinterpolation.hh:75
Definition common/localrestrictprolong.hh:16
Definition nonblockmapper.hh:284
T forward(T... args)
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8