4 #ifndef DUNE_PDELAB_GRIDFUNCTIONSPACE_COMPOSITEGRIDFUNCTIONSPACE_HH
5 #define DUNE_PDELAB_GRIDFUNCTIONSPACE_COMPOSITEGRIDFUNCTIONSPACE_HH
9 #include <dune/typetree/compositenode.hh>
10 #include <dune/typetree/utility.hh>
37 template<
typename Backend,
41 :
public TypeTree::CompositeNode<Children...>
43 CompositeGridFunctionSpace<
47 typename TypeTree::CompositeNode<Children...>::template Child<0>::
48 Type::Traits::GridViewType,
51 TypeTree::CompositeNode<Children...>::CHILDREN
53 ,
public DataHandleProvider<CompositeGridFunctionSpace<Backend,OrderingTag,Children...> >
55 typedef TypeTree::CompositeNode<Children...> NodeT;
59 typename NodeT::template Child<0>::Type::Traits::GridViewType,
65 CompositeGridFunctionSpace,
66 typename NodeT::template Child<0>::Type::Traits::GridViewType,
71 typedef TypeTree::TransformTree<CompositeGridFunctionSpace,
72 gfs_to_ordering<CompositeGridFunctionSpace>
73 > ordering_transformation;
75 template<typename,typename>
81 typedef typename ordering_transformation::Type
Ordering;
89 CompositeGridFunctionSpace(const Backend& backend, Children&... children)
90 : NodeT(TypeTree::assertGridViewType<typename NodeT::template Child<0>::Type>(children)...)
91 , ImplementationBase(backend,OrderingTag())
95 : NodeT(TypeTree::assertGridViewType<typename NodeT::template Child<0>::Type>(children)...)
96 , ImplementationBase(Backend(),ordering_tag)
100 : NodeT(TypeTree::assertGridViewType<typename NodeT::template Child<0>::Type>(children)...)
101 , ImplementationBase(backend,ordering_tag)
105 : NodeT(TypeTree::assertGridViewType<typename NodeT::template Child<0>::Type>(children)...)
106 , ImplementationBase(Backend(),OrderingTag())
115 , ImplementationBase(backend,OrderingTag())
120 , ImplementationBase(Backend(),ordering_tag)
125 , ImplementationBase(backend,ordering_tag)
130 , ImplementationBase(Backend(),OrderingTag())
140 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
156 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
172 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
188 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
203 void create_ordering()
const
205 _ordering = std::make_shared<Ordering>(ordering_transformation::transform(*
this));
208 mutable std::shared_ptr<Ordering> _ordering;
217 #endif // DUNE_PDELAB_GRIDFUNCTIONSPACE_COMPOSITEGRIDFUNCTIONSPACE_HH
CompositeGridFunctionSpace(const Backend &backend, std::shared_ptr< Children >...children)
Definition: compositegridfunctionspace.hh:113
std::shared_ptr< Ordering > orderingStorage()
Direct access to the storage of the DOF ordering.
Definition: compositegridfunctionspace.hh:183
Definition: gridfunctionspacebase.hh:137
void update()
Definition: gridfunctionspacebase.hh:212
CompositeGridFunctionSpace(const Backend &backend, const OrderingTag &ordering_tag, Children &...children)
Definition: compositegridfunctionspace.hh:99
CompositeGridFunctionSpace(const Backend &backend, const OrderingTag &ordering_tag, std::shared_ptr< Children >...children)
Definition: compositegridfunctionspace.hh:123
Mixin class providing common functionality of PowerGridFunctionSpace and CompositeGridFunctionSpace.
Definition: powercompositegridfunctionspacebase.hh:66
OrderingTag OrderingTag
Definition: powercompositegridfunctionspacebase.hh:98
base class for tuples of grid function spaces base class that holds implementation of the methods thi...
Definition: compositegridfunctionspace.hh:40
Trait class for the multi component grid function spaces.
Definition: powercompositegridfunctionspacebase.hh:34
Definition: exceptions.hh:34
Traits::Backend & backend()
Definition: gridfunctionspacebase.hh:231
bool isRootSpace() const
Definition: gridfunctionspacebase.hh:251
std::shared_ptr< const Ordering > orderingStorage() const
Direct access to the storage of the DOF ordering.
Definition: compositegridfunctionspace.hh:167
ordering_transformation::Type Ordering
Definition: compositegridfunctionspace.hh:81
Definition: adaptivity.hh:27
Definition: datahandleprovider.hh:188
CompositeGridFunctionSpace(std::shared_ptr< Children >...children)
Definition: compositegridfunctionspace.hh:128
Definition: gridfunctionspace/tags.hh:30
CompositeGridFunctionSpace(const OrderingTag &ordering_tag, std::shared_ptr< Children >...children)
Definition: compositegridfunctionspace.hh:118
CompositeGridFunctionSpace(const OrderingTag &ordering_tag, Children &...children)
Definition: compositegridfunctionspace.hh:94
CompositeGridFunctionSpace(Children &...children)
Definition: compositegridfunctionspace.hh:104
Ordering & ordering()
Direct access to the DOF ordering.
Definition: compositegridfunctionspace.hh:151
const Ordering & ordering() const
Direct access to the DOF ordering.
Definition: compositegridfunctionspace.hh:135
CompositeGridFunctionSpace(const Backend &backend, Children &...children)
Definition: compositegridfunctionspace.hh:89