4#ifndef DUNE_PDELAB_GRIDFUNCTIONSPACE_VECTORGRIDFUNCTIONSPACE_HH
5#define DUNE_PDELAB_GRIDFUNCTIONSPACE_VECTORGRIDFUNCTIONSPACE_HH
11#include <dune/common/shared_ptr.hh>
13#include <dune/typetree/powernode.hh>
55 typename Constraints = NoConstraints,
56 typename OrderingTag = LexicographicOrderingTag,
59 :
public TypeTree::PowerNode<GridFunctionSpace<
104 template<
typename,
typename>
111 typedef TypeTree::PowerNode<LeafGFS,k>
BaseT;
127 typedef TypeTree::TransformTree<VectorGridFunctionSpace,
128 gfs_to_ordering<VectorGridFunctionSpace>
133 typedef typename ordering_transformation::Type
Ordering;
139 typedef typename std::conditional<
146 typename Ordering::Traits::DOFIndex,
147 typename Ordering::Traits::ContainerIndex,
160 static typename BaseT::NodeStorage create_components(
const typename Traits::EntitySet& es,
161 std::shared_ptr<const FEM> fem_ptr,
162 const LeafBackend& leaf_backend,
165 typename BaseT::NodeStorage r;
166 for (std::size_t i = 0; i < k; ++i)
167 r[i] = std::make_shared<LeafGFS>(es,fem_ptr,leaf_backend,leaf_ordering_tag);
174 const Backend&
backend = Backend(),
const LeafBackend& leaf_backend = LeafBackend(),
176 :
BaseT(create_components(typename
Traits::EntitySet(gv),stackobject_to_shared_ptr(fem),leaf_backend,leaf_ordering_tag))
181 const Backend&
backend = Backend(),
const LeafBackend& leaf_backend = LeafBackend(),
183 :
BaseT(create_components(es,stackobject_to_shared_ptr(fem),leaf_backend,leaf_ordering_tag))
188 const Backend&
backend = Backend(),
const LeafBackend& leaf_backend = LeafBackend(),
190 :
BaseT(create_components(typename
Traits::EntitySet(gv), fem, leaf_backend, leaf_ordering_tag))
195 const Backend&
backend = Backend(),
const LeafBackend& leaf_backend = LeafBackend(),
197 :
BaseT(create_components(es, fem, leaf_backend, leaf_ordering_tag))
209 for (std::size_t i = 0; i < k; ++i)
211 std::stringstream ns;
212 ns <<
name <<
"_" << i;
213 this->child(i).name(ns.str());
223 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
239 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
255 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
271 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
285 void create_ordering()
const
287 _ordering = std::make_shared<Ordering>(ordering_transformation::transform(*
this));
290 mutable std::shared_ptr<Ordering> _ordering;
Traits::Backend & backend()
Definition: gridfunctionspacebase.hh:281
void update(bool force=false)
Update the indexing information of the GridFunctionSpace.
Definition: gridfunctionspacebase.hh:259
O OrderingTag
Definition: powercompositegridfunctionspacebase.hh:100
LeafOrderingTag< EmptyParams > DefaultLeafOrderingTag
Definition: gridfunctionspace/tags.hh:187
bool isRootSpace() const
Definition: gridfunctionspacebase.hh:342
const std::string & name() const
Definition: gridfunctionspacebase.hh:271
typename EntitySet::GridView GridView
Definition: powercompositegridfunctionspacebase.hh:47
G EntitySet
Definition: powercompositegridfunctionspacebase.hh:45
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
Definition: exceptions.hh:36
Mixin base class for specifying output hints to I/O routines like VTK.
Definition: function.hh:126
a class holding transformation for constrained spaces
Definition: constraintstransformation.hh:20
Definition: constraintstransformation.hh:112
Definition: noconstraints.hh:20
Definition: datahandleprovider.hh:189
A grid function space.
Definition: gridfunctionspace.hh:191
Definition: gridfunctionspacebase.hh:190
Trait class for the multi component grid function spaces.
Definition: powercompositegridfunctionspacebase.hh:35
Mixin class providing common functionality of PowerGridFunctionSpace and CompositeGridFunctionSpace.
Definition: powercompositegridfunctionspacebase.hh:73
Definition: gridfunctionspace/tags.hh:28
Tag indicating a standard ordering for a leaf GridfunctionSpace.
Definition: gridfunctionspace/tags.hh:185
tensorproduct space representing a vector valued function space
Definition: vectorgridfunctionspace.hh:94
std::shared_ptr< Ordering > orderingStorage()
Direct access to the storage of the DOF ordering.
Definition: vectorgridfunctionspace.hh:266
VectorGridFunctionSpace(const typename Traits::GridView &gv, const FEM &fem, const Backend &backend=Backend(), const LeafBackend &leaf_backend=LeafBackend(), const OrderingTag &ordering_tag=OrderingTag(), const LeafOrderingTag &leaf_ordering_tag=LeafOrderingTag())
Definition: vectorgridfunctionspace.hh:173
ImplementationBase::Traits Traits
export traits class
Definition: vectorgridfunctionspace.hh:154
TypeTree::PowerNode< LeafGFS, k > BaseT
Definition: vectorgridfunctionspace.hh:111
PowerCompositeGridFunctionSpaceBase< VectorGridFunctionSpace, impl::EntitySet< GV >, Backend, OrderingTag, k > ImplementationBase
Definition: vectorgridfunctionspace.hh:118
VectorGridFunctionSpaceTag ImplementationTag
Definition: vectorgridfunctionspace.hh:109
Ordering & ordering()
Direct access to the DOF ordering.
Definition: vectorgridfunctionspace.hh:234
ordering_transformation::Type Ordering
Definition: vectorgridfunctionspace.hh:133
std::string name() const
Definition: vectorgridfunctionspace.hh:201
VectorGridFunctionSpace(const typename Traits::EntitySet &es, const FEM &fem, const Backend &backend=Backend(), const LeafBackend &leaf_backend=LeafBackend(), const OrderingTag &ordering_tag=OrderingTag(), const LeafOrderingTag &leaf_ordering_tag=LeafOrderingTag())
Definition: vectorgridfunctionspace.hh:180
void name(std::string name)
Definition: vectorgridfunctionspace.hh:206
VectorGridFunctionSpace(const typename Traits::GridView &gv, std::shared_ptr< const FEM > fem, const Backend &backend=Backend(), const LeafBackend &leaf_backend=LeafBackend(), const OrderingTag &ordering_tag=OrderingTag(), const LeafOrderingTag &leaf_ordering_tag=LeafOrderingTag())
Definition: vectorgridfunctionspace.hh:187
const Ordering & ordering() const
Direct access to the DOF ordering.
Definition: vectorgridfunctionspace.hh:218
std::shared_ptr< const Ordering > orderingStorage() const
Direct access to the storage of the DOF ordering.
Definition: vectorgridfunctionspace.hh:250
VectorGridFunctionSpace(const typename Traits::EntitySet &es, std::shared_ptr< const FEM > fem, const Backend &backend=Backend(), const LeafBackend &leaf_backend=LeafBackend(), const OrderingTag &ordering_tag=OrderingTag(), const LeafOrderingTag &leaf_ordering_tag=LeafOrderingTag())
Definition: vectorgridfunctionspace.hh:194
TypeTree::TransformTree< VectorGridFunctionSpace, gfs_to_ordering< VectorGridFunctionSpace > > ordering_transformation
Definition: vectorgridfunctionspace.hh:129
extract type for storing constraints
Definition: vectorgridfunctionspace.hh:138
std::conditional< std::is_same< Constraints, NoConstraints >::value, EmptyTransformation, ConstraintsTransformation< typenameOrdering::Traits::DOFIndex, typenameOrdering::Traits::ContainerIndex, E > >::type Type
Definition: vectorgridfunctionspace.hh:150
static const unsigned int value
Definition: gridfunctionspace/tags.hh:139