dune-fem 2.8.0
Loading...
Searching...
No Matches
dofstorage.hh
Go to the documentation of this file.
1#ifndef DUNE_FEM_DOFSTORAGE_HH
2#define DUNE_FEM_DOFSTORAGE_HH
3
4#include <cassert>
5
6namespace Dune
7{
8
9 namespace Fem
10 {
11
17
20 template <DofStoragePolicy p>
22
24 template <>
26 public:
29 DofConversionUtility(int numComponents) :
30 numComponents_(numComponents)
31 {}
32
34 static DofStoragePolicy policy() { return PointBased; }
35
40 void newSize(int size) {} // just do nothing
41
44 int component(int combinedIndex) const {
45 return combinedIndex%numComponents_;
46 }
48 int containedDof(int combinedIndex) const {
49 return combinedIndex/numComponents_;
50 }
51
54 int combinedDof(int containedIndex, int component) const {
55 return containedIndex*numComponents_ + component;
56 }
57
58 private:
59 const int numComponents_;
60 };
61
63 template <>
65 public:
69 size_(size)
70 {}
71
74
76 void newSize(int size) { size_ = size; }
77
80 int component(int combinedIndex) const {
81 return combinedIndex/size_;
82 }
83
85 int containedDof(int combinedIndex) const {
86 return combinedIndex%size_;
87 }
88
91 int combinedDof(int containedIndex, int component) const {
92 return containedIndex + component*size_;
93 }
94
95 private:
96 int size_;
97 };
98
100 template <unsigned int dimRange>
102 public:
106 {
107 // make sure that we use the correct number of components
108 assert( numComponents == int(dimRange) );
109 }
110
112 static DofStoragePolicy policy() { return PointBased; }
113
118 void newSize(const int size) {} // just do nothing
119
122 int component(const int combinedIndex) const
123 {
124 return combinedIndex % dimRange;
125 }
127 int containedDof(const int combinedIndex) const
128 {
129 return combinedIndex / dimRange;
130 }
131
134 int combinedDof(const int containedIndex,
135 const int component) const
136 {
137 return containedIndex * dimRange + component;
138 }
139 };
140
141 } // namespace Fem
142
143} // namespace Dune
144
145#endif // #ifndef DUNE_FEM_DOFSTORAGE_HH
Definition: bindguard.hh:11
DofStoragePolicy
Definition: dofstorage.hh:16
@ PointBased
Definition: dofstorage.hh:16
@ VariableBased
Definition: dofstorage.hh:16
Definition: dofstorage.hh:21
static DofStoragePolicy policy()
Find out what type of policy this is.
Definition: dofstorage.hh:34
DofConversionUtility(int numComponents)
Definition: dofstorage.hh:29
int containedDof(int combinedIndex) const
Number of the (scalar) base function belonging to base function index.
Definition: dofstorage.hh:48
void newSize(int size)
Definition: dofstorage.hh:40
int combinedDof(int containedIndex, int component) const
Definition: dofstorage.hh:54
int component(int combinedIndex) const
Definition: dofstorage.hh:44
int containedDof(int combinedIndex) const
Number of the (scalar) base function belonging to base function index.
Definition: dofstorage.hh:85
DofConversionUtility(int size)
Definition: dofstorage.hh:68
void newSize(int size)
Set new size after adaptation.
Definition: dofstorage.hh:76
int component(int combinedIndex) const
Definition: dofstorage.hh:80
int combinedDof(int containedIndex, int component) const
Definition: dofstorage.hh:91
static DofStoragePolicy policy()
Find out what type of policy this is.
Definition: dofstorage.hh:73
Specialisation for PointBased approach.
Definition: dofstorage.hh:101
int component(const int combinedIndex) const
Definition: dofstorage.hh:122
void newSize(const int size)
Definition: dofstorage.hh:118
static DofStoragePolicy policy()
Find out what type of policy this is.
Definition: dofstorage.hh:112
PointBasedDofConversionUtility(int numComponents)
Definition: dofstorage.hh:105
int combinedDof(const int containedIndex, const int component) const
Definition: dofstorage.hh:134
int containedDof(const int combinedIndex) const
Number of the (scalar) base function belonging to base function index.
Definition: dofstorage.hh:127