dune-functions  2.8.0
subspacelocalview.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_FUNCTIONS_FUNCTIONSPACEBASES_SUBSPACELOCALVIEW_HH
4 #define DUNE_FUNCTIONS_FUNCTIONSPACEBASES_SUBSPACELOCALVIEW_HH
5 
6 
7 #include <tuple>
8 
9 #include <dune/common/concept.hh>
10 
11 #include <dune/typetree/childextraction.hh>
12 
14 
15 
16 
17 namespace Dune {
18 namespace Functions {
19 
20 
21 
22 template<class RB, class PP>
23 class SubspaceBasis;
24 
25 
26 
28 template<class RLV, class PP>
30 {
31  using PrefixPath = PP;
32 
33 public:
34 
35  using RootLocalView = RLV;
36 
39 
41  using GridView = typename GlobalBasis::GridView;
42 
44  using Element = typename GridView::template Codim<0>::Entity;
45 
47  using size_type = std::size_t;
48 
50  using RootTree = typename RootLocalView::Tree;
51 
53  using Tree = typename TypeTree::ChildForTreePath<RootTree, PrefixPath>;
54 
56  using MultiIndex = typename RootLocalView::MultiIndex;
57 
59  SubspaceLocalView(const GlobalBasis& globalBasis, const PrefixPath& prefixPath) :
61  rootLocalView_(globalBasis.rootBasis().localView())
62  {
63 // static_assert(models<Concept::BasisTree<GridView>, Tree>(), "Tree type passed to SubspaceLocalView does not model the BasisNode concept.");
64  }
65 
71  void bind(const Element& e)
72  {
73  rootLocalView_.bind(e);
74  }
75 
80  const Element& element() const
81  {
82  return rootLocalView_.element();
83  }
84 
89  void unbind()
90  {
91  rootLocalView_.unbind();
92  }
93 
98  const Tree& tree() const
99  {
100  return TypeTree::child(rootLocalView_.tree(), globalBasis_->prefixPath());
101  }
102 
105  size_type size() const
106  {
107  return rootLocalView_.size();
108  }
109 
117  {
118  return rootLocalView_.maxSize();
119  }
120 
123  {
124  return rootLocalView_.index(i);
125  }
126 
129  const GlobalBasis& globalBasis() const
130  {
131  return *globalBasis_;
132  }
133 
135  {
136  return rootLocalView_;
137  }
138 
139 protected:
142 };
143 
144 
145 
146 } // end namespace Functions
147 } // end namespace Dune
148 
149 
150 
151 #endif // DUNE_FUNCTIONS_FUNCTIONSPACEBASES_SUBSPACELOCALVIEW_HH
Definition: polynomial.hh:10
Definition: subspacebasis.hh:23
typename RootBasis::GridView GridView
The grid view that the FE space is defined on.
Definition: subspacebasis.hh:33
const PrefixPath & prefixPath() const
Definition: subspacebasis.hh:94
The restriction of a finite element basis to a single element.
Definition: subspacelocalview.hh:30
typename TypeTree::ChildForTreePath< RootTree, PrefixPath > Tree
Tree of local finite elements / local shape function sets.
Definition: subspacelocalview.hh:53
void unbind()
Unbind from the current element.
Definition: subspacelocalview.hh:89
const GlobalBasis * globalBasis_
Definition: subspacelocalview.hh:140
typename RootLocalView::MultiIndex MultiIndex
Type used for global numbering of the basis vectors.
Definition: subspacelocalview.hh:56
size_type size() const
Total number of degrees of freedom on this element.
Definition: subspacelocalview.hh:105
const Tree & tree() const
Return the local ansatz tree associated to the bound entity.
Definition: subspacelocalview.hh:98
const Element & element() const
Return the grid element that the view is bound to.
Definition: subspacelocalview.hh:80
const GlobalBasis & globalBasis() const
Return the global basis that we are a view on.
Definition: subspacelocalview.hh:129
RootLocalView rootLocalView_
Definition: subspacelocalview.hh:141
void bind(const Element &e)
Bind the view to a grid element.
Definition: subspacelocalview.hh:71
typename GlobalBasis::GridView GridView
The grid view the global FE basis lives on.
Definition: subspacelocalview.hh:41
RLV RootLocalView
Definition: subspacelocalview.hh:35
std::size_t size_type
The type used for sizes.
Definition: subspacelocalview.hh:47
typename GridView::template Codim< 0 >::Entity Element
Type of the grid element we are bound to.
Definition: subspacelocalview.hh:44
size_type maxSize() const
Maximum local size for any element on the GridView.
Definition: subspacelocalview.hh:116
SubspaceLocalView(const GlobalBasis &globalBasis, const PrefixPath &prefixPath)
Construct local view for a given global finite element basis.
Definition: subspacelocalview.hh:59
MultiIndex index(size_type i) const
Maps from subtree index set [0..size-1] to a globally unique multi index in global basis.
Definition: subspacelocalview.hh:122
typename RootLocalView::Tree RootTree
Tree of local finite elements / local shape function sets.
Definition: subspacelocalview.hh:50
const RootLocalView & rootLocalView() const
Definition: subspacelocalview.hh:134