3 #ifndef DUNE_PDELAB_GRIDFUNCTIONSPACE_HH
4 #define DUNE_PDELAB_GRIDFUNCTIONSPACE_HH
12 #include <dune/common/exceptions.hh>
13 #include <dune/common/shared_ptr.hh>
14 #include <dune/common/static_assert.hh>
15 #include <dune/common/stdstreams.hh>
16 #include <dune/common/typetraits.hh>
18 #include <dune/geometry/referenceelements.hh>
19 #include <dune/geometry/type.hh>
21 #include <dune/localfunctions/common/interfaceswitch.hh>
22 #include <dune/localfunctions/common/localkey.hh>
24 #include <dune/typetree/typetree.hh>
53 template<
typename G,
typename L,
typename C,
typename B,
typename O>
107 template<
typename GV,
typename FEM,
typename CE=
NoConstraints,
110 :
public TypeTree::LeafNode
112 GridFunctionSpace<GV,FEM,CE,B,P>,
113 GridFunctionSpaceTraits<GV,FEM,CE,B,P>
119 typedef TypeTree::TransformTree<GridFunctionSpace,gfs_to_ordering<GridFunctionSpace> > ordering_transformation;
121 template<
typename,
typename>
134 typedef typename GV::Traits::template Codim<0>::Entity
Element;
143 typedef typename ordering_transformation::Type
Ordering;
151 typedef typename conditional<
168 , pfem(stackobject_to_shared_ptr(fem))
169 , _pce(stackobject_to_shared_ptr(ce))
175 DUNE_DEPRECATED_MSG("Use either a constructor that passes both FiniteElementMap and ConstraintsEngine as const reference \
176 (for objects with externally controlled lifetime) or as shared_ptr (this
GridFunctionSpace will assume shared ownership of both objects).")
180 , _pce(stackobject_to_shared_ptr(ce))
195 , pfem(stackobject_to_shared_ptr(fem))
196 , _pce(make_shared<CE>())
204 , _pce(make_shared<CE>())
245 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
261 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
277 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
293 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
307 void create_ordering()
const
309 _ordering = make_shared<Ordering>(ordering_transformation::transform(*
this));
313 shared_ptr<FEM const> pfem;
314 shared_ptr<CE const> _pce;
316 mutable shared_ptr<Ordering> _ordering;
G GridView
Definition: gridfunctionspace.hh:62
LeafGridFunctionSpaceTag ImplementationTag
Definition: gridfunctionspace.hh:141
Definition: istl/descriptors.hh:28
shared_ptr< const Ordering > orderingStorage() const
Direct access to the storage of the DOF ordering.
Definition: gridfunctionspace.hh:272
Definition: noconstraints.hh:16
collect types exported by a leaf grid function space
Definition: gridfunctionspace.hh:54
C ConstraintsType
type representing constraints
Definition: gridfunctionspace.hh:84
ordering_transformation::Type Ordering
Definition: gridfunctionspace.hh:143
GridFunctionSpace(const GV &gridview, const FEM &fem, const CE &ce, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition: gridfunctionspace.hh:165
shared_ptr< Ordering > orderingStorage()
Direct access to the storage of the DOF ordering.
Definition: gridfunctionspace.hh:288
GridFunctionSpace(const GV &gridview, const shared_ptr< const FEM > &fem, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition: gridfunctionspace.hh:200
static const bool isComposite
True if this grid function space is composed of others.
Definition: gridfunctionspace.hh:57
GridFunctionSpaceTraits< GV, FEM, CE, B, P > Traits
export Traits class
Definition: gridfunctionspace.hh:126
const FEM & finiteElementMap() const
get finite element map
Definition: gridfunctionspace.hh:214
L::Traits::FiniteElementType FiniteElement
Definition: gridfunctionspace.hh:81
Tag indicating a standard ordering for a leaf GridfunctionSpace.
Definition: gridfunctionspace/tags.hh:216
Definition: common/constraintstransformation.hh:127
a class holding transformation for constrained spaces
Definition: common/constraintstransformation.hh:18
const GV & gridView() const
get grid view
Definition: gridfunctionspace.hh:208
Mixin base class for specifying output hints to I/O routines like VTK.
Definition: function.hh:124
L::Traits::FiniteElementType FiniteElementType
finite element
Definition: gridfunctionspace.hh:79
GV::Traits::template Codim< 0 >::Entity Element
Definition: gridfunctionspace.hh:134
Definition: gridfunctionspacebase.hh:137
const Traits::ConstraintsType & constraints() const
return constraints engine
Definition: gridfunctionspace.hh:226
O OrderingTag
tag describing the ordering.
Definition: gridfunctionspace.hh:91
extract type for storing constraints
Definition: gridfunctionspace.hh:147
bool isRootSpace() const
Definition: gridfunctionspacebase.hh:268
const Ordering & ordering() const
Direct access to the DOF ordering.
Definition: gridfunctionspace.hh:240
B::size_type SizeType
short cut for size type exported by Backend
Definition: gridfunctionspace.hh:70
GV::Traits::template Codim< 0 >::Iterator ElementIterator
Definition: gridfunctionspace.hh:135
B Backend
Definition: gridfunctionspace.hh:67
L FiniteElementMap
finite element map
Definition: gridfunctionspace.hh:76
static const unsigned int value
Definition: gridfunctionspace/tags.hh:175
B BackendType
vector backend
Definition: gridfunctionspace.hh:65
Traits::Backend & backend()
Definition: gridfunctionspacebase.hh:248
Definition: datahandleprovider.hh:189
Definition: gridfunctionspace/tags.hh:28
GridFunctionSpace(const GV &gridview, const FEM &fem, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition: gridfunctionspace.hh:192
A grid function space.
Definition: gridfunctionspace.hh:109
GridFunctionSpace(const GV &gridview, const shared_ptr< const FEM > &fem, const shared_ptr< const CE > &ce, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition: gridfunctionspace.hh:184
void update()
Definition: gridfunctionspacebase.hh:229
Ordering & ordering()
Direct access to the DOF ordering.
Definition: gridfunctionspace.hh:256
P OrderingTag
Definition: gridfunctionspace.hh:139
GridFunctionSpace(const GV &gridview, const shared_ptr< const FEM > &fem, const CE &ce, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition: gridfunctionspace.hh:174
Definition: exceptions.hh:34
shared_ptr< const CE > constraintsStorage() const
return storage of constraints engine
Definition: gridfunctionspace.hh:232
P SizeTag
Definition: gridfunctionspace.hh:137
L FiniteElementMapType
finite element map
Definition: gridfunctionspace.hh:73
conditional< is_same< CE, NoConstraints >::value, EmptyTransformation, ConstraintsTransformation< typename Ordering::Traits::DOFIndex, typename Ordering::Traits::ContainerIndex, E > >::type Type
define Type as the Type of a container of E's
Definition: gridfunctionspace.hh:158
G GridViewType
the grid view where grid function is defined upon
Definition: gridfunctionspace.hh:60
shared_ptr< const FEM > finiteElementMapStorage() const
get finite element map
Definition: gridfunctionspace.hh:220