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