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/stdstreams.hh>
15 #include <dune/common/typetraits.hh>
17 #include <dune/geometry/referenceelements.hh>
18 #include <dune/geometry/type.hh>
20 #include <dune/localfunctions/common/interfaceswitch.hh>
21 #include <dune/localfunctions/common/localkey.hh>
23 #include <dune/typetree/typetree.hh>
52 template<
typename G,
typename L,
typename C,
typename B,
typename O>
106 template<
typename GV,
typename FEM,
typename CE=
NoConstraints,
109 :
public TypeTree::LeafNode
111 GridFunctionSpace<GV,FEM,CE,B,P>,
112 GridFunctionSpaceTraits<GV,FEM,CE,B,P>
118 typedef TypeTree::TransformTree<GridFunctionSpace,gfs_to_ordering<GridFunctionSpace> > ordering_transformation;
120 template<
typename,
typename>
133 typedef typename GV::Traits::template Codim<0>::Entity
Element;
142 typedef typename ordering_transformation::Type
Ordering;
150 typedef typename conditional<
167 , pfem(stackobject_to_shared_ptr(fem))
168 , _pce(stackobject_to_shared_ptr(ce))
173 GridFunctionSpace (
const GV& gridview,
const std::shared_ptr<const FEM>& fem,
const std::shared_ptr<const CE>& ce,
const B&
backend = B(),
const OrderingTag& ordering_tag =
OrderingTag())
184 , pfem(stackobject_to_shared_ptr(fem))
185 , _pce(
std::make_shared<CE>())
193 , _pce(
std::make_shared<CE>())
234 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
250 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
266 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
282 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
296 void create_ordering()
const
298 _ordering = std::make_shared<Ordering>(ordering_transformation::transform(*
this));
302 std::shared_ptr<FEM const> pfem;
303 std::shared_ptr<CE const> _pce;
305 mutable std::shared_ptr<Ordering> _ordering;
extract type for storing constraints
Definition: gridfunctionspace.hh:146
Definition: gridfunctionspacebase.hh:137
void update()
Definition: gridfunctionspacebase.hh:212
B Backend
Definition: gridfunctionspace.hh:66
L::Traits::FiniteElementType FiniteElement
Definition: gridfunctionspace.hh:80
L FiniteElementMapType
finite element map
Definition: gridfunctionspace.hh:72
O OrderingTag
tag describing the ordering.
Definition: gridfunctionspace.hh:90
GV::Traits::template Codim< 0 >::Entity Element
Definition: gridfunctionspace.hh:133
std::shared_ptr< const CE > constraintsStorage() const
return storage of constraints engine
Definition: gridfunctionspace.hh:221
GridFunctionSpace(const GV &gridview, const std::shared_ptr< const FEM > &fem, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition: gridfunctionspace.hh:189
P OrderingTag
Definition: gridfunctionspace.hh:138
P SizeTag
Definition: gridfunctionspace.hh:136
GV::Traits::template Codim< 0 >::Iterator ElementIterator
Definition: gridfunctionspace.hh:134
LeafGridFunctionSpaceTag ImplementationTag
Definition: gridfunctionspace.hh:140
B BackendType
vector backend
Definition: gridfunctionspace.hh:64
static const unsigned int value
Definition: gridfunctionspace/tags.hh:175
Mixin base class for specifying output hints to I/O routines like VTK.
Definition: function.hh:123
ordering_transformation::Type Ordering
Definition: gridfunctionspace.hh:142
Definition: istl/descriptors.hh:46
Definition: exceptions.hh:34
L FiniteElementMap
finite element map
Definition: gridfunctionspace.hh:75
Traits::Backend & backend()
Definition: gridfunctionspacebase.hh:231
Definition: gridfunctionspace/tags.hh:32
GridFunctionSpace(const GV &gridview, const std::shared_ptr< const FEM > &fem, const std::shared_ptr< const CE > &ce, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition: gridfunctionspace.hh:173
GridFunctionSpace(const GV &gridview, const FEM &fem, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition: gridfunctionspace.hh:181
G GridViewType
the grid view where grid function is defined upon
Definition: gridfunctionspace.hh:59
Definition: noconstraints.hh:16
bool isRootSpace() const
Definition: gridfunctionspacebase.hh:251
std::shared_ptr< const FEM > finiteElementMapStorage() const
get finite element map
Definition: gridfunctionspace.hh:209
const Ordering & ordering() const
Direct access to the DOF ordering.
Definition: gridfunctionspace.hh:229
Definition: adaptivity.hh:27
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:157
Tag indicating a standard ordering for a leaf GridfunctionSpace.
Definition: gridfunctionspace/tags.hh:216
Definition: datahandleprovider.hh:188
Definition: constraintstransformation.hh:111
std::shared_ptr< const Ordering > orderingStorage() const
Direct access to the storage of the DOF ordering.
Definition: gridfunctionspace.hh:261
collect types exported by a leaf grid function space
Definition: gridfunctionspace.hh:53
const Traits::ConstraintsType & constraints() const
return constraints engine
Definition: gridfunctionspace.hh:215
GridFunctionSpaceTraits< GV, FEM, CE, B, P > Traits
export Traits class
Definition: gridfunctionspace.hh:125
C ConstraintsType
type representing constraints
Definition: gridfunctionspace.hh:83
std::shared_ptr< Ordering > orderingStorage()
Direct access to the storage of the DOF ordering.
Definition: gridfunctionspace.hh:277
A grid function space.
Definition: gridfunctionspace.hh:108
L::Traits::FiniteElementType FiniteElementType
finite element
Definition: gridfunctionspace.hh:78
static const bool isComposite
True if this grid function space is composed of others.
Definition: gridfunctionspace.hh:56
GridFunctionSpace(const GV &gridview, const FEM &fem, const CE &ce, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition: gridfunctionspace.hh:164
Ordering & ordering()
Direct access to the DOF ordering.
Definition: gridfunctionspace.hh:245
a class holding transformation for constrained spaces
Definition: constraintstransformation.hh:18
G GridView
Definition: gridfunctionspace.hh:61
const GV & gridView() const
get grid view
Definition: gridfunctionspace.hh:197
const FEM & finiteElementMap() const
get finite element map
Definition: gridfunctionspace.hh:203
B::size_type SizeType
short cut for size type exported by Backend
Definition: gridfunctionspace.hh:69