FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
dof_assignment_common.hpp
1// FEAT3: Finite Element Analysis Toolbox, Version 3
2// Copyright (C) 2010 by Stefan Turek & the FEAT group
3// FEAT3 is released under the GNU General Public License version 3,
4// see the file 'copyright.txt' in the top level directory for details.
5
6#pragma once
7
8// includes, FEAT
9#include <kernel/space/dof_assignment_base.hpp>
10#include <kernel/adjacency/adjactor.hpp>
11
12namespace FEAT
13{
14 namespace Space
15 {
32 template<
33 typename Space_,
34 int shape_dim_,
35 typename DataType_>
37 public DofAssignmentBase<Space_, shape_dim_, DataType_>
38 {
40
41 public:
42 explicit DofAssignmentNull(const Space_& space) :
43 BaseClass(space)
44 {
45 }
46
49 {
50 return 0;
51 }
52
55 {
56 return 0;
57 }
58
60 Index get_index(int /*assign_idx*/) const
61 {
62 XABORTM("invalid call of DofAssignmentNull::get_index()");
63 }
64 }; // class DofAssignmentNull<...>
65
82 template<
83 typename Space_,
84 int shape_dim_,
85 typename DataType_,
86 int dofs_per_cell_ = 1>
88 public DofAssignmentBase<Space_, shape_dim_, DataType_>
89 {
91
92 public:
93 explicit DofAssignmentIdentity(const Space_& space) :
94 BaseClass(space)
95 {
96 }
97
100 {
101 return dofs_per_cell_;
102 }
103
106 {
107 return dofs_per_cell_;
108 }
109
111 Index get_index(int assign_idx) const
112 {
113 return Index(dofs_per_cell_) * this->_cell_index + Index(assign_idx);
114 }
115 }; // class DofAssignmentIdentity
116
117 template<
118 typename Space_,
119 int shape_dim_,
120 typename DataType_,
121 int dof_dim_,
122 int dofs_per_cell_ = 1>
124 public DofAssignmentNull<Space_, shape_dim_, DataType_>
125 {
127
128 public:
129 explicit DofAssignmentSingleEntity(const Space_& space) :
130 BaseClass(space)
131 {
132 }
133 };
134
135 template<
136 typename Space_,
137 int shape_dim_,
138 typename DataType_,
139 int dofs_per_cell_>
140 class DofAssignmentSingleEntity<Space_, shape_dim_, DataType_, shape_dim_, dofs_per_cell_> :
141 public DofAssignmentIdentity<Space_, shape_dim_, DataType_>
142 {
144
145 public:
146 explicit DofAssignmentSingleEntity(const Space_& space) :
147 BaseClass(space)
148 {
149 }
150 };
151 } // namespace Space
152} // namespace FEAT
#define XABORTM(msg)
Abortion macro definition with custom message.
Definition: assertion.hpp:192
Mapping of mesh entities to FE basis functions associated with them.
Index _cell_index
currently active cell index
Identity Dof-Assignment class template.
Null Dof-Assignment class template.
FEAT namespace.
Definition: adjactor.hpp:12
std::uint64_t Index
Index data type.