OGS
NaturalNodeCoordinates.h
Go to the documentation of this file.
1
11#pragma once
12
14
15namespace NumLib
16{
19template <typename MeshLibElement>
21
22template <>
24{
25 static constexpr std::array<std::array<double, 3>, 1> coordinates = {
26 {{0, 0, 0}}};
27};
28
29template <>
31{
32 static constexpr std::array<std::array<double, 3>, 2> coordinates = {
33 {{{-1, 0, 0}}, {{1, 0, 0}}}};
34};
35
36template <>
38{
39 static constexpr std::array<std::array<double, 3>, 3> coordinates = {
40 {{{-1, 0, 0}}, {{1, 0, 0}}, {{0, 0, 0}}}};
41};
42
43template <>
45{
46 static constexpr std::array<std::array<double, 3>, 3> coordinates = {
47 {{{0, 0, 0}}, {{1, 0, 0}}, {{0, 1, 0}}}};
48};
49
50template <>
52{
53 static constexpr std::array<std::array<double, 3>, 6> coordinates = {
54 {{{0, 0, 0}},
55 {{1, 0, 0}},
56 {{0, 1, 0}},
57 {{0.5, 0, 0}},
58 {{0.5, 0.5, 0}},
59 {{0, 0.5, 0}}}};
60};
61
62template <>
64{
65 static constexpr std::array<std::array<double, 3>, 4> coordinates = {
66 {{{1, 1, 0}}, {{-1, 1, 0}}, {{-1, -1, 0}}, {{1, -1, 0}}}};
67};
68
69template <>
71{
72 static constexpr std::array<std::array<double, 3>, 8> coordinates = {
73 {{{1, 1, 0}},
74 {{-1, 1, 0}},
75 {{-1, -1, 0}},
76 {{1, -1, 0}},
77 {{0, 1, 0}},
78 {{-1, 0, 0}},
79 {{0, -1, 0}},
80 {{1, 0, 0}}}};
81};
82
83template <>
85{
86 static constexpr std::array<std::array<double, 3>, 9> coordinates = {
87 {{{1, 1, 0}},
88 {{-1, 1, 0}},
89 {{-1, -1, 0}},
90 {{1, -1, 0}},
91 {{0, 1, 0}},
92 {{-1, 0, 0}},
93 {{0, -1, 0}},
94 {{1, 0, 0}},
95 {{0, 0, 0}}}};
96};
97
98template <>
100{
101 static constexpr std::array<std::array<double, 3>, 4> coordinates = {
102 {{{0, 0, 0}}, {{1, 0, 0}}, {{0, 1, 0}}, {{0, 0, 1}}}};
103};
104
105template <>
107{
108 static constexpr std::array<std::array<double, 3>, 10> coordinates = {
109 {{{0, 0, 0}},
110 {{1, 0, 0}},
111 {{0, 1, 0}},
112 {{0, 0, 1}},
113
114 {{0.5, 0, 0}},
115 {{0.5, 0.5, 0}},
116 {{0, 0.5, 0}},
117
118 {{0, 0, 0.5}},
119 {{0.5, 0, 0.5}},
120 {{0, 0.5, 0.5}}}};
121};
122
123template <>
125{
126 static constexpr std::array<std::array<double, 3>, 6> coordinates = {
127 {{{0, 0, -1}},
128 {{1, 0, -1}},
129 {{0, 1, -1}},
130 {{0, 0, 1}},
131 {{1, 0, 1}},
132 {{0, 1, 1}}}};
133};
134
135template <>
137{
138 static constexpr std::array<std::array<double, 3>, 15> coordinates = {
139 {{{0, 0, -1}},
140 {{1, 0, -1}},
141 {{0, 1, -1}},
142 {{0, 0, 1}},
143 {{1, 0, 1}},
144 {{0, 1, 1}},
145
146 {{0.5, 0, -1}},
147 {{0.5, 0.5, -1}},
148 {{0, 0.5, -1}},
149
150 {{0.5, 0, 1}},
151 {{0.5, 0.5, 1}},
152 {{0, 0.5, 1}},
153
154 {{0, 0, 0}},
155 {{1, 0, 0}},
156 {{0, 1, 0}}}};
157};
158
159template <>
161{
162 static constexpr std::array<std::array<double, 3>, 5> coordinates = {
163 {{{-1, -1, -1}},
164 {{1, -1, -1}},
165 {{1, 1, -1}},
166 {{-1, 1, -1}},
167 {{0, 0, 1}}}};
168};
169
170template <>
172{
173 static constexpr std::array<std::array<double, 3>, 13> coordinates = {{
174 {{-1, -1, -1}},
175 {{1, -1, -1}},
176 {{1, 1, -1}},
177 {{-1, 1, -1}},
178
179 {{0, 0, 1}},
180
181 {{0, -1, -1}},
182 {{1, 0, -1}},
183 {{0, 1, -1}},
184 {{-1, 0, -1}},
185
186 {{-1, -1, 0}},
187 {{1, -1, 0}},
188 {{1, 1, 0}},
189 {{-1, 1, 0}},
190 }};
191};
192
193template <>
195{
196 static constexpr std::array<std::array<double, 3>,
198 coordinates = {{{{-1, -1, -1}},
199 {{1, -1, -1}},
200 {{1, 1, -1}},
201 {{-1, 1, -1}},
202 {{-1, -1, 1}},
203 {{1, -1, 1}},
204 {{1, 1, 1}},
205 {{-1, 1, 1}}}};
206};
207
208template <>
210{
211 static constexpr std::array<std::array<double, 3>,
213 coordinates = {
214 {{{-1, -1, -1}}, {{1, -1, -1}}, {{1, 1, -1}}, {{-1, 1, -1}},
215 {{-1, -1, 1}}, {{1, -1, 1}}, {{1, 1, 1}}, {{-1, 1, 1}},
216
217 {{0, -1, -1}}, {{1, 0, -1}}, {{0, 1, -1}}, {{-1, 0, -1}},
218 {{0, -1, 1}}, {{1, 0, 1}}, {{0, 1, 1}}, {{-1, 0, 1}},
219
220 {{-1, -1, 0}}, {{1, -1, 0}}, {{1, 1, 0}}, {{-1, 1, 0}}}};
221};
222} // namespace NumLib
static const unsigned n_all_nodes
Constant: The number of all nodes for this element.
TemplateElement< MeshLib::PyramidRule13 > Pyramid13
Definition: Pyramid.h:26
TemplateElement< MeshLib::QuadRule8 > Quad8
Definition: Quad.h:29
TemplateElement< MeshLib::TetRule4 > Tet
Definition: Tet.h:25
TemplateElement< MeshLib::LineRule3 > Line3
Definition: Line.h:26
TemplateElement< MeshLib::TriRule3 > Tri
Definition: Tri.h:26
TemplateElement< MeshLib::QuadRule9 > Quad9
Definition: Quad.h:30
TemplateElement< MeshLib::PrismRule6 > Prism
Definition: Prism.h:25
TemplateElement< MeshLib::PyramidRule5 > Pyramid
Definition: Pyramid.h:25
TemplateElement< PointRule1 > Point
Definition: Point.h:20
TemplateElement< MeshLib::HexRule20 > Hex20
Definition: Hex.h:26
TemplateElement< MeshLib::TriRule6 > Tri6
Definition: Tri.h:27
TemplateElement< MeshLib::TetRule10 > Tet10
Definition: Tet.h:26
TemplateElement< MeshLib::PrismRule15 > Prism15
Definition: Prism.h:26
TemplateElement< MeshLib::HexRule8 > Hex
Definition: Hex.h:25
TemplateElement< MeshLib::QuadRule4 > Quad
Definition: Quad.h:28