17 double normalInterp[] = {
37 double tangentInterp[] = {
38 1.3333333, -0.3333333, 0.0000, 0.0000, 0.0000, 1.0000,
39 0.0000, 0.0000, 0.0000, 0.0000, 0.6666667, 0.3333333,
40 0.0000, 0.0000, 0.0000, 0.3333333, 0.6666667, 0.0000,
41 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000,
42 0.0000, 0.0000, 0.6666667, 0.3333333, 0.0000, 0.0000,
43 0.0000, 0.3333333, 0.6666667, 0.0000, 0.0000, 0.0000,
44 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000,
45 0.6666667, 0.3333333, 0.0000, 0.0000, 0.0000, 0.3333333,
46 0.6666667, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000,
47 0.0000, 0.0000, 0.0000, 0.0000, 0.6666667, 0.3333333,
48 0.0000, 0.0000, 0.0000, 0.3333333, 0.6666667, 0.0000,
49 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000,
50 0.0000, -0.3333333, 1.3333333};
52 constexpr int patchSize = 5;
53 constexpr int overlap = 3;
54 constexpr int unknowns = 59;
55 const int faceSize = unknowns * patchSize * patchSize * overlap * 2;
57 double coarseData[faceSize];
58 double fineDataTensorProduct[faceSize];
59 double fineDataThirdOrder[faceSize];
61 for (
int i = 0; i < 3; i++) {
62 for (
int j = 0; j < 3; j++) {
63 for (
int k = 0; k < 3; k++) {
69 for (
int axis = 0; axis < 3; axis++) {
73 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
75 coarseData[n] = (
double)(n) / 16.0;
76 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
78 fineDataTensorProduct[n] = 0;
79 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
81 fineDataThirdOrder[n] = 0;
102 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
105 fineDataTensorProduct[n],
106 fineDataThirdOrder[n],
113 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
115 fineDataTensorProduct[n] = 0;
116 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
118 fineDataThirdOrder[n] = 0;
128 fineDataTensorProduct
139 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
142 fineDataTensorProduct[n],
143 fineDataThirdOrder[n],
158 const double normalRestrict[] = {
178 const double tangentRestrict[] = {
179 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
180 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
181 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
182 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
183 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
184 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
185 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
186 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
187 0.0000, 1.0000, 0.0000};
189 constexpr int patchSize = 5;
190 constexpr int overlap = 3;
191 constexpr int unknowns = 59;
192 const int faceSize = unknowns * patchSize * patchSize * overlap * 2;
194 double fineData[faceSize];
195 double coarseDataTensorProduct[faceSize];
196 double coarseDataThirdOrder[faceSize];
198 for (
int i = 0; i < 3; i++) {
199 for (
int j = 0; j < 3; j++) {
200 for (
int k = 0; k < 3; k++) {
206 for (
int axis = 0; axis < 3; axis++) {
210 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
212 fineData[n] = (
double)(n) / 16.0;
213 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
215 coarseDataTensorProduct[n] = 0;
216 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
218 coarseDataThirdOrder[n] = 0;
228 coarseDataTensorProduct,
237 coarseDataThirdOrder,
241 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
244 coarseDataTensorProduct[n],
245 coarseDataThirdOrder[n],
252 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
254 coarseDataTensorProduct[n] = 0;
255 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
257 coarseDataThirdOrder[n] = 0;
267 coarseDataTensorProduct,
276 coarseDataThirdOrder,
279 for (
int n = 0; n < unknowns * patchSize * patchSize * overlap * 2;
282 coarseDataTensorProduct[n],
283 coarseDataThirdOrder[n],