17 const double normalInterp[] = {
18 0.0000, 0.3333, 0.6667, 0.0000, 0.0000, 0.0000,
19 0.0000, 0.0000, 1.0000, 0.0000, 0.0000, 0.0000,
20 0.0000, 0.0000, 0.6667, 0.3333, 0.0000, 0.0000
23 const double tangentInterp[] = {
24 1.3333, -0.3333, 0.0000, 0.0000, 0.0000,
25 1.0000, 0.0000, 0.0000, 0.0000, 0.0000,
26 0.6667, 0.3333, 0.0000, 0.0000, 0.0000,
27 0.3333, 0.6667, 0.0000, 0.0000, 0.0000,
28 0.0000, 1.0000, 0.0000, 0.0000, 0.0000,
29 0.0000, 0.6667, 0.3333, 0.0000, 0.0000,
30 0.0000, 0.3333, 0.6667, 0.0000, 0.0000,
31 0.0000, 0.0000, 1.0000, 0.0000, 0.0000,
32 0.0000, 0.0000, 0.6667, 0.3333, 0.0000,
33 0.0000, 0.0000, 0.3333, 0.6667, 0.0000,
34 0.0000, 0.0000, 0.0000, 1.0000, 0.0000,
35 0.0000, 0.0000, 0.0000, 0.6667, 0.3333,
36 0.0000, 0.0000, 0.0000, 0.3333, 0.6667,
37 0.0000, 0.0000, 0.0000, 0.0000, 1.0000,
38 0.0000, 0.0000, 0.0000, -0.3333, 1.3333
41 constexpr int patchSize = 5;
42 constexpr int overlap = 3;
43 constexpr int unknowns = 59;
44 const int faceSize = unknowns * patchSize * patchSize * overlap * 2;
46 double coarseData[faceSize];
47 double fineDataTensorProduct[faceSize];
48 double fineDataSecondOrder[faceSize];
50 for (
int i = 0; i < 3; i++) {
51 for (
int j = 0; j < 3; j++) {
52 for (
int k = 0; k < 3; k++) {
58 for (
int axis = 0; axis < 3; axis++) {
61 faceMarker2(dummyEvent, axis + Dimensions);
63 for (
int n = 0; n < faceSize; n++)
64 coarseData[n] =
static_cast<double>(n + 1) / 16.0;
65 for (
int n = 0; n < faceSize; n++)
66 fineDataTensorProduct[n] = 0;
67 for (
int n = 0; n < faceSize; n++)
68 fineDataSecondOrder[n] = 0;
88 for (
int n = 0; n < faceSize; n++)
90 fineDataTensorProduct[n],
91 fineDataSecondOrder[n],
98 for (
int n = 0; n < faceSize; n++)
99 fineDataTensorProduct[n] = 0;
100 for (
int n = 0; n < faceSize; n++)
101 fineDataSecondOrder[n] = 0;
111 fineDataTensorProduct
121 for (
int n = 0; n < faceSize; n++)
123 fineDataTensorProduct[n],
124 fineDataSecondOrder[n],
137 const double normalRestrict[] = {
138 0.0000, 0.0000, 0.0000, 0.333333, 0.333333, 0.333333,
139 0.0000, 0.0000, 0.0000, 0.0000, -2.0000, 3.0000,
140 0.0000, 0.0000, 0.0000, 0.0000, -5.0000, 6.0000
143 const double tangentRestrict[] = {
144 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
145 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
146 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
147 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000,
148 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000
151 constexpr int patchSize = 5;
152 constexpr int overlap = 3;
153 constexpr int unknowns = 59;
154 const int faceSize = unknowns * patchSize * patchSize * overlap * 2;
156 double fineData[faceSize];
157 double coarseDataTensorProduct[faceSize];
158 double coarseDataSecondOrder[faceSize];
160 for (
int i = 0; i < 3; i++) {
161 for (
int j = 0; j < 3; j++) {
162 for (
int k = 0; k < 3; k++) {
168 for (
int axis = 0; axis < 3; axis++) {
171 faceMarker2(dummyEvent, axis + Dimensions);
173 for (
int n = 0; n < faceSize; n++)
174 fineData[n] =
static_cast<double>(n + 1) / 16.0;
175 for (
int n = 0; n < faceSize; n++)
176 coarseDataTensorProduct[n] = 0;
177 for (
int n = 0; n < faceSize; n++)
178 coarseDataSecondOrder[n] = 0;
188 coarseDataTensorProduct
196 coarseDataSecondOrder
198 for (
int n = 0; n < faceSize; n++)
200 coarseDataTensorProduct[n],
201 coarseDataSecondOrder[n],
208 for (
int n = 0; n < faceSize; n++)
209 coarseDataTensorProduct[n] = 0;
210 for (
int n = 0; n < faceSize; n++)
211 coarseDataSecondOrder[n] = 0;
221 coarseDataTensorProduct
229 coarseDataSecondOrder
231 for (
int n = 0; n < faceSize; n++)
233 coarseDataTensorProduct[n],
234 coarseDataSecondOrder[n],