BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
fn_intpoints_gauss_tet10.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_TET10_HPP
13#define BELFEM_FN_INTPOINTS_GAUSS_TET10_HPP
14
15
16#include "typedefs.hpp"
17#include "cl_Vector.hpp"
18#include "cl_Matrix.hpp"
19// ----------------------------------------------------------------------------
20namespace belfem
21{
22 namespace integration
23 {
24// ----------------------------------------------------------------------------
25
26 // 4th order in the Shunn and Ham numbering ( leading error term delta^4,
27 // their Table 1 ): exact for polynomials up to degree 3. Weights are the
28 // paper's ( Appendix F ) divided by 6, the reference tetrahedron volume.
29 // UNUSED: fn_intpoints.cpp calls no tet10 table.
30 // source Shunn and Ham, 10.1016/j.cam.2012.03.032
31 inline void
33 Vector <real> & aWeights,
34 Matrix <real> & aPoints )
35 {
36
37 aPoints.set_size( 4, 10 );
38
39 aPoints( 0 , 0 ) = 0.7784952948213300 ;
40 aPoints( 1 , 0 ) = 0.0738349017262234 ;
41 aPoints( 2 , 0 ) = 0.0738349017262234 ;
42
43 aPoints( 0 , 1 ) = 0.0738349017262234 ;
44 aPoints( 1 , 1 ) = 0.7784952948213300 ;
45 aPoints( 2 , 1 ) = 0.0738349017262234 ;
46
47 aPoints( 0 , 2 ) = 0.0738349017262234 ;
48 aPoints( 1 , 2 ) = 0.0738349017262234 ;
49 aPoints( 2 , 2 ) = 0.7784952948213300 ;
50
51 aPoints( 0 , 3 ) = 0.0738349017262234 ;
52 aPoints( 1 , 3 ) = 0.0738349017262234 ;
53 aPoints( 2 , 3 ) = 0.0738349017262234 ;
54
55 aPoints( 0 , 4 ) = 0.4062443438840510 ;
56 aPoints( 1 , 4 ) = 0.4062443438840510 ;
57 aPoints( 2 , 4 ) = 0.0937556561159491 ;
58
59 aPoints( 0 , 5 ) = 0.4062443438840510 ;
60 aPoints( 1 , 5 ) = 0.0937556561159491 ;
61 aPoints( 2 , 5 ) = 0.4062443438840510 ;
62
63 aPoints( 0 , 6 ) = 0.4062443438840510 ;
64 aPoints( 1 , 6 ) = 0.0937556561159491 ;
65 aPoints( 2 , 6 ) = 0.0937556561159491 ;
66
67 aPoints( 0 , 7 ) = 0.0937556561159491 ;
68 aPoints( 1 , 7 ) = 0.4062443438840510 ;
69 aPoints( 2 , 7 ) = 0.4062443438840510 ;
70
71 aPoints( 0 , 8 ) = 0.0937556561159491 ;
72 aPoints( 1 , 8 ) = 0.4062443438840510 ;
73 aPoints( 2 , 8 ) = 0.0937556561159491 ;
74
75 aPoints( 0 , 9 ) = 0.0937556561159491 ;
76 aPoints( 1 , 9 ) = 0.0937556561159491 ;
77 aPoints( 2 , 9 ) = 0.4062443438840510 ;
78
79 for( uint k=0; k<10; ++k )
80 {
81 aPoints( 3, k ) = 1.0
82 - aPoints( 0, k )
83 - aPoints( 1, k )
84 - aPoints( 2, k );
85 }
86
87 aWeights.set_size( 10 );
88
89 aWeights( 0 ) = 0.0079388558072014826 ;
90 aWeights( 1 ) = 0.0079388558072014826 ;
91 aWeights( 2 ) = 0.0079388558072014826 ;
92 aWeights( 3 ) = 0.0079388558072014826 ;
93 aWeights( 4 ) = 0.022485207239643503 ;
94 aWeights( 5 ) = 0.022485207239643503 ;
95 aWeights( 6 ) = 0.022485207239643503 ;
96 aWeights( 7 ) = 0.022485207239643503 ;
97 aWeights( 8 ) = 0.022485207239643503 ;
98 aWeights( 9 ) = 0.022485207239643503 ;
99 }
100
101// ----------------------------------------------------------------------------
102 }
103}
104
105#endif //BELFEM_FN_INTPOINTS_GAUSS_TET10_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_tet10(Vector< real > &aWeights, Matrix< real > &aPoints)
Definition fn_intpoints_gauss_tet10.hpp:32
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30