4 #ifndef DUNE_PDELAB_GRIDFUNCTIONSPACE_COMPOSITEGRIDFUNCTIONSPACE_HH
5 #define DUNE_PDELAB_GRIDFUNCTIONSPACE_COMPOSITEGRIDFUNCTIONSPACE_HH
7 #include <dune/common/shared_ptr.hh>
9 #include <dune/typetree/compositenodemacros.hh>
10 #include <dune/typetree/utility.hh>
37 template<
typename Backend,
39 DUNE_TYPETREE_COMPOSITENODE_TEMPLATE_CHILDREN>
41 :
public DUNE_TYPETREE_COMPOSITENODE_BASETYPE
43 CompositeGridFunctionSpace<
46 DUNE_TYPETREE_COMPOSITENODE_CHILDTYPES>,
47 typename DUNE_TYPETREE_COMPOSITENODE_BASETYPE::template Child<0>::
48 Type::Traits::GridViewType,
51 DUNE_TYPETREE_COMPOSITENODE_BASETYPE::CHILDREN
53 ,
public DataHandleProvider<CompositeGridFunctionSpace<Backend,OrderingTag,DUNE_TYPETREE_COMPOSITENODE_CHILDTYPES> >
55 typedef DUNE_TYPETREE_COMPOSITENODE_BASETYPE 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, DUNE_TYPETREE_COMPOSITENODE_CONSTRUCTOR_SIGNATURE)
90 : NodeT(DUNE_TYPETREE_COMPOSITENODE_CHILDVARIABLES_THROUGH_FUNCTION(TypeTree::assertGridViewType<typename NodeT::template Child<0>::Type>))
95 : NodeT(DUNE_TYPETREE_COMPOSITENODE_CHILDVARIABLES_THROUGH_FUNCTION(TypeTree::assertGridViewType<typename NodeT::template Child<0>::Type>))
100 : NodeT(DUNE_TYPETREE_COMPOSITENODE_CHILDVARIABLES_THROUGH_FUNCTION(TypeTree::assertGridViewType<typename NodeT::template Child<0>::Type>))
105 : NodeT(DUNE_TYPETREE_COMPOSITENODE_CHILDVARIABLES_THROUGH_FUNCTION(TypeTree::assertGridViewType<typename NodeT::template Child<0>::Type>))
114 : NodeT(DUNE_TYPETREE_COMPOSITENODE_CHILDVARIABLES)
119 : NodeT(DUNE_TYPETREE_COMPOSITENODE_CHILDVARIABLES)
124 : NodeT(DUNE_TYPETREE_COMPOSITENODE_CHILDVARIABLES)
129 : NodeT(DUNE_TYPETREE_COMPOSITENODE_CHILDVARIABLES)
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 = make_shared<Ordering>(ordering_transformation::transform(*
this));
208 mutable shared_ptr<Ordering> _ordering;
217 #endif // DUNE_PDELAB_GRIDFUNCTIONSPACE_COMPOSITEGRIDFUNCTIONSPACE_HH
Ordering & ordering()
Direct access to the DOF ordering.
Definition: compositegridfunctionspace.hh:151
CompositeGridFunctionSpace(DUNE_TYPETREE_COMPOSITENODE_CONSTRUCTOR_SIGNATURE)
Definition: compositegridfunctionspace.hh:104
CompositeGridFunctionSpace(const Backend &backend, DUNE_TYPETREE_COMPOSITENODE_CONSTRUCTOR_SIGNATURE)
Definition: compositegridfunctionspace.hh:89
CompositeGridFunctionSpace(const Backend &backend, const OrderingTag &ordering_tag, DUNE_TYPETREE_COMPOSITENODE_STORAGE_CONSTRUCTOR_SIGNATURE)
Definition: compositegridfunctionspace.hh:123
shared_ptr< const Ordering > orderingStorage() const
Direct access to the storage of the DOF ordering.
Definition: compositegridfunctionspace.hh:167
CompositeGridFunctionSpace(const Backend &backend, DUNE_TYPETREE_COMPOSITENODE_STORAGE_CONSTRUCTOR_SIGNATURE)
Definition: compositegridfunctionspace.hh:113
const Ordering & ordering() const
Direct access to the DOF ordering.
Definition: compositegridfunctionspace.hh:135
ordering_transformation::Type Ordering
Definition: compositegridfunctionspace.hh:81
CompositeGridFunctionSpace(DUNE_TYPETREE_COMPOSITENODE_STORAGE_CONSTRUCTOR_SIGNATURE)
Definition: compositegridfunctionspace.hh:128
Definition: gridfunctionspace/tags.hh:26
Definition: gridfunctionspacebase.hh:137
CompositeGridFunctionSpace(const OrderingTag &ordering_tag, DUNE_TYPETREE_COMPOSITENODE_CONSTRUCTOR_SIGNATURE)
Definition: compositegridfunctionspace.hh:94
bool isRootSpace() const
Definition: gridfunctionspacebase.hh:268
OrderingTag OrderingTag
Definition: powercompositegridfunctionspacebase.hh:97
CompositeGridFunctionSpace(const OrderingTag &ordering_tag, DUNE_TYPETREE_COMPOSITENODE_STORAGE_CONSTRUCTOR_SIGNATURE)
Definition: compositegridfunctionspace.hh:118
CompositeGridFunctionSpace(const Backend &backend, const OrderingTag &ordering_tag, DUNE_TYPETREE_COMPOSITENODE_CONSTRUCTOR_SIGNATURE)
Definition: compositegridfunctionspace.hh:99
Traits::Backend & backend()
Definition: gridfunctionspacebase.hh:248
Definition: datahandleprovider.hh:189
Mixin class providing common functionality of PowerGridFunctionSpace and CompositeGridFunctionSpace.
Definition: powercompositegridfunctionspacebase.hh:65
shared_ptr< Ordering > orderingStorage()
Direct access to the storage of the DOF ordering.
Definition: compositegridfunctionspace.hh:183
void update()
Definition: gridfunctionspacebase.hh:229
Definition: exceptions.hh:34
Trait class for the multi component grid function spaces.
Definition: powercompositegridfunctionspacebase.hh:33
base class for tuples of grid function spaces base class that holds implementation of the methods thi...
Definition: compositegridfunctionspace.hh:40