1#ifndef DUNE_FEM_HPDG_SPACE_COMMON_DATAPROJECTION_TUPLE_HH
2#define DUNE_FEM_HPDG_SPACE_COMMON_DATAPROJECTION_TUPLE_HH
33 template<
class... DataProjections >
36 template<
class Head,
class... Tail >
38 :
public DataProjection< typename Head::DiscreteFunctionSpaceType, DataProjectionTuple< Head, Tail... > >
58 const std::vector< std::size_t > &origin,
59 const std::vector< std::size_t > &destination,
60 std::tuple< Head, Tail... > &tuple )
62 std::get< i >( tuple )( entity, prior, present, origin, destination );
69 template <
class TemporaryStorage>
70 static void apply ( TemporaryStorage& tmp,
71 std::tuple< Head, Tail... > &tuple )
73 std::get< i >( tuple )( tmp );
80 template<
class Communicator >
81 static void apply ( Communicator &comm,
82 std::tuple< Head, Tail... > &tuple )
84 std::get< i >( tuple ).addToList( comm );
94 : tuple_(
std::forward< Head >( head ),
std::forward< Tail >( tail )... )
105 ThisType &operator= (
const ThisType & ) =
delete;
107 ThisType &operator= ( ThisType && ) =
default;
115 const std::vector< std::size_t > &origin,
116 const std::vector< std::size_t > &destination )
118 Dune::Fem::ForLoop< Operation, 0,
sizeof...( Tail ) >::apply( entity, prior, present, origin, destination, tuple_ );
121 template <
class TemporaryStorage>
122 void operator () ( TemporaryStorage& tmp )
128 template<
class Communicator >
149 template<
class... DiscreteFunctions >
164 using hpDG::DefaultDataProjectionTuple ;
Definition: bindguard.hh:11
Definition: forloop.hh:17
Abstract definition of the local restriction and prolongation of discrete functions.
Definition: dataprojection/dataprojection.hh:29
typename BasisFunctionSetType::EntityType EntityType
entity type
Definition: dataprojection/dataprojection.hh:38
typename DiscreteFunctionSpaceType::BasisFunctionSetType BasisFunctionSetType
basis function set type
Definition: dataprojection/dataprojection.hh:36
Local -projection for the restriction and prolongation of discrete functions.
Definition: space/common/dataprojection/default.hh:40
A DataProjection wrapping an arbitrary number of projection operators.
Definition: space/common/dataprojection/tuple.hh:34
Definition: space/common/dataprojection/tuple.hh:39
typename BaseType::EntityType EntityType
entity type
Definition: space/common/dataprojection/tuple.hh:49
DataProjectionTuple(Head &&head, Tail &&...tail)
Definition: space/common/dataprojection/tuple.hh:93
std::tuple< Head, Tail... > tuple_
Definition: space/common/dataprojection/tuple.hh:135
typename BaseType::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
discrete function space type
Definition: space/common/dataprojection/tuple.hh:45
typename BaseType::BasisFunctionSetType BasisFunctionSetType
basis function set type
Definition: space/common/dataprojection/tuple.hh:47
void addToList(Communicator &comm)
()
Definition: space/common/dataprojection/tuple.hh:129
A DataProjection for managing an arbitrary number of discrete functions.
Definition: space/common/dataprojection/tuple.hh:152
DefaultDataProjectionTuple(DiscreteFunctions &... discreteFunctions)
Definition: space/common/dataprojection/tuple.hh:156