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