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