BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
fn_intpoints_gauss_tet24.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_FN_INTPOINTS_GAUSS_TET24_HPP
13#define BELFEM_FN_INTPOINTS_GAUSS_TET24_HPP
14
15#include "typedefs.hpp"
16#include "cl_Vector.hpp"
17#include "cl_Matrix.hpp"
18
19namespace belfem
20{
21 namespace integration
22 {
23// ----------------------------------------------------------------------------
24
25 inline void
27 Vector <real> & aWeights,
28 Matrix <real> & aPoints )
29 {
30 // source Keast: 10.1016/0045-7825(86)90059-9
31
32 real tAlpha1 = 0.214602871259151684;
33 real tBeta1 = 1.0 - 3.0*tAlpha1;
34
35 real tAlpha2 = 0.0406739585346113397;
36 real tBeta2 = 1.0 - 3.0*tAlpha2;
37
38 real tAlpha3 = 0.322337890142275646;
39 real tBeta3 = 1.0 - 3.0*tAlpha3;
40
41 real tAlpha4 = 0.0636610018750175299;
42 real tBeta4 = 1.0/3.0 - tAlpha4;
43 real tDelta4 = 1.0 - 2.0*tAlpha4 - tBeta4;
44
45 aPoints.set_size( 4, 24 );
46
47 aPoints( 0, 0 ) = tAlpha1;
48 aPoints( 1, 0 ) = tAlpha1;
49 aPoints( 2, 0 ) = tAlpha1;
50
51 aPoints( 0, 1 ) = tAlpha1;
52 aPoints( 1, 1 ) = tAlpha1;
53 aPoints( 2, 1 ) = tBeta1;
54
55 aPoints( 0, 2 ) = tAlpha1;
56 aPoints( 1, 2 ) = tBeta1;
57 aPoints( 2, 2 ) = tAlpha1;
58
59 aPoints( 0, 3 ) = tBeta1;
60 aPoints( 1, 3 ) = tAlpha1;
61 aPoints( 2, 3 ) = tAlpha1;
62
63 aPoints( 0, 4 ) = tAlpha2;
64 aPoints( 1, 4 ) = tAlpha2;
65 aPoints( 2, 4 ) = tAlpha2;
66
67 aPoints( 0, 5 ) = tAlpha2;
68 aPoints( 1, 5 ) = tAlpha2;
69 aPoints( 2, 5 ) = tBeta2;
70
71 aPoints( 0, 6 ) = tAlpha2;
72 aPoints( 1, 6 ) = tBeta2;
73 aPoints( 2, 6 ) = tAlpha2;
74
75 aPoints( 0, 7 ) = tBeta2;
76 aPoints( 1, 7 ) = tAlpha2;
77 aPoints( 2, 7 ) = tAlpha2;
78
79 aPoints( 0, 8 ) = tAlpha3;
80 aPoints( 1, 8 ) = tAlpha3;
81 aPoints( 2, 8 ) = tAlpha3;
82
83 aPoints( 0, 9 ) = tAlpha3;
84 aPoints( 1, 9 ) = tAlpha3;
85 aPoints( 2, 9 ) = tBeta3;
86
87 aPoints( 0, 10 ) = tAlpha3;
88 aPoints( 1, 10 ) = tBeta3;
89 aPoints( 2, 10 ) = tAlpha3;
90
91 aPoints( 0, 11 ) = tBeta3;
92 aPoints( 1, 11 ) = tAlpha3;
93 aPoints( 2, 11 ) = tAlpha3;
94
95 aPoints( 0, 12 ) = tAlpha4;
96 aPoints( 1, 12 ) = tAlpha4;
97 aPoints( 2, 12 ) = tBeta4;
98
99 aPoints( 0, 13 ) = tAlpha4;
100 aPoints( 1, 13 ) = tAlpha4;
101 aPoints( 2, 13 ) = tDelta4;
102
103 aPoints( 0, 14 ) = tAlpha4;
104 aPoints( 1, 14 ) = tBeta4;
105 aPoints( 2, 14 ) = tAlpha4;
106
107 aPoints( 0, 15 ) = tAlpha4;
108 aPoints( 1, 15 ) = tBeta4;
109 aPoints( 2, 15 ) = tDelta4;
110
111 aPoints( 0, 16 ) = tAlpha4;
112 aPoints( 1, 16 ) = tDelta4;
113 aPoints( 2, 16 ) = tAlpha4;
114
115 aPoints( 0, 17 ) = tAlpha4;
116 aPoints( 1, 17 ) = tDelta4;
117 aPoints( 2, 17 ) = tBeta4;
118
119 aPoints( 0, 18 ) = tBeta4;
120 aPoints( 1, 18 ) = tAlpha4;
121 aPoints( 2, 18 ) = tAlpha4;
122
123 aPoints( 0, 19 ) = tBeta4;
124 aPoints( 1, 19 ) = tAlpha4;
125 aPoints( 2, 19 ) = tDelta4;
126
127 aPoints( 0, 20 ) = tBeta4;
128 aPoints( 1, 20 ) = tDelta4;
129 aPoints( 2, 20 ) = tAlpha4;
130
131 aPoints( 0, 21 ) = tDelta4;
132 aPoints( 1, 21 ) = tAlpha4;
133 aPoints( 2, 21 ) = tAlpha4;
134
135 aPoints( 0, 22 ) = tDelta4;
136 aPoints( 1, 22 ) = tAlpha4;
137 aPoints( 2, 22 ) = tBeta4;
138
139 aPoints( 0, 23 ) = tDelta4;
140 aPoints( 1, 23 ) = tBeta4;
141 aPoints( 2, 23 ) = tAlpha4;
142
143 for( uint k=0; k<24; ++k )
144 {
145 aPoints( 3, k ) = 1.0
146 - aPoints( 0, k )
147 - aPoints( 1, k )
148 - aPoints( 2, k );
149 }
150
151 aWeights.set_size( 24 );
152
153 aWeights( 0 ) = 0.00665379170969464506;
154 aWeights( 1 ) = 0.00665379170969464506;
155 aWeights( 2 ) = 0.00665379170969464506;
156 aWeights( 3 ) = 0.00665379170969464506;
157
158 aWeights( 4 ) = 0.00167953517588677620;
159 aWeights( 5 ) = 0.00167953517588677620;
160 aWeights( 6 ) = 0.00167953517588677620;
161 aWeights( 7 ) = 0.00167953517588677620;
162
163 aWeights( 8 ) = 0.00922619692394239843;
164 aWeights( 9 ) = 0.00922619692394239843;
165 aWeights( 10 ) = 0.00922619692394239843;
166 aWeights( 11 ) = 0.00922619692394239843;
167
168 aWeights( 12 ) = 0.00803571428571428248;
169 aWeights( 13) = 0.00803571428571428248;
170 aWeights( 14 ) = 0.00803571428571428248;
171 aWeights( 15 ) = 0.00803571428571428248;
172
173 aWeights( 16 ) = 0.00803571428571428248;
174 aWeights( 17 ) = 0.00803571428571428248;
175 aWeights( 18 ) = 0.00803571428571428248;
176 aWeights( 19 ) = 0.00803571428571428248;
177
178 aWeights( 20 ) = 0.00803571428571428248;
179 aWeights( 21 ) = 0.00803571428571428248;
180 aWeights( 22 ) = 0.00803571428571428248;
181 aWeights( 23 ) = 0.00803571428571428248;
182 }
183
184// ----------------------------------------------------------------------------
185 } /* namespace integration */
186} /* namespace belfem */
187
188#endif //BELFEM_FN_INTPOINTS_GAUSS_TET24_HPP
void set_size(const size_t aNumRows, const size_t aNumCols)
Definition cl_AR_Matrix.hpp:186
void set_size(const size_t aNumRows)
change the size of the vector
Definition cl_AR_Vector.hpp:237
Definition fn_intpoints.cpp:576
void gauss_tet24(Vector< real > &aWeights, Matrix< real > &aPoints)
Definition fn_intpoints_gauss_tet24.hpp:26
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
double real
Definition typedefs.hpp:36