BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_Element_QUAD16.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_QUAD16_HPP
13#define BELFEM_CL_ELEMENT_QUAD16_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[ 4 ];
58 aNodes( 3 ) = 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[ 8 ];
67 break;
68 }
69 case( 2 ):
70 {
71 aNodes( 0 ) = mNodes[ 2 ];
72 aNodes( 1 ) = mNodes[ 3 ];
73 aNodes( 2 ) = mNodes[ 8 ];
74 aNodes( 3 ) = mNodes[ 9 ];
75 break;
76 }
77 case( 3 ):
78 {
79 aNodes( 0 ) = mNodes[ 3 ];
80 aNodes( 1 ) = mNodes[ 0 ];
81 aNodes( 2 ) = mNodes[ 10 ];
82 aNodes( 3 ) = mNodes[ 11 ];
83 break;
84 }
85 default:
86 {
87 this->throw_facet_error( aFacetIndex );
88 }
89 }
90 }
91
92//------------------------------------------------------------------------------
93
94 template <>
95 void
97 {
98 // allocate the node container
99 aNodes.set_size( 2, nullptr );
100
101 switch( aFacetIndex )
102 {
103 case( 0 ):
104 {
105 aNodes( 0 ) = mNodes[ 0 ];
106 aNodes( 1 ) = mNodes[ 1 ];
107 break;
108 }
109 case( 1 ):
110 {
111 aNodes( 0 ) = mNodes[ 1 ];
112 aNodes( 1 ) = mNodes[ 2 ];
113 break;
114 }
115 case( 2 ):
116 {
117 aNodes( 0 ) = mNodes[ 2 ];
118 aNodes( 1 ) = mNodes[ 3 ];
119 break;
120 }
121 case( 3 ):
122 {
123 aNodes( 0 ) = mNodes[ 3 ];
124 aNodes( 1 ) = mNodes[ 0 ];
125 break;
126 }
127 default:
128 {
129 this->throw_facet_error( aFacetIndex );
130 }
131 }
132 }
133
134//------------------------------------------------------------------------------
135
136 template <>
137 void
139 const uint aFacetIndex, Cell< Edge * > & aEdges )
140 {
141 // allocate the node container
142 aEdges.set_size( 1, nullptr );
143
144 switch( aFacetIndex )
145 {
146 case( 0 ):
147 {
148 aEdges( 0 ) = mEdges[ 0 ];
149 break ;
150 }
151 case( 1 ):
152 {
153 aEdges( 0 ) = mEdges[ 1 ];
154 break ;
155 }
156 case( 2 ):
157 {
158 aEdges( 0 ) = mEdges[ 2 ];
159 break ;
160 }
161 case( 3 ):
162 {
163 aEdges( 0 ) = mEdges[ 3 ];
164 break ;
165 }
166 default:
167 {
168 this->throw_facet_error( aFacetIndex );
169 }
170 }
171 }
172
173//------------------------------------------------------------------------------
174 } /* namespace mesh */
175} /* namespace belfem */
176
177#endif //BELFEM_CL_ELEMENT_QUAD16_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
@ QUAD16
Definition Mesh_Enums.hpp:56