BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_Element_TRI6.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_TRI6_HPP
13#define BELFEM_CL_ELEMENT_TRI6_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( 3, 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 break;
59 }
60 case( 1 ):
61 {
62 aNodes( 0 ) = mNodes[ 1 ];
63 aNodes( 1 ) = mNodes[ 2 ];
64 aNodes( 2 ) = mNodes[ 4 ];
65 break;
66 }
67 case( 2 ):
68 {
69 aNodes( 0 ) = mNodes[ 2 ];
70 aNodes( 1 ) = mNodes[ 0 ];
71 aNodes( 2 ) = mNodes[ 5 ];
72 break;
73 }
74 default:
75 {
76 this->throw_facet_error( aFacetIndex );
77 }
78 }
79 }
80
81//------------------------------------------------------------------------------
82
83 template <>
84 void
86 {
87 // allocate the node container
88 aNodes.set_size( 2, nullptr );
89
90 switch( aFacetIndex )
91 {
92 case( 0 ):
93 {
94 aNodes( 0 ) = mNodes[ 0 ];
95 aNodes( 1 ) = mNodes[ 1 ];
96 break;
97 }
98 case( 1 ):
99 {
100 aNodes( 0 ) = mNodes[ 1 ];
101 aNodes( 1 ) = mNodes[ 2 ];
102 break;
103 }
104 case( 2 ):
105 {
106 aNodes( 0 ) = mNodes[ 2 ];
107 aNodes( 1 ) = mNodes[ 0 ];
108 break;
109 }
110 default:
111 {
112 this->throw_facet_error( aFacetIndex );
113 }
114 }
115 }
116
117//------------------------------------------------------------------------------
118
119 template <>
120 void
122 const uint aFacetIndex, Cell< Edge * > & aEdges )
123 {
124 // allocate the node container
125 aEdges.set_size( 1, nullptr );
126
127 switch( aFacetIndex )
128 {
129 case( 0 ):
130 {
131 aEdges( 0 ) = mEdges[ 0 ];
132 break ;
133 }
134 case( 1 ):
135 {
136 aEdges( 0 ) = mEdges[ 1 ];
137 break ;
138 }
139 case( 2 ):
140 {
141 aEdges( 0 ) = mEdges[ 2 ];
142 break ;
143 }
144 default:
145 {
146 this->throw_facet_error( aFacetIndex );
147 }
148 }
149 }
150
151//------------------------------------------------------------------------------
152 } /* namespace mesh */
153} /* namespace belfem */
154
155#endif //BELFEM_CL_ELEMENT_TRI6_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
@ TRI6
Definition Mesh_Enums.hpp:37