BELFEM
0.9.0
Berkeley Lab Finite Element Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
cl_Element_QUAD16.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_QUAD16_HPP
13
#define BELFEM_CL_ELEMENT_QUAD16_HPP
14
15
16
#include "
typedefs.hpp
"
17
#include "
Mesh_Enums.hpp
"
18
#include "
cl_ElementTemplate.hpp
"
19
20
namespace
belfem
21
{
22
namespace
mesh
23
{
24
//------------------------------------------------------------------------------
25
26
template
<>
27
ElementType
28
ElementTemplate< 16, 4, 4, 4, 1 >::type
()
const
29
{
30
return
ElementType::QUAD16
;
31
}
32
33
//------------------------------------------------------------------------------
34
35
template
<>
36
uint
37
ElementTemplate< 16, 4, 4, 4, 1 >::dimension
()
const
38
{
39
return
2 ;
40
}
41
42
//------------------------------------------------------------------------------
43
44
template
<>
45
void
46
ElementTemplate< 16, 4, 4, 4, 1 >::get_nodes_of_facet
(
const
uint
aFacetIndex,
Cell< Node * >
& aNodes )
47
{
48
// allocate the node container
49
aNodes.
set_size
( 4,
nullptr
);
50
51
switch
( aFacetIndex )
52
{
53
case
( 0 ):
54
{
55
aNodes( 0 ) = mNodes[ 0 ];
56
aNodes( 1 ) = mNodes[ 1 ];
57
aNodes( 2 ) = mNodes[ 4 ];
58
aNodes( 3 ) = mNodes[ 5 ];
59
break
;
60
}
61
case
( 1 ):
62
{
63
aNodes( 0 ) = mNodes[ 1 ];
64
aNodes( 1 ) = mNodes[ 2 ];
65
aNodes( 2 ) = mNodes[ 6 ];
66
aNodes( 3 ) = mNodes[ 8 ];
67
break
;
68
}
69
case
( 2 ):
70
{
71
aNodes( 0 ) = mNodes[ 2 ];
72
aNodes( 1 ) = mNodes[ 3 ];
73
aNodes( 2 ) = mNodes[ 8 ];
74
aNodes( 3 ) = mNodes[ 9 ];
75
break
;
76
}
77
case
( 3 ):
78
{
79
aNodes( 0 ) = mNodes[ 3 ];
80
aNodes( 1 ) = mNodes[ 0 ];
81
aNodes( 2 ) = mNodes[ 10 ];
82
aNodes( 3 ) = mNodes[ 11 ];
83
break
;
84
}
85
default
:
86
{
87
this->throw_facet_error( aFacetIndex );
88
}
89
}
90
}
91
92
//------------------------------------------------------------------------------
93
94
template
<>
95
void
96
ElementTemplate< 16, 4, 4, 4, 1 >::get_corner_nodes_of_facet
(
const
uint
aFacetIndex,
Cell< Node * >
& aNodes )
97
{
98
// allocate the node container
99
aNodes.
set_size
( 2,
nullptr
);
100
101
switch
( aFacetIndex )
102
{
103
case
( 0 ):
104
{
105
aNodes( 0 ) = mNodes[ 0 ];
106
aNodes( 1 ) = mNodes[ 1 ];
107
break
;
108
}
109
case
( 1 ):
110
{
111
aNodes( 0 ) = mNodes[ 1 ];
112
aNodes( 1 ) = mNodes[ 2 ];
113
break
;
114
}
115
case
( 2 ):
116
{
117
aNodes( 0 ) = mNodes[ 2 ];
118
aNodes( 1 ) = mNodes[ 3 ];
119
break
;
120
}
121
case
( 3 ):
122
{
123
aNodes( 0 ) = mNodes[ 3 ];
124
aNodes( 1 ) = mNodes[ 0 ];
125
break
;
126
}
127
default
:
128
{
129
this->throw_facet_error( aFacetIndex );
130
}
131
}
132
}
133
134
//------------------------------------------------------------------------------
135
136
template
<>
137
void
138
ElementTemplate< 16, 4, 4, 4, 1 >::get_edges_of_facet
(
139
const
uint
aFacetIndex,
Cell< Edge * >
& aEdges )
140
{
141
// allocate the node container
142
aEdges.
set_size
( 1,
nullptr
);
143
144
switch
( aFacetIndex )
145
{
146
case
( 0 ):
147
{
148
aEdges( 0 ) = mEdges[ 0 ];
149
break ;
150
}
151
case
( 1 ):
152
{
153
aEdges( 0 ) = mEdges[ 1 ];
154
break ;
155
}
156
case
( 2 ):
157
{
158
aEdges( 0 ) = mEdges[ 2 ];
159
break ;
160
}
161
case
( 3 ):
162
{
163
aEdges( 0 ) = mEdges[ 3 ];
164
break ;
165
}
166
default
:
167
{
168
this->throw_facet_error( aFacetIndex );
169
}
170
}
171
}
172
173
//------------------------------------------------------------------------------
174
}
/* namespace mesh */
175
}
/* namespace belfem */
176
177
#endif
//BELFEM_CL_ELEMENT_QUAD16_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_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::QUAD16
@ QUAD16
Definition
Mesh_Enums.hpp:56
typedefs.hpp
src
mesh
cl_Element_QUAD16.hpp
Generated by
1.18.0