OGS
NaturalNodeCoordinates.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
7
8namespace NumLib
9{
12template <typename MeshLibElement>
14
15template <>
17{
18 static constexpr std::array<std::array<double, 3>, 1> coordinates = {
19 {{0, 0, 0}}};
20};
21
22template <>
24{
25 static constexpr std::array<std::array<double, 3>, 2> coordinates = {
26 {{{-1, 0, 0}}, {{1, 0, 0}}}};
27};
28
29template <>
31{
32 static constexpr std::array<std::array<double, 3>, 3> coordinates = {
33 {{{-1, 0, 0}}, {{1, 0, 0}}, {{0, 0, 0}}}};
34};
35
36template <>
38{
39 static constexpr std::array<std::array<double, 3>, 3> coordinates = {
40 {{{0, 0, 0}}, {{1, 0, 0}}, {{0, 1, 0}}}};
41};
42
43template <>
45{
46 static constexpr std::array<std::array<double, 3>, 6> coordinates = {
47 {{{0, 0, 0}},
48 {{1, 0, 0}},
49 {{0, 1, 0}},
50 {{0.5, 0, 0}},
51 {{0.5, 0.5, 0}},
52 {{0, 0.5, 0}}}};
53};
54
55template <>
57{
58 static constexpr std::array<std::array<double, 3>, 4> coordinates = {
59 {{{1, 1, 0}}, {{-1, 1, 0}}, {{-1, -1, 0}}, {{1, -1, 0}}}};
60};
61
62template <>
64{
65 static constexpr std::array<std::array<double, 3>, 8> coordinates = {
66 {{{1, 1, 0}},
67 {{-1, 1, 0}},
68 {{-1, -1, 0}},
69 {{1, -1, 0}},
70 {{0, 1, 0}},
71 {{-1, 0, 0}},
72 {{0, -1, 0}},
73 {{1, 0, 0}}}};
74};
75
76template <>
78{
79 static constexpr std::array<std::array<double, 3>, 9> coordinates = {
80 {{{1, 1, 0}},
81 {{-1, 1, 0}},
82 {{-1, -1, 0}},
83 {{1, -1, 0}},
84 {{0, 1, 0}},
85 {{-1, 0, 0}},
86 {{0, -1, 0}},
87 {{1, 0, 0}},
88 {{0, 0, 0}}}};
89};
90
91template <>
93{
94 static constexpr std::array<std::array<double, 3>, 4> coordinates = {
95 {{{0, 0, 0}}, {{1, 0, 0}}, {{0, 1, 0}}, {{0, 0, 1}}}};
96};
97
98template <>
100{
101 static constexpr std::array<std::array<double, 3>, 10> coordinates = {
102 {{{0, 0, 0}},
103 {{1, 0, 0}},
104 {{0, 1, 0}},
105 {{0, 0, 1}},
106
107 {{0.5, 0, 0}},
108 {{0.5, 0.5, 0}},
109 {{0, 0.5, 0}},
110
111 {{0, 0, 0.5}},
112 {{0.5, 0, 0.5}},
113 {{0, 0.5, 0.5}}}};
114};
115
116template <>
118{
119 static constexpr std::array<std::array<double, 3>, 6> coordinates = {
120 {{{0, 0, -1}},
121 {{1, 0, -1}},
122 {{0, 1, -1}},
123 {{0, 0, 1}},
124 {{1, 0, 1}},
125 {{0, 1, 1}}}};
126};
127
128template <>
130{
131 static constexpr std::array<std::array<double, 3>, 15> coordinates = {
132 {{{0, 0, -1}},
133 {{1, 0, -1}},
134 {{0, 1, -1}},
135 {{0, 0, 1}},
136 {{1, 0, 1}},
137 {{0, 1, 1}},
138
139 {{0.5, 0, -1}},
140 {{0.5, 0.5, -1}},
141 {{0, 0.5, -1}},
142
143 {{0.5, 0, 1}},
144 {{0.5, 0.5, 1}},
145 {{0, 0.5, 1}},
146
147 {{0, 0, 0}},
148 {{1, 0, 0}},
149 {{0, 1, 0}}}};
150};
151
152template <>
154{
155 static constexpr std::array<std::array<double, 3>, 5> coordinates = {
156 {{{-1, -1, -1}},
157 {{1, -1, -1}},
158 {{1, 1, -1}},
159 {{-1, 1, -1}},
160 {{0, 0, 1}}}};
161};
162
163template <>
164struct NaturalCoordinates<MeshLib::Pyramid13>
165{
166 static constexpr std::array<std::array<double, 3>, 13> coordinates = {{
167 {{-1, -1, -1}},
168 {{1, -1, -1}},
169 {{1, 1, -1}},
170 {{-1, 1, -1}},
171
172 {{0, 0, 1}},
173
174 {{0, -1, -1}},
175 {{1, 0, -1}},
176 {{0, 1, -1}},
177 {{-1, 0, -1}},
178
179 {{-1, -1, 0}},
180 {{1, -1, 0}},
181 {{1, 1, 0}},
182 {{-1, 1, 0}},
183 }};
184};
185
186template <>
188{
189 static constexpr std::array<std::array<double, 3>,
191 coordinates = {{{{-1, -1, -1}},
192 {{1, -1, -1}},
193 {{1, 1, -1}},
194 {{-1, 1, -1}},
195 {{-1, -1, 1}},
196 {{1, -1, 1}},
197 {{1, 1, 1}},
198 {{-1, 1, 1}}}};
199};
200
201template <>
203{
204 static constexpr std::array<std::array<double, 3>,
207 {{{-1, -1, -1}}, {{1, -1, -1}}, {{1, 1, -1}}, {{-1, 1, -1}},
208 {{-1, -1, 1}}, {{1, -1, 1}}, {{1, 1, 1}}, {{-1, 1, 1}},
209
210 {{0, -1, -1}}, {{1, 0, -1}}, {{0, 1, -1}}, {{-1, 0, -1}},
211 {{0, -1, 1}}, {{1, 0, 1}}, {{0, 1, 1}}, {{-1, 0, 1}},
212
213 {{-1, -1, 0}}, {{1, -1, 0}}, {{1, 1, 0}}, {{-1, 1, 0}}}};
214};
215} // namespace NumLib
static constexpr std::array< std::array< double, 3 >, MeshLib::Hex20::n_all_nodes > coordinates
static constexpr std::array< std::array< double, 3 >, MeshLib::Hex::n_all_nodes > coordinates
static constexpr std::array< std::array< double, 3 >, 3 > coordinates
static constexpr std::array< std::array< double, 3 >, 2 > coordinates
static constexpr std::array< std::array< double, 3 >, 1 > coordinates
static constexpr std::array< std::array< double, 3 >, 15 > coordinates
static constexpr std::array< std::array< double, 3 >, 6 > coordinates
static constexpr std::array< std::array< double, 3 >, 13 > coordinates
static constexpr std::array< std::array< double, 3 >, 5 > coordinates
static constexpr std::array< std::array< double, 3 >, 8 > coordinates
static constexpr std::array< std::array< double, 3 >, 9 > coordinates
static constexpr std::array< std::array< double, 3 >, 4 > coordinates
static constexpr std::array< std::array< double, 3 >, 10 > coordinates
static constexpr std::array< std::array< double, 3 >, 4 > coordinates
static constexpr std::array< std::array< double, 3 >, 6 > coordinates
static constexpr std::array< std::array< double, 3 >, 3 > coordinates