GetFEM  5.5
bgeot_convex_ref_simplexified.cc
1 /*===========================================================================
2 
3  Copyright (C) 2006-2026 Yves Renard
4 
5  This file is a part of GetFEM
6 
7  GetFEM is free software; you can redistribute it and/or modify it
8  under the terms of the GNU Lesser General Public License as published
9  by the Free Software Foundation; either version 3 of the License, or
10  (at your option) any later version along with the GCC Runtime Library
11  Exception either version 3.1 or (at your option) any later version.
12  This program is distributed in the hope that it will be useful, but
13  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15  License and GCC Runtime Library Exception for more details.
16  You should have received a copy of the GNU Lesser General Public License
17  along with this program. If not, see https://www.gnu.org/licenses/.
18 
19 ===========================================================================*/
20 
21 
23 
24 
25 namespace bgeot {
26 
27 
28  static size_type simplexified_parallelepiped_2[6] = {
29  3, 0, 2, 3, 0, 1
30  };
31 
32  static size_type simplexified_parallelepiped_2_nb = 2;
33 
34  static size_type simplexified_parallelepiped_3[24] = {
35  3, 7, 0, 1, 7, 0, 5, 4, 7, 0, 1, 5, 3, 7, 0, 2, 6, 7,
36  0, 4, 6, 7, 0, 2
37  };
38 
39  static size_type simplexified_parallelepiped_3_nb = 6;
40 
41  static size_type simplexified_parallelepiped_4[80] = {
42  9, 3, 1, 5, 0, 9, 12, 10, 8, 0, 9, 12, 5, 13, 15, 9, 3, 10,
43  6, 0, 9, 3, 5, 6, 0, 9, 3, 10, 11, 15, 9, 12, 10, 6, 0, 9,
44  12, 5, 6, 0, 9, 3, 10, 6, 15, 9, 3, 5, 6, 15, 9, 12, 10, 6,
45  15, 9, 12, 5, 6, 15, 12, 4, 5, 6, 0, 3, 5, 6, 7, 15, 12, 10,
46  14, 6, 15, 3, 10, 6, 2, 0
47  };
48 
49  static size_type simplexified_parallelepiped_4_nb = 16;
50 
51  static size_type simplexified_parallelepiped_5[402] = {
52  17, 9, 5, 3, 12, 0, 17, 5, 20, 3, 12, 0, 17, 9, 5, 3, 1, 0,
53  17, 9, 5, 3, 12, 31, 17, 5, 20, 3, 12, 31, 17, 9, 29, 5, 12, 31,
54  17, 29, 5, 20, 12, 31, 17, 29, 5, 20, 23, 31, 17, 5, 20, 3, 23, 31,
55  17, 9, 3, 12, 18, 0, 17, 20, 3, 12, 18, 0, 17, 9, 29, 24, 12, 31,
56  17, 29, 24, 20, 12, 31, 17, 9, 24, 3, 12, 31, 17, 29, 5, 20, 23, 21,
57  17, 24, 20, 12, 18, 31, 17, 24, 3, 12, 18, 31, 17, 20, 3, 12, 18, 31,
58  17, 20, 3, 23, 18, 31, 17, 3, 23, 18, 19, 31, 17, 9, 24, 12, 18, 0,
59  17, 24, 20, 12, 18, 0, 17, 24, 3, 18, 27, 31, 17, 3, 18, 19, 27, 31,
60  17, 24, 20, 18, 0, 16, 17, 9, 29, 24, 27, 31, 17, 9, 24, 3, 27, 31,
61  17, 9, 29, 24, 27, 25, 9, 24, 3, 10, 27, 31, 9, 3, 10, 15, 27, 31,
62  9, 3, 10, 15, 27, 11, 9, 29, 5, 12, 13, 15, 9, 24, 3, 10, 12, 31,
63  9, 3, 10, 12, 15, 31, 9, 29, 5, 12, 15, 31, 9, 5, 3, 12, 15, 31,
64  9, 24, 10, 12, 8, 0, 9, 24, 10, 12, 18, 0, 9, 3, 10, 12, 18, 0,
65  29, 24, 20, 28, 12, 30, 29, 24, 20, 12, 31, 30, 5, 3, 23, 6, 15, 31,
66  5, 3, 12, 6, 15, 31, 5, 20, 3, 23, 6, 31, 5, 20, 3, 12, 6, 31,
67  5, 3, 23, 7, 6, 15, 5, 20, 3, 12, 6, 0, 5, 20, 12, 6, 0, 4,
68  24, 3, 10, 12, 18, 31, 24, 3, 10, 18, 27, 31, 24, 10, 12, 18, 31, 30,
69  24, 10, 18, 27, 31, 30, 24, 10, 18, 27, 26, 30, 24, 20, 12, 18, 31, 30,
70  20, 23, 18, 6, 31, 30, 20, 12, 18, 6, 31, 30, 20, 3, 23, 18, 6, 31,
71  20, 3, 12, 18, 6, 31, 20, 23, 18, 6, 22, 30, 20, 3, 12, 18, 6, 0,
72  3, 10, 12, 18, 6, 31, 3, 10, 12, 6, 15, 31, 3, 10, 18, 6, 0, 2,
73  3, 10, 12, 18, 6, 0, 10, 12, 6, 15, 14, 31, 10, 12, 18, 6, 31, 30,
74  10, 12, 6, 14, 31, 30
75  };
76 
77  static size_type simplexified_parallelepiped_5_nb = 67;
78 
79  static size_type simplexified_parallelepiped_6[2527] = {
80  25, 17, 24, 59, 9, 63, 57, 25, 17, 24, 9, 29, 63, 57, 25, 17, 24, 59,
81  9, 27, 63, 25, 17, 24, 9, 27, 63, 31, 25, 17, 24, 9, 29, 63, 31, 48,
82  17, 24, 16, 18, 20, 0, 48, 17, 24, 40, 18, 20, 0, 48, 24, 58, 40, 63,
83  18, 62, 48, 24, 40, 63, 18, 20, 62, 48, 34, 17, 40, 18, 20, 0, 48, 24,
84  58, 60, 40, 63, 62, 48, 24, 60, 40, 63, 20, 62, 48, 34, 17, 40, 36, 20,
85  0, 48, 17, 24, 40, 63, 57, 61, 48, 17, 24, 40, 63, 20, 61, 48, 24, 60,
86  40, 63, 57, 61, 48, 24, 60, 40, 63, 20, 61, 48, 60, 55, 36, 20, 54, 62,
87  48, 17, 24, 59, 40, 63, 18, 48, 17, 24, 40, 63, 18, 20, 48, 24, 59, 58,
88  40, 63, 18, 48, 34, 58, 40, 63, 18, 62, 48, 34, 40, 63, 18, 20, 62, 48,
89  34, 58, 63, 50, 18, 62, 48, 34, 63, 50, 18, 55, 62, 48, 34, 63, 18, 55,
90  20, 62, 48, 34, 50, 18, 55, 54, 62, 48, 34, 18, 55, 20, 54, 62, 48, 34,
91  55, 36, 20, 54, 62, 48, 17, 24, 59, 40, 63, 57, 48, 24, 59, 58, 60, 40,
92  57, 48, 24, 58, 60, 40, 56, 57, 48, 24, 59, 60, 40, 63, 57, 48, 24, 59,
93  58, 60, 40, 63, 48, 17, 40, 63, 36, 20, 61, 48, 17, 53, 55, 36, 20, 61,
94  48, 60, 40, 63, 36, 20, 61, 48, 60, 55, 36, 20, 54, 52, 48, 60, 53, 55,
95  36, 20, 61, 48, 60, 53, 55, 36, 20, 52, 48, 60, 40, 63, 36, 20, 62, 48,
96  60, 63, 55, 36, 20, 62, 48, 34, 17, 59, 40, 63, 18, 48, 34, 17, 40, 63,
97  18, 20, 48, 34, 59, 58, 40, 63, 18, 48, 34, 59, 58, 63, 50, 18, 48, 34,
98  17, 33, 40, 36, 0, 48, 34, 32, 33, 40, 36, 0, 48, 34, 17, 40, 63, 36,
99  20, 48, 34, 17, 63, 55, 36, 20, 48, 34, 40, 63, 36, 20, 62, 48, 34, 63,
100  55, 36, 20, 62, 48, 34, 17, 59, 63, 18, 55, 48, 34, 17, 63, 18, 55, 20,
101  48, 34, 59, 63, 50, 18, 55, 48, 17, 33, 40, 63, 57, 61, 48, 17, 33, 40,
102  63, 36, 61, 48, 17, 33, 49, 63, 57, 61, 48, 17, 33, 49, 53, 55, 61, 48,
103  17, 33, 53, 55, 36, 61, 48, 17, 63, 55, 36, 20, 61, 48, 60, 63, 55, 36,
104  20, 61, 48, 34, 17, 33, 40, 63, 36, 48, 34, 17, 33, 63, 55, 36, 48, 17,
105  59, 33, 49, 63, 57, 48, 17, 59, 33, 40, 63, 57, 48, 17, 33, 49, 63, 55,
106  61, 48, 17, 33, 63, 55, 36, 61, 48, 34, 17, 59, 33, 40, 63, 48, 34, 17,
107  59, 33, 63, 55, 48, 34, 17, 59, 18, 55, 51, 48, 34, 59, 50, 18, 55, 51,
108  48, 17, 59, 33, 49, 63, 55, 48, 34, 17, 59, 33, 55, 51, 48, 17, 59, 33,
109  49, 55, 51, 34, 17, 10, 6, 18, 20, 0, 34, 17, 10, 6, 36, 20, 0, 34,
110  6, 18, 55, 20, 54, 62, 34, 6, 55, 36, 20, 54, 62, 34, 17, 33, 10, 6,
111  3, 0, 34, 17, 10, 6, 3, 18, 0, 34, 17, 10, 63, 6, 18, 20, 34, 17,
112  10, 63, 6, 36, 20, 34, 17, 40, 10, 18, 20, 0, 34, 17, 40, 10, 36, 20,
113  0, 34, 17, 33, 10, 6, 36, 0, 34, 10, 63, 6, 18, 20, 62, 34, 10, 63,
114  6, 36, 20, 62, 34, 10, 6, 3, 18, 2, 0, 34, 17, 63, 6, 18, 55, 20,
115  34, 17, 63, 6, 55, 36, 20, 34, 63, 6, 18, 55, 20, 62, 34, 63, 6, 55,
116  36, 20, 62, 34, 17, 33, 10, 63, 6, 3, 34, 17, 10, 63, 6, 3, 18, 34,
117  10, 46, 63, 6, 36, 62, 34, 46, 63, 6, 38, 36, 62, 34, 6, 55, 38, 36,
118  54, 62, 34, 17, 33, 10, 63, 6, 36, 34, 17, 40, 10, 63, 18, 20, 34, 17,
119  40, 10, 63, 36, 20, 34, 17, 33, 40, 10, 36, 0, 34, 40, 10, 63, 18, 20,
120  62, 34, 40, 10, 63, 36, 20, 62, 34, 17, 33, 63, 6, 55, 36, 34, 17, 33,
121  63, 6, 3, 55, 34, 17, 63, 6, 3, 18, 55, 34, 17, 59, 33, 10, 63, 3,
122  34, 17, 59, 10, 63, 3, 18, 34, 47, 10, 46, 63, 6, 36, 34, 47, 46, 63,
123  6, 38, 36, 34, 47, 40, 10, 46, 63, 36, 34, 63, 6, 55, 38, 36, 62, 34,
124  17, 59, 33, 40, 10, 63, 34, 17, 59, 40, 10, 63, 18, 34, 17, 33, 40, 10,
125  63, 36, 34, 58, 40, 10, 63, 18, 62, 34, 58, 47, 40, 10, 46, 63, 34, 58,
126  40, 10, 46, 63, 62, 34, 40, 10, 46, 63, 36, 62, 34, 33, 47, 10, 63, 6,
127  3, 34, 33, 47, 63, 6, 3, 55, 34, 17, 59, 33, 63, 3, 55, 34, 17, 59,
128  63, 3, 18, 55, 34, 33, 47, 10, 63, 6, 36, 34, 33, 47, 63, 6, 55, 36,
129  34, 33, 47, 39, 6, 55, 36, 34, 47, 39, 6, 55, 38, 36, 34, 47, 63, 6,
130  55, 38, 36, 34, 33, 47, 39, 6, 3, 55, 34, 58, 47, 40, 10, 46, 42, 34,
131  59, 33, 47, 40, 10, 63, 34, 33, 47, 40, 10, 63, 36, 34, 59, 47, 40, 10,
132  42, 43, 34, 59, 33, 47, 40, 10, 43, 34, 59, 33, 47, 10, 63, 3, 34, 59,
133  33, 47, 63, 3, 55, 34, 59, 33, 47, 10, 3, 43, 34, 59, 33, 47, 3, 43,
134  35, 34, 17, 59, 33, 3, 55, 51, 34, 17, 59, 3, 18, 55, 51, 34, 33, 47,
135  39, 3, 55, 35, 34, 59, 58, 40, 10, 63, 18, 34, 59, 58, 47, 40, 10, 63,
136  34, 59, 33, 47, 3, 55, 35, 34, 59, 58, 47, 40, 10, 42, 34, 59, 33, 3,
137  55, 51, 35, 13, 15, 12, 9, 45, 5, 61, 13, 15, 12, 9, 29, 5, 61, 30,
138  63, 6, 18, 20, 54, 62, 15, 12, 30, 10, 46, 6, 14, 15, 12, 47, 10, 46,
139  63, 6, 15, 12, 30, 10, 46, 63, 6, 15, 12, 9, 45, 47, 5, 61, 15, 12,
140  30, 10, 63, 6, 31, 15, 12, 9, 47, 63, 5, 61, 15, 12, 9, 29, 63, 5,
141  61, 15, 12, 47, 10, 63, 6, 5, 15, 12, 10, 63, 6, 5, 31, 30, 63, 6,
142  18, 31, 23, 20, 15, 59, 11, 9, 27, 10, 3, 15, 59, 9, 27, 10, 63, 3,
143  15, 12, 9, 47, 10, 63, 5, 15, 12, 9, 10, 63, 5, 31, 15, 12, 9, 29,
144  63, 5, 31, 15, 47, 39, 6, 5, 3, 23, 30, 6, 18, 22, 55, 20, 54, 15,
145  7, 39, 6, 5, 3, 23, 30, 63, 6, 18, 55, 20, 54, 30, 6, 18, 22, 55,
146  23, 20, 15, 47, 10, 63, 6, 5, 3, 30, 63, 6, 18, 55, 23, 20, 15, 10,
147  63, 6, 5, 3, 31, 15, 59, 11, 9, 47, 10, 3, 15, 59, 9, 47, 10, 63,
148  3, 15, 9, 27, 10, 63, 3, 31, 15, 9, 47, 10, 63, 5, 3, 15, 9, 10,
149  63, 5, 3, 31, 15, 47, 63, 6, 5, 3, 23, 30, 10, 63, 6, 18, 20, 62,
150  30, 10, 63, 6, 18, 31, 20, 15, 63, 6, 5, 3, 31, 23, 17, 9, 29, 63,
151  5, 31, 20, 17, 29, 63, 5, 31, 23, 20, 17, 10, 63, 6, 5, 3, 31, 17,
152  10, 63, 6, 5, 31, 20, 17, 24, 9, 27, 10, 63, 31, 17, 9, 27, 10, 63,
153  3, 31, 17, 9, 10, 63, 5, 3, 31, 17, 9, 10, 63, 5, 31, 20, 17, 24,
154  27, 10, 63, 18, 31, 17, 27, 10, 63, 3, 18, 31, 17, 63, 6, 5, 3, 31,
155  23, 17, 63, 6, 5, 31, 23, 20, 17, 33, 9, 40, 63, 36, 61, 17, 9, 40,
156  63, 36, 20, 61, 17, 33, 9, 10, 63, 5, 36, 17, 9, 10, 63, 5, 36, 20,
157  17, 10, 63, 6, 3, 18, 31, 17, 10, 63, 6, 18, 31, 20, 17, 33, 10, 63,
158  6, 5, 36, 17, 10, 63, 6, 5, 36, 20, 17, 24, 9, 40, 63, 57, 61, 17,
159  33, 9, 40, 63, 57, 61, 17, 24, 9, 40, 63, 20, 61, 17, 24, 9, 29, 63,
160  57, 61, 17, 24, 9, 29, 63, 20, 61, 17, 33, 9, 63, 5, 36, 61, 17, 9,
161  63, 5, 36, 20, 61, 17, 9, 29, 63, 5, 20, 61, 17, 29, 63, 5, 21, 20,
162  61, 17, 29, 63, 5, 21, 23, 20, 17, 24, 9, 29, 63, 31, 20, 17, 24, 59,
163  9, 27, 10, 63, 17, 59, 9, 27, 10, 63, 3, 17, 24, 59, 27, 10, 63, 18,
164  17, 59, 27, 10, 63, 3, 18, 17, 63, 6, 3, 18, 31, 23, 17, 63, 6, 18,
165  31, 23, 20, 17, 33, 10, 63, 6, 5, 3, 17, 33, 9, 10, 63, 5, 3, 17,
166  24, 9, 10, 63, 31, 20, 17, 24, 10, 63, 18, 31, 20, 17, 27, 63, 3, 18,
167  31, 23, 17, 63, 5, 21, 55, 20, 61, 17, 33, 63, 5, 55, 36, 61, 17, 63,
168  5, 55, 36, 20, 61, 17, 24, 59, 9, 40, 10, 63, 17, 59, 33, 9, 40, 10,
169  63, 17, 24, 9, 40, 10, 63, 20, 17, 63, 6, 5, 3, 55, 23, 17, 63, 6,
170  5, 55, 23, 20, 17, 63, 6, 3, 18, 55, 23, 17, 63, 6, 18, 55, 23, 20,
171  17, 33, 9, 40, 10, 63, 36, 17, 9, 40, 10, 63, 36, 20, 17, 33, 63, 6,
172  5, 3, 55, 17, 33, 63, 6, 5, 55, 36, 17, 63, 6, 5, 55, 36, 20, 17,
173  33, 9, 10, 6, 36, 0, 17, 9, 10, 6, 36, 20, 0, 17, 24, 59, 9, 40,
174  63, 57, 17, 59, 33, 9, 40, 63, 57, 17, 24, 59, 40, 10, 63, 18, 17, 59,
175  33, 9, 10, 63, 3, 17, 33, 9, 10, 6, 3, 0, 17, 59, 27, 63, 3, 18,
176  23, 17, 53, 5, 21, 55, 20, 61, 17, 63, 5, 21, 55, 23, 20, 17, 59, 63,
177  3, 18, 55, 23, 17, 33, 53, 5, 55, 36, 61, 17, 53, 5, 55, 36, 20, 61,
178  17, 24, 40, 10, 63, 18, 20, 17, 24, 9, 40, 10, 20, 0, 17, 33, 9, 40,
179  10, 36, 0, 17, 9, 40, 10, 36, 20, 0, 17, 33, 9, 6, 5, 36, 0, 17,
180  9, 6, 5, 36, 20, 0, 17, 33, 9, 6, 5, 3, 0, 17, 59, 19, 27, 3,
181  18, 23, 17, 59, 19, 3, 18, 55, 23, 17, 24, 40, 10, 18, 20, 0, 17, 1,
182  33, 9, 5, 3, 0, 17, 59, 19, 3, 18, 55, 51, 24, 59, 58, 27, 30, 10,
183  18, 24, 58, 26, 27, 30, 10, 18, 24, 58, 30, 10, 63, 18, 62, 24, 30, 10,
184  63, 18, 20, 62, 24, 27, 30, 10, 63, 18, 31, 24, 30, 10, 63, 18, 31, 20,
185  24, 59, 27, 30, 10, 63, 18, 24, 59, 58, 30, 10, 63, 18, 24, 58, 40, 10,
186  63, 18, 62, 24, 40, 10, 63, 18, 20, 62, 24, 12, 60, 30, 63, 20, 62, 24,
187  12, 30, 10, 63, 20, 62, 24, 28, 12, 60, 30, 63, 20, 24, 28, 12, 30, 29,
188  63, 20, 24, 59, 58, 40, 10, 63, 18, 24, 12, 9, 40, 10, 8, 0, 24, 12,
189  9, 40, 10, 20, 0, 24, 12, 30, 10, 63, 31, 20, 24, 12, 30, 29, 63, 31,
190  20, 24, 12, 60, 40, 63, 20, 62, 24, 12, 40, 10, 63, 20, 62, 24, 28, 12,
191  60, 29, 63, 20, 24, 12, 9, 10, 63, 31, 20, 24, 12, 9, 29, 63, 31, 20,
192  24, 12, 9, 40, 10, 63, 20, 24, 12, 60, 40, 63, 20, 61, 24, 12, 60, 29,
193  63, 20, 61, 24, 12, 9, 40, 63, 20, 61, 24, 12, 9, 29, 63, 20, 61, 59,
194  11, 9, 47, 10, 3, 43, 59, 33, 9, 47, 10, 63, 3, 59, 33, 9, 47, 10,
195  3, 43, 59, 33, 9, 47, 40, 10, 63, 59, 33, 9, 47, 40, 10, 43, 59, 33,
196  9, 47, 40, 41, 63, 59, 33, 9, 47, 40, 41, 43, 59, 33, 9, 40, 41, 63,
197  57, 12, 4, 6, 5, 36, 20, 0, 12, 10, 46, 63, 6, 36, 62, 12, 10, 63,
198  6, 36, 20, 62, 12, 30, 10, 46, 63, 6, 62, 12, 30, 10, 63, 6, 20, 62,
199  12, 9, 10, 6, 36, 20, 0, 12, 9, 6, 5, 36, 20, 0, 12, 60, 47, 44,
200  40, 46, 36, 12, 47, 10, 46, 63, 6, 36, 12, 60, 40, 46, 63, 36, 62, 12,
201  40, 10, 46, 63, 36, 62, 12, 30, 10, 63, 6, 31, 20, 12, 9, 40, 10, 36,
202  20, 0, 12, 47, 10, 63, 6, 5, 36, 12, 10, 63, 6, 5, 36, 20, 12, 10,
203  63, 6, 5, 31, 20, 12, 60, 47, 40, 46, 63, 36, 12, 47, 40, 10, 46, 63,
204  36, 12, 60, 40, 63, 36, 20, 62, 12, 40, 10, 63, 36, 20, 62, 12, 60, 45,
205  47, 44, 40, 36, 12, 9, 47, 40, 10, 63, 36, 12, 9, 47, 10, 63, 5, 36,
206  12, 9, 40, 10, 63, 36, 20, 12, 9, 10, 63, 5, 36, 20, 12, 9, 40, 63,
207  36, 20, 61, 12, 9, 63, 5, 36, 20, 61, 12, 47, 40, 63, 5, 36, 61, 12,
208  45, 47, 40, 5, 36, 61, 12, 9, 10, 63, 5, 31, 20, 12, 9, 29, 63, 5,
209  31, 20, 12, 60, 47, 40, 63, 36, 61, 12, 60, 40, 63, 36, 20, 61, 12, 60,
210  45, 47, 40, 36, 61, 12, 9, 47, 40, 63, 5, 61, 12, 9, 45, 47, 40, 5,
211  61, 12, 9, 29, 63, 5, 20, 61, 33, 47, 10, 63, 6, 5, 3, 33, 47, 10,
212  63, 6, 5, 36, 33, 47, 39, 6, 5, 3, 55, 33, 47, 39, 6, 5, 55, 36,
213  33, 9, 47, 10, 63, 5, 3, 33, 9, 47, 10, 63, 5, 36, 33, 9, 47, 40,
214  10, 63, 36, 33, 9, 45, 47, 40, 5, 61, 33, 45, 47, 40, 5, 36, 61, 33,
215  47, 63, 6, 5, 3, 55, 33, 47, 63, 6, 5, 55, 36, 33, 53, 5, 37, 55,
216  36, 61, 33, 47, 39, 5, 37, 55, 36, 33, 45, 47, 5, 37, 36, 61, 33, 9,
217  45, 47, 40, 41, 61, 33, 9, 47, 40, 63, 5, 61, 33, 47, 40, 63, 5, 36,
218  61, 33, 9, 40, 41, 63, 57, 61, 33, 47, 5, 37, 55, 36, 61, 33, 9, 47,
219  40, 41, 63, 61, 33, 47, 63, 5, 55, 36, 61, 47, 39, 6, 5, 3, 55, 23,
220  47, 63, 6, 5, 3, 55, 23
221  };
222 
223  static size_type simplexified_parallelepiped_6_nb = 361;
224 
225  static size_type simplexified_prism_3[12] = {
226  2, 4, 0, 1, 2, 4, 0, 3, 2, 4, 5, 3
227  };
228 
229  static size_type simplexified_prism_3_nb = 3;
230 
231  static size_type simplexified_prism_4[20] = {
232  6, 1, 3, 7, 0, 6, 1, 3, 2, 0, 6, 1, 4, 7, 0, 6, 1, 4,
233  7, 5
234  };
235 
236  static size_type simplexified_prism_4_nb = 4;
237 
238  static size_type simplexified_prism_5[30] = {
239  4, 8, 1, 9, 5, 2, 8, 1, 7, 9, 5, 6, 4, 8, 1, 5, 3, 2,
240  4, 1, 0, 5, 3, 2, 8, 1, 7, 9, 5, 2
241  };
242 
243  static size_type simplexified_prism_5_nb = 5;
244 
245  static size_type simplexified_prism_6[42] = {
246  1, 6, 2, 4, 5, 3, 0, 1, 6, 2, 9, 4, 5, 3, 1, 6, 2, 9,
247  4, 5, 8, 1, 6, 9, 4, 5, 8, 7, 6, 11, 9, 4, 5, 8, 7, 6,
248  11, 9, 4, 10, 8, 7
249  };
250 
251  static size_type simplexified_prism_6_nb = 6;
252 
253  static size_type simplexified_pyramid[8] = {
254  0, 1, 2, 4, 3, 2, 1, 4
255  };
256 
257  static size_type simplexified_pyramid_nb = 2;
258 
259 
260  size_type simplexified_tab(pconvex_structure cvs, size_type **tab) {
261 
262  if (cvs == parallelepiped_structure(2)) {
263  *tab = simplexified_parallelepiped_2;
264  return simplexified_parallelepiped_2_nb;
265  }
266 
267  if (cvs == parallelepiped_structure(3)) {
268  *tab = simplexified_parallelepiped_3;
269  return simplexified_parallelepiped_3_nb;
270  }
271 
272  if (cvs == parallelepiped_structure(4)) {
273  *tab = simplexified_parallelepiped_4;
274  return simplexified_parallelepiped_4_nb;
275  }
276 
277  if (cvs == parallelepiped_structure(5)) {
278  *tab = simplexified_parallelepiped_5;
279  return simplexified_parallelepiped_5_nb;
280  }
281 
282  if (cvs == parallelepiped_structure(6)) {
283  *tab = simplexified_parallelepiped_6;
284  return simplexified_parallelepiped_6_nb;
285  }
286 
287  if (cvs == prism_P1_structure(3)) {
288  *tab = simplexified_prism_3;
289  return simplexified_prism_3_nb;
290  }
291 
292  if (cvs == prism_P1_structure(4)) {
293  *tab = simplexified_prism_4;
294  return simplexified_prism_4_nb;
295  }
296 
297  if (cvs == prism_P1_structure(5)) {
298  *tab = simplexified_prism_5;
299  return simplexified_prism_5_nb;
300  }
301 
302  if (cvs == prism_P1_structure(6)) {
303  *tab = simplexified_prism_6;
304  return simplexified_prism_6_nb;
305  }
306 
307  if (cvs == pyramid_QK_structure(1)) {
308  *tab = simplexified_pyramid;
309  return simplexified_pyramid_nb;
310  }
311 
312  *tab = nullptr; // Not taken into account
313  return 0;
314  }
315 
316 
317  static size_type refinement_simplex_1[4] = {
318  1, 0, 1, 2
319  };
320 
321  static size_type refinement_simplex_1_nb = 2;
322 
323  static size_type refinement_simplex_2[12] = {
324  3, 1, 4, 3, 1, 0, 1, 4, 2, 3, 4, 5
325  };
326 
327  static size_type refinement_simplex_2_nb = 4;
328 
329  static size_type refinement_simplex_3[32] = {
330  6, 3, 8, 4, 6, 7, 8, 4, 6, 3, 1, 4, 7, 1, 4, 2, 6, 7,
331  1, 4, 6, 3, 1, 0, 6, 7, 8, 9, 3, 8, 4, 5
332  };
333 
334  static size_type refinement_simplex_3_nb = 8;
335 
336  static size_type refinement_simplex_4[80] = {
337  6, 8, 7, 13, 9, 6, 10, 1, 3, 0, 6, 10, 12, 13, 11, 6, 10, 12,
338  3, 11, 6, 8, 7, 13, 11, 6, 8, 12, 13, 11, 6, 8, 12, 3, 11, 6,
339  10, 1, 3, 11, 6, 8, 7, 4, 11, 6, 7, 1, 4, 11, 6, 8, 4, 3,
340  11, 6, 1, 4, 3, 11, 10, 12, 13, 11, 14, 8, 12, 4, 3, 11, 8, 12,
341  4, 3, 5, 7, 1, 4, 11, 2
342  };
343 
344  static size_type refinement_simplex_4_nb = 16;
345 
346  static size_type refinement_simplex_5[192] = {
347  15, 19, 16, 17, 18, 6, 15, 19, 16, 17, 18, 20, 15, 1, 10, 3, 6, 0,
348  15, 19, 16, 17, 1, 6, 15, 19, 17, 1, 10, 6, 15, 17, 1, 10, 3, 6,
349  19, 16, 17, 1, 7, 6, 19, 17, 1, 7, 6, 13, 19, 16, 17, 18, 7, 6,
350  19, 17, 18, 7, 6, 13, 19, 17, 1, 10, 6, 13, 19, 16, 17, 1, 11, 7,
351  19, 17, 1, 11, 7, 13, 19, 17, 1, 10, 11, 13, 19, 17, 10, 11, 12, 13,
352  19, 10, 11, 12, 13, 14, 8, 17, 4, 3, 12, 13, 8, 17, 4, 3, 12, 5,
353  8, 17, 4, 3, 6, 13, 8, 17, 18, 7, 6, 13, 8, 18, 7, 6, 13, 9,
354  8, 17, 4, 7, 6, 13, 16, 17, 1, 4, 11, 7, 16, 1, 4, 11, 7, 2,
355  17, 1, 4, 11, 7, 13, 17, 1, 10, 3, 6, 13, 17, 1, 4, 7, 6, 13,
356  17, 1, 10, 3, 11, 13, 17, 1, 4, 3, 11, 13, 17, 1, 4, 3, 6, 13,
357  17, 10, 3, 11, 12, 13, 17, 4, 3, 11, 12, 13
358  };
359 
360  static size_type refinement_simplex_5_nb = 32;
361 
362  static size_type refinement_simplex_6[448] = {
363  26, 23, 21, 17, 16, 19, 6, 26, 23, 17, 16, 18, 19, 6, 26, 23, 21, 16,
364  22, 19, 6, 26, 23, 16, 18, 22, 19, 6, 26, 23, 18, 22, 24, 19, 6, 26,
365  21, 17, 16, 15, 19, 6, 26, 17, 16, 18, 15, 19, 6, 26, 25, 23, 21, 22,
366  24, 6, 26, 25, 23, 21, 22, 19, 6, 26, 25, 23, 22, 24, 19, 6, 26, 25,
367  23, 21, 22, 24, 27, 26, 17, 16, 18, 15, 19, 20, 25, 23, 10, 13, 11, 19,
368  6, 25, 23, 13, 11, 24, 19, 6, 25, 23, 11, 22, 24, 19, 6, 25, 23, 10,
369  21, 1, 19, 6, 25, 23, 10, 11, 1, 19, 6, 25, 23, 21, 22, 1, 19, 6,
370  25, 23, 11, 22, 1, 19, 6, 25, 23, 10, 13, 11, 12, 19, 25, 10, 13, 11,
371  12, 19, 14, 23, 17, 16, 11, 1, 19, 6, 23, 16, 11, 22, 1, 19, 6, 23,
372  21, 17, 16, 1, 19, 6, 23, 21, 16, 22, 1, 19, 6, 23, 17, 8, 16, 18,
373  11, 6, 23, 8, 16, 18, 11, 22, 6, 23, 17, 16, 18, 11, 19, 6, 23, 16,
374  18, 11, 22, 19, 6, 23, 10, 21, 17, 1, 19, 6, 23, 10, 17, 11, 1, 19,
375  6, 23, 17, 8, 16, 11, 1, 6, 23, 8, 16, 11, 22, 1, 6, 23, 17, 8,
376  18, 11, 19, 6, 23, 10, 21, 17, 3, 1, 6, 23, 10, 17, 3, 11, 1, 6,
377  23, 10, 17, 11, 12, 19, 6, 23, 17, 8, 3, 11, 1, 6, 23, 8, 18, 11,
378  22, 24, 6, 23, 8, 18, 11, 24, 19, 6, 23, 18, 11, 22, 24, 19, 6, 23,
379  4, 17, 8, 16, 11, 1, 23, 4, 8, 16, 11, 22, 1, 23, 17, 8, 11, 12,
380  19, 6, 23, 10, 17, 3, 11, 12, 6, 23, 10, 13, 11, 12, 19, 6, 23, 8,
381  13, 11, 12, 19, 6, 23, 8, 13, 11, 24, 19, 6, 23, 17, 8, 3, 11, 12,
382  6, 23, 4, 17, 8, 3, 11, 1, 23, 4, 17, 8, 3, 11, 12, 23, 4, 17,
383  8, 3, 12, 5, 10, 21, 17, 3, 15, 1, 6, 10, 21, 17, 15, 1, 19, 6,
384  10, 21, 3, 15, 1, 6, 0, 21, 17, 16, 15, 1, 19, 6, 4, 8, 16, 11,
385  22, 7, 1, 4, 16, 11, 22, 7, 1, 2, 8, 16, 11, 22, 7, 1, 6, 8,
386  16, 18, 11, 22, 7, 6, 8, 13, 18, 11, 24, 19, 6, 8, 18, 11, 22, 7,
387  24, 6, 8, 13, 18, 11, 7, 24, 6, 8, 13, 18, 7, 24, 6, 9
388  };
389 
390  static size_type refinement_simplex_6_nb = 64;
391 
392 
393 
394  size_type refinement_simplexe_tab(size_type n,
395  size_type **tab) {
396  switch(n) {
397  case 1 : *tab = refinement_simplex_1;
398  return refinement_simplex_1_nb;
399  case 2 : *tab = refinement_simplex_2;
400  return refinement_simplex_2_nb;
401  case 3 : *tab = refinement_simplex_3;
402  return refinement_simplex_3_nb;
403  case 4 : *tab = refinement_simplex_4;
404  return refinement_simplex_4_nb;
405  case 5 : *tab = refinement_simplex_5;
406  return refinement_simplex_5_nb;
407  case 6 : *tab = refinement_simplex_6;
408  return refinement_simplex_6_nb;
409  default : GMM_ASSERT1(false, "No refinement for this element");
410  }
411  }
412 
413 }
Reference convexes.
Basic Geometric Tools.
pconvex_structure pyramid_QK_structure(dim_type k)
Give a pointer on the 3D pyramid structure for a degree k = 1 or 2.
std::shared_ptr< const convex_structure > pconvex_structure
Pointer on a convex structure description.
pconvex_structure parallelepiped_structure(dim_type nc, dim_type k)
Give a pointer on the structures of a parallelepiped of dimension d.
pconvex_structure prism_P1_structure(dim_type nc)
Give a pointer on the structures of a prism of dimension d.
size_t size_type
used as the common size type in the library
Definition: bgeot_poly.h:48