BELFEM 0.9.0
Berkeley Lab Finite Element Framework
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"
25
26namespace belfem
27{
28 namespace mesh
29 {
30//------------------------------------------------------------------------------
31
32 template <>
38
39//------------------------------------------------------------------------------
40
41 template <>
42 uint
44 {
45 return 3 ;
46 }
47
48//------------------------------------------------------------------------------
49
50 template <>
51 bool
53 {
54 return true ;
55 }
56
57//------------------------------------------------------------------------------
58
59 template <>
60 void
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
120 {
121 this->get_nodes_of_facet( aFacetIndex, aNodes );
122 }
123
124//------------------------------------------------------------------------------
125
126 template <>
127 void
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
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
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
void set_size(const size_t aSize)
Definition cl_Cell.hpp:189
void get_nodes_of_edge(const uint aEdgeIndex, Cell< Node * > &aNodes) override
Definition cl_ElementTemplate.hpp:930
void get_nodes_of_facet(const uint aFacetIndex, Cell< Node * > &aNodes) override
Definition cl_ElementTemplate.hpp:896
bool is_thinshell() const override
Definition cl_ElementTemplate.hpp:1018
void get_corner_nodes_of_facet(const uint aFacetIndex, Cell< Node * > &aNodes) override
Definition cl_ElementTemplate.hpp:907
uint dimension() const override
Definition cl_ElementTemplate.hpp:978
ElementType type() const override
return the type of the element
Definition cl_ElementTemplate.hpp:470
void get_edges_of_facet(const uint aFacetIndex, Cell< Edge * > &aEdges) override
Definition cl_ElementTemplate.hpp:918
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
ElementType
Element types.
Definition Mesh_Enums.hpp:27
@ PENTA6TS
Definition Mesh_Enums.hpp:61
Definition __init__.py:1