3namespace CT_interpolant {
4inline void CT_tri_bounds_coeffs(
double bound_coeffs[3][3][3])
6 bound_coeffs[0][0][0] = 0;
7 bound_coeffs[0][0][1] = 0;
8 bound_coeffs[0][0][2] = 1;
9 bound_coeffs[0][1][0] = 1.0 / 3.0;
10 bound_coeffs[0][1][1] = 0;
11 bound_coeffs[0][1][2] = -1.0 / 3.0;
12 bound_coeffs[0][2][0] = 0;
13 bound_coeffs[0][2][1] = 1.0 / 3.0;
14 bound_coeffs[0][2][2] = -1.0 / 3.0;
15 bound_coeffs[1][0][0] = 1;
16 bound_coeffs[1][0][1] = 0;
17 bound_coeffs[1][0][2] = 0;
18 bound_coeffs[1][1][0] = -1.0 / 3.0;
19 bound_coeffs[1][1][1] = 1.0 / 3.0;
20 bound_coeffs[1][1][2] = 0;
21 bound_coeffs[1][2][0] = -1.0 / 3.0;
22 bound_coeffs[1][2][1] = 0;
23 bound_coeffs[1][2][2] = 1.0 / 3.0;
24 bound_coeffs[2][0][0] = 0;
25 bound_coeffs[2][0][1] = 1;
26 bound_coeffs[2][0][2] = 0;
27 bound_coeffs[2][1][0] = 0;
28 bound_coeffs[2][1][1] = -1.0 / 3.0;
29 bound_coeffs[2][1][2] = 1.0 / 3.0;
30 bound_coeffs[2][2][0] = 1.0 / 3.0;
31 bound_coeffs[2][2][1] = -1.0 / 3.0;
32 bound_coeffs[2][2][2] = 0;
35inline void CT_sub_tri_matrices(
double subtri_matrix[3][10][12])
37 subtri_matrix[0][0][0] = 1.0 / 2.0;
38 subtri_matrix[0][0][1] = 1.0 / 2.0;
39 subtri_matrix[0][0][2] = 0;
40 subtri_matrix[0][0][3] = 2.0 / 3.0;
41 subtri_matrix[0][0][4] = 2.0 / 3.0;
42 subtri_matrix[0][0][5] = -7.0 / 12.0;
43 subtri_matrix[0][0][6] = -1.0 / 12.0;
44 subtri_matrix[0][0][7] = -1.0 / 12.0;
45 subtri_matrix[0][0][8] = -7.0 / 12.0;
46 subtri_matrix[0][0][9] = 4.0 / 3.0;
47 subtri_matrix[0][0][10] = -2.0 / 3.0;
48 subtri_matrix[0][0][11] = -2.0 / 3.0;
49 subtri_matrix[0][1][0] = -3.0 / 2.0;
50 subtri_matrix[0][1][1] = 0;
51 subtri_matrix[0][1][2] = 9.0 / 2.0;
52 subtri_matrix[0][1][3] = -3.0 / 4.0;
53 subtri_matrix[0][1][4] = -5.0 / 4.0;
54 subtri_matrix[0][1][5] = 5.0 / 4.0;
55 subtri_matrix[0][1][6] = 7.0 / 4.0;
56 subtri_matrix[0][1][7] = -1.0 / 2.0;
57 subtri_matrix[0][1][8] = 1.0 / 2.0;
58 subtri_matrix[0][1][9] = -2;
59 subtri_matrix[0][1][10] = 2;
60 subtri_matrix[0][1][11] = 0;
61 subtri_matrix[0][2][0] = 0;
62 subtri_matrix[0][2][1] = 3;
63 subtri_matrix[0][2][2] = 0;
64 subtri_matrix[0][2][3] = 0;
65 subtri_matrix[0][2][4] = 0;
66 subtri_matrix[0][2][5] = 1;
67 subtri_matrix[0][2][6] = 0;
68 subtri_matrix[0][2][7] = 0;
69 subtri_matrix[0][2][8] = 0;
70 subtri_matrix[0][2][9] = 0;
71 subtri_matrix[0][2][10] = 0;
72 subtri_matrix[0][2][11] = 0;
73 subtri_matrix[0][3][0] = 0;
74 subtri_matrix[0][3][1] = 1;
75 subtri_matrix[0][3][2] = 0;
76 subtri_matrix[0][3][3] = 0;
77 subtri_matrix[0][3][4] = 0;
78 subtri_matrix[0][3][5] = 0;
79 subtri_matrix[0][3][6] = 0;
80 subtri_matrix[0][3][7] = 0;
81 subtri_matrix[0][3][8] = 0;
82 subtri_matrix[0][3][9] = 0;
83 subtri_matrix[0][3][10] = 0;
84 subtri_matrix[0][3][11] = 0;
85 subtri_matrix[0][4][0] = 0;
86 subtri_matrix[0][4][1] = -3.0 / 2.0;
87 subtri_matrix[0][4][2] = 9.0 / 2.0;
88 subtri_matrix[0][4][3] = -5.0 / 4.0;
89 subtri_matrix[0][4][4] = -3.0 / 4.0;
90 subtri_matrix[0][4][5] = 1.0 / 2.0;
91 subtri_matrix[0][4][6] = -1.0 / 2.0;
92 subtri_matrix[0][4][7] = 7.0 / 4.0;
93 subtri_matrix[0][4][8] = 5.0 / 4.0;
94 subtri_matrix[0][4][9] = -2;
95 subtri_matrix[0][4][10] = 0;
96 subtri_matrix[0][4][11] = 2;
97 subtri_matrix[0][5][0] = 3;
98 subtri_matrix[0][5][1] = 3;
99 subtri_matrix[0][5][2] = 0;
100 subtri_matrix[0][5][3] = 3.0 / 2.0;
101 subtri_matrix[0][5][4] = 3.0 / 2.0;
102 subtri_matrix[0][5][5] = -1;
103 subtri_matrix[0][5][6] = 0;
104 subtri_matrix[0][5][7] = 0;
105 subtri_matrix[0][5][8] = -1;
106 subtri_matrix[0][5][9] = 4;
107 subtri_matrix[0][5][10] = 0;
108 subtri_matrix[0][5][11] = 0;
109 subtri_matrix[0][6][0] = 0;
110 subtri_matrix[0][6][1] = 3;
111 subtri_matrix[0][6][2] = 0;
112 subtri_matrix[0][6][3] = 0;
113 subtri_matrix[0][6][4] = 1;
114 subtri_matrix[0][6][5] = 0;
115 subtri_matrix[0][6][6] = 0;
116 subtri_matrix[0][6][7] = 0;
117 subtri_matrix[0][6][8] = 0;
118 subtri_matrix[0][6][9] = 0;
119 subtri_matrix[0][6][10] = 0;
120 subtri_matrix[0][6][11] = 0;
121 subtri_matrix[0][7][0] = 3;
122 subtri_matrix[0][7][1] = 0;
123 subtri_matrix[0][7][2] = 0;
124 subtri_matrix[0][7][3] = 0;
125 subtri_matrix[0][7][4] = 0;
126 subtri_matrix[0][7][5] = 0;
127 subtri_matrix[0][7][6] = 0;
128 subtri_matrix[0][7][7] = 0;
129 subtri_matrix[0][7][8] = 1;
130 subtri_matrix[0][7][9] = 0;
131 subtri_matrix[0][7][10] = 0;
132 subtri_matrix[0][7][11] = 0;
133 subtri_matrix[0][8][0] = 3;
134 subtri_matrix[0][8][1] = 0;
135 subtri_matrix[0][8][2] = 0;
136 subtri_matrix[0][8][3] = 1;
137 subtri_matrix[0][8][4] = 0;
138 subtri_matrix[0][8][5] = 0;
139 subtri_matrix[0][8][6] = 0;
140 subtri_matrix[0][8][7] = 0;
141 subtri_matrix[0][8][8] = 0;
142 subtri_matrix[0][8][9] = 0;
143 subtri_matrix[0][8][10] = 0;
144 subtri_matrix[0][8][11] = 0;
145 subtri_matrix[0][9][0] = 1;
146 subtri_matrix[0][9][1] = 0;
147 subtri_matrix[0][9][2] = 0;
148 subtri_matrix[0][9][3] = 0;
149 subtri_matrix[0][9][4] = 0;
150 subtri_matrix[0][9][5] = 0;
151 subtri_matrix[0][9][6] = 0;
152 subtri_matrix[0][9][7] = 0;
153 subtri_matrix[0][9][8] = 0;
154 subtri_matrix[0][9][9] = 0;
155 subtri_matrix[0][9][10] = 0;
156 subtri_matrix[0][9][11] = 0;
157 subtri_matrix[1][0][0] = 0;
158 subtri_matrix[1][0][1] = 0;
159 subtri_matrix[1][0][2] = 1;
160 subtri_matrix[1][0][3] = 0;
161 subtri_matrix[1][0][4] = 0;
162 subtri_matrix[1][0][5] = 0;
163 subtri_matrix[1][0][6] = 0;
164 subtri_matrix[1][0][7] = 0;
165 subtri_matrix[1][0][8] = 0;
166 subtri_matrix[1][0][9] = 0;
167 subtri_matrix[1][0][10] = 0;
168 subtri_matrix[1][0][11] = 0;
169 subtri_matrix[1][1][0] = 0;
170 subtri_matrix[1][1][1] = 0;
171 subtri_matrix[1][1][2] = 3;
172 subtri_matrix[1][1][3] = 0;
173 subtri_matrix[1][1][4] = 0;
174 subtri_matrix[1][1][5] = 0;
175 subtri_matrix[1][1][6] = 1;
176 subtri_matrix[1][1][7] = 0;
177 subtri_matrix[1][1][8] = 0;
178 subtri_matrix[1][1][9] = 0;
179 subtri_matrix[1][1][10] = 0;
180 subtri_matrix[1][1][11] = 0;
181 subtri_matrix[1][2][0] = 0;
182 subtri_matrix[1][2][1] = 3;
183 subtri_matrix[1][2][2] = 0;
184 subtri_matrix[1][2][3] = 0;
185 subtri_matrix[1][2][4] = 0;
186 subtri_matrix[1][2][5] = 1;
187 subtri_matrix[1][2][6] = 0;
188 subtri_matrix[1][2][7] = 0;
189 subtri_matrix[1][2][8] = 0;
190 subtri_matrix[1][2][9] = 0;
191 subtri_matrix[1][2][10] = 0;
192 subtri_matrix[1][2][11] = 0;
193 subtri_matrix[1][3][0] = 0;
194 subtri_matrix[1][3][1] = 1;
195 subtri_matrix[1][3][2] = 0;
196 subtri_matrix[1][3][3] = 0;
197 subtri_matrix[1][3][4] = 0;
198 subtri_matrix[1][3][5] = 0;
199 subtri_matrix[1][3][6] = 0;
200 subtri_matrix[1][3][7] = 0;
201 subtri_matrix[1][3][8] = 0;
202 subtri_matrix[1][3][9] = 0;
203 subtri_matrix[1][3][10] = 0;
204 subtri_matrix[1][3][11] = 0;
205 subtri_matrix[1][4][0] = 0;
206 subtri_matrix[1][4][1] = 0;
207 subtri_matrix[1][4][2] = 3;
208 subtri_matrix[1][4][3] = 0;
209 subtri_matrix[1][4][4] = 0;
210 subtri_matrix[1][4][5] = 0;
211 subtri_matrix[1][4][6] = 0;
212 subtri_matrix[1][4][7] = 1;
213 subtri_matrix[1][4][8] = 0;
214 subtri_matrix[1][4][9] = 0;
215 subtri_matrix[1][4][10] = 0;
216 subtri_matrix[1][4][11] = 0;
217 subtri_matrix[1][5][0] = 0;
218 subtri_matrix[1][5][1] = 3;
219 subtri_matrix[1][5][2] = 3;
220 subtri_matrix[1][5][3] = 0;
221 subtri_matrix[1][5][4] = -1;
222 subtri_matrix[1][5][5] = 3.0 / 2.0;
223 subtri_matrix[1][5][6] = 3.0 / 2.0;
224 subtri_matrix[1][5][7] = -1;
225 subtri_matrix[1][5][8] = 0;
226 subtri_matrix[1][5][9] = 0;
227 subtri_matrix[1][5][10] = 4;
228 subtri_matrix[1][5][11] = 0;
229 subtri_matrix[1][6][0] = 0;
230 subtri_matrix[1][6][1] = 3;
231 subtri_matrix[1][6][2] = 0;
232 subtri_matrix[1][6][3] = 0;
233 subtri_matrix[1][6][4] = 1;
234 subtri_matrix[1][6][5] = 0;
235 subtri_matrix[1][6][6] = 0;
236 subtri_matrix[1][6][7] = 0;
237 subtri_matrix[1][6][8] = 0;
238 subtri_matrix[1][6][9] = 0;
239 subtri_matrix[1][6][10] = 0;
240 subtri_matrix[1][6][11] = 0;
241 subtri_matrix[1][7][0] = 9.0 / 2.0;
242 subtri_matrix[1][7][1] = -3.0 / 2.0;
243 subtri_matrix[1][7][2] = 0;
244 subtri_matrix[1][7][3] = -1.0 / 2.0;
245 subtri_matrix[1][7][4] = 1.0 / 2.0;
246 subtri_matrix[1][7][5] = -3.0 / 4.0;
247 subtri_matrix[1][7][6] = -5.0 / 4.0;
248 subtri_matrix[1][7][7] = 5.0 / 4.0;
249 subtri_matrix[1][7][8] = 7.0 / 4.0;
250 subtri_matrix[1][7][9] = 0;
251 subtri_matrix[1][7][10] = -2;
252 subtri_matrix[1][7][11] = 2;
253 subtri_matrix[1][8][0] = 9.0 / 2.0;
254 subtri_matrix[1][8][1] = 0;
255 subtri_matrix[1][8][2] = -3.0 / 2.0;
256 subtri_matrix[1][8][3] = 7.0 / 4.0;
257 subtri_matrix[1][8][4] = 5.0 / 4.0;
258 subtri_matrix[1][8][5] = -5.0 / 4.0;
259 subtri_matrix[1][8][6] = -3.0 / 4.0;
260 subtri_matrix[1][8][7] = 1.0 / 2.0;
261 subtri_matrix[1][8][8] = -1.0 / 2.0;
262 subtri_matrix[1][8][9] = 2;
263 subtri_matrix[1][8][10] = -2;
264 subtri_matrix[1][8][11] = 0;
265 subtri_matrix[1][9][0] = 0;
266 subtri_matrix[1][9][1] = 1.0 / 2.0;
267 subtri_matrix[1][9][2] = 1.0 / 2.0;
268 subtri_matrix[1][9][3] = -1.0 / 12.0;
269 subtri_matrix[1][9][4] = -7.0 / 12.0;
270 subtri_matrix[1][9][5] = 2.0 / 3.0;
271 subtri_matrix[1][9][6] = 2.0 / 3.0;
272 subtri_matrix[1][9][7] = -7.0 / 12.0;
273 subtri_matrix[1][9][8] = -1.0 / 12.0;
274 subtri_matrix[1][9][9] = -2.0 / 3.0;
275 subtri_matrix[1][9][10] = 4.0 / 3.0;
276 subtri_matrix[1][9][11] = -2.0 / 3.0;
277 subtri_matrix[2][0][0] = 0;
278 subtri_matrix[2][0][1] = 0;
279 subtri_matrix[2][0][2] = 1;
280 subtri_matrix[2][0][3] = 0;
281 subtri_matrix[2][0][4] = 0;
282 subtri_matrix[2][0][5] = 0;
283 subtri_matrix[2][0][6] = 0;
284 subtri_matrix[2][0][7] = 0;
285 subtri_matrix[2][0][8] = 0;
286 subtri_matrix[2][0][9] = 0;
287 subtri_matrix[2][0][10] = 0;
288 subtri_matrix[2][0][11] = 0;
289 subtri_matrix[2][1][0] = 0;
290 subtri_matrix[2][1][1] = 0;
291 subtri_matrix[2][1][2] = 3;
292 subtri_matrix[2][1][3] = 0;
293 subtri_matrix[2][1][4] = 0;
294 subtri_matrix[2][1][5] = 0;
295 subtri_matrix[2][1][6] = 1;
296 subtri_matrix[2][1][7] = 0;
297 subtri_matrix[2][1][8] = 0;
298 subtri_matrix[2][1][9] = 0;
299 subtri_matrix[2][1][10] = 0;
300 subtri_matrix[2][1][11] = 0;
301 subtri_matrix[2][2][0] = -3.0 / 2.0;
302 subtri_matrix[2][2][1] = 9.0 / 2.0;
303 subtri_matrix[2][2][2] = 0;
304 subtri_matrix[2][2][3] = 1.0 / 2.0;
305 subtri_matrix[2][2][4] = -1.0 / 2.0;
306 subtri_matrix[2][2][5] = 7.0 / 4.0;
307 subtri_matrix[2][2][6] = 5.0 / 4.0;
308 subtri_matrix[2][2][7] = -5.0 / 4.0;
309 subtri_matrix[2][2][8] = -3.0 / 4.0;
310 subtri_matrix[2][2][9] = 0;
311 subtri_matrix[2][2][10] = 2;
312 subtri_matrix[2][2][11] = -2;
313 subtri_matrix[2][3][0] = 1.0 / 2.0;
314 subtri_matrix[2][3][1] = 0;
315 subtri_matrix[2][3][2] = 1.0 / 2.0;
316 subtri_matrix[2][3][3] = -7.0 / 12.0;
317 subtri_matrix[2][3][4] = -1.0 / 12.0;
318 subtri_matrix[2][3][5] = -1.0 / 12.0;
319 subtri_matrix[2][3][6] = -7.0 / 12.0;
320 subtri_matrix[2][3][7] = 2.0 / 3.0;
321 subtri_matrix[2][3][8] = 2.0 / 3.0;
322 subtri_matrix[2][3][9] = -2.0 / 3.0;
323 subtri_matrix[2][3][10] = -2.0 / 3.0;
324 subtri_matrix[2][3][11] = 4.0 / 3.0;
325 subtri_matrix[2][4][0] = 0;
326 subtri_matrix[2][4][1] = 0;
327 subtri_matrix[2][4][2] = 3;
328 subtri_matrix[2][4][3] = 0;
329 subtri_matrix[2][4][4] = 0;
330 subtri_matrix[2][4][5] = 0;
331 subtri_matrix[2][4][6] = 0;
332 subtri_matrix[2][4][7] = 1;
333 subtri_matrix[2][4][8] = 0;
334 subtri_matrix[2][4][9] = 0;
335 subtri_matrix[2][4][10] = 0;
336 subtri_matrix[2][4][11] = 0;
337 subtri_matrix[2][5][0] = 3;
338 subtri_matrix[2][5][1] = 0;
339 subtri_matrix[2][5][2] = 3;
340 subtri_matrix[2][5][3] = -1;
341 subtri_matrix[2][5][4] = 0;
342 subtri_matrix[2][5][5] = 0;
343 subtri_matrix[2][5][6] = -1;
344 subtri_matrix[2][5][7] = 3.0 / 2.0;
345 subtri_matrix[2][5][8] = 3.0 / 2.0;
346 subtri_matrix[2][5][9] = 0;
347 subtri_matrix[2][5][10] = 0;
348 subtri_matrix[2][5][11] = 4;
349 subtri_matrix[2][6][0] = 0;
350 subtri_matrix[2][6][1] = 9.0 / 2.0;
351 subtri_matrix[2][6][2] = -3.0 / 2.0;
352 subtri_matrix[2][6][3] = 5.0 / 4.0;
353 subtri_matrix[2][6][4] = 7.0 / 4.0;
354 subtri_matrix[2][6][5] = -1.0 / 2.0;
355 subtri_matrix[2][6][6] = 1.0 / 2.0;
356 subtri_matrix[2][6][7] = -3.0 / 4.0;
357 subtri_matrix[2][6][8] = -5.0 / 4.0;
358 subtri_matrix[2][6][9] = 2;
359 subtri_matrix[2][6][10] = 0;
360 subtri_matrix[2][6][11] = -2;
361 subtri_matrix[2][7][0] = 3;
362 subtri_matrix[2][7][1] = 0;
363 subtri_matrix[2][7][2] = 0;
364 subtri_matrix[2][7][3] = 0;
365 subtri_matrix[2][7][4] = 0;
366 subtri_matrix[2][7][5] = 0;
367 subtri_matrix[2][7][6] = 0;
368 subtri_matrix[2][7][7] = 0;
369 subtri_matrix[2][7][8] = 1;
370 subtri_matrix[2][7][9] = 0;
371 subtri_matrix[2][7][10] = 0;
372 subtri_matrix[2][7][11] = 0;
373 subtri_matrix[2][8][0] = 3;
374 subtri_matrix[2][8][1] = 0;
375 subtri_matrix[2][8][2] = 0;
376 subtri_matrix[2][8][3] = 1;
377 subtri_matrix[2][8][4] = 0;
378 subtri_matrix[2][8][5] = 0;
379 subtri_matrix[2][8][6] = 0;
380 subtri_matrix[2][8][7] = 0;
381 subtri_matrix[2][8][8] = 0;
382 subtri_matrix[2][8][9] = 0;
383 subtri_matrix[2][8][10] = 0;
384 subtri_matrix[2][8][11] = 0;
385 subtri_matrix[2][9][0] = 1;
386 subtri_matrix[2][9][1] = 0;
387 subtri_matrix[2][9][2] = 0;
388 subtri_matrix[2][9][3] = 0;
389 subtri_matrix[2][9][4] = 0;
390 subtri_matrix[2][9][5] = 0;
391 subtri_matrix[2][9][6] = 0;
392 subtri_matrix[2][9][7] = 0;
393 subtri_matrix[2][9][8] = 0;
394 subtri_matrix[2][9][9] = 0;
395 subtri_matrix[2][9][10] = 0;
396 subtri_matrix[2][9][11] = 0;