BELFEM
0.9.3
Berkeley Lab Finite Element Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
cl_Element_PENTA6TS.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_CL_ELEMENT_PENTA6TS_HPP
13
#define BELFEM_CL_ELEMENT_PENTA6TS_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< 6, 6, 6, 5, 1 >::type
()
const
28
{
29
return
ElementType::PENTA6TS
;
30
}
31
32
//------------------------------------------------------------------------------
33
34
template
<>
35
uint
36
ElementTemplate< 6, 6, 6, 5, 1 >::dimension
()
const
37
{
38
return
3 ;
39
}
40
41
//------------------------------------------------------------------------------
42
43
template
<>
44
bool
45
ElementTemplate< 6, 6, 6, 5, 1 >::is_thinshell
()
const
46
{
47
return
true ;
48
}
49
50
//------------------------------------------------------------------------------
51
52
template
<>
53
void
54
ElementTemplate< 6, 6, 6, 5, 1 >::get_nodes_of_facet
(
const
uint
aFacetIndex,
Cell< Node * >
& aNodes )
55
{
56
switch
( aFacetIndex )
57
{
58
case
0 :
59
{
60
aNodes.
set_size
( 4,
nullptr
);
61
aNodes( 0 ) = mNodes[ 0 ];
62
aNodes( 1 ) = mNodes[ 1 ];
63
aNodes( 2 ) = mNodes[ 4 ];
64
aNodes( 3 ) = mNodes[ 3 ];
65
break
;
66
}
67
case
1 :
68
{
69
aNodes.
set_size
( 4,
nullptr
);
70
aNodes( 0 ) = mNodes[ 1 ];
71
aNodes( 1 ) = mNodes[ 2 ];
72
aNodes( 2 ) = mNodes[ 5 ];
73
aNodes( 3 ) = mNodes[ 4 ];
74
break
;
75
}
76
case
2 :
77
{
78
aNodes.
set_size
( 4,
nullptr
);
79
aNodes( 0 ) = mNodes[ 0 ];
80
aNodes( 1 ) = mNodes[ 3 ];
81
aNodes( 2 ) = mNodes[ 5 ];
82
aNodes( 3 ) = mNodes[ 2 ];
83
break
;
84
}
85
case
3 :
86
{
87
aNodes.
set_size
( 3,
nullptr
);
88
aNodes( 0 ) = mNodes[ 0 ];
89
aNodes( 1 ) = mNodes[ 2 ];
90
aNodes( 2 ) = mNodes[ 1 ];
91
break
;
92
}
93
case
4 :
94
{
95
aNodes.
set_size
( 3,
nullptr
);
96
aNodes( 0 ) = mNodes[ 3 ];
97
aNodes( 1 ) = mNodes[ 4 ];
98
aNodes( 2 ) = mNodes[ 5 ];
99
break
;
100
}
101
default
:
102
{
103
this->throw_facet_error( aFacetIndex );
104
}
105
}
106
}
107
108
//------------------------------------------------------------------------------
109
110
template
<>
111
void
112
ElementTemplate< 6, 6, 6, 5, 1 >::get_corner_nodes_of_facet
(
const
uint
aFacetIndex,
Cell< Node * >
& aNodes )
113
{
114
this->
get_nodes_of_facet
( aFacetIndex, aNodes );
115
}
116
117
//------------------------------------------------------------------------------
118
119
template
<>
120
void
121
ElementTemplate< 6, 6, 6, 5, 1 >::get_nodes_of_edge
(
const
uint
aEdgeIndex,
Cell< Node * >
& aNodes )
122
{
123
// allocate the node container
124
aNodes.
set_size
( 2,
nullptr
);
125
126
switch
( aEdgeIndex )
127
{
128
case
0 :
129
{
130
aNodes( 0 ) = mNodes[ 0 ];
131
aNodes( 1 ) = mNodes[ 1 ];
132
break
;
133
}
134
case
1 :
135
{
136
aNodes( 0 ) = mNodes[ 1 ];
137
aNodes( 1 ) = mNodes[ 2 ];
138
break
;
139
}
140
case
2 :
141
{
142
aNodes( 0 ) = mNodes[ 2 ];
143
aNodes( 1 ) = mNodes[ 0 ];
144
break
;
145
}
146
case
3 :
147
{
148
aNodes( 0 ) = mNodes[ 3 ];
149
aNodes( 1 ) = mNodes[ 4 ];
150
break
;
151
}
152
case
4 :
153
{
154
aNodes( 0 ) = mNodes[ 4 ];
155
aNodes( 1 ) = mNodes[ 5 ];
156
break
;
157
}
158
case
5 :
159
{
160
aNodes( 0 ) = mNodes[ 5 ];
161
aNodes( 1 ) = mNodes[ 3 ];
162
break
;
163
}
164
default
:
165
{
166
this->throw_edge_error( aEdgeIndex );
167
}
168
}
169
}
170
171
//------------------------------------------------------------------------------
172
173
template
<>
174
void
175
ElementTemplate< 6, 6, 6, 5, 1 >::get_edges_of_facet
(
176
const
uint
aFacetIndex,
Cell< Edge * >
& aEdges )
177
{
178
switch
( aFacetIndex )
179
{
180
case
3 :
181
{
182
aEdges.
set_size
( 3,
nullptr
);
183
aEdges( 0 ) = mEdges[ 2 ];
184
aEdges( 1 ) = mEdges[ 1 ];
185
aEdges( 2 ) = mEdges[ 0 ];
186
break
;
187
}
188
case
4 :
189
{
190
aEdges.
set_size
( 3,
nullptr
);
191
aEdges( 0 ) = mEdges[ 3 ];
192
aEdges( 1 ) = mEdges[ 4 ];
193
aEdges( 2 ) = mEdges[ 5 ];
194
break
;
195
}
196
default
:
197
{
198
this->throw_facet_error( aFacetIndex );
199
}
200
}
201
}
202
203
//------------------------------------------------------------------------------
204
}
/* namespace mesh */
205
}
/* namespace belfem */
206
207
#endif
//BELFEM_CL_ELEMENT_PENTA6TS_HPP
Mesh_Enums.hpp
cl_ElementTemplate.hpp
belfem::Cell
A bounds-checked wrapper around std::vector.
Definition
cl_Cell.hpp:45
belfem::Cell::set_size
void set_size(const size_t aSize)
New elements are value-initialized ( zero for arithmetic T, nullptr for pointers ).
Definition
cl_Cell.hpp:199
belfem::mesh::ElementTemplate::get_nodes_of_edge
void get_nodes_of_edge(const uint aEdgeIndex, Cell< Node * > &aNodes) override
Definition
cl_ElementTemplate.hpp:909
belfem::mesh::ElementTemplate::get_nodes_of_facet
void get_nodes_of_facet(const uint aFacetIndex, Cell< Node * > &aNodes) override
Definition
cl_ElementTemplate.hpp:875
belfem::mesh::ElementTemplate::is_thinshell
bool is_thinshell() const override
Definition
cl_ElementTemplate.hpp:997
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:886
belfem::mesh::ElementTemplate::dimension
uint dimension() const override
Definition
cl_ElementTemplate.hpp:957
belfem::mesh::ElementTemplate::type
ElementType type() const override
return the type of the element
Definition
cl_ElementTemplate.hpp:465
belfem::mesh::ElementTemplate::get_edges_of_facet
void get_edges_of_facet(const uint aFacetIndex, Cell< Edge * > &aEdges) override
Definition
cl_ElementTemplate.hpp:897
belfem::mesh
Definition
cl_EF_EdgeFunction.hpp:24
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::PENTA6TS
@ PENTA6TS
Definition
Mesh_Enums.hpp:61
typedefs.hpp
src
mesh
cl_Element_PENTA6TS.hpp
Generated by
1.18.0