BELFEM
0.9.0
Berkeley Lab Finite Element Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
cl_Element_HEX8TS.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, through
4
* 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_CL_ELEMENT_HEX8TS_HPP
13
#define BELFEM_CL_ELEMENT_HEX8TS_HPP
14
15
#include "
typedefs.hpp
"
16
#include "
Mesh_Enums.hpp
"
17
#include "
cl_ElementTemplate.hpp
"
18
19
namespace
belfem
20
{
21
namespace
mesh
22
{
23
//------------------------------------------------------------------------------
24
25
template
<>
26
ElementType
27
ElementTemplate< 8, 8, 8, 6, 1 >::type
()
const
28
{
29
return
ElementType::HEX8TS
;
30
}
31
32
//------------------------------------------------------------------------------
33
34
template
<>
35
uint
36
ElementTemplate< 8, 8, 8, 6, 1 >::dimension
()
const
37
{
38
return
3 ;
39
}
40
41
//------------------------------------------------------------------------------
42
43
template
<>
44
void
45
ElementTemplate< 8, 8, 8, 6, 1 >::get_nodes_of_edge
(
const
uint
aEdgeIndex,
Cell< Node * >
& aNodes )
46
{
47
aNodes.
set_size
( 2,
nullptr
);
48
switch
( aEdgeIndex )
49
{
50
case
0 :
51
{
52
aNodes( 0 ) = mNodes[ 0 ];
53
aNodes( 1 ) = mNodes[ 1 ];
54
break
;
55
}
56
case
1 :
57
{
58
aNodes( 0 ) = mNodes[ 1 ];
59
aNodes( 1 ) = mNodes[ 2 ];
60
break
;
61
}
62
case
2 :
63
{
64
aNodes( 0 ) = mNodes[ 2 ];
65
aNodes( 1 ) = mNodes[ 3 ];
66
break
;
67
}
68
case
3 :
69
{
70
aNodes( 0 ) = mNodes[ 3 ];
71
aNodes( 1 ) = mNodes[ 0 ];
72
break
;
73
}
74
case
4 :
75
{
76
aNodes( 0 ) = mNodes[ 4 ];
77
aNodes( 1 ) = mNodes[ 5 ];
78
break
;
79
}
80
case
5 :
81
{
82
aNodes( 0 ) = mNodes[ 5 ];
83
aNodes( 1 ) = mNodes[ 6 ];
84
break
;
85
}
86
case
6 :
87
{
88
aNodes( 0 ) = mNodes[ 6 ];
89
aNodes( 1 ) = mNodes[ 7 ];
90
break
;
91
}
92
case
7 :
93
{
94
aNodes( 0 ) = mNodes[ 7 ];
95
aNodes( 1 ) = mNodes[ 4 ];
96
break
;
97
}
98
default
:
99
{
100
this->throw_edge_error( aEdgeIndex );
101
}
102
}
103
}
104
105
template
<>
106
void
107
ElementTemplate< 8, 8, 8, 6, 1 >::get_nodes_of_facet
(
const
uint
aFacetIndex,
Cell< Node * >
& aNodes )
108
{
109
// allocate the node container
110
aNodes.
set_size
( 4,
nullptr
);
111
112
switch
( aFacetIndex )
113
{
114
case
0 :
115
{
116
aNodes( 0 ) = mNodes[ 0 ];
117
aNodes( 1 ) = mNodes[ 1 ];
118
aNodes( 2 ) = mNodes[ 5 ];
119
aNodes( 3 ) = mNodes[ 4 ];
120
break
;
121
}
122
case
1 :
123
{
124
aNodes( 0 ) = mNodes[ 1 ];
125
aNodes( 1 ) = mNodes[ 2 ];
126
aNodes( 2 ) = mNodes[ 6 ];
127
aNodes( 3 ) = mNodes[ 5 ];
128
break
;
129
}
130
case
2 :
131
{
132
aNodes( 0 ) = mNodes[ 2 ];
133
aNodes( 1 ) = mNodes[ 3 ];
134
aNodes( 2 ) = mNodes[ 7 ];
135
aNodes( 3 ) = mNodes[ 6 ];
136
break
;
137
}
138
case
3 :
139
{
140
aNodes( 0 ) = mNodes[ 0 ];
141
aNodes( 1 ) = mNodes[ 4 ];
142
aNodes( 2 ) = mNodes[ 7 ];
143
aNodes( 3 ) = mNodes[ 3 ];
144
break
;
145
}
146
case
4 :
147
{
148
aNodes( 0 ) = mNodes[ 0 ];
149
aNodes( 1 ) = mNodes[ 3 ];
150
aNodes( 2 ) = mNodes[ 2 ];
151
aNodes( 3 ) = mNodes[ 1 ];
152
break
;
153
}
154
case
5 :
155
{
156
aNodes( 0 ) = mNodes[ 4 ];
157
aNodes( 1 ) = mNodes[ 5 ];
158
aNodes( 2 ) = mNodes[ 6 ];
159
aNodes( 3 ) = mNodes[ 7 ];
160
break
;
161
}
162
default
:
163
{
164
this->throw_facet_error( aFacetIndex );
165
}
166
}
167
168
}
169
170
template
<>
171
void
172
ElementTemplate< 8, 8, 8, 6, 1 >::get_corner_nodes_of_facet
(
const
uint
aFacetIndex,
Cell< Node * >
& aNodes )
173
{
174
this->
get_nodes_of_facet
( aFacetIndex, aNodes );
175
}
176
177
template
<>
178
void
179
ElementTemplate< 8, 8, 8, 6, 1 >::get_edges_of_facet
(
180
const
uint
aFacetIndex,
Cell< Edge * >
& aEdges )
181
{
182
// allocate the node container
183
aEdges.
set_size
( 4,
nullptr
);
184
185
switch
( aFacetIndex )
186
{
187
case
4 :
188
{
189
aEdges( 0 ) = mEdges[ 3 ];
190
aEdges( 1 ) = mEdges[ 2 ];
191
aEdges( 2 ) = mEdges[ 1 ];
192
aEdges( 3 ) = mEdges[ 0 ];
193
break
;
194
}
195
case
5 :
196
{
197
aEdges( 0 ) = mEdges[ 4 ];
198
aEdges( 1 ) = mEdges[ 5 ];
199
aEdges( 2 ) = mEdges[ 6 ];
200
aEdges( 3 ) = mEdges[ 7 ];
201
break
;
202
}
203
default
:
204
{
205
this->throw_facet_error( aFacetIndex );
206
}
207
}
208
}
209
210
//-----------------------------------------------------------------------------
211
}
212
}
213
214
#endif
//BELFEM_CL_ELEMENT_HEX8TS_HPP
Mesh_Enums.hpp
cl_ElementTemplate.hpp
belfem::Cell
Cell is a wrapper around the standard vector.
Definition
cl_Cell.hpp:42
belfem::Cell::set_size
void set_size(const size_t aSize)
Definition
cl_Cell.hpp:189
belfem::mesh::ElementTemplate::get_nodes_of_edge
void get_nodes_of_edge(const uint aEdgeIndex, Cell< Node * > &aNodes) override
Definition
cl_ElementTemplate.hpp:930
belfem::mesh::ElementTemplate::get_nodes_of_facet
void get_nodes_of_facet(const uint aFacetIndex, Cell< Node * > &aNodes) override
Definition
cl_ElementTemplate.hpp:896
belfem::mesh::ElementTemplate::get_corner_nodes_of_facet
void get_corner_nodes_of_facet(const uint aFacetIndex, Cell< Node * > &aNodes) override
Definition
cl_ElementTemplate.hpp:907
belfem::mesh::ElementTemplate::dimension
uint dimension() const override
Definition
cl_ElementTemplate.hpp:978
belfem::mesh::ElementTemplate::type
ElementType type() const override
return the type of the element
Definition
cl_ElementTemplate.hpp:470
belfem::mesh::ElementTemplate::get_edges_of_facet
void get_edges_of_facet(const uint aFacetIndex, Cell< Edge * > &aEdges) override
Definition
cl_ElementTemplate.hpp:918
belfem::mesh
Definition
cl_EF_EdgeFunction.hpp:17
belfem
USER GUIDES:
Definition
cl_Capacitor.cpp:16
belfem::uint
unsigned int uint
Definition
typedefs.hpp:30
belfem::ElementType
ElementType
Element types.
Definition
Mesh_Enums.hpp:27
belfem::ElementType::HEX8TS
@ HEX8TS
Definition
Mesh_Enums.hpp:60
typedefs.hpp
src
mesh
cl_Element_HEX8TS.hpp
Generated by
1.18.0