BELFEM 0.9.0
Berkeley Lab Finite Element Framework
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"
18
19namespace belfem
20{
21 namespace mesh
22 {
23//------------------------------------------------------------------------------
24
25 template <>
31
32//------------------------------------------------------------------------------
33
34 template <>
35 uint
37 {
38 return 2 ;
39 }
40
41//------------------------------------------------------------------------------
42
43 template <>
44 void
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
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
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
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
@ TRI15
Definition Mesh_Enums.hpp:49