DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
Tet.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "QuadratureBase.hpp"
4
5namespace DNDS::Geom::Elem
6{
7 // ===================================================================
8 // Hammer Quadrature on Reference Tetrahedron
9 // ===================================================================
10 // Reference tetrahedron: vertices at (0,0,0), (1,0,0), (0,1,0), (0,0,1)
11 // Volume = 1/6
12 //
13 // Data format: [4][n] array where:
14 // [0][i] = xi coordinate
15 // [1][i] = eta coordinate
16 // [2][i] = zeta coordinate
17 // [3][i] = quadrature weight (wi)
18 //
19 // Note: The fourth barycentric coordinate is 1 - xi - eta - zeta
20 // ===================================================================
21
22 /// Hammer rule with 1 point: degree 1 exact
23 /// Point: centroid (1/4, 1/4, 1/4), Weight: 1/6 (total volume)
24 static const t_real __HammerTet_1[4][1]{
25 {0.25},
26 {0.25},
27 {0.25},
28 {0.1666666666666667}};
29
30 /// Hammer rule with 4 points: degree 2 exact
31 /// Points are permutations of (a, a, a) where a = (5 - √5)/20 ≈ 0.1381966
32 /// and the interior point (b, b, b) where b = (5 + 3√5)/20 ≈ 0.5854102
33 static const t_real __HammerTet_4[4][4]{
34 {0.1381966011250105, 0.1381966011250105, 0.5854101966249685, 0.1381966011250105},
35 {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105},
36 {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105},
37 {0.04166666666666666, 0.04166666666666666, 0.04166666666666666, 0.04166666666666666}};
38
39 /// Hammer rule with 8 points: degree 3 exact
40 static const t_real __HammerTet_8[4][8]{
41 {0.1069940147705369, 0.1069940147705369, 0.6790179556883893, 0.1069940147705369,
42 0.3280585716625127, 0.3280585716625127, 0.01582428501246191, 0.3280585716625127},
43 {0.1069940147705369, 0.6790179556883893, 0.1069940147705369, 0.1069940147705369,
44 0.3280585716625127, 0.01582428501246191, 0.3280585716625127, 0.3280585716625127},
45 {0.6790179556883893, 0.1069940147705369, 0.1069940147705369, 0.1069940147705369,
46 0.01582428501246191, 0.3280585716625127, 0.3280585716625127, 0.3280585716625127},
47 {0.01859314997209119, 0.01859314997209119, 0.01859314997209119, 0.01859314997209119,
48 0.02307351669457548, 0.02307351669457548, 0.02307351669457548, 0.02307351669457548}};
49
50 /// Hammer rule with 14 points: degree 5 exact
51 static const t_real __HammerTet_14[4][14]{
52 {0.09273525031089125, 0.09273525031089125, 0.7217942490673263, 0.09273525031089125,
53 0.3108859192633008, 0.3108859192633008, 0.06734224221009777, 0.3108859192633008,
54 0.04550370412564952, 0.4544962958743505, 0.04550370412564952, 0.04550370412564952,
55 0.4544962958743505, 0.4544962958743505},
56 {0.09273525031089125, 0.7217942490673263, 0.09273525031089125, 0.09273525031089125,
57 0.3108859192633008, 0.06734224221009777, 0.3108859192633008, 0.3108859192633008,
58 0.4544962958743505, 0.04550370412564952, 0.04550370412564952, 0.4544962958743505,
59 0.04550370412564952, 0.4544962958743505},
60 {0.7217942490673263, 0.09273525031089125, 0.09273525031089125, 0.09273525031089125,
61 0.06734224221009777, 0.3108859192633008, 0.3108859192633008, 0.3108859192633008,
62 0.4544962958743505, 0.4544962958743505, 0.4544962958743505, 0.04550370412564952,
63 0.04550370412564952, 0.04550370412564952},
64 {0.01224884051939367, 0.01224884051939367, 0.01224884051939367, 0.01224884051939367,
65 0.01878132095300264, 0.01878132095300264, 0.01878132095300264, 0.01878132095300264,
66 0.0070910034628469, 0.0070910034628469, 0.0070910034628469, 0.0070910034628469,
67 0.0070910034628469, 0.0070910034628469}};
68
69 /// Hammer rule with 24 points: degree 6 exact
70 static const t_real __HammerTet_24[4][24]{
71 {0.2146028712591523, 0.2146028712591523, 0.3561913862225431, 0.2146028712591523,
72 0.3223378901422754, 0.3223378901422754, 0.0329863295731736, 0.3223378901422754,
73 0.04067395853461131, 0.04067395853461131, 0.8779781243961661, 0.04067395853461131,
74 0.6030056647916491, 0.6030056647916491, 0.06366100187501755, 0.2696723314583158,
75 0.06366100187501755, 0.06366100187501755, 0.2696723314583158, 0.06366100187501755,
76 0.06366100187501755, 0.06366100187501755, 0.2696723314583158, 0.6030056647916491},
77 {0.2146028712591523, 0.3561913862225431, 0.2146028712591523, 0.2146028712591523,
78 0.3223378901422754, 0.0329863295731736, 0.3223378901422754, 0.3223378901422754,
79 0.04067395853461131, 0.8779781243961661, 0.04067395853461131, 0.04067395853461131,
80 0.06366100187501755, 0.06366100187501755, 0.06366100187501755, 0.6030056647916491,
81 0.2696723314583158, 0.6030056647916491, 0.06366100187501755, 0.2696723314583158,
82 0.06366100187501755, 0.6030056647916491, 0.06366100187501755, 0.2696723314583158},
83 {0.3561913862225431, 0.2146028712591523, 0.2146028712591523, 0.2146028712591523,
84 0.0329863295731736, 0.3223378901422754, 0.3223378901422754, 0.3223378901422754,
85 0.8779781243961661, 0.04067395853461131, 0.04067395853461131, 0.04067395853461131,
86 0.2696723314583158, 0.06366100187501755, 0.6030056647916491, 0.06366100187501755,
87 0.6030056647916491, 0.06366100187501755, 0.6030056647916491, 0.06366100187501755,
88 0.2696723314583158, 0.2696723314583158, 0.06366100187501755, 0.06366100187501755},
89 {0.006653791709694545, 0.006653791709694545, 0.006653791709694545, 0.006653791709694545,
90 0.009226196923942479, 0.009226196923942479, 0.009226196923942479, 0.009226196923942479,
91 0.001679535175886773, 0.001679535175886773, 0.001679535175886773, 0.001679535175886773,
92 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285,
93 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285,
94 0.008035714285714285, 0.008035714285714285, 0.008035714285714285, 0.008035714285714285}};
95
96} // namespace DNDS::Geom::Elem
double t_real
Definition Geometric.hpp:8