BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
Mesh_Enums.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California,
4 * through Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11
12#ifndef BELFEM_MESH_ENUMS_HPP
13#define BELFEM_MESH_ENUMS_HPP
14
15#include <string>
16
17//------------------------------------------------------------------------------
18namespace belfem
19{
26 enum class ElementType
27 {
28 EMPTY = 0,
29 LINE2 = 1,
30 TRI3 = 2,
31 QUAD4 = 3,
32 TET4 = 4,
33 HEX8 = 5,
34 PENTA6 = 6,
35 PYRA5 = 7,
36 LINE3 = 8,
37 TRI6 = 9,
38 QUAD9 = 10,
39 TET10 = 11,
40 HEX27 = 12,
41 PENTA18 = 13,
42 PYRA14 = 14,
43 VERTEX = 15,
44 QUAD8 = 16,
45 HEX20 = 17,
46 PENTA15 = 18,
47 PYRA13 = 19,
48 TRI10 = 21,
49 TRI15 = 23,
50 TRI21 = 25,
51 LINE4 = 26,
52 LINE5 = 27,
53 LINE6 = 28,
54 TET20 = 29,
55 TET35 = 30,
56 QUAD16 = 32,
57 HEX64 = 92,
58 QUAD4TS = 103,
59 QUAD9TS = 110,
60 HEX8TS = 105, // thin shell variant (not gmsh standard)
61 PENTA6TS = 106, // thin shell variant (not gmsh standard)
62 PENTA18TS = 118, // thin shell variant (not gmsh standard)
63 HEX8TB = 125, // thin beam variant (not gmsh standard)
64 UNDEFINED = 127
65 };
66
67//------------------------------------------------------------------------------
68
69 enum class GeometryType
70 {
71 VERTEX = 0,
72 LINE = 1,
73 TRI = 2,
74 QUAD = 3,
75 TET = 4,
76 HEX = 5,
77 PENTA = 6,
78 PYRA = 7,
79 UNDEFINED = 8,
80 };
81
82//------------------------------------------------------------------------------
83
95
96//------------------------------------------------------------------------------
97
112
113//------------------------------------------------------------------------------
114
115 enum class EntityType
116 {
117 NODE = 0,
118 EDGE = 1, // only used for DOFS, field is not saved in exodus
119 FACE = 2, // only used for DOFS, field is not saved in exodus
120 CELL = 3, // only used for DOFS, same as Element, but field is not saved
121 FACET = 4, // used for lambda dofs, field is not saved
123 CONTROLPOINT = 6, // used for B-Splines
124 UNDEFINED = 7
125 };
126
127//------------------------------------------------------------------------------
128
129 enum class GroupType
130 {
133 UNDEFINED
134 };
135
136//------------------------------------------------------------------------------
137
138 enum class FieldType
139 {
141 UNDEFINED
142 };
143
184
185//------------------------------------------------------------------------------
186
187 inline std::string
188 to_string( const GeometryType aGeometryType )
189 {
190 switch( aGeometryType )
191 {
192 case ( GeometryType::VERTEX ) :
193 {
194 return "vertex";
195 }
196 case ( GeometryType::LINE ) :
197 {
198 return "line";
199 }
200 case ( GeometryType::TRI ) :
201 {
202 return "tri";
203 }
204 case ( GeometryType::QUAD ) :
205 {
206 return "quad";
207 }
208 case ( GeometryType::TET ) :
209 {
210 return "tet";
211 }
212 case ( GeometryType::PYRA ) :
213 {
214 return "pyra";
215 }
216 case ( GeometryType::PENTA ) :
217 {
218 return "penta";
219 }
220 case ( GeometryType::HEX ) :
221 {
222 return "hex";
223 }
224 default :
225 {
226 return "unknown";
227 }
228 }
229 }
230
231//------------------------------------------------------------------------------
232
233 inline std::string
234 to_string( const ElementType aElementType )
235 {
236 switch( aElementType )
237 {
238 case( ElementType::EMPTY ) :
239 {
240 return "empty" ;
241 }
242 case( ElementType::LINE2 ) :
243 {
244 return "line2" ;
245 }
246 case( ElementType::TRI3 ) :
247 {
248 return "tri3" ;
249 }
250 case( ElementType::QUAD4 ) :
251 case( ElementType::QUAD4TS ) :
252 {
253 return "quad4" ;
254 }
255 case( ElementType::TET4 ) :
256 {
257 return "tet4" ;
258 }
259 case( ElementType::HEX8 ) :
260 case( ElementType::HEX8TS ) :
261 case( ElementType::HEX8TB ) :
262 {
263 return "hex8" ;
264 }
265 case( ElementType::PENTA6 ) :
266 case ( ElementType::PENTA6TS ) :
267 {
268 return "penta6" ;
269 }
270 case( ElementType::PYRA5 ) :
271 {
272 return "pyra5" ;
273 }
274 case( ElementType::LINE3 ) :
275 {
276 return "line3" ;
277 }
278 case( ElementType::TRI6 ) :
279 {
280 return "tri6" ;
281 }
282 case( ElementType::QUAD9 ) :
283 {
284 return "quad9" ;
285 }
286 case( ElementType::TET10 ) :
287 {
288 return "tet10" ;
289 }
290 case( ElementType::HEX27 ) :
291 {
292 return "hex27" ;
293 }
294 case( ElementType::PENTA18 ) :
295 {
296 return "penta18" ;
297 }
298 case( ElementType::PYRA14 ) :
299 {
300 return "pyra14" ;
301 }
302 case( ElementType::VERTEX ) :
303 {
304 return "vertex" ;
305 }
306 case( ElementType::QUAD8 ) :
307 {
308 return "quad8" ;
309 }
310 case( ElementType::HEX20 ) :
311 {
312 return "hex20" ;
313 }
314 case( ElementType::PENTA15 ) :
315 {
316 return "penta15" ;
317 }
318 case( ElementType::PYRA13 ) :
319 {
320 return "pyra13" ;
321 }
322 case( ElementType::TRI10 ) :
323 {
324 return "tri10" ;
325 }
326 case( ElementType::TRI15 ) :
327 {
328 return "tri15" ;
329 }
330 case( ElementType::TRI21 ) :
331 {
332 return "tri21" ;
333 }
334 case( ElementType::LINE4 ) :
335 {
336 return "line4" ;
337 }
338 case( ElementType::LINE5 ) :
339 {
340 return "line5" ;
341 }
342 case( ElementType::LINE6 ) :
343 {
344 return "line6" ;
345 }
346 case( ElementType::TET20 ) :
347 {
348 return "tet20" ;
349 }
350 case( ElementType::TET35 ) :
351 {
352 return "tet35" ;
353 }
354 case( ElementType::QUAD16 ) :
355 {
356 return "quad16" ;
357 }
358 case( ElementType:: HEX64 ) :
359 {
360 return "hex64" ;
361 }
362 default :
363 {
364 return "unknown" ;
365 }
366 }
367 }
368
369
370 inline ElementType element_type( const std::string & aStr )
371 {
372 uint tNumTypes = static_cast<uint>( ElementType::UNDEFINED );
373 for ( uint k=0; k<tNumTypes; ++k )
374 {
375 if ( aStr == to_string( static_cast<ElementType>( k ) ) )
376 {
377 return static_cast<ElementType>( k );
378 }
379 }
381 }
382
383//------------------------------------------------------------------------------
384}
385#endif //BELFEM_MESH_ENUMS_HPP
USER GUIDES:
Definition cl_Capacitor.cpp:16
InterpolationType
Definition Mesh_Enums.hpp:99
@ BubbleFace3
Definition Mesh_Enums.hpp:109
@ BubbleFace2
Definition Mesh_Enums.hpp:108
@ BubbleEdge1
Definition Mesh_Enums.hpp:104
@ LAGRANGE
Definition Mesh_Enums.hpp:100
@ BubbleEdge2
Definition Mesh_Enums.hpp:105
@ BubbleFace0
Definition Mesh_Enums.hpp:106
@ BubbleEdge0
Definition Mesh_Enums.hpp:103
@ UNEFINED
Definition Mesh_Enums.hpp:110
@ BubbleFace1
Definition Mesh_Enums.hpp:107
@ HERMITE
Definition Mesh_Enums.hpp:101
@ BERNSTEIN
Definition Mesh_Enums.hpp:102
unsigned int uint
Definition typedefs.hpp:30
FieldType
Definition Mesh_Enums.hpp:139
@ SCALAR
Definition Mesh_Enums.hpp:140
Connectivity
Definition Mesh_Enums.hpp:145
@ ControlPointToControlPoint
Definition Mesh_Enums.hpp:179
@ FaceToNode
Definition Mesh_Enums.hpp:160
@ FaceToFacet
Definition Mesh_Enums.hpp:163
@ EdgeToFacet
Definition Mesh_Enums.hpp:157
@ ElementToFace
Definition Mesh_Enums.hpp:174
@ EdgeToFace
Definition Mesh_Enums.hpp:156
@ EdgeToNode
Definition Mesh_Enums.hpp:154
@ FaceToFace
Definition Mesh_Enums.hpp:162
@ EdgeToEdge
Definition Mesh_Enums.hpp:155
@ FacetToEdge
Definition Mesh_Enums.hpp:167
@ FacetToFacet
Definition Mesh_Enums.hpp:169
@ ElementToFacet
Definition Mesh_Enums.hpp:175
@ NodeToFace
Definition Mesh_Enums.hpp:150
@ FacetToFace
Definition Mesh_Enums.hpp:168
@ FacetToElement
Definition Mesh_Enums.hpp:170
@ ShellToShell
Definition Mesh_Enums.hpp:178
@ ControlPointToElement
Definition Mesh_Enums.hpp:181
@ FacetToNode
Definition Mesh_Enums.hpp:166
@ NodeToEdge
Definition Mesh_Enums.hpp:149
@ Compute
Definition Mesh_Enums.hpp:146
@ ElementToNode
Definition Mesh_Enums.hpp:172
@ EdgeToElement
Definition Mesh_Enums.hpp:158
@ TsElementToTsElement
Definition Mesh_Enums.hpp:177
@ FaceToVertex
Definition Mesh_Enums.hpp:159
@ FacetToVertex
Definition Mesh_Enums.hpp:165
@ ElementToEdge
Definition Mesh_Enums.hpp:173
@ FaceToEdge
Definition Mesh_Enums.hpp:161
@ ElementToVertex
Definition Mesh_Enums.hpp:171
@ NodeToVertex
Definition Mesh_Enums.hpp:147
@ NodeToElement
Definition Mesh_Enums.hpp:152
@ ElementToElement
Definition Mesh_Enums.hpp:176
@ EdgeToVertex
Definition Mesh_Enums.hpp:153
@ FaceToElement
Definition Mesh_Enums.hpp:164
@ NodeToNode
Definition Mesh_Enums.hpp:148
@ ElementToControlPoint
Definition Mesh_Enums.hpp:180
@ NodeToFacet
Definition Mesh_Enums.hpp:151
ElementType element_type(const std::string &aStr)
Definition Mesh_Enums.hpp:370
ElementType
Element types.
Definition Mesh_Enums.hpp:27
@ QUAD9TS
Definition Mesh_Enums.hpp:59
@ HEX27
Definition Mesh_Enums.hpp:40
@ VERTEX
Definition Mesh_Enums.hpp:43
@ UNDEFINED
Definition Mesh_Enums.hpp:64
@ HEX8
Definition Mesh_Enums.hpp:33
@ QUAD9
Definition Mesh_Enums.hpp:38
@ PYRA13
Definition Mesh_Enums.hpp:47
@ HEX20
Definition Mesh_Enums.hpp:45
@ PENTA15
Definition Mesh_Enums.hpp:46
@ QUAD4TS
Definition Mesh_Enums.hpp:58
@ PYRA5
Definition Mesh_Enums.hpp:35
@ LINE6
Definition Mesh_Enums.hpp:53
@ TRI10
Definition Mesh_Enums.hpp:48
@ HEX8TB
Definition Mesh_Enums.hpp:63
@ TET20
Definition Mesh_Enums.hpp:54
@ QUAD16
Definition Mesh_Enums.hpp:56
@ PYRA14
Definition Mesh_Enums.hpp:42
@ LINE4
Definition Mesh_Enums.hpp:51
@ PENTA6TS
Definition Mesh_Enums.hpp:61
@ QUAD4
Definition Mesh_Enums.hpp:31
@ TRI3
Definition Mesh_Enums.hpp:30
@ LINE3
Definition Mesh_Enums.hpp:36
@ TRI15
Definition Mesh_Enums.hpp:49
@ PENTA18
Definition Mesh_Enums.hpp:41
@ HEX64
Definition Mesh_Enums.hpp:57
@ TET4
Definition Mesh_Enums.hpp:32
@ TRI21
Definition Mesh_Enums.hpp:50
@ TET35
Definition Mesh_Enums.hpp:55
@ PENTA18TS
Definition Mesh_Enums.hpp:62
@ EMPTY
Definition Mesh_Enums.hpp:28
@ PENTA6
Definition Mesh_Enums.hpp:34
@ TRI6
Definition Mesh_Enums.hpp:37
@ LINE2
Definition Mesh_Enums.hpp:29
@ LINE5
Definition Mesh_Enums.hpp:52
@ TET10
Definition Mesh_Enums.hpp:39
@ HEX8TS
Definition Mesh_Enums.hpp:60
@ QUAD8
Definition Mesh_Enums.hpp:44
EntityType
Definition Mesh_Enums.hpp:116
@ NODE
Definition Mesh_Enums.hpp:117
@ FACE
Definition Mesh_Enums.hpp:119
@ CONTROLPOINT
Definition Mesh_Enums.hpp:123
@ EDGE
Definition Mesh_Enums.hpp:118
@ FACET
Definition Mesh_Enums.hpp:121
@ ELEMENT
Definition Mesh_Enums.hpp:122
@ CELL
Definition Mesh_Enums.hpp:120
GroupType
Definition Mesh_Enums.hpp:130
@ SIDESET
Definition Mesh_Enums.hpp:132
@ BLOCK
Definition Mesh_Enums.hpp:131
InterpolationOrder
Definition Mesh_Enums.hpp:85
@ SERENDIPITY
Definition Mesh_Enums.hpp:89
@ QUINTIC
Definition Mesh_Enums.hpp:92
@ CONSTANT
Definition Mesh_Enums.hpp:86
@ QUARTIC
Definition Mesh_Enums.hpp:91
@ QUADRATIC
Definition Mesh_Enums.hpp:88
@ LINEAR
Definition Mesh_Enums.hpp:87
@ CUBIC
Definition Mesh_Enums.hpp:90
string to_string(const DomainType aDomainType)
Definition en_DomainType.cpp:21
GeometryType
Definition Mesh_Enums.hpp:70
@ VERTEX
Definition Mesh_Enums.hpp:71
@ LINE
Definition Mesh_Enums.hpp:72
@ PYRA
Definition Mesh_Enums.hpp:78
@ TET
Definition Mesh_Enums.hpp:75
@ PENTA
Definition Mesh_Enums.hpp:77
@ TRI
Definition Mesh_Enums.hpp:73
@ HEX
Definition Mesh_Enums.hpp:76
@ QUAD
Definition Mesh_Enums.hpp:74