BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_Element_TRI10.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_TRI10_HPP
13#define BELFEM_CL_ELEMENT_TRI10_HPP
14
15
16#include "typedefs.hpp"
17#include "Mesh_Enums.hpp"
19
20namespace belfem
21{
22 namespace mesh
23 {
24//------------------------------------------------------------------------------
25
26 template <>
32
33//------------------------------------------------------------------------------
34
35 template <>
36 uint
38 {
39 return 2 ;
40 }
41
42//------------------------------------------------------------------------------
43
44 template <>
45 void
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[ 3 ];
58 aNodes( 3 ) = mNodes[ 4 ];
59 break;
60 }
61 case( 1 ):
62 {
63 aNodes( 0 ) = mNodes[ 1 ];
64 aNodes( 1 ) = mNodes[ 2 ];
65 aNodes( 2 ) = mNodes[ 5 ];
66 aNodes( 3 ) = mNodes[ 6 ];
67 break;
68 }
69 case( 2 ):
70 {
71 aNodes( 0 ) = mNodes[ 2 ];
72 aNodes( 1 ) = mNodes[ 0 ];
73 aNodes( 2 ) = mNodes[ 7 ];
74 aNodes( 3 ) = mNodes[ 8 ];
75 break;
76 }
77 default:
78 {
79 this->throw_facet_error( aFacetIndex );
80 }
81 }
82 }
83
84//------------------------------------------------------------------------------
85
86 template <>
87 void
89 {
90 // allocate the node container
91 aNodes.set_size( 2, nullptr );
92
93 switch( aFacetIndex )
94 {
95 case( 0 ):
96 {
97 aNodes( 0 ) = mNodes[ 0 ];
98 aNodes( 1 ) = mNodes[ 1 ];
99 break;
100 }
101 case( 1 ):
102 {
103 aNodes( 0 ) = mNodes[ 1 ];
104 aNodes( 1 ) = mNodes[ 2 ];
105 break;
106 }
107 case( 2 ):
108 {
109 aNodes( 0 ) = mNodes[ 2 ];
110 aNodes( 1 ) = mNodes[ 0 ];
111 break;
112 }
113 default:
114 {
115 this->throw_facet_error( aFacetIndex );
116 }
117 }
118 }
119
120//------------------------------------------------------------------------------
121
122 template <>
123 void
125 const uint aFacetIndex, Cell< Edge * > & aEdges )
126 {
127 // allocate the node container
128 aEdges.set_size( 1, nullptr );
129
130 switch( aFacetIndex )
131 {
132 case( 0 ):
133 {
134 aEdges( 0 ) = mEdges[ 0 ];
135 break ;
136 }
137 case( 1 ):
138 {
139 aEdges( 0 ) = mEdges[ 1 ];
140 break ;
141 }
142 case( 2 ):
143 {
144 aEdges( 0 ) = mEdges[ 2 ];
145 break ;
146 }
147 default:
148 {
149 this->throw_facet_error( aFacetIndex );
150 }
151 }
152 }
153
154//------------------------------------------------------------------------------
155 } /* namespace mesh */
156} /* namespace belfem */
157
158#endif //BELFEM_CL_ELEMENT_TRI10_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_facet(const uint aFacetIndex, Cell< Node * > &aNodes) override
Definition cl_ElementTemplate.hpp:896
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
Definition cl_EF_EdgeFunction.hpp:17
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
ElementType
Element types.
Definition Mesh_Enums.hpp:27
@ TRI10
Definition Mesh_Enums.hpp:48