svMultiPhysics
Loading...
Searching...
No Matches
nn_elem_props.h
1// SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
2// SPDX-License-Identifier: BSD-3-Clause
3
4/// @brief Define a map type used to set element properties.
5using SetElementPropsMapType = std::map<int, std::function<void(int, mshType&)>>;
6
7/// @brief Map used to set 3D element properties.
8///
9/// This replicates the case statement in the Fortran 'SUBROUTINE SELECTELE(lM)'
10/// defined in NN.f.
11//
12SetElementPropsMapType set_3d_element_props = {
13
14 {4, [](int insd, mshType& mesh) -> void {
15 mesh.eType = ElementType::TET4;
16 mesh.nG = 4;
17 mesh.vtkType = 10;
18 mesh.nEf = 4;
19 mesh.lShpF = true;
20 }
21 },
22
23 {6, [](int insd, mshType& mesh) -> void {
24 mesh.eType = ElementType::WDG;
25 mesh.nG = 6;
26 mesh.vtkType = 13;
27 mesh.nEf = 3;
28 mesh.lShpF = true;
29 }
30 },
31
32 {8, [](int insd, mshType& mesh) -> void {
33 mesh.eType = ElementType::HEX8;
34 mesh.nG = 8;
35 mesh.vtkType = 12;
36 mesh.nEf = 6;
37 mesh.lShpF = false;
38 }
39 },
40
41 {20, [](int insd, mshType& mesh) -> void {
42 mesh.eType = ElementType::HEX20;
43 mesh.nG = 27;
44 mesh.vtkType = 25;
45 mesh.nEf = 6;
46 mesh.lShpF = false;
47 }
48 },
49
50 {27, [](int insd, mshType& mesh) -> void {
51 mesh.eType = ElementType::HEX27;
52 mesh.nG = 27;
53 mesh.vtkType = 29;
54 mesh.nEf = 6;
55 mesh.lShpF = false;
56 }
57 },
58
59 {10, [](int insd, mshType& mesh) -> void {
60 mesh.eType = ElementType::TET10;
61 mesh.nG = 15;
62 mesh.vtkType = 24;
63 mesh.nEf = 4;
64 mesh.lShpF = false;
65 }
66 },
67
68 {20, [](int insd, mshType& mesh) -> void {
69 mesh.eType = ElementType::HEX20;
70 mesh.nG = 27;
71 mesh.vtkType = 25;
72 mesh.nEf = 6;
73 mesh.lShpF = false;
74 }
75 },
76
77 {27, [](int insd, mshType& mesh) -> void {
78 mesh.eType = ElementType::HEX27;
79 mesh.nG = 27;
80 mesh.vtkType = 29;
81 mesh.nEf = 6;
82 mesh.lShpF = false;
83 }
84 },
85};
86
87//---------------------
88// set_2d_element_props
89//---------------------
90// Map used to set 2D element properties.
91//
92SetElementPropsMapType set_2d_element_props = {
93
94 {3, [](int insd, mshType& mesh) -> void {
95 mesh.eType = ElementType::TRI3;
96 mesh.nG = 3;
97 mesh.vtkType = 5;
98 mesh.nEf = 3;
99 mesh.lShpF = true;
100 }
101 },
102
103 {4, [](int insd, mshType& mesh) -> void {
104 mesh.eType = ElementType::QUD4;
105 mesh.nG = 4;
106 mesh.vtkType = 9;
107 mesh.nEf = 4;
108 mesh.lShpF = false;
109 }
110 },
111
112 {6, [](int insd, mshType& mesh) -> void {
113 mesh.eType = ElementType::TRI6;
114 mesh.nG = 7;
115 mesh.vtkType = 22;
116 mesh.nEf = 3;
117 mesh.lShpF = false;
118 }
119 },
120
121 {8, [](int insd, mshType& mesh) -> void {
122 mesh.eType = ElementType::QUD8;
123 mesh.nG = 9;
124 mesh.vtkType = 23;
125 mesh.nEf = 4;
126 mesh.lShpF = false;
127 }
128 },
129
130 {9, [](int insd, mshType& mesh) -> void {
131 mesh.eType = ElementType::QUD9;
132 mesh.nG = 9;
133 mesh.vtkType = 28;
134 mesh.nEf = 4;
135 mesh.lShpF = false;
136 }
137 },
138};
139
140/// @brief Map used to set 1D element properties.
141//
142SetElementPropsMapType set_1d_element_props = {
143
144 {2, [](int insd, mshType& mesh) -> void {
145 mesh.eType = ElementType::LIN1;
146 mesh.nG = 2;
147 mesh.vtkType = 3;
148 mesh.nEf = 2;
149 mesh.lShpF = true;
150 }
151 },
152
153 {3, [](int insd, mshType& mesh) -> void {
154 mesh.eType = ElementType::LIN2;
155 mesh.nG = 3;
156 mesh.vtkType = 21;
157 mesh.nEf = 2;
158 mesh.lShpF = false;
159 }
160 },
161};
162
163/// @brief Define a map type used to set face properties.
164using SetFacePropsMapType = std::map<int, std::function<void(int, faceType&)>>;
165
166/// @brief Map used to set face properties.
167///
168/// set_face_element_props[eNoN].
169///
170/// Replaces the Fortan 'select' statemnt in 'SELECTELEB'.
171//
172SetFacePropsMapType set_face_element_props = {
173
174 {1, [](int insd, faceType& face) -> void
175 {
176 face.eType = ElementType::PNT;
177 face.nG = 1;
178 }
179 },
180
181 // Two nodes per element.
182 //
183 {2, [](int insd, faceType& face) -> void
184 {
185 if (insd == 1) {
186 face.eType = ElementType::LIN1;
187 face.nG = 2;
188 }
189 }
190 },
191
192 {3, [](int insd, faceType& face) -> void
193 {
194 if (insd == 2) {
195 face.eType = ElementType::TRI3;
196 } else {
197 face.eType = ElementType::LIN2;
198 }
199 face.nG = 3;
200 }
201 },
202
203 {4, [](int insd, faceType& face) -> void {
204 face.eType = ElementType::QUD4;
205 face.nG = 4;
206 }
207 },
208
209 {6, [](int insd, faceType& face) -> void {
210 face.eType = ElementType::TRI6;
211 face.nG = 7;
212 }
213 },
214
215 {8, [](int insd, faceType& face) -> void {
216 face.eType = ElementType::QUD8;
217 face.nG = 9;
218 }
219 },
220
221 {9, [](int insd, faceType& face) -> void {
222 face.eType = ElementType::QUD9;
223 face.nG = 9;
224 }
225 },
226
227
228};
229
The face type containing mesh at boundary.
Definition ComMod.h:511
This is the container for a mesh or NURBS patch, those specific to NURBS are noted.
Definition ComMod.h:863