3#ifndef DUNE_PDELAB_GRIDFUNCTIONSPACE_GRIDFUNCTIONSPACE_HH
4#define DUNE_PDELAB_GRIDFUNCTIONSPACE_GRIDFUNCTIONSPACE_HH
13#include <dune/common/deprecated.hh>
14#include <dune/common/exceptions.hh>
15#include <dune/common/stdstreams.hh>
16#include <dune/common/typetraits.hh>
17#include <dune/common/shared_ptr.hh>
19#include <dune/geometry/referenceelements.hh>
20#include <dune/geometry/type.hh>
22#include <dune/localfunctions/common/interfaceswitch.hh>
23#include <dune/localfunctions/common/localkey.hh>
25#include <dune/common/version.hh>
26#include <dune/typetree/typetree.hh>
29#if DUNE_VERSION_LT_REV(DUNE_TYPETREE,2,7,1)
32 template<std::size_t... i>
33 using StaticTreePath = TreePath<i...>;
43#define _DUNE_PDELAB_SUPPRESS_ISTL_HH_WARNING
45#undef _DUNE_PDELAB_SUPPRESS_ISTL_HH_WARNING
85 struct _lazy_extract_gridview
90 using type =
typename T::GridView;
95 template<
typename GV_or_ES>
96 using GridView =
typename std::conditional<
97 isEntitySet<GV_or_ES>::value,
98 impl::_lazy_extract_gridview,
100 >::type::template evaluate<GV_or_ES>::type;
104 template<
typename GV_or_ES>
105 using EntitySet =
typename std::conditional<
106 isEntitySet<GV_or_ES>::value,
108 AllEntitySet<GV_or_ES>
123 template<
typename G,
typename L,
typename C,
typename B,
typename O>
176 template<
typename GV,
typename FEM,
typename CE=
NoConstraints,
179 :
public TypeTree::LeafNode
181 GridFunctionSpace<GV,FEM,CE,B,O>,
182 GridFunctionSpaceTraits<GV,FEM,CE,B,O>
188 typedef TypeTree::TransformTree<GridFunctionSpace,gfs_to_ordering<GridFunctionSpace> > ordering_transformation;
190 template<
typename,
typename>
203 typedef typename GV::Traits::template Codim<0>::Entity
Element;
213 typedef typename ordering_transformation::Type
Ordering;
221 typedef typename std::conditional<
240#if DUNE_PDELAB_WARN_ON_GRIDVIEW_BASED_GFS
241 DUNE_DEPRECATED_MSG(
"GridFunctionSpaces now internally use an EntitySet instead of a GridView, please replace the template parameter and the first constructor parameter by an EntitySet").
245 , pfem(stackobject_to_shared_ptr(fem))
246 , _pce(stackobject_to_shared_ptr(ce))
252#if DUNE_PDELAB_WARN_ON_GRIDVIEW_BASED_GFS
253 DUNE_DEPRECATED_MSG(
"GridFunctionSpaces now internally use an EntitySet instead of a GridView, please replace the template parameter and the first constructor parameter by an EntitySet").
263#if DUNE_PDELAB_WARN_ON_GRIDVIEW_BASED_GFS
264 DUNE_DEPRECATED_MSG(
"GridFunctionSpaces now internally use an EntitySet instead of a GridView, please replace the template parameter and the first constructor parameter by an EntitySet").
268 , pfem(stackobject_to_shared_ptr(fem))
269 , _pce(std::make_shared<CE>())
274#if DUNE_PDELAB_WARN_ON_GRIDVIEW_BASED_GFS
275 DUNE_DEPRECATED_MSG(
"GridFunctionSpaces now internally use an EntitySet instead of a GridView, please replace the template parameter and the first constructor parameter by an EntitySet").
280 , _pce(std::make_shared<CE>())
293 , pfem(stackobject_to_shared_ptr(fem))
294 , _pce(stackobject_to_shared_ptr(ce))
310 , pfem(stackobject_to_shared_ptr(fem))
311 , _pce(
std::make_shared<CE>())
319 , _pce(
std::make_shared<CE>())
326 return _es.gridView();
367 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
383 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
399 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
415 "Ordering can only be obtained for root space in GridFunctionSpace tree.");
429 void create_ordering()
const
431 _ordering = std::make_shared<Ordering>(ordering_transformation::transform(*
this));
434 typename Traits::EntitySet _es;
435 std::shared_ptr<FEM const> pfem;
436 std::shared_ptr<CE const> _pce;
438 mutable std::shared_ptr<Ordering> _ordering;
const Traits::GridView & gridView() const
get grid view
Definition gridfunctionspace.hh:324
std::shared_ptr< const FEM > finiteElementMapStorage() const
get finite element map
Definition gridfunctionspace.hh:342
GridFunctionSpace(const typename Traits::GridView &gridview, const FEM &fem, const CE &ce, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition gridfunctionspace.hh:239
GridFunctionSpace(const typename Traits::EntitySet &entitySet, const std::shared_ptr< const FEM > &fem, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition gridfunctionspace.hh:315
const Traits::EntitySet & entitySet() const
get EntitySet
Definition gridfunctionspace.hh:330
static const bool isComposite
True if this grid function space is composed of others.
Definition gridfunctionspace.hh:127
std::shared_ptr< Ordering > orderingStorage()
Direct access to the storage of the DOF ordering.
Definition gridfunctionspace.hh:410
std::conditional< std::is_same< CE, NoConstraints >::value, EmptyTransformation, ConstraintsTransformation< typenameOrdering::Traits::DOFIndex, typenameOrdering::Traits::ContainerIndex, E > >::type Type
define Type as the Type of a container of E's
Definition gridfunctionspace.hh:228
Traits::Backend & backend()
Definition gridfunctionspacebase.hh:226
GridFunctionSpace(const typename Traits::GridView &gridview, const std::shared_ptr< const FEM > &fem, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition gridfunctionspace.hh:273
L FiniteElementMap
finite element map
Definition gridfunctionspace.hh:149
O OrderingTag
Definition gridfunctionspace.hh:209
const FEM & finiteElementMap() const
get finite element map
Definition gridfunctionspace.hh:336
GV::Traits::template Codim< 0 >::Iterator ElementIterator
Definition gridfunctionspace.hh:204
O OrderingTag
tag describing the ordering.
Definition gridfunctionspace.hh:164
B::size_type SizeType
short cut for size type exported by Backend
Definition gridfunctionspace.hh:143
L FiniteElementMapType
finite element map
Definition gridfunctionspace.hh:146
DUNE_DEPRECATED typedef O SizeTag
Definition gridfunctionspace.hh:207
void update(bool force=false)
Update the indexing information of the GridFunctionSpace.
Definition gridfunctionspacebase.hh:205
LeafGridFunctionSpaceTag ImplementationTag
Definition gridfunctionspace.hh:211
const Ordering & ordering() const
Direct access to the DOF ordering.
Definition gridfunctionspace.hh:362
GridFunctionSpace(const typename Traits::EntitySet &entitySet, const FEM &fem, const CE &ce, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition gridfunctionspace.hh:290
impl::GridView< G > GridView
the grid view where grid function is defined upon
Definition gridfunctionspace.hh:130
L::Traits::FiniteElementType FiniteElementType
finite element
Definition gridfunctionspace.hh:152
LeafOrderingTag< EmptyParams > DefaultLeafOrderingTag
Definition gridfunctionspace/tags.hh:187
Ordering & ordering()
Direct access to the DOF ordering.
Definition gridfunctionspace.hh:378
GridFunctionSpaceTraits< GV, FEM, CE, B, O > Traits
export Traits class
Definition gridfunctionspace.hh:195
GridFunctionSpace(const typename Traits::EntitySet &entitySet, 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:299
std::shared_ptr< const Ordering > orderingStorage() const
Direct access to the storage of the DOF ordering.
Definition gridfunctionspace.hh:394
GridFunctionSpace(const typename Traits::GridView &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:251
impl::EntitySet< G > EntitySet
the entity set of this function space.
Definition gridfunctionspace.hh:133
L::Traits::FiniteElementType FiniteElement
Definition gridfunctionspace.hh:154
const Traits::ConstraintsType & constraints() const
return constraints engine
Definition gridfunctionspace.hh:348
ordering_transformation::Type Ordering
Definition gridfunctionspace.hh:213
bool isRootSpace() const
Definition gridfunctionspacebase.hh:246
std::shared_ptr< const CE > constraintsStorage() const
return storage of constraints engine
Definition gridfunctionspace.hh:354
B Backend
Definition gridfunctionspace.hh:140
GridFunctionSpace(const typename Traits::GridView &gridview, const FEM &fem, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition gridfunctionspace.hh:262
B BackendType
vector backend
Definition gridfunctionspace.hh:138
GV::Traits::template Codim< 0 >::Entity Element
Definition gridfunctionspace.hh:203
C ConstraintsType
type representing constraints
Definition gridfunctionspace.hh:157
GridFunctionSpace(const typename Traits::EntitySet &entitySet, const FEM &fem, const B &backend=B(), const OrderingTag &ordering_tag=OrderingTag())
constructor
Definition gridfunctionspace.hh:307
GridView GridViewType
Definition gridfunctionspace.hh:135
For backward compatibility – Do not use this!
Definition adaptivity.hh:28
Definition istl/descriptors.hh:48
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
collect types exported by a leaf grid function space
Definition gridfunctionspace.hh:125
A grid function space.
Definition gridfunctionspace.hh:186
extract type for storing constraints
Definition gridfunctionspace.hh:218
Definition gridfunctionspacebase.hh:136
Definition gridfunctionspace/tags.hh:32
static const unsigned int value
Definition gridfunctionspace/tags.hh:139