164
158
// Compute basisvalues.
165
159
basisvalues[0] = 1.0;
166
160
basisvalues[1] = tmp0;
167
for (unsigned int r = 1; r < 3; r++)
169
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
170
ss = r*(r + 1)*(r + 2)/6;
171
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
172
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
173
}// end loop over 'r'
174
for (unsigned int r = 0; r < 3; r++)
176
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
177
ss = r*(r + 1)*(r + 2)/6;
178
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
179
}// end loop over 'r'
180
for (unsigned int r = 0; r < 2; r++)
182
for (unsigned int s = 1; s < 3 - r; s++)
184
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
185
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
186
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
187
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
188
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
189
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
190
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
191
}// end loop over 's'
192
}// end loop over 'r'
193
for (unsigned int r = 0; r < 3; r++)
195
for (unsigned int s = 0; s < 3 - r; s++)
197
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
198
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
199
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
200
}// end loop over 's'
201
}// end loop over 'r'
202
for (unsigned int r = 0; r < 2; r++)
204
for (unsigned int s = 0; s < 2 - r; s++)
206
for (unsigned int t = 1; t < 3 - r - s; t++)
208
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
209
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
210
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
211
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
212
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
213
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
214
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
215
}// end loop over 't'
216
}// end loop over 's'
217
}// end loop over 'r'
218
for (unsigned int r = 0; r < 4; r++)
220
for (unsigned int s = 0; s < 4 - r; s++)
222
for (unsigned int t = 0; t < 4 - r - s; t++)
224
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
225
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
226
}// end loop over 't'
227
}// end loop over 's'
228
}// end loop over 'r'
161
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
162
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
163
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
164
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
165
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
166
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
167
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
168
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
169
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
170
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
171
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
172
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
173
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
174
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
175
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
176
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
177
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
178
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
179
basisvalues[0] *= std::sqrt(0.75);
180
basisvalues[3] *= std::sqrt(1.25);
181
basisvalues[9] *= std::sqrt(1.75);
182
basisvalues[19] *= std::sqrt(2.25);
183
basisvalues[2] *= std::sqrt(2.5);
184
basisvalues[8] *= std::sqrt(3.5);
185
basisvalues[18] *= std::sqrt(4.5);
186
basisvalues[7] *= std::sqrt(5.25);
187
basisvalues[17] *= std::sqrt(6.75);
188
basisvalues[16] *= std::sqrt(9.0);
189
basisvalues[1] *= std::sqrt(7.5);
190
basisvalues[6] *= std::sqrt(10.5);
191
basisvalues[15] *= std::sqrt(13.5);
192
basisvalues[5] *= std::sqrt(15.75);
193
basisvalues[14] *= std::sqrt(20.25);
194
basisvalues[13] *= std::sqrt(27.0);
195
basisvalues[4] *= std::sqrt(26.25);
196
basisvalues[12] *= std::sqrt(33.75);
197
basisvalues[11] *= std::sqrt(45.0);
198
basisvalues[10] *= std::sqrt(63.0);
230
200
// Table(s) of coefficients.
231
201
static const double coefficients0[20] = \
260
224
// Compute basisvalues.
261
225
basisvalues[0] = 1.0;
262
226
basisvalues[1] = tmp0;
263
for (unsigned int r = 1; r < 3; r++)
265
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
266
ss = r*(r + 1)*(r + 2)/6;
267
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
268
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
269
}// end loop over 'r'
270
for (unsigned int r = 0; r < 3; r++)
272
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
273
ss = r*(r + 1)*(r + 2)/6;
274
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
275
}// end loop over 'r'
276
for (unsigned int r = 0; r < 2; r++)
278
for (unsigned int s = 1; s < 3 - r; s++)
280
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
281
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
282
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
283
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
284
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
285
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
286
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
287
}// end loop over 's'
288
}// end loop over 'r'
289
for (unsigned int r = 0; r < 3; r++)
291
for (unsigned int s = 0; s < 3 - r; s++)
293
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
294
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
295
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
296
}// end loop over 's'
297
}// end loop over 'r'
298
for (unsigned int r = 0; r < 2; r++)
300
for (unsigned int s = 0; s < 2 - r; s++)
302
for (unsigned int t = 1; t < 3 - r - s; t++)
304
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
305
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
306
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
307
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
308
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
309
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
310
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
311
}// end loop over 't'
312
}// end loop over 's'
313
}// end loop over 'r'
314
for (unsigned int r = 0; r < 4; r++)
316
for (unsigned int s = 0; s < 4 - r; s++)
318
for (unsigned int t = 0; t < 4 - r - s; t++)
320
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
321
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
322
}// end loop over 't'
323
}// end loop over 's'
324
}// end loop over 'r'
227
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
228
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
229
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
230
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
231
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
232
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
233
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
234
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
235
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
236
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
237
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
238
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
239
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
240
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
241
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
242
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
243
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
244
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
245
basisvalues[0] *= std::sqrt(0.75);
246
basisvalues[3] *= std::sqrt(1.25);
247
basisvalues[9] *= std::sqrt(1.75);
248
basisvalues[19] *= std::sqrt(2.25);
249
basisvalues[2] *= std::sqrt(2.5);
250
basisvalues[8] *= std::sqrt(3.5);
251
basisvalues[18] *= std::sqrt(4.5);
252
basisvalues[7] *= std::sqrt(5.25);
253
basisvalues[17] *= std::sqrt(6.75);
254
basisvalues[16] *= std::sqrt(9.0);
255
basisvalues[1] *= std::sqrt(7.5);
256
basisvalues[6] *= std::sqrt(10.5);
257
basisvalues[15] *= std::sqrt(13.5);
258
basisvalues[5] *= std::sqrt(15.75);
259
basisvalues[14] *= std::sqrt(20.25);
260
basisvalues[13] *= std::sqrt(27.0);
261
basisvalues[4] *= std::sqrt(26.25);
262
basisvalues[12] *= std::sqrt(33.75);
263
basisvalues[11] *= std::sqrt(45.0);
264
basisvalues[10] *= std::sqrt(63.0);
326
266
// Table(s) of coefficients.
327
267
static const double coefficients0[20] = \
356
290
// Compute basisvalues.
357
291
basisvalues[0] = 1.0;
358
292
basisvalues[1] = tmp0;
359
for (unsigned int r = 1; r < 3; r++)
361
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
362
ss = r*(r + 1)*(r + 2)/6;
363
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
364
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
365
}// end loop over 'r'
366
for (unsigned int r = 0; r < 3; r++)
368
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
369
ss = r*(r + 1)*(r + 2)/6;
370
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
371
}// end loop over 'r'
372
for (unsigned int r = 0; r < 2; r++)
374
for (unsigned int s = 1; s < 3 - r; s++)
376
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
377
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
378
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
379
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
380
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
381
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
382
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
383
}// end loop over 's'
384
}// end loop over 'r'
385
for (unsigned int r = 0; r < 3; r++)
387
for (unsigned int s = 0; s < 3 - r; s++)
389
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
390
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
391
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
392
}// end loop over 's'
393
}// end loop over 'r'
394
for (unsigned int r = 0; r < 2; r++)
396
for (unsigned int s = 0; s < 2 - r; s++)
398
for (unsigned int t = 1; t < 3 - r - s; t++)
400
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
401
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
402
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
403
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
404
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
405
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
406
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
407
}// end loop over 't'
408
}// end loop over 's'
409
}// end loop over 'r'
410
for (unsigned int r = 0; r < 4; r++)
412
for (unsigned int s = 0; s < 4 - r; s++)
414
for (unsigned int t = 0; t < 4 - r - s; t++)
416
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
417
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
418
}// end loop over 't'
419
}// end loop over 's'
420
}// end loop over 'r'
293
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
294
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
295
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
296
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
297
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
298
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
299
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
300
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
301
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
302
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
303
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
304
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
305
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
306
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
307
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
308
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
309
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
310
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
311
basisvalues[0] *= std::sqrt(0.75);
312
basisvalues[3] *= std::sqrt(1.25);
313
basisvalues[9] *= std::sqrt(1.75);
314
basisvalues[19] *= std::sqrt(2.25);
315
basisvalues[2] *= std::sqrt(2.5);
316
basisvalues[8] *= std::sqrt(3.5);
317
basisvalues[18] *= std::sqrt(4.5);
318
basisvalues[7] *= std::sqrt(5.25);
319
basisvalues[17] *= std::sqrt(6.75);
320
basisvalues[16] *= std::sqrt(9.0);
321
basisvalues[1] *= std::sqrt(7.5);
322
basisvalues[6] *= std::sqrt(10.5);
323
basisvalues[15] *= std::sqrt(13.5);
324
basisvalues[5] *= std::sqrt(15.75);
325
basisvalues[14] *= std::sqrt(20.25);
326
basisvalues[13] *= std::sqrt(27.0);
327
basisvalues[4] *= std::sqrt(26.25);
328
basisvalues[12] *= std::sqrt(33.75);
329
basisvalues[11] *= std::sqrt(45.0);
330
basisvalues[10] *= std::sqrt(63.0);
422
332
// Table(s) of coefficients.
423
333
static const double coefficients0[20] = \
452
356
// Compute basisvalues.
453
357
basisvalues[0] = 1.0;
454
358
basisvalues[1] = tmp0;
455
for (unsigned int r = 1; r < 3; r++)
457
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
458
ss = r*(r + 1)*(r + 2)/6;
459
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
460
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
461
}// end loop over 'r'
462
for (unsigned int r = 0; r < 3; r++)
464
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
465
ss = r*(r + 1)*(r + 2)/6;
466
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
467
}// end loop over 'r'
468
for (unsigned int r = 0; r < 2; r++)
470
for (unsigned int s = 1; s < 3 - r; s++)
472
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
473
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
474
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
475
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
476
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
477
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
478
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
479
}// end loop over 's'
480
}// end loop over 'r'
481
for (unsigned int r = 0; r < 3; r++)
483
for (unsigned int s = 0; s < 3 - r; s++)
485
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
486
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
487
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
488
}// end loop over 's'
489
}// end loop over 'r'
490
for (unsigned int r = 0; r < 2; r++)
492
for (unsigned int s = 0; s < 2 - r; s++)
494
for (unsigned int t = 1; t < 3 - r - s; t++)
496
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
497
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
498
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
499
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
500
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
501
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
502
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
503
}// end loop over 't'
504
}// end loop over 's'
505
}// end loop over 'r'
506
for (unsigned int r = 0; r < 4; r++)
508
for (unsigned int s = 0; s < 4 - r; s++)
510
for (unsigned int t = 0; t < 4 - r - s; t++)
512
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
513
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
514
}// end loop over 't'
515
}// end loop over 's'
516
}// end loop over 'r'
359
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
360
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
361
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
362
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
363
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
364
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
365
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
366
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
367
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
368
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
369
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
370
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
371
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
372
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
373
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
374
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
375
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
376
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
377
basisvalues[0] *= std::sqrt(0.75);
378
basisvalues[3] *= std::sqrt(1.25);
379
basisvalues[9] *= std::sqrt(1.75);
380
basisvalues[19] *= std::sqrt(2.25);
381
basisvalues[2] *= std::sqrt(2.5);
382
basisvalues[8] *= std::sqrt(3.5);
383
basisvalues[18] *= std::sqrt(4.5);
384
basisvalues[7] *= std::sqrt(5.25);
385
basisvalues[17] *= std::sqrt(6.75);
386
basisvalues[16] *= std::sqrt(9.0);
387
basisvalues[1] *= std::sqrt(7.5);
388
basisvalues[6] *= std::sqrt(10.5);
389
basisvalues[15] *= std::sqrt(13.5);
390
basisvalues[5] *= std::sqrt(15.75);
391
basisvalues[14] *= std::sqrt(20.25);
392
basisvalues[13] *= std::sqrt(27.0);
393
basisvalues[4] *= std::sqrt(26.25);
394
basisvalues[12] *= std::sqrt(33.75);
395
basisvalues[11] *= std::sqrt(45.0);
396
basisvalues[10] *= std::sqrt(63.0);
518
398
// Table(s) of coefficients.
519
399
static const double coefficients0[20] = \
548
422
// Compute basisvalues.
549
423
basisvalues[0] = 1.0;
550
424
basisvalues[1] = tmp0;
551
for (unsigned int r = 1; r < 3; r++)
553
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
554
ss = r*(r + 1)*(r + 2)/6;
555
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
556
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
557
}// end loop over 'r'
558
for (unsigned int r = 0; r < 3; r++)
560
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
561
ss = r*(r + 1)*(r + 2)/6;
562
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
563
}// end loop over 'r'
564
for (unsigned int r = 0; r < 2; r++)
566
for (unsigned int s = 1; s < 3 - r; s++)
568
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
569
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
570
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
571
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
572
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
573
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
574
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
575
}// end loop over 's'
576
}// end loop over 'r'
577
for (unsigned int r = 0; r < 3; r++)
579
for (unsigned int s = 0; s < 3 - r; s++)
581
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
582
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
583
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
584
}// end loop over 's'
585
}// end loop over 'r'
586
for (unsigned int r = 0; r < 2; r++)
588
for (unsigned int s = 0; s < 2 - r; s++)
590
for (unsigned int t = 1; t < 3 - r - s; t++)
592
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
593
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
594
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
595
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
596
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
597
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
598
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
599
}// end loop over 't'
600
}// end loop over 's'
601
}// end loop over 'r'
602
for (unsigned int r = 0; r < 4; r++)
604
for (unsigned int s = 0; s < 4 - r; s++)
606
for (unsigned int t = 0; t < 4 - r - s; t++)
608
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
609
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
610
}// end loop over 't'
611
}// end loop over 's'
612
}// end loop over 'r'
425
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
426
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
427
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
428
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
429
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
430
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
431
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
432
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
433
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
434
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
435
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
436
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
437
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
438
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
439
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
440
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
441
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
442
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
443
basisvalues[0] *= std::sqrt(0.75);
444
basisvalues[3] *= std::sqrt(1.25);
445
basisvalues[9] *= std::sqrt(1.75);
446
basisvalues[19] *= std::sqrt(2.25);
447
basisvalues[2] *= std::sqrt(2.5);
448
basisvalues[8] *= std::sqrt(3.5);
449
basisvalues[18] *= std::sqrt(4.5);
450
basisvalues[7] *= std::sqrt(5.25);
451
basisvalues[17] *= std::sqrt(6.75);
452
basisvalues[16] *= std::sqrt(9.0);
453
basisvalues[1] *= std::sqrt(7.5);
454
basisvalues[6] *= std::sqrt(10.5);
455
basisvalues[15] *= std::sqrt(13.5);
456
basisvalues[5] *= std::sqrt(15.75);
457
basisvalues[14] *= std::sqrt(20.25);
458
basisvalues[13] *= std::sqrt(27.0);
459
basisvalues[4] *= std::sqrt(26.25);
460
basisvalues[12] *= std::sqrt(33.75);
461
basisvalues[11] *= std::sqrt(45.0);
462
basisvalues[10] *= std::sqrt(63.0);
614
464
// Table(s) of coefficients.
615
465
static const double coefficients0[20] = \
644
488
// Compute basisvalues.
645
489
basisvalues[0] = 1.0;
646
490
basisvalues[1] = tmp0;
647
for (unsigned int r = 1; r < 3; r++)
649
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
650
ss = r*(r + 1)*(r + 2)/6;
651
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
652
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
653
}// end loop over 'r'
654
for (unsigned int r = 0; r < 3; r++)
656
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
657
ss = r*(r + 1)*(r + 2)/6;
658
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
659
}// end loop over 'r'
660
for (unsigned int r = 0; r < 2; r++)
662
for (unsigned int s = 1; s < 3 - r; s++)
664
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
665
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
666
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
667
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
668
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
669
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
670
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
671
}// end loop over 's'
672
}// end loop over 'r'
673
for (unsigned int r = 0; r < 3; r++)
675
for (unsigned int s = 0; s < 3 - r; s++)
677
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
678
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
679
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
680
}// end loop over 's'
681
}// end loop over 'r'
682
for (unsigned int r = 0; r < 2; r++)
684
for (unsigned int s = 0; s < 2 - r; s++)
686
for (unsigned int t = 1; t < 3 - r - s; t++)
688
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
689
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
690
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
691
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
692
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
693
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
694
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
695
}// end loop over 't'
696
}// end loop over 's'
697
}// end loop over 'r'
698
for (unsigned int r = 0; r < 4; r++)
700
for (unsigned int s = 0; s < 4 - r; s++)
702
for (unsigned int t = 0; t < 4 - r - s; t++)
704
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
705
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
706
}// end loop over 't'
707
}// end loop over 's'
708
}// end loop over 'r'
491
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
492
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
493
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
494
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
495
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
496
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
497
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
498
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
499
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
500
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
501
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
502
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
503
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
504
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
505
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
506
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
507
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
508
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
509
basisvalues[0] *= std::sqrt(0.75);
510
basisvalues[3] *= std::sqrt(1.25);
511
basisvalues[9] *= std::sqrt(1.75);
512
basisvalues[19] *= std::sqrt(2.25);
513
basisvalues[2] *= std::sqrt(2.5);
514
basisvalues[8] *= std::sqrt(3.5);
515
basisvalues[18] *= std::sqrt(4.5);
516
basisvalues[7] *= std::sqrt(5.25);
517
basisvalues[17] *= std::sqrt(6.75);
518
basisvalues[16] *= std::sqrt(9.0);
519
basisvalues[1] *= std::sqrt(7.5);
520
basisvalues[6] *= std::sqrt(10.5);
521
basisvalues[15] *= std::sqrt(13.5);
522
basisvalues[5] *= std::sqrt(15.75);
523
basisvalues[14] *= std::sqrt(20.25);
524
basisvalues[13] *= std::sqrt(27.0);
525
basisvalues[4] *= std::sqrt(26.25);
526
basisvalues[12] *= std::sqrt(33.75);
527
basisvalues[11] *= std::sqrt(45.0);
528
basisvalues[10] *= std::sqrt(63.0);
710
530
// Table(s) of coefficients.
711
531
static const double coefficients0[20] = \
740
554
// Compute basisvalues.
741
555
basisvalues[0] = 1.0;
742
556
basisvalues[1] = tmp0;
743
for (unsigned int r = 1; r < 3; r++)
745
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
746
ss = r*(r + 1)*(r + 2)/6;
747
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
748
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
749
}// end loop over 'r'
750
for (unsigned int r = 0; r < 3; r++)
752
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
753
ss = r*(r + 1)*(r + 2)/6;
754
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
755
}// end loop over 'r'
756
for (unsigned int r = 0; r < 2; r++)
758
for (unsigned int s = 1; s < 3 - r; s++)
760
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
761
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
762
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
763
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
764
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
765
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
766
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
767
}// end loop over 's'
768
}// end loop over 'r'
769
for (unsigned int r = 0; r < 3; r++)
771
for (unsigned int s = 0; s < 3 - r; s++)
773
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
774
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
775
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
776
}// end loop over 's'
777
}// end loop over 'r'
778
for (unsigned int r = 0; r < 2; r++)
780
for (unsigned int s = 0; s < 2 - r; s++)
782
for (unsigned int t = 1; t < 3 - r - s; t++)
784
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
785
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
786
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
787
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
788
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
789
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
790
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
791
}// end loop over 't'
792
}// end loop over 's'
793
}// end loop over 'r'
794
for (unsigned int r = 0; r < 4; r++)
796
for (unsigned int s = 0; s < 4 - r; s++)
798
for (unsigned int t = 0; t < 4 - r - s; t++)
800
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
801
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
802
}// end loop over 't'
803
}// end loop over 's'
804
}// end loop over 'r'
557
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
558
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
559
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
560
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
561
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
562
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
563
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
564
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
565
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
566
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
567
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
568
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
569
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
570
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
571
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
572
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
573
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
574
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
575
basisvalues[0] *= std::sqrt(0.75);
576
basisvalues[3] *= std::sqrt(1.25);
577
basisvalues[9] *= std::sqrt(1.75);
578
basisvalues[19] *= std::sqrt(2.25);
579
basisvalues[2] *= std::sqrt(2.5);
580
basisvalues[8] *= std::sqrt(3.5);
581
basisvalues[18] *= std::sqrt(4.5);
582
basisvalues[7] *= std::sqrt(5.25);
583
basisvalues[17] *= std::sqrt(6.75);
584
basisvalues[16] *= std::sqrt(9.0);
585
basisvalues[1] *= std::sqrt(7.5);
586
basisvalues[6] *= std::sqrt(10.5);
587
basisvalues[15] *= std::sqrt(13.5);
588
basisvalues[5] *= std::sqrt(15.75);
589
basisvalues[14] *= std::sqrt(20.25);
590
basisvalues[13] *= std::sqrt(27.0);
591
basisvalues[4] *= std::sqrt(26.25);
592
basisvalues[12] *= std::sqrt(33.75);
593
basisvalues[11] *= std::sqrt(45.0);
594
basisvalues[10] *= std::sqrt(63.0);
806
596
// Table(s) of coefficients.
807
597
static const double coefficients0[20] = \
836
620
// Compute basisvalues.
837
621
basisvalues[0] = 1.0;
838
622
basisvalues[1] = tmp0;
839
for (unsigned int r = 1; r < 3; r++)
841
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
842
ss = r*(r + 1)*(r + 2)/6;
843
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
844
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
845
}// end loop over 'r'
846
for (unsigned int r = 0; r < 3; r++)
848
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
849
ss = r*(r + 1)*(r + 2)/6;
850
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
851
}// end loop over 'r'
852
for (unsigned int r = 0; r < 2; r++)
854
for (unsigned int s = 1; s < 3 - r; s++)
856
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
857
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
858
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
859
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
860
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
861
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
862
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
863
}// end loop over 's'
864
}// end loop over 'r'
865
for (unsigned int r = 0; r < 3; r++)
867
for (unsigned int s = 0; s < 3 - r; s++)
869
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
870
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
871
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
872
}// end loop over 's'
873
}// end loop over 'r'
874
for (unsigned int r = 0; r < 2; r++)
876
for (unsigned int s = 0; s < 2 - r; s++)
878
for (unsigned int t = 1; t < 3 - r - s; t++)
880
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
881
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
882
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
883
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
884
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
885
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
886
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
887
}// end loop over 't'
888
}// end loop over 's'
889
}// end loop over 'r'
890
for (unsigned int r = 0; r < 4; r++)
892
for (unsigned int s = 0; s < 4 - r; s++)
894
for (unsigned int t = 0; t < 4 - r - s; t++)
896
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
897
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
898
}// end loop over 't'
899
}// end loop over 's'
900
}// end loop over 'r'
623
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
624
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
625
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
626
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
627
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
628
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
629
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
630
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
631
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
632
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
633
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
634
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
635
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
636
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
637
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
638
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
639
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
640
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
641
basisvalues[0] *= std::sqrt(0.75);
642
basisvalues[3] *= std::sqrt(1.25);
643
basisvalues[9] *= std::sqrt(1.75);
644
basisvalues[19] *= std::sqrt(2.25);
645
basisvalues[2] *= std::sqrt(2.5);
646
basisvalues[8] *= std::sqrt(3.5);
647
basisvalues[18] *= std::sqrt(4.5);
648
basisvalues[7] *= std::sqrt(5.25);
649
basisvalues[17] *= std::sqrt(6.75);
650
basisvalues[16] *= std::sqrt(9.0);
651
basisvalues[1] *= std::sqrt(7.5);
652
basisvalues[6] *= std::sqrt(10.5);
653
basisvalues[15] *= std::sqrt(13.5);
654
basisvalues[5] *= std::sqrt(15.75);
655
basisvalues[14] *= std::sqrt(20.25);
656
basisvalues[13] *= std::sqrt(27.0);
657
basisvalues[4] *= std::sqrt(26.25);
658
basisvalues[12] *= std::sqrt(33.75);
659
basisvalues[11] *= std::sqrt(45.0);
660
basisvalues[10] *= std::sqrt(63.0);
902
662
// Table(s) of coefficients.
903
663
static const double coefficients0[20] = \
932
686
// Compute basisvalues.
933
687
basisvalues[0] = 1.0;
934
688
basisvalues[1] = tmp0;
935
for (unsigned int r = 1; r < 3; r++)
937
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
938
ss = r*(r + 1)*(r + 2)/6;
939
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
940
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
941
}// end loop over 'r'
942
for (unsigned int r = 0; r < 3; r++)
944
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
945
ss = r*(r + 1)*(r + 2)/6;
946
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
947
}// end loop over 'r'
948
for (unsigned int r = 0; r < 2; r++)
950
for (unsigned int s = 1; s < 3 - r; s++)
952
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
953
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
954
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
955
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
956
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
957
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
958
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
959
}// end loop over 's'
960
}// end loop over 'r'
961
for (unsigned int r = 0; r < 3; r++)
963
for (unsigned int s = 0; s < 3 - r; s++)
965
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
966
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
967
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
968
}// end loop over 's'
969
}// end loop over 'r'
970
for (unsigned int r = 0; r < 2; r++)
972
for (unsigned int s = 0; s < 2 - r; s++)
974
for (unsigned int t = 1; t < 3 - r - s; t++)
976
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
977
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
978
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
979
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
980
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
981
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
982
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
983
}// end loop over 't'
984
}// end loop over 's'
985
}// end loop over 'r'
986
for (unsigned int r = 0; r < 4; r++)
988
for (unsigned int s = 0; s < 4 - r; s++)
990
for (unsigned int t = 0; t < 4 - r - s; t++)
992
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
993
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
994
}// end loop over 't'
995
}// end loop over 's'
996
}// end loop over 'r'
689
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
690
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
691
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
692
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
693
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
694
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
695
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
696
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
697
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
698
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
699
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
700
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
701
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
702
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
703
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
704
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
705
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
706
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
707
basisvalues[0] *= std::sqrt(0.75);
708
basisvalues[3] *= std::sqrt(1.25);
709
basisvalues[9] *= std::sqrt(1.75);
710
basisvalues[19] *= std::sqrt(2.25);
711
basisvalues[2] *= std::sqrt(2.5);
712
basisvalues[8] *= std::sqrt(3.5);
713
basisvalues[18] *= std::sqrt(4.5);
714
basisvalues[7] *= std::sqrt(5.25);
715
basisvalues[17] *= std::sqrt(6.75);
716
basisvalues[16] *= std::sqrt(9.0);
717
basisvalues[1] *= std::sqrt(7.5);
718
basisvalues[6] *= std::sqrt(10.5);
719
basisvalues[15] *= std::sqrt(13.5);
720
basisvalues[5] *= std::sqrt(15.75);
721
basisvalues[14] *= std::sqrt(20.25);
722
basisvalues[13] *= std::sqrt(27.0);
723
basisvalues[4] *= std::sqrt(26.25);
724
basisvalues[12] *= std::sqrt(33.75);
725
basisvalues[11] *= std::sqrt(45.0);
726
basisvalues[10] *= std::sqrt(63.0);
998
728
// Table(s) of coefficients.
999
729
static const double coefficients0[20] = \
1028
752
// Compute basisvalues.
1029
753
basisvalues[0] = 1.0;
1030
754
basisvalues[1] = tmp0;
1031
for (unsigned int r = 1; r < 3; r++)
1033
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1034
ss = r*(r + 1)*(r + 2)/6;
1035
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1036
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1037
}// end loop over 'r'
1038
for (unsigned int r = 0; r < 3; r++)
1040
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1041
ss = r*(r + 1)*(r + 2)/6;
1042
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1043
}// end loop over 'r'
1044
for (unsigned int r = 0; r < 2; r++)
1046
for (unsigned int s = 1; s < 3 - r; s++)
1048
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1049
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1050
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1051
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1052
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1053
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1054
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1055
}// end loop over 's'
1056
}// end loop over 'r'
1057
for (unsigned int r = 0; r < 3; r++)
1059
for (unsigned int s = 0; s < 3 - r; s++)
1061
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1062
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1063
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1064
}// end loop over 's'
1065
}// end loop over 'r'
1066
for (unsigned int r = 0; r < 2; r++)
1068
for (unsigned int s = 0; s < 2 - r; s++)
1070
for (unsigned int t = 1; t < 3 - r - s; t++)
1072
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1073
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1074
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1075
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1076
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1077
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1078
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1079
}// end loop over 't'
1080
}// end loop over 's'
1081
}// end loop over 'r'
1082
for (unsigned int r = 0; r < 4; r++)
1084
for (unsigned int s = 0; s < 4 - r; s++)
1086
for (unsigned int t = 0; t < 4 - r - s; t++)
1088
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1089
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1090
}// end loop over 't'
1091
}// end loop over 's'
1092
}// end loop over 'r'
755
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
756
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
757
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
758
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
759
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
760
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
761
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
762
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
763
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
764
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
765
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
766
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
767
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
768
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
769
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
770
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
771
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
772
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
773
basisvalues[0] *= std::sqrt(0.75);
774
basisvalues[3] *= std::sqrt(1.25);
775
basisvalues[9] *= std::sqrt(1.75);
776
basisvalues[19] *= std::sqrt(2.25);
777
basisvalues[2] *= std::sqrt(2.5);
778
basisvalues[8] *= std::sqrt(3.5);
779
basisvalues[18] *= std::sqrt(4.5);
780
basisvalues[7] *= std::sqrt(5.25);
781
basisvalues[17] *= std::sqrt(6.75);
782
basisvalues[16] *= std::sqrt(9.0);
783
basisvalues[1] *= std::sqrt(7.5);
784
basisvalues[6] *= std::sqrt(10.5);
785
basisvalues[15] *= std::sqrt(13.5);
786
basisvalues[5] *= std::sqrt(15.75);
787
basisvalues[14] *= std::sqrt(20.25);
788
basisvalues[13] *= std::sqrt(27.0);
789
basisvalues[4] *= std::sqrt(26.25);
790
basisvalues[12] *= std::sqrt(33.75);
791
basisvalues[11] *= std::sqrt(45.0);
792
basisvalues[10] *= std::sqrt(63.0);
1094
794
// Table(s) of coefficients.
1095
795
static const double coefficients0[20] = \
1124
818
// Compute basisvalues.
1125
819
basisvalues[0] = 1.0;
1126
820
basisvalues[1] = tmp0;
1127
for (unsigned int r = 1; r < 3; r++)
1129
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1130
ss = r*(r + 1)*(r + 2)/6;
1131
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1132
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1133
}// end loop over 'r'
1134
for (unsigned int r = 0; r < 3; r++)
1136
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1137
ss = r*(r + 1)*(r + 2)/6;
1138
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1139
}// end loop over 'r'
1140
for (unsigned int r = 0; r < 2; r++)
1142
for (unsigned int s = 1; s < 3 - r; s++)
1144
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1145
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1146
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1147
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1148
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1149
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1150
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1151
}// end loop over 's'
1152
}// end loop over 'r'
1153
for (unsigned int r = 0; r < 3; r++)
1155
for (unsigned int s = 0; s < 3 - r; s++)
1157
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1158
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1159
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1160
}// end loop over 's'
1161
}// end loop over 'r'
1162
for (unsigned int r = 0; r < 2; r++)
1164
for (unsigned int s = 0; s < 2 - r; s++)
1166
for (unsigned int t = 1; t < 3 - r - s; t++)
1168
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1169
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1170
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1171
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1172
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1173
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1174
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1175
}// end loop over 't'
1176
}// end loop over 's'
1177
}// end loop over 'r'
1178
for (unsigned int r = 0; r < 4; r++)
1180
for (unsigned int s = 0; s < 4 - r; s++)
1182
for (unsigned int t = 0; t < 4 - r - s; t++)
1184
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1185
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1186
}// end loop over 't'
1187
}// end loop over 's'
1188
}// end loop over 'r'
821
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
822
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
823
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
824
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
825
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
826
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
827
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
828
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
829
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
830
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
831
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
832
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
833
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
834
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
835
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
836
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
837
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
838
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
839
basisvalues[0] *= std::sqrt(0.75);
840
basisvalues[3] *= std::sqrt(1.25);
841
basisvalues[9] *= std::sqrt(1.75);
842
basisvalues[19] *= std::sqrt(2.25);
843
basisvalues[2] *= std::sqrt(2.5);
844
basisvalues[8] *= std::sqrt(3.5);
845
basisvalues[18] *= std::sqrt(4.5);
846
basisvalues[7] *= std::sqrt(5.25);
847
basisvalues[17] *= std::sqrt(6.75);
848
basisvalues[16] *= std::sqrt(9.0);
849
basisvalues[1] *= std::sqrt(7.5);
850
basisvalues[6] *= std::sqrt(10.5);
851
basisvalues[15] *= std::sqrt(13.5);
852
basisvalues[5] *= std::sqrt(15.75);
853
basisvalues[14] *= std::sqrt(20.25);
854
basisvalues[13] *= std::sqrt(27.0);
855
basisvalues[4] *= std::sqrt(26.25);
856
basisvalues[12] *= std::sqrt(33.75);
857
basisvalues[11] *= std::sqrt(45.0);
858
basisvalues[10] *= std::sqrt(63.0);
1190
860
// Table(s) of coefficients.
1191
861
static const double coefficients0[20] = \
1220
884
// Compute basisvalues.
1221
885
basisvalues[0] = 1.0;
1222
886
basisvalues[1] = tmp0;
1223
for (unsigned int r = 1; r < 3; r++)
1225
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1226
ss = r*(r + 1)*(r + 2)/6;
1227
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1228
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1229
}// end loop over 'r'
1230
for (unsigned int r = 0; r < 3; r++)
1232
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1233
ss = r*(r + 1)*(r + 2)/6;
1234
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1235
}// end loop over 'r'
1236
for (unsigned int r = 0; r < 2; r++)
1238
for (unsigned int s = 1; s < 3 - r; s++)
1240
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1241
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1242
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1243
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1244
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1245
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1246
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1247
}// end loop over 's'
1248
}// end loop over 'r'
1249
for (unsigned int r = 0; r < 3; r++)
1251
for (unsigned int s = 0; s < 3 - r; s++)
1253
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1254
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1255
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1256
}// end loop over 's'
1257
}// end loop over 'r'
1258
for (unsigned int r = 0; r < 2; r++)
1260
for (unsigned int s = 0; s < 2 - r; s++)
1262
for (unsigned int t = 1; t < 3 - r - s; t++)
1264
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1265
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1266
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1267
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1268
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1269
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1270
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1271
}// end loop over 't'
1272
}// end loop over 's'
1273
}// end loop over 'r'
1274
for (unsigned int r = 0; r < 4; r++)
1276
for (unsigned int s = 0; s < 4 - r; s++)
1278
for (unsigned int t = 0; t < 4 - r - s; t++)
1280
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1281
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1282
}// end loop over 't'
1283
}// end loop over 's'
1284
}// end loop over 'r'
887
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
888
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
889
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
890
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
891
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
892
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
893
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
894
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
895
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
896
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
897
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
898
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
899
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
900
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
901
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
902
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
903
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
904
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
905
basisvalues[0] *= std::sqrt(0.75);
906
basisvalues[3] *= std::sqrt(1.25);
907
basisvalues[9] *= std::sqrt(1.75);
908
basisvalues[19] *= std::sqrt(2.25);
909
basisvalues[2] *= std::sqrt(2.5);
910
basisvalues[8] *= std::sqrt(3.5);
911
basisvalues[18] *= std::sqrt(4.5);
912
basisvalues[7] *= std::sqrt(5.25);
913
basisvalues[17] *= std::sqrt(6.75);
914
basisvalues[16] *= std::sqrt(9.0);
915
basisvalues[1] *= std::sqrt(7.5);
916
basisvalues[6] *= std::sqrt(10.5);
917
basisvalues[15] *= std::sqrt(13.5);
918
basisvalues[5] *= std::sqrt(15.75);
919
basisvalues[14] *= std::sqrt(20.25);
920
basisvalues[13] *= std::sqrt(27.0);
921
basisvalues[4] *= std::sqrt(26.25);
922
basisvalues[12] *= std::sqrt(33.75);
923
basisvalues[11] *= std::sqrt(45.0);
924
basisvalues[10] *= std::sqrt(63.0);
1286
926
// Table(s) of coefficients.
1287
927
static const double coefficients0[20] = \
1316
950
// Compute basisvalues.
1317
951
basisvalues[0] = 1.0;
1318
952
basisvalues[1] = tmp0;
1319
for (unsigned int r = 1; r < 3; r++)
1321
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1322
ss = r*(r + 1)*(r + 2)/6;
1323
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1324
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1325
}// end loop over 'r'
1326
for (unsigned int r = 0; r < 3; r++)
1328
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1329
ss = r*(r + 1)*(r + 2)/6;
1330
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1331
}// end loop over 'r'
1332
for (unsigned int r = 0; r < 2; r++)
1334
for (unsigned int s = 1; s < 3 - r; s++)
1336
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1337
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1338
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1339
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1340
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1341
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1342
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1343
}// end loop over 's'
1344
}// end loop over 'r'
1345
for (unsigned int r = 0; r < 3; r++)
1347
for (unsigned int s = 0; s < 3 - r; s++)
1349
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1350
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1351
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1352
}// end loop over 's'
1353
}// end loop over 'r'
1354
for (unsigned int r = 0; r < 2; r++)
1356
for (unsigned int s = 0; s < 2 - r; s++)
1358
for (unsigned int t = 1; t < 3 - r - s; t++)
1360
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1361
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1362
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1363
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1364
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1365
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1366
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1367
}// end loop over 't'
1368
}// end loop over 's'
1369
}// end loop over 'r'
1370
for (unsigned int r = 0; r < 4; r++)
1372
for (unsigned int s = 0; s < 4 - r; s++)
1374
for (unsigned int t = 0; t < 4 - r - s; t++)
1376
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1377
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1378
}// end loop over 't'
1379
}// end loop over 's'
1380
}// end loop over 'r'
953
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
954
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
955
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
956
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
957
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
958
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
959
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
960
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
961
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
962
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
963
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
964
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
965
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
966
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
967
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
968
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
969
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
970
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
971
basisvalues[0] *= std::sqrt(0.75);
972
basisvalues[3] *= std::sqrt(1.25);
973
basisvalues[9] *= std::sqrt(1.75);
974
basisvalues[19] *= std::sqrt(2.25);
975
basisvalues[2] *= std::sqrt(2.5);
976
basisvalues[8] *= std::sqrt(3.5);
977
basisvalues[18] *= std::sqrt(4.5);
978
basisvalues[7] *= std::sqrt(5.25);
979
basisvalues[17] *= std::sqrt(6.75);
980
basisvalues[16] *= std::sqrt(9.0);
981
basisvalues[1] *= std::sqrt(7.5);
982
basisvalues[6] *= std::sqrt(10.5);
983
basisvalues[15] *= std::sqrt(13.5);
984
basisvalues[5] *= std::sqrt(15.75);
985
basisvalues[14] *= std::sqrt(20.25);
986
basisvalues[13] *= std::sqrt(27.0);
987
basisvalues[4] *= std::sqrt(26.25);
988
basisvalues[12] *= std::sqrt(33.75);
989
basisvalues[11] *= std::sqrt(45.0);
990
basisvalues[10] *= std::sqrt(63.0);
1382
992
// Table(s) of coefficients.
1383
993
static const double coefficients0[20] = \
1412
1016
// Compute basisvalues.
1413
1017
basisvalues[0] = 1.0;
1414
1018
basisvalues[1] = tmp0;
1415
for (unsigned int r = 1; r < 3; r++)
1417
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1418
ss = r*(r + 1)*(r + 2)/6;
1419
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1420
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1421
}// end loop over 'r'
1422
for (unsigned int r = 0; r < 3; r++)
1424
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1425
ss = r*(r + 1)*(r + 2)/6;
1426
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1427
}// end loop over 'r'
1428
for (unsigned int r = 0; r < 2; r++)
1430
for (unsigned int s = 1; s < 3 - r; s++)
1432
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1433
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1434
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1435
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1436
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1437
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1438
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1439
}// end loop over 's'
1440
}// end loop over 'r'
1441
for (unsigned int r = 0; r < 3; r++)
1443
for (unsigned int s = 0; s < 3 - r; s++)
1445
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1446
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1447
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1448
}// end loop over 's'
1449
}// end loop over 'r'
1450
for (unsigned int r = 0; r < 2; r++)
1452
for (unsigned int s = 0; s < 2 - r; s++)
1454
for (unsigned int t = 1; t < 3 - r - s; t++)
1456
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1457
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1458
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1459
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1460
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1461
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1462
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1463
}// end loop over 't'
1464
}// end loop over 's'
1465
}// end loop over 'r'
1466
for (unsigned int r = 0; r < 4; r++)
1468
for (unsigned int s = 0; s < 4 - r; s++)
1470
for (unsigned int t = 0; t < 4 - r - s; t++)
1472
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1473
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1474
}// end loop over 't'
1475
}// end loop over 's'
1476
}// end loop over 'r'
1019
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
1020
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
1021
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
1022
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
1023
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
1024
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
1025
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
1026
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
1027
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
1028
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
1029
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
1030
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
1031
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
1032
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
1033
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
1034
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
1035
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
1036
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
1037
basisvalues[0] *= std::sqrt(0.75);
1038
basisvalues[3] *= std::sqrt(1.25);
1039
basisvalues[9] *= std::sqrt(1.75);
1040
basisvalues[19] *= std::sqrt(2.25);
1041
basisvalues[2] *= std::sqrt(2.5);
1042
basisvalues[8] *= std::sqrt(3.5);
1043
basisvalues[18] *= std::sqrt(4.5);
1044
basisvalues[7] *= std::sqrt(5.25);
1045
basisvalues[17] *= std::sqrt(6.75);
1046
basisvalues[16] *= std::sqrt(9.0);
1047
basisvalues[1] *= std::sqrt(7.5);
1048
basisvalues[6] *= std::sqrt(10.5);
1049
basisvalues[15] *= std::sqrt(13.5);
1050
basisvalues[5] *= std::sqrt(15.75);
1051
basisvalues[14] *= std::sqrt(20.25);
1052
basisvalues[13] *= std::sqrt(27.0);
1053
basisvalues[4] *= std::sqrt(26.25);
1054
basisvalues[12] *= std::sqrt(33.75);
1055
basisvalues[11] *= std::sqrt(45.0);
1056
basisvalues[10] *= std::sqrt(63.0);
1478
1058
// Table(s) of coefficients.
1479
1059
static const double coefficients0[20] = \
1508
1082
// Compute basisvalues.
1509
1083
basisvalues[0] = 1.0;
1510
1084
basisvalues[1] = tmp0;
1511
for (unsigned int r = 1; r < 3; r++)
1513
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1514
ss = r*(r + 1)*(r + 2)/6;
1515
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1516
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1517
}// end loop over 'r'
1518
for (unsigned int r = 0; r < 3; r++)
1520
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1521
ss = r*(r + 1)*(r + 2)/6;
1522
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1523
}// end loop over 'r'
1524
for (unsigned int r = 0; r < 2; r++)
1526
for (unsigned int s = 1; s < 3 - r; s++)
1528
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1529
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1530
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1531
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1532
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1533
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1534
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1535
}// end loop over 's'
1536
}// end loop over 'r'
1537
for (unsigned int r = 0; r < 3; r++)
1539
for (unsigned int s = 0; s < 3 - r; s++)
1541
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1542
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1543
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1544
}// end loop over 's'
1545
}// end loop over 'r'
1546
for (unsigned int r = 0; r < 2; r++)
1548
for (unsigned int s = 0; s < 2 - r; s++)
1550
for (unsigned int t = 1; t < 3 - r - s; t++)
1552
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1553
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1554
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1555
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1556
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1557
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1558
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1559
}// end loop over 't'
1560
}// end loop over 's'
1561
}// end loop over 'r'
1562
for (unsigned int r = 0; r < 4; r++)
1564
for (unsigned int s = 0; s < 4 - r; s++)
1566
for (unsigned int t = 0; t < 4 - r - s; t++)
1568
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1569
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1570
}// end loop over 't'
1571
}// end loop over 's'
1572
}// end loop over 'r'
1085
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
1086
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
1087
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
1088
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
1089
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
1090
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
1091
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
1092
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
1093
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
1094
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
1095
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
1096
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
1097
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
1098
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
1099
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
1100
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
1101
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
1102
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
1103
basisvalues[0] *= std::sqrt(0.75);
1104
basisvalues[3] *= std::sqrt(1.25);
1105
basisvalues[9] *= std::sqrt(1.75);
1106
basisvalues[19] *= std::sqrt(2.25);
1107
basisvalues[2] *= std::sqrt(2.5);
1108
basisvalues[8] *= std::sqrt(3.5);
1109
basisvalues[18] *= std::sqrt(4.5);
1110
basisvalues[7] *= std::sqrt(5.25);
1111
basisvalues[17] *= std::sqrt(6.75);
1112
basisvalues[16] *= std::sqrt(9.0);
1113
basisvalues[1] *= std::sqrt(7.5);
1114
basisvalues[6] *= std::sqrt(10.5);
1115
basisvalues[15] *= std::sqrt(13.5);
1116
basisvalues[5] *= std::sqrt(15.75);
1117
basisvalues[14] *= std::sqrt(20.25);
1118
basisvalues[13] *= std::sqrt(27.0);
1119
basisvalues[4] *= std::sqrt(26.25);
1120
basisvalues[12] *= std::sqrt(33.75);
1121
basisvalues[11] *= std::sqrt(45.0);
1122
basisvalues[10] *= std::sqrt(63.0);
1574
1124
// Table(s) of coefficients.
1575
1125
static const double coefficients0[20] = \
1604
1148
// Compute basisvalues.
1605
1149
basisvalues[0] = 1.0;
1606
1150
basisvalues[1] = tmp0;
1607
for (unsigned int r = 1; r < 3; r++)
1609
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1610
ss = r*(r + 1)*(r + 2)/6;
1611
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1612
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1613
}// end loop over 'r'
1614
for (unsigned int r = 0; r < 3; r++)
1616
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1617
ss = r*(r + 1)*(r + 2)/6;
1618
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1619
}// end loop over 'r'
1620
for (unsigned int r = 0; r < 2; r++)
1622
for (unsigned int s = 1; s < 3 - r; s++)
1624
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1625
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1626
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1627
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1628
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1629
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1630
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1631
}// end loop over 's'
1632
}// end loop over 'r'
1633
for (unsigned int r = 0; r < 3; r++)
1635
for (unsigned int s = 0; s < 3 - r; s++)
1637
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1638
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1639
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1640
}// end loop over 's'
1641
}// end loop over 'r'
1642
for (unsigned int r = 0; r < 2; r++)
1644
for (unsigned int s = 0; s < 2 - r; s++)
1646
for (unsigned int t = 1; t < 3 - r - s; t++)
1648
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1649
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1650
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1651
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1652
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1653
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1654
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1655
}// end loop over 't'
1656
}// end loop over 's'
1657
}// end loop over 'r'
1658
for (unsigned int r = 0; r < 4; r++)
1660
for (unsigned int s = 0; s < 4 - r; s++)
1662
for (unsigned int t = 0; t < 4 - r - s; t++)
1664
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1665
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1666
}// end loop over 't'
1667
}// end loop over 's'
1668
}// end loop over 'r'
1151
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
1152
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
1153
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
1154
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
1155
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
1156
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
1157
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
1158
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
1159
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
1160
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
1161
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
1162
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
1163
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
1164
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
1165
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
1166
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
1167
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
1168
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
1169
basisvalues[0] *= std::sqrt(0.75);
1170
basisvalues[3] *= std::sqrt(1.25);
1171
basisvalues[9] *= std::sqrt(1.75);
1172
basisvalues[19] *= std::sqrt(2.25);
1173
basisvalues[2] *= std::sqrt(2.5);
1174
basisvalues[8] *= std::sqrt(3.5);
1175
basisvalues[18] *= std::sqrt(4.5);
1176
basisvalues[7] *= std::sqrt(5.25);
1177
basisvalues[17] *= std::sqrt(6.75);
1178
basisvalues[16] *= std::sqrt(9.0);
1179
basisvalues[1] *= std::sqrt(7.5);
1180
basisvalues[6] *= std::sqrt(10.5);
1181
basisvalues[15] *= std::sqrt(13.5);
1182
basisvalues[5] *= std::sqrt(15.75);
1183
basisvalues[14] *= std::sqrt(20.25);
1184
basisvalues[13] *= std::sqrt(27.0);
1185
basisvalues[4] *= std::sqrt(26.25);
1186
basisvalues[12] *= std::sqrt(33.75);
1187
basisvalues[11] *= std::sqrt(45.0);
1188
basisvalues[10] *= std::sqrt(63.0);
1670
1190
// Table(s) of coefficients.
1671
1191
static const double coefficients0[20] = \
1700
1214
// Compute basisvalues.
1701
1215
basisvalues[0] = 1.0;
1702
1216
basisvalues[1] = tmp0;
1703
for (unsigned int r = 1; r < 3; r++)
1705
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1706
ss = r*(r + 1)*(r + 2)/6;
1707
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1708
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1709
}// end loop over 'r'
1710
for (unsigned int r = 0; r < 3; r++)
1712
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1713
ss = r*(r + 1)*(r + 2)/6;
1714
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1715
}// end loop over 'r'
1716
for (unsigned int r = 0; r < 2; r++)
1718
for (unsigned int s = 1; s < 3 - r; s++)
1720
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1721
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1722
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1723
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1724
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1725
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1726
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1727
}// end loop over 's'
1728
}// end loop over 'r'
1729
for (unsigned int r = 0; r < 3; r++)
1731
for (unsigned int s = 0; s < 3 - r; s++)
1733
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1734
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1735
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1736
}// end loop over 's'
1737
}// end loop over 'r'
1738
for (unsigned int r = 0; r < 2; r++)
1740
for (unsigned int s = 0; s < 2 - r; s++)
1742
for (unsigned int t = 1; t < 3 - r - s; t++)
1744
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1745
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1746
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1747
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1748
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1749
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1750
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1751
}// end loop over 't'
1752
}// end loop over 's'
1753
}// end loop over 'r'
1754
for (unsigned int r = 0; r < 4; r++)
1756
for (unsigned int s = 0; s < 4 - r; s++)
1758
for (unsigned int t = 0; t < 4 - r - s; t++)
1760
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1761
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1762
}// end loop over 't'
1763
}// end loop over 's'
1764
}// end loop over 'r'
1217
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
1218
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
1219
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
1220
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
1221
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
1222
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
1223
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
1224
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
1225
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
1226
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
1227
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
1228
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
1229
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
1230
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
1231
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
1232
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
1233
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
1234
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
1235
basisvalues[0] *= std::sqrt(0.75);
1236
basisvalues[3] *= std::sqrt(1.25);
1237
basisvalues[9] *= std::sqrt(1.75);
1238
basisvalues[19] *= std::sqrt(2.25);
1239
basisvalues[2] *= std::sqrt(2.5);
1240
basisvalues[8] *= std::sqrt(3.5);
1241
basisvalues[18] *= std::sqrt(4.5);
1242
basisvalues[7] *= std::sqrt(5.25);
1243
basisvalues[17] *= std::sqrt(6.75);
1244
basisvalues[16] *= std::sqrt(9.0);
1245
basisvalues[1] *= std::sqrt(7.5);
1246
basisvalues[6] *= std::sqrt(10.5);
1247
basisvalues[15] *= std::sqrt(13.5);
1248
basisvalues[5] *= std::sqrt(15.75);
1249
basisvalues[14] *= std::sqrt(20.25);
1250
basisvalues[13] *= std::sqrt(27.0);
1251
basisvalues[4] *= std::sqrt(26.25);
1252
basisvalues[12] *= std::sqrt(33.75);
1253
basisvalues[11] *= std::sqrt(45.0);
1254
basisvalues[10] *= std::sqrt(63.0);
1766
1256
// Table(s) of coefficients.
1767
1257
static const double coefficients0[20] = \
1796
1280
// Compute basisvalues.
1797
1281
basisvalues[0] = 1.0;
1798
1282
basisvalues[1] = tmp0;
1799
for (unsigned int r = 1; r < 3; r++)
1801
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1802
ss = r*(r + 1)*(r + 2)/6;
1803
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1804
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1805
}// end loop over 'r'
1806
for (unsigned int r = 0; r < 3; r++)
1808
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1809
ss = r*(r + 1)*(r + 2)/6;
1810
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1811
}// end loop over 'r'
1812
for (unsigned int r = 0; r < 2; r++)
1814
for (unsigned int s = 1; s < 3 - r; s++)
1816
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1817
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1818
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1819
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1820
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1821
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1822
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1823
}// end loop over 's'
1824
}// end loop over 'r'
1825
for (unsigned int r = 0; r < 3; r++)
1827
for (unsigned int s = 0; s < 3 - r; s++)
1829
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1830
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1831
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1832
}// end loop over 's'
1833
}// end loop over 'r'
1834
for (unsigned int r = 0; r < 2; r++)
1836
for (unsigned int s = 0; s < 2 - r; s++)
1838
for (unsigned int t = 1; t < 3 - r - s; t++)
1840
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1841
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1842
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1843
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1844
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1845
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1846
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1847
}// end loop over 't'
1848
}// end loop over 's'
1849
}// end loop over 'r'
1850
for (unsigned int r = 0; r < 4; r++)
1852
for (unsigned int s = 0; s < 4 - r; s++)
1854
for (unsigned int t = 0; t < 4 - r - s; t++)
1856
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1857
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1858
}// end loop over 't'
1859
}// end loop over 's'
1860
}// end loop over 'r'
1283
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
1284
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
1285
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
1286
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
1287
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
1288
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
1289
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
1290
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
1291
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
1292
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
1293
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
1294
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
1295
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
1296
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
1297
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
1298
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
1299
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
1300
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
1301
basisvalues[0] *= std::sqrt(0.75);
1302
basisvalues[3] *= std::sqrt(1.25);
1303
basisvalues[9] *= std::sqrt(1.75);
1304
basisvalues[19] *= std::sqrt(2.25);
1305
basisvalues[2] *= std::sqrt(2.5);
1306
basisvalues[8] *= std::sqrt(3.5);
1307
basisvalues[18] *= std::sqrt(4.5);
1308
basisvalues[7] *= std::sqrt(5.25);
1309
basisvalues[17] *= std::sqrt(6.75);
1310
basisvalues[16] *= std::sqrt(9.0);
1311
basisvalues[1] *= std::sqrt(7.5);
1312
basisvalues[6] *= std::sqrt(10.5);
1313
basisvalues[15] *= std::sqrt(13.5);
1314
basisvalues[5] *= std::sqrt(15.75);
1315
basisvalues[14] *= std::sqrt(20.25);
1316
basisvalues[13] *= std::sqrt(27.0);
1317
basisvalues[4] *= std::sqrt(26.25);
1318
basisvalues[12] *= std::sqrt(33.75);
1319
basisvalues[11] *= std::sqrt(45.0);
1320
basisvalues[10] *= std::sqrt(63.0);
1862
1322
// Table(s) of coefficients.
1863
1323
static const double coefficients0[20] = \
1892
1346
// Compute basisvalues.
1893
1347
basisvalues[0] = 1.0;
1894
1348
basisvalues[1] = tmp0;
1895
for (unsigned int r = 1; r < 3; r++)
1897
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1898
ss = r*(r + 1)*(r + 2)/6;
1899
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1900
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1901
}// end loop over 'r'
1902
for (unsigned int r = 0; r < 3; r++)
1904
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
1905
ss = r*(r + 1)*(r + 2)/6;
1906
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
1907
}// end loop over 'r'
1908
for (unsigned int r = 0; r < 2; r++)
1910
for (unsigned int s = 1; s < 3 - r; s++)
1912
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
1913
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1914
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
1915
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1916
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1917
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1918
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
1919
}// end loop over 's'
1920
}// end loop over 'r'
1921
for (unsigned int r = 0; r < 3; r++)
1923
for (unsigned int s = 0; s < 3 - r; s++)
1925
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
1926
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
1927
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
1928
}// end loop over 's'
1929
}// end loop over 'r'
1930
for (unsigned int r = 0; r < 2; r++)
1932
for (unsigned int s = 0; s < 2 - r; s++)
1934
for (unsigned int t = 1; t < 3 - r - s; t++)
1936
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
1937
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1938
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
1939
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
1940
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1941
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
1942
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
1943
}// end loop over 't'
1944
}// end loop over 's'
1945
}// end loop over 'r'
1946
for (unsigned int r = 0; r < 4; r++)
1948
for (unsigned int s = 0; s < 4 - r; s++)
1950
for (unsigned int t = 0; t < 4 - r - s; t++)
1952
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
1953
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
1954
}// end loop over 't'
1955
}// end loop over 's'
1956
}// end loop over 'r'
1349
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
1350
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
1351
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
1352
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
1353
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
1354
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
1355
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
1356
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
1357
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
1358
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
1359
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
1360
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
1361
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
1362
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
1363
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
1364
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
1365
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
1366
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
1367
basisvalues[0] *= std::sqrt(0.75);
1368
basisvalues[3] *= std::sqrt(1.25);
1369
basisvalues[9] *= std::sqrt(1.75);
1370
basisvalues[19] *= std::sqrt(2.25);
1371
basisvalues[2] *= std::sqrt(2.5);
1372
basisvalues[8] *= std::sqrt(3.5);
1373
basisvalues[18] *= std::sqrt(4.5);
1374
basisvalues[7] *= std::sqrt(5.25);
1375
basisvalues[17] *= std::sqrt(6.75);
1376
basisvalues[16] *= std::sqrt(9.0);
1377
basisvalues[1] *= std::sqrt(7.5);
1378
basisvalues[6] *= std::sqrt(10.5);
1379
basisvalues[15] *= std::sqrt(13.5);
1380
basisvalues[5] *= std::sqrt(15.75);
1381
basisvalues[14] *= std::sqrt(20.25);
1382
basisvalues[13] *= std::sqrt(27.0);
1383
basisvalues[4] *= std::sqrt(26.25);
1384
basisvalues[12] *= std::sqrt(33.75);
1385
basisvalues[11] *= std::sqrt(45.0);
1386
basisvalues[10] *= std::sqrt(63.0);
1958
1388
// Table(s) of coefficients.
1959
1389
static const double coefficients0[20] = \
1988
1412
// Compute basisvalues.
1989
1413
basisvalues[0] = 1.0;
1990
1414
basisvalues[1] = tmp0;
1991
for (unsigned int r = 1; r < 3; r++)
1993
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
1994
ss = r*(r + 1)*(r + 2)/6;
1995
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
1996
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
1997
}// end loop over 'r'
1998
for (unsigned int r = 0; r < 3; r++)
2000
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
2001
ss = r*(r + 1)*(r + 2)/6;
2002
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
2003
}// end loop over 'r'
2004
for (unsigned int r = 0; r < 2; r++)
2006
for (unsigned int s = 1; s < 3 - r; s++)
2008
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
2009
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
2010
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
2011
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2012
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2013
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2014
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
2015
}// end loop over 's'
2016
}// end loop over 'r'
2017
for (unsigned int r = 0; r < 3; r++)
2019
for (unsigned int s = 0; s < 3 - r; s++)
2021
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
2022
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
2023
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
2024
}// end loop over 's'
2025
}// end loop over 'r'
2026
for (unsigned int r = 0; r < 2; r++)
2028
for (unsigned int s = 0; s < 2 - r; s++)
2030
for (unsigned int t = 1; t < 3 - r - s; t++)
2032
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
2033
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
2034
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
2035
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
2036
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
2037
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
2038
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
2039
}// end loop over 't'
2040
}// end loop over 's'
2041
}// end loop over 'r'
2042
for (unsigned int r = 0; r < 4; r++)
2044
for (unsigned int s = 0; s < 4 - r; s++)
2046
for (unsigned int t = 0; t < 4 - r - s; t++)
2048
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
2049
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
2050
}// end loop over 't'
2051
}// end loop over 's'
2052
}// end loop over 'r'
1415
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
1416
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
1417
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
1418
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
1419
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
1420
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
1421
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
1422
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
1423
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
1424
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
1425
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
1426
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
1427
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
1428
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
1429
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
1430
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
1431
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
1432
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
1433
basisvalues[0] *= std::sqrt(0.75);
1434
basisvalues[3] *= std::sqrt(1.25);
1435
basisvalues[9] *= std::sqrt(1.75);
1436
basisvalues[19] *= std::sqrt(2.25);
1437
basisvalues[2] *= std::sqrt(2.5);
1438
basisvalues[8] *= std::sqrt(3.5);
1439
basisvalues[18] *= std::sqrt(4.5);
1440
basisvalues[7] *= std::sqrt(5.25);
1441
basisvalues[17] *= std::sqrt(6.75);
1442
basisvalues[16] *= std::sqrt(9.0);
1443
basisvalues[1] *= std::sqrt(7.5);
1444
basisvalues[6] *= std::sqrt(10.5);
1445
basisvalues[15] *= std::sqrt(13.5);
1446
basisvalues[5] *= std::sqrt(15.75);
1447
basisvalues[14] *= std::sqrt(20.25);
1448
basisvalues[13] *= std::sqrt(27.0);
1449
basisvalues[4] *= std::sqrt(26.25);
1450
basisvalues[12] *= std::sqrt(33.75);
1451
basisvalues[11] *= std::sqrt(45.0);
1452
basisvalues[10] *= std::sqrt(63.0);
2054
1454
// Table(s) of coefficients.
2055
1455
static const double coefficients0[20] = \
2227
1621
// Compute basisvalues.
2228
1622
basisvalues[0] = 1.0;
2229
1623
basisvalues[1] = tmp0;
2230
for (unsigned int r = 1; r < 3; r++)
2232
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
2233
ss = r*(r + 1)*(r + 2)/6;
2234
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
2235
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
2236
}// end loop over 'r'
2237
for (unsigned int r = 0; r < 3; r++)
2239
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
2240
ss = r*(r + 1)*(r + 2)/6;
2241
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
2242
}// end loop over 'r'
2243
for (unsigned int r = 0; r < 2; r++)
2245
for (unsigned int s = 1; s < 3 - r; s++)
2247
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
2248
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
2249
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
2250
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2251
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2252
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2253
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
2254
}// end loop over 's'
2255
}// end loop over 'r'
2256
for (unsigned int r = 0; r < 3; r++)
2258
for (unsigned int s = 0; s < 3 - r; s++)
2260
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
2261
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
2262
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
2263
}// end loop over 's'
2264
}// end loop over 'r'
2265
for (unsigned int r = 0; r < 2; r++)
2267
for (unsigned int s = 0; s < 2 - r; s++)
2269
for (unsigned int t = 1; t < 3 - r - s; t++)
2271
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
2272
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
2273
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
2274
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
2275
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
2276
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
2277
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
2278
}// end loop over 't'
2279
}// end loop over 's'
2280
}// end loop over 'r'
2281
for (unsigned int r = 0; r < 4; r++)
2283
for (unsigned int s = 0; s < 4 - r; s++)
2285
for (unsigned int t = 0; t < 4 - r - s; t++)
2287
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
2288
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
2289
}// end loop over 't'
2290
}// end loop over 's'
2291
}// end loop over 'r'
1624
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
1625
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
1626
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
1627
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
1628
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
1629
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
1630
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
1631
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
1632
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
1633
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
1634
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
1635
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
1636
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
1637
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
1638
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
1639
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
1640
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
1641
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
1642
basisvalues[0] *= std::sqrt(0.75);
1643
basisvalues[3] *= std::sqrt(1.25);
1644
basisvalues[9] *= std::sqrt(1.75);
1645
basisvalues[19] *= std::sqrt(2.25);
1646
basisvalues[2] *= std::sqrt(2.5);
1647
basisvalues[8] *= std::sqrt(3.5);
1648
basisvalues[18] *= std::sqrt(4.5);
1649
basisvalues[7] *= std::sqrt(5.25);
1650
basisvalues[17] *= std::sqrt(6.75);
1651
basisvalues[16] *= std::sqrt(9.0);
1652
basisvalues[1] *= std::sqrt(7.5);
1653
basisvalues[6] *= std::sqrt(10.5);
1654
basisvalues[15] *= std::sqrt(13.5);
1655
basisvalues[5] *= std::sqrt(15.75);
1656
basisvalues[14] *= std::sqrt(20.25);
1657
basisvalues[13] *= std::sqrt(27.0);
1658
basisvalues[4] *= std::sqrt(26.25);
1659
basisvalues[12] *= std::sqrt(33.75);
1660
basisvalues[11] *= std::sqrt(45.0);
1661
basisvalues[10] *= std::sqrt(63.0);
2293
1663
// Table(s) of coefficients.
2294
1664
static const double coefficients0[20] = \
2545
1909
// Compute basisvalues.
2546
1910
basisvalues[0] = 1.0;
2547
1911
basisvalues[1] = tmp0;
2548
for (unsigned int r = 1; r < 3; r++)
2550
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
2551
ss = r*(r + 1)*(r + 2)/6;
2552
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
2553
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
2554
}// end loop over 'r'
2555
for (unsigned int r = 0; r < 3; r++)
2557
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
2558
ss = r*(r + 1)*(r + 2)/6;
2559
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
2560
}// end loop over 'r'
2561
for (unsigned int r = 0; r < 2; r++)
2563
for (unsigned int s = 1; s < 3 - r; s++)
2565
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
2566
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
2567
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
2568
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2569
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2570
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2571
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
2572
}// end loop over 's'
2573
}// end loop over 'r'
2574
for (unsigned int r = 0; r < 3; r++)
2576
for (unsigned int s = 0; s < 3 - r; s++)
2578
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
2579
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
2580
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
2581
}// end loop over 's'
2582
}// end loop over 'r'
2583
for (unsigned int r = 0; r < 2; r++)
2585
for (unsigned int s = 0; s < 2 - r; s++)
2587
for (unsigned int t = 1; t < 3 - r - s; t++)
2589
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
2590
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
2591
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
2592
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
2593
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
2594
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
2595
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
2596
}// end loop over 't'
2597
}// end loop over 's'
2598
}// end loop over 'r'
2599
for (unsigned int r = 0; r < 4; r++)
2601
for (unsigned int s = 0; s < 4 - r; s++)
2603
for (unsigned int t = 0; t < 4 - r - s; t++)
2605
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
2606
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
2607
}// end loop over 't'
2608
}// end loop over 's'
2609
}// end loop over 'r'
1912
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
1913
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
1914
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
1915
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
1916
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
1917
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
1918
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
1919
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
1920
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
1921
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
1922
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
1923
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
1924
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
1925
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
1926
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
1927
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
1928
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
1929
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
1930
basisvalues[0] *= std::sqrt(0.75);
1931
basisvalues[3] *= std::sqrt(1.25);
1932
basisvalues[9] *= std::sqrt(1.75);
1933
basisvalues[19] *= std::sqrt(2.25);
1934
basisvalues[2] *= std::sqrt(2.5);
1935
basisvalues[8] *= std::sqrt(3.5);
1936
basisvalues[18] *= std::sqrt(4.5);
1937
basisvalues[7] *= std::sqrt(5.25);
1938
basisvalues[17] *= std::sqrt(6.75);
1939
basisvalues[16] *= std::sqrt(9.0);
1940
basisvalues[1] *= std::sqrt(7.5);
1941
basisvalues[6] *= std::sqrt(10.5);
1942
basisvalues[15] *= std::sqrt(13.5);
1943
basisvalues[5] *= std::sqrt(15.75);
1944
basisvalues[14] *= std::sqrt(20.25);
1945
basisvalues[13] *= std::sqrt(27.0);
1946
basisvalues[4] *= std::sqrt(26.25);
1947
basisvalues[12] *= std::sqrt(33.75);
1948
basisvalues[11] *= std::sqrt(45.0);
1949
basisvalues[10] *= std::sqrt(63.0);
2611
1951
// Table(s) of coefficients.
2612
1952
static const double coefficients0[20] = \
2863
2197
// Compute basisvalues.
2864
2198
basisvalues[0] = 1.0;
2865
2199
basisvalues[1] = tmp0;
2866
for (unsigned int r = 1; r < 3; r++)
2868
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
2869
ss = r*(r + 1)*(r + 2)/6;
2870
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
2871
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
2872
}// end loop over 'r'
2873
for (unsigned int r = 0; r < 3; r++)
2875
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
2876
ss = r*(r + 1)*(r + 2)/6;
2877
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
2878
}// end loop over 'r'
2879
for (unsigned int r = 0; r < 2; r++)
2881
for (unsigned int s = 1; s < 3 - r; s++)
2883
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
2884
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
2885
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
2886
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2887
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2888
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2889
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
2890
}// end loop over 's'
2891
}// end loop over 'r'
2892
for (unsigned int r = 0; r < 3; r++)
2894
for (unsigned int s = 0; s < 3 - r; s++)
2896
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
2897
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
2898
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
2899
}// end loop over 's'
2900
}// end loop over 'r'
2901
for (unsigned int r = 0; r < 2; r++)
2903
for (unsigned int s = 0; s < 2 - r; s++)
2905
for (unsigned int t = 1; t < 3 - r - s; t++)
2907
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
2908
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
2909
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
2910
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
2911
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
2912
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
2913
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
2914
}// end loop over 't'
2915
}// end loop over 's'
2916
}// end loop over 'r'
2917
for (unsigned int r = 0; r < 4; r++)
2919
for (unsigned int s = 0; s < 4 - r; s++)
2921
for (unsigned int t = 0; t < 4 - r - s; t++)
2923
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
2924
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
2925
}// end loop over 't'
2926
}// end loop over 's'
2927
}// end loop over 'r'
2200
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
2201
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
2202
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
2203
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
2204
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
2205
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
2206
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
2207
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
2208
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
2209
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
2210
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
2211
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
2212
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
2213
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
2214
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
2215
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
2216
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
2217
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
2218
basisvalues[0] *= std::sqrt(0.75);
2219
basisvalues[3] *= std::sqrt(1.25);
2220
basisvalues[9] *= std::sqrt(1.75);
2221
basisvalues[19] *= std::sqrt(2.25);
2222
basisvalues[2] *= std::sqrt(2.5);
2223
basisvalues[8] *= std::sqrt(3.5);
2224
basisvalues[18] *= std::sqrt(4.5);
2225
basisvalues[7] *= std::sqrt(5.25);
2226
basisvalues[17] *= std::sqrt(6.75);
2227
basisvalues[16] *= std::sqrt(9.0);
2228
basisvalues[1] *= std::sqrt(7.5);
2229
basisvalues[6] *= std::sqrt(10.5);
2230
basisvalues[15] *= std::sqrt(13.5);
2231
basisvalues[5] *= std::sqrt(15.75);
2232
basisvalues[14] *= std::sqrt(20.25);
2233
basisvalues[13] *= std::sqrt(27.0);
2234
basisvalues[4] *= std::sqrt(26.25);
2235
basisvalues[12] *= std::sqrt(33.75);
2236
basisvalues[11] *= std::sqrt(45.0);
2237
basisvalues[10] *= std::sqrt(63.0);
2929
2239
// Table(s) of coefficients.
2930
2240
static const double coefficients0[20] = \
3181
2485
// Compute basisvalues.
3182
2486
basisvalues[0] = 1.0;
3183
2487
basisvalues[1] = tmp0;
3184
for (unsigned int r = 1; r < 3; r++)
3186
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
3187
ss = r*(r + 1)*(r + 2)/6;
3188
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
3189
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
3190
}// end loop over 'r'
3191
for (unsigned int r = 0; r < 3; r++)
3193
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
3194
ss = r*(r + 1)*(r + 2)/6;
3195
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
3196
}// end loop over 'r'
3197
for (unsigned int r = 0; r < 2; r++)
3199
for (unsigned int s = 1; s < 3 - r; s++)
3201
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
3202
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
3203
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
3204
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
3205
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3206
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3207
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
3208
}// end loop over 's'
3209
}// end loop over 'r'
3210
for (unsigned int r = 0; r < 3; r++)
3212
for (unsigned int s = 0; s < 3 - r; s++)
3214
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
3215
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
3216
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
3217
}// end loop over 's'
3218
}// end loop over 'r'
3219
for (unsigned int r = 0; r < 2; r++)
3221
for (unsigned int s = 0; s < 2 - r; s++)
3223
for (unsigned int t = 1; t < 3 - r - s; t++)
3225
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
3226
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
3227
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
3228
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
3229
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
3230
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
3231
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
3232
}// end loop over 't'
3233
}// end loop over 's'
3234
}// end loop over 'r'
3235
for (unsigned int r = 0; r < 4; r++)
3237
for (unsigned int s = 0; s < 4 - r; s++)
3239
for (unsigned int t = 0; t < 4 - r - s; t++)
3241
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
3242
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
3243
}// end loop over 't'
3244
}// end loop over 's'
3245
}// end loop over 'r'
2488
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
2489
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
2490
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
2491
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
2492
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
2493
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
2494
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
2495
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
2496
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
2497
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
2498
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
2499
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
2500
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
2501
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
2502
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
2503
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
2504
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
2505
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
2506
basisvalues[0] *= std::sqrt(0.75);
2507
basisvalues[3] *= std::sqrt(1.25);
2508
basisvalues[9] *= std::sqrt(1.75);
2509
basisvalues[19] *= std::sqrt(2.25);
2510
basisvalues[2] *= std::sqrt(2.5);
2511
basisvalues[8] *= std::sqrt(3.5);
2512
basisvalues[18] *= std::sqrt(4.5);
2513
basisvalues[7] *= std::sqrt(5.25);
2514
basisvalues[17] *= std::sqrt(6.75);
2515
basisvalues[16] *= std::sqrt(9.0);
2516
basisvalues[1] *= std::sqrt(7.5);
2517
basisvalues[6] *= std::sqrt(10.5);
2518
basisvalues[15] *= std::sqrt(13.5);
2519
basisvalues[5] *= std::sqrt(15.75);
2520
basisvalues[14] *= std::sqrt(20.25);
2521
basisvalues[13] *= std::sqrt(27.0);
2522
basisvalues[4] *= std::sqrt(26.25);
2523
basisvalues[12] *= std::sqrt(33.75);
2524
basisvalues[11] *= std::sqrt(45.0);
2525
basisvalues[10] *= std::sqrt(63.0);
3247
2527
// Table(s) of coefficients.
3248
2528
static const double coefficients0[20] = \
3499
2773
// Compute basisvalues.
3500
2774
basisvalues[0] = 1.0;
3501
2775
basisvalues[1] = tmp0;
3502
for (unsigned int r = 1; r < 3; r++)
3504
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
3505
ss = r*(r + 1)*(r + 2)/6;
3506
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
3507
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
3508
}// end loop over 'r'
3509
for (unsigned int r = 0; r < 3; r++)
3511
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
3512
ss = r*(r + 1)*(r + 2)/6;
3513
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
3514
}// end loop over 'r'
3515
for (unsigned int r = 0; r < 2; r++)
3517
for (unsigned int s = 1; s < 3 - r; s++)
3519
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
3520
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
3521
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
3522
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
3523
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3524
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3525
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
3526
}// end loop over 's'
3527
}// end loop over 'r'
3528
for (unsigned int r = 0; r < 3; r++)
3530
for (unsigned int s = 0; s < 3 - r; s++)
3532
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
3533
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
3534
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
3535
}// end loop over 's'
3536
}// end loop over 'r'
3537
for (unsigned int r = 0; r < 2; r++)
3539
for (unsigned int s = 0; s < 2 - r; s++)
3541
for (unsigned int t = 1; t < 3 - r - s; t++)
3543
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
3544
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
3545
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
3546
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
3547
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
3548
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
3549
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
3550
}// end loop over 't'
3551
}// end loop over 's'
3552
}// end loop over 'r'
3553
for (unsigned int r = 0; r < 4; r++)
3555
for (unsigned int s = 0; s < 4 - r; s++)
3557
for (unsigned int t = 0; t < 4 - r - s; t++)
3559
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
3560
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
3561
}// end loop over 't'
3562
}// end loop over 's'
3563
}// end loop over 'r'
2776
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
2777
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
2778
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
2779
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
2780
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
2781
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
2782
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
2783
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
2784
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
2785
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
2786
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
2787
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
2788
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
2789
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
2790
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
2791
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
2792
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
2793
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
2794
basisvalues[0] *= std::sqrt(0.75);
2795
basisvalues[3] *= std::sqrt(1.25);
2796
basisvalues[9] *= std::sqrt(1.75);
2797
basisvalues[19] *= std::sqrt(2.25);
2798
basisvalues[2] *= std::sqrt(2.5);
2799
basisvalues[8] *= std::sqrt(3.5);
2800
basisvalues[18] *= std::sqrt(4.5);
2801
basisvalues[7] *= std::sqrt(5.25);
2802
basisvalues[17] *= std::sqrt(6.75);
2803
basisvalues[16] *= std::sqrt(9.0);
2804
basisvalues[1] *= std::sqrt(7.5);
2805
basisvalues[6] *= std::sqrt(10.5);
2806
basisvalues[15] *= std::sqrt(13.5);
2807
basisvalues[5] *= std::sqrt(15.75);
2808
basisvalues[14] *= std::sqrt(20.25);
2809
basisvalues[13] *= std::sqrt(27.0);
2810
basisvalues[4] *= std::sqrt(26.25);
2811
basisvalues[12] *= std::sqrt(33.75);
2812
basisvalues[11] *= std::sqrt(45.0);
2813
basisvalues[10] *= std::sqrt(63.0);
3565
2815
// Table(s) of coefficients.
3566
2816
static const double coefficients0[20] = \
3817
3061
// Compute basisvalues.
3818
3062
basisvalues[0] = 1.0;
3819
3063
basisvalues[1] = tmp0;
3820
for (unsigned int r = 1; r < 3; r++)
3822
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
3823
ss = r*(r + 1)*(r + 2)/6;
3824
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
3825
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
3826
}// end loop over 'r'
3827
for (unsigned int r = 0; r < 3; r++)
3829
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
3830
ss = r*(r + 1)*(r + 2)/6;
3831
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
3832
}// end loop over 'r'
3833
for (unsigned int r = 0; r < 2; r++)
3835
for (unsigned int s = 1; s < 3 - r; s++)
3837
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
3838
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
3839
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
3840
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
3841
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3842
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3843
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
3844
}// end loop over 's'
3845
}// end loop over 'r'
3846
for (unsigned int r = 0; r < 3; r++)
3848
for (unsigned int s = 0; s < 3 - r; s++)
3850
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
3851
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
3852
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
3853
}// end loop over 's'
3854
}// end loop over 'r'
3855
for (unsigned int r = 0; r < 2; r++)
3857
for (unsigned int s = 0; s < 2 - r; s++)
3859
for (unsigned int t = 1; t < 3 - r - s; t++)
3861
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
3862
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
3863
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
3864
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
3865
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
3866
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
3867
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
3868
}// end loop over 't'
3869
}// end loop over 's'
3870
}// end loop over 'r'
3871
for (unsigned int r = 0; r < 4; r++)
3873
for (unsigned int s = 0; s < 4 - r; s++)
3875
for (unsigned int t = 0; t < 4 - r - s; t++)
3877
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
3878
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
3879
}// end loop over 't'
3880
}// end loop over 's'
3881
}// end loop over 'r'
3064
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
3065
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
3066
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
3067
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
3068
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
3069
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
3070
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
3071
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
3072
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
3073
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
3074
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
3075
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
3076
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
3077
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
3078
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
3079
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
3080
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
3081
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
3082
basisvalues[0] *= std::sqrt(0.75);
3083
basisvalues[3] *= std::sqrt(1.25);
3084
basisvalues[9] *= std::sqrt(1.75);
3085
basisvalues[19] *= std::sqrt(2.25);
3086
basisvalues[2] *= std::sqrt(2.5);
3087
basisvalues[8] *= std::sqrt(3.5);
3088
basisvalues[18] *= std::sqrt(4.5);
3089
basisvalues[7] *= std::sqrt(5.25);
3090
basisvalues[17] *= std::sqrt(6.75);
3091
basisvalues[16] *= std::sqrt(9.0);
3092
basisvalues[1] *= std::sqrt(7.5);
3093
basisvalues[6] *= std::sqrt(10.5);
3094
basisvalues[15] *= std::sqrt(13.5);
3095
basisvalues[5] *= std::sqrt(15.75);
3096
basisvalues[14] *= std::sqrt(20.25);
3097
basisvalues[13] *= std::sqrt(27.0);
3098
basisvalues[4] *= std::sqrt(26.25);
3099
basisvalues[12] *= std::sqrt(33.75);
3100
basisvalues[11] *= std::sqrt(45.0);
3101
basisvalues[10] *= std::sqrt(63.0);
3883
3103
// Table(s) of coefficients.
3884
3104
static const double coefficients0[20] = \
4135
3349
// Compute basisvalues.
4136
3350
basisvalues[0] = 1.0;
4137
3351
basisvalues[1] = tmp0;
4138
for (unsigned int r = 1; r < 3; r++)
4140
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
4141
ss = r*(r + 1)*(r + 2)/6;
4142
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
4143
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
4144
}// end loop over 'r'
4145
for (unsigned int r = 0; r < 3; r++)
4147
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
4148
ss = r*(r + 1)*(r + 2)/6;
4149
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
4150
}// end loop over 'r'
4151
for (unsigned int r = 0; r < 2; r++)
4153
for (unsigned int s = 1; s < 3 - r; s++)
4155
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
4156
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
4157
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
4158
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
4159
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
4160
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
4161
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
4162
}// end loop over 's'
4163
}// end loop over 'r'
4164
for (unsigned int r = 0; r < 3; r++)
4166
for (unsigned int s = 0; s < 3 - r; s++)
4168
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
4169
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
4170
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
4171
}// end loop over 's'
4172
}// end loop over 'r'
4173
for (unsigned int r = 0; r < 2; r++)
4175
for (unsigned int s = 0; s < 2 - r; s++)
4177
for (unsigned int t = 1; t < 3 - r - s; t++)
4179
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
4180
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
4181
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
4182
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
4183
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
4184
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
4185
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
4186
}// end loop over 't'
4187
}// end loop over 's'
4188
}// end loop over 'r'
4189
for (unsigned int r = 0; r < 4; r++)
4191
for (unsigned int s = 0; s < 4 - r; s++)
4193
for (unsigned int t = 0; t < 4 - r - s; t++)
4195
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
4196
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
4197
}// end loop over 't'
4198
}// end loop over 's'
4199
}// end loop over 'r'
3352
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
3353
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
3354
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
3355
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
3356
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
3357
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
3358
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
3359
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
3360
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
3361
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
3362
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
3363
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
3364
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
3365
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
3366
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
3367
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
3368
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
3369
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
3370
basisvalues[0] *= std::sqrt(0.75);
3371
basisvalues[3] *= std::sqrt(1.25);
3372
basisvalues[9] *= std::sqrt(1.75);
3373
basisvalues[19] *= std::sqrt(2.25);
3374
basisvalues[2] *= std::sqrt(2.5);
3375
basisvalues[8] *= std::sqrt(3.5);
3376
basisvalues[18] *= std::sqrt(4.5);
3377
basisvalues[7] *= std::sqrt(5.25);
3378
basisvalues[17] *= std::sqrt(6.75);
3379
basisvalues[16] *= std::sqrt(9.0);
3380
basisvalues[1] *= std::sqrt(7.5);
3381
basisvalues[6] *= std::sqrt(10.5);
3382
basisvalues[15] *= std::sqrt(13.5);
3383
basisvalues[5] *= std::sqrt(15.75);
3384
basisvalues[14] *= std::sqrt(20.25);
3385
basisvalues[13] *= std::sqrt(27.0);
3386
basisvalues[4] *= std::sqrt(26.25);
3387
basisvalues[12] *= std::sqrt(33.75);
3388
basisvalues[11] *= std::sqrt(45.0);
3389
basisvalues[10] *= std::sqrt(63.0);
4201
3391
// Table(s) of coefficients.
4202
3392
static const double coefficients0[20] = \
4453
3637
// Compute basisvalues.
4454
3638
basisvalues[0] = 1.0;
4455
3639
basisvalues[1] = tmp0;
4456
for (unsigned int r = 1; r < 3; r++)
4458
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
4459
ss = r*(r + 1)*(r + 2)/6;
4460
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
4461
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
4462
}// end loop over 'r'
4463
for (unsigned int r = 0; r < 3; r++)
4465
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
4466
ss = r*(r + 1)*(r + 2)/6;
4467
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
4468
}// end loop over 'r'
4469
for (unsigned int r = 0; r < 2; r++)
4471
for (unsigned int s = 1; s < 3 - r; s++)
4473
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
4474
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
4475
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
4476
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
4477
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
4478
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
4479
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
4480
}// end loop over 's'
4481
}// end loop over 'r'
4482
for (unsigned int r = 0; r < 3; r++)
4484
for (unsigned int s = 0; s < 3 - r; s++)
4486
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
4487
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
4488
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
4489
}// end loop over 's'
4490
}// end loop over 'r'
4491
for (unsigned int r = 0; r < 2; r++)
4493
for (unsigned int s = 0; s < 2 - r; s++)
4495
for (unsigned int t = 1; t < 3 - r - s; t++)
4497
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
4498
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
4499
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
4500
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
4501
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
4502
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
4503
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
4504
}// end loop over 't'
4505
}// end loop over 's'
4506
}// end loop over 'r'
4507
for (unsigned int r = 0; r < 4; r++)
4509
for (unsigned int s = 0; s < 4 - r; s++)
4511
for (unsigned int t = 0; t < 4 - r - s; t++)
4513
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
4514
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
4515
}// end loop over 't'
4516
}// end loop over 's'
4517
}// end loop over 'r'
3640
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
3641
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
3642
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
3643
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
3644
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
3645
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
3646
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
3647
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
3648
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
3649
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
3650
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
3651
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
3652
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
3653
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
3654
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
3655
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
3656
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
3657
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
3658
basisvalues[0] *= std::sqrt(0.75);
3659
basisvalues[3] *= std::sqrt(1.25);
3660
basisvalues[9] *= std::sqrt(1.75);
3661
basisvalues[19] *= std::sqrt(2.25);
3662
basisvalues[2] *= std::sqrt(2.5);
3663
basisvalues[8] *= std::sqrt(3.5);
3664
basisvalues[18] *= std::sqrt(4.5);
3665
basisvalues[7] *= std::sqrt(5.25);
3666
basisvalues[17] *= std::sqrt(6.75);
3667
basisvalues[16] *= std::sqrt(9.0);
3668
basisvalues[1] *= std::sqrt(7.5);
3669
basisvalues[6] *= std::sqrt(10.5);
3670
basisvalues[15] *= std::sqrt(13.5);
3671
basisvalues[5] *= std::sqrt(15.75);
3672
basisvalues[14] *= std::sqrt(20.25);
3673
basisvalues[13] *= std::sqrt(27.0);
3674
basisvalues[4] *= std::sqrt(26.25);
3675
basisvalues[12] *= std::sqrt(33.75);
3676
basisvalues[11] *= std::sqrt(45.0);
3677
basisvalues[10] *= std::sqrt(63.0);
4519
3679
// Table(s) of coefficients.
4520
3680
static const double coefficients0[20] = \
4771
3925
// Compute basisvalues.
4772
3926
basisvalues[0] = 1.0;
4773
3927
basisvalues[1] = tmp0;
4774
for (unsigned int r = 1; r < 3; r++)
4776
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
4777
ss = r*(r + 1)*(r + 2)/6;
4778
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
4779
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
4780
}// end loop over 'r'
4781
for (unsigned int r = 0; r < 3; r++)
4783
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
4784
ss = r*(r + 1)*(r + 2)/6;
4785
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
4786
}// end loop over 'r'
4787
for (unsigned int r = 0; r < 2; r++)
4789
for (unsigned int s = 1; s < 3 - r; s++)
4791
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
4792
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
4793
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
4794
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
4795
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
4796
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
4797
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
4798
}// end loop over 's'
4799
}// end loop over 'r'
4800
for (unsigned int r = 0; r < 3; r++)
4802
for (unsigned int s = 0; s < 3 - r; s++)
4804
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
4805
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
4806
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
4807
}// end loop over 's'
4808
}// end loop over 'r'
4809
for (unsigned int r = 0; r < 2; r++)
4811
for (unsigned int s = 0; s < 2 - r; s++)
4813
for (unsigned int t = 1; t < 3 - r - s; t++)
4815
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
4816
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
4817
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
4818
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
4819
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
4820
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
4821
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
4822
}// end loop over 't'
4823
}// end loop over 's'
4824
}// end loop over 'r'
4825
for (unsigned int r = 0; r < 4; r++)
4827
for (unsigned int s = 0; s < 4 - r; s++)
4829
for (unsigned int t = 0; t < 4 - r - s; t++)
4831
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
4832
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
4833
}// end loop over 't'
4834
}// end loop over 's'
4835
}// end loop over 'r'
3928
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
3929
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
3930
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
3931
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
3932
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
3933
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
3934
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
3935
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
3936
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
3937
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
3938
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
3939
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
3940
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
3941
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
3942
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
3943
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
3944
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
3945
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
3946
basisvalues[0] *= std::sqrt(0.75);
3947
basisvalues[3] *= std::sqrt(1.25);
3948
basisvalues[9] *= std::sqrt(1.75);
3949
basisvalues[19] *= std::sqrt(2.25);
3950
basisvalues[2] *= std::sqrt(2.5);
3951
basisvalues[8] *= std::sqrt(3.5);
3952
basisvalues[18] *= std::sqrt(4.5);
3953
basisvalues[7] *= std::sqrt(5.25);
3954
basisvalues[17] *= std::sqrt(6.75);
3955
basisvalues[16] *= std::sqrt(9.0);
3956
basisvalues[1] *= std::sqrt(7.5);
3957
basisvalues[6] *= std::sqrt(10.5);
3958
basisvalues[15] *= std::sqrt(13.5);
3959
basisvalues[5] *= std::sqrt(15.75);
3960
basisvalues[14] *= std::sqrt(20.25);
3961
basisvalues[13] *= std::sqrt(27.0);
3962
basisvalues[4] *= std::sqrt(26.25);
3963
basisvalues[12] *= std::sqrt(33.75);
3964
basisvalues[11] *= std::sqrt(45.0);
3965
basisvalues[10] *= std::sqrt(63.0);
4837
3967
// Table(s) of coefficients.
4838
3968
static const double coefficients0[20] = \
5089
4213
// Compute basisvalues.
5090
4214
basisvalues[0] = 1.0;
5091
4215
basisvalues[1] = tmp0;
5092
for (unsigned int r = 1; r < 3; r++)
5094
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
5095
ss = r*(r + 1)*(r + 2)/6;
5096
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
5097
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
5098
}// end loop over 'r'
5099
for (unsigned int r = 0; r < 3; r++)
5101
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
5102
ss = r*(r + 1)*(r + 2)/6;
5103
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
5104
}// end loop over 'r'
5105
for (unsigned int r = 0; r < 2; r++)
5107
for (unsigned int s = 1; s < 3 - r; s++)
5109
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
5110
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
5111
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
5112
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
5113
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
5114
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
5115
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
5116
}// end loop over 's'
5117
}// end loop over 'r'
5118
for (unsigned int r = 0; r < 3; r++)
5120
for (unsigned int s = 0; s < 3 - r; s++)
5122
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
5123
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
5124
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
5125
}// end loop over 's'
5126
}// end loop over 'r'
5127
for (unsigned int r = 0; r < 2; r++)
5129
for (unsigned int s = 0; s < 2 - r; s++)
5131
for (unsigned int t = 1; t < 3 - r - s; t++)
5133
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
5134
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
5135
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
5136
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
5137
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
5138
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
5139
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
5140
}// end loop over 't'
5141
}// end loop over 's'
5142
}// end loop over 'r'
5143
for (unsigned int r = 0; r < 4; r++)
5145
for (unsigned int s = 0; s < 4 - r; s++)
5147
for (unsigned int t = 0; t < 4 - r - s; t++)
5149
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
5150
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
5151
}// end loop over 't'
5152
}// end loop over 's'
5153
}// end loop over 'r'
4216
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
4217
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
4218
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
4219
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
4220
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
4221
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
4222
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
4223
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
4224
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
4225
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
4226
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
4227
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
4228
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
4229
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
4230
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
4231
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
4232
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
4233
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
4234
basisvalues[0] *= std::sqrt(0.75);
4235
basisvalues[3] *= std::sqrt(1.25);
4236
basisvalues[9] *= std::sqrt(1.75);
4237
basisvalues[19] *= std::sqrt(2.25);
4238
basisvalues[2] *= std::sqrt(2.5);
4239
basisvalues[8] *= std::sqrt(3.5);
4240
basisvalues[18] *= std::sqrt(4.5);
4241
basisvalues[7] *= std::sqrt(5.25);
4242
basisvalues[17] *= std::sqrt(6.75);
4243
basisvalues[16] *= std::sqrt(9.0);
4244
basisvalues[1] *= std::sqrt(7.5);
4245
basisvalues[6] *= std::sqrt(10.5);
4246
basisvalues[15] *= std::sqrt(13.5);
4247
basisvalues[5] *= std::sqrt(15.75);
4248
basisvalues[14] *= std::sqrt(20.25);
4249
basisvalues[13] *= std::sqrt(27.0);
4250
basisvalues[4] *= std::sqrt(26.25);
4251
basisvalues[12] *= std::sqrt(33.75);
4252
basisvalues[11] *= std::sqrt(45.0);
4253
basisvalues[10] *= std::sqrt(63.0);
5155
4255
// Table(s) of coefficients.
5156
4256
static const double coefficients0[20] = \
5407
4501
// Compute basisvalues.
5408
4502
basisvalues[0] = 1.0;
5409
4503
basisvalues[1] = tmp0;
5410
for (unsigned int r = 1; r < 3; r++)
5412
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
5413
ss = r*(r + 1)*(r + 2)/6;
5414
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
5415
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
5416
}// end loop over 'r'
5417
for (unsigned int r = 0; r < 3; r++)
5419
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
5420
ss = r*(r + 1)*(r + 2)/6;
5421
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
5422
}// end loop over 'r'
5423
for (unsigned int r = 0; r < 2; r++)
5425
for (unsigned int s = 1; s < 3 - r; s++)
5427
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
5428
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
5429
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
5430
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
5431
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
5432
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
5433
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
5434
}// end loop over 's'
5435
}// end loop over 'r'
5436
for (unsigned int r = 0; r < 3; r++)
5438
for (unsigned int s = 0; s < 3 - r; s++)
5440
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
5441
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
5442
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
5443
}// end loop over 's'
5444
}// end loop over 'r'
5445
for (unsigned int r = 0; r < 2; r++)
5447
for (unsigned int s = 0; s < 2 - r; s++)
5449
for (unsigned int t = 1; t < 3 - r - s; t++)
5451
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
5452
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
5453
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
5454
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
5455
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
5456
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
5457
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
5458
}// end loop over 't'
5459
}// end loop over 's'
5460
}// end loop over 'r'
5461
for (unsigned int r = 0; r < 4; r++)
5463
for (unsigned int s = 0; s < 4 - r; s++)
5465
for (unsigned int t = 0; t < 4 - r - s; t++)
5467
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
5468
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
5469
}// end loop over 't'
5470
}// end loop over 's'
5471
}// end loop over 'r'
4504
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
4505
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
4506
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
4507
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
4508
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
4509
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
4510
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
4511
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
4512
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
4513
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
4514
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
4515
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
4516
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
4517
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
4518
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
4519
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
4520
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
4521
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
4522
basisvalues[0] *= std::sqrt(0.75);
4523
basisvalues[3] *= std::sqrt(1.25);
4524
basisvalues[9] *= std::sqrt(1.75);
4525
basisvalues[19] *= std::sqrt(2.25);
4526
basisvalues[2] *= std::sqrt(2.5);
4527
basisvalues[8] *= std::sqrt(3.5);
4528
basisvalues[18] *= std::sqrt(4.5);
4529
basisvalues[7] *= std::sqrt(5.25);
4530
basisvalues[17] *= std::sqrt(6.75);
4531
basisvalues[16] *= std::sqrt(9.0);
4532
basisvalues[1] *= std::sqrt(7.5);
4533
basisvalues[6] *= std::sqrt(10.5);
4534
basisvalues[15] *= std::sqrt(13.5);
4535
basisvalues[5] *= std::sqrt(15.75);
4536
basisvalues[14] *= std::sqrt(20.25);
4537
basisvalues[13] *= std::sqrt(27.0);
4538
basisvalues[4] *= std::sqrt(26.25);
4539
basisvalues[12] *= std::sqrt(33.75);
4540
basisvalues[11] *= std::sqrt(45.0);
4541
basisvalues[10] *= std::sqrt(63.0);
5473
4543
// Table(s) of coefficients.
5474
4544
static const double coefficients0[20] = \
5725
4789
// Compute basisvalues.
5726
4790
basisvalues[0] = 1.0;
5727
4791
basisvalues[1] = tmp0;
5728
for (unsigned int r = 1; r < 3; r++)
5730
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
5731
ss = r*(r + 1)*(r + 2)/6;
5732
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
5733
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
5734
}// end loop over 'r'
5735
for (unsigned int r = 0; r < 3; r++)
5737
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
5738
ss = r*(r + 1)*(r + 2)/6;
5739
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
5740
}// end loop over 'r'
5741
for (unsigned int r = 0; r < 2; r++)
5743
for (unsigned int s = 1; s < 3 - r; s++)
5745
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
5746
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
5747
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
5748
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
5749
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
5750
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
5751
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
5752
}// end loop over 's'
5753
}// end loop over 'r'
5754
for (unsigned int r = 0; r < 3; r++)
5756
for (unsigned int s = 0; s < 3 - r; s++)
5758
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
5759
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
5760
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
5761
}// end loop over 's'
5762
}// end loop over 'r'
5763
for (unsigned int r = 0; r < 2; r++)
5765
for (unsigned int s = 0; s < 2 - r; s++)
5767
for (unsigned int t = 1; t < 3 - r - s; t++)
5769
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
5770
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
5771
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
5772
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
5773
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
5774
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
5775
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
5776
}// end loop over 't'
5777
}// end loop over 's'
5778
}// end loop over 'r'
5779
for (unsigned int r = 0; r < 4; r++)
5781
for (unsigned int s = 0; s < 4 - r; s++)
5783
for (unsigned int t = 0; t < 4 - r - s; t++)
5785
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
5786
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
5787
}// end loop over 't'
5788
}// end loop over 's'
5789
}// end loop over 'r'
4792
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
4793
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
4794
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
4795
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
4796
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
4797
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
4798
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
4799
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
4800
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
4801
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
4802
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
4803
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
4804
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
4805
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
4806
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
4807
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
4808
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
4809
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
4810
basisvalues[0] *= std::sqrt(0.75);
4811
basisvalues[3] *= std::sqrt(1.25);
4812
basisvalues[9] *= std::sqrt(1.75);
4813
basisvalues[19] *= std::sqrt(2.25);
4814
basisvalues[2] *= std::sqrt(2.5);
4815
basisvalues[8] *= std::sqrt(3.5);
4816
basisvalues[18] *= std::sqrt(4.5);
4817
basisvalues[7] *= std::sqrt(5.25);
4818
basisvalues[17] *= std::sqrt(6.75);
4819
basisvalues[16] *= std::sqrt(9.0);
4820
basisvalues[1] *= std::sqrt(7.5);
4821
basisvalues[6] *= std::sqrt(10.5);
4822
basisvalues[15] *= std::sqrt(13.5);
4823
basisvalues[5] *= std::sqrt(15.75);
4824
basisvalues[14] *= std::sqrt(20.25);
4825
basisvalues[13] *= std::sqrt(27.0);
4826
basisvalues[4] *= std::sqrt(26.25);
4827
basisvalues[12] *= std::sqrt(33.75);
4828
basisvalues[11] *= std::sqrt(45.0);
4829
basisvalues[10] *= std::sqrt(63.0);
5791
4831
// Table(s) of coefficients.
5792
4832
static const double coefficients0[20] = \
6043
5077
// Compute basisvalues.
6044
5078
basisvalues[0] = 1.0;
6045
5079
basisvalues[1] = tmp0;
6046
for (unsigned int r = 1; r < 3; r++)
6048
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
6049
ss = r*(r + 1)*(r + 2)/6;
6050
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
6051
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
6052
}// end loop over 'r'
6053
for (unsigned int r = 0; r < 3; r++)
6055
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
6056
ss = r*(r + 1)*(r + 2)/6;
6057
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
6058
}// end loop over 'r'
6059
for (unsigned int r = 0; r < 2; r++)
6061
for (unsigned int s = 1; s < 3 - r; s++)
6063
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
6064
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
6065
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
6066
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
6067
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
6068
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
6069
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
6070
}// end loop over 's'
6071
}// end loop over 'r'
6072
for (unsigned int r = 0; r < 3; r++)
6074
for (unsigned int s = 0; s < 3 - r; s++)
6076
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
6077
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
6078
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
6079
}// end loop over 's'
6080
}// end loop over 'r'
6081
for (unsigned int r = 0; r < 2; r++)
6083
for (unsigned int s = 0; s < 2 - r; s++)
6085
for (unsigned int t = 1; t < 3 - r - s; t++)
6087
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
6088
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
6089
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
6090
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
6091
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
6092
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
6093
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
6094
}// end loop over 't'
6095
}// end loop over 's'
6096
}// end loop over 'r'
6097
for (unsigned int r = 0; r < 4; r++)
6099
for (unsigned int s = 0; s < 4 - r; s++)
6101
for (unsigned int t = 0; t < 4 - r - s; t++)
6103
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
6104
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
6105
}// end loop over 't'
6106
}// end loop over 's'
6107
}// end loop over 'r'
5080
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
5081
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
5082
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
5083
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
5084
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
5085
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
5086
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
5087
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
5088
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
5089
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
5090
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
5091
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
5092
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
5093
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
5094
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
5095
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
5096
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
5097
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
5098
basisvalues[0] *= std::sqrt(0.75);
5099
basisvalues[3] *= std::sqrt(1.25);
5100
basisvalues[9] *= std::sqrt(1.75);
5101
basisvalues[19] *= std::sqrt(2.25);
5102
basisvalues[2] *= std::sqrt(2.5);
5103
basisvalues[8] *= std::sqrt(3.5);
5104
basisvalues[18] *= std::sqrt(4.5);
5105
basisvalues[7] *= std::sqrt(5.25);
5106
basisvalues[17] *= std::sqrt(6.75);
5107
basisvalues[16] *= std::sqrt(9.0);
5108
basisvalues[1] *= std::sqrt(7.5);
5109
basisvalues[6] *= std::sqrt(10.5);
5110
basisvalues[15] *= std::sqrt(13.5);
5111
basisvalues[5] *= std::sqrt(15.75);
5112
basisvalues[14] *= std::sqrt(20.25);
5113
basisvalues[13] *= std::sqrt(27.0);
5114
basisvalues[4] *= std::sqrt(26.25);
5115
basisvalues[12] *= std::sqrt(33.75);
5116
basisvalues[11] *= std::sqrt(45.0);
5117
basisvalues[10] *= std::sqrt(63.0);
6109
5119
// Table(s) of coefficients.
6110
5120
static const double coefficients0[20] = \
6361
5365
// Compute basisvalues.
6362
5366
basisvalues[0] = 1.0;
6363
5367
basisvalues[1] = tmp0;
6364
for (unsigned int r = 1; r < 3; r++)
6366
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
6367
ss = r*(r + 1)*(r + 2)/6;
6368
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
6369
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
6370
}// end loop over 'r'
6371
for (unsigned int r = 0; r < 3; r++)
6373
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
6374
ss = r*(r + 1)*(r + 2)/6;
6375
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
6376
}// end loop over 'r'
6377
for (unsigned int r = 0; r < 2; r++)
6379
for (unsigned int s = 1; s < 3 - r; s++)
6381
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
6382
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
6383
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
6384
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
6385
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
6386
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
6387
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
6388
}// end loop over 's'
6389
}// end loop over 'r'
6390
for (unsigned int r = 0; r < 3; r++)
6392
for (unsigned int s = 0; s < 3 - r; s++)
6394
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
6395
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
6396
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
6397
}// end loop over 's'
6398
}// end loop over 'r'
6399
for (unsigned int r = 0; r < 2; r++)
6401
for (unsigned int s = 0; s < 2 - r; s++)
6403
for (unsigned int t = 1; t < 3 - r - s; t++)
6405
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
6406
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
6407
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
6408
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
6409
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
6410
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
6411
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
6412
}// end loop over 't'
6413
}// end loop over 's'
6414
}// end loop over 'r'
6415
for (unsigned int r = 0; r < 4; r++)
6417
for (unsigned int s = 0; s < 4 - r; s++)
6419
for (unsigned int t = 0; t < 4 - r - s; t++)
6421
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
6422
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
6423
}// end loop over 't'
6424
}// end loop over 's'
6425
}// end loop over 'r'
5368
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
5369
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
5370
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
5371
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
5372
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
5373
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
5374
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
5375
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
5376
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
5377
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
5378
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
5379
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
5380
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
5381
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
5382
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
5383
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
5384
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
5385
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
5386
basisvalues[0] *= std::sqrt(0.75);
5387
basisvalues[3] *= std::sqrt(1.25);
5388
basisvalues[9] *= std::sqrt(1.75);
5389
basisvalues[19] *= std::sqrt(2.25);
5390
basisvalues[2] *= std::sqrt(2.5);
5391
basisvalues[8] *= std::sqrt(3.5);
5392
basisvalues[18] *= std::sqrt(4.5);
5393
basisvalues[7] *= std::sqrt(5.25);
5394
basisvalues[17] *= std::sqrt(6.75);
5395
basisvalues[16] *= std::sqrt(9.0);
5396
basisvalues[1] *= std::sqrt(7.5);
5397
basisvalues[6] *= std::sqrt(10.5);
5398
basisvalues[15] *= std::sqrt(13.5);
5399
basisvalues[5] *= std::sqrt(15.75);
5400
basisvalues[14] *= std::sqrt(20.25);
5401
basisvalues[13] *= std::sqrt(27.0);
5402
basisvalues[4] *= std::sqrt(26.25);
5403
basisvalues[12] *= std::sqrt(33.75);
5404
basisvalues[11] *= std::sqrt(45.0);
5405
basisvalues[10] *= std::sqrt(63.0);
6427
5407
// Table(s) of coefficients.
6428
5408
static const double coefficients0[20] = \
6679
5653
// Compute basisvalues.
6680
5654
basisvalues[0] = 1.0;
6681
5655
basisvalues[1] = tmp0;
6682
for (unsigned int r = 1; r < 3; r++)
6684
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
6685
ss = r*(r + 1)*(r + 2)/6;
6686
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
6687
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
6688
}// end loop over 'r'
6689
for (unsigned int r = 0; r < 3; r++)
6691
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
6692
ss = r*(r + 1)*(r + 2)/6;
6693
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
6694
}// end loop over 'r'
6695
for (unsigned int r = 0; r < 2; r++)
6697
for (unsigned int s = 1; s < 3 - r; s++)
6699
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
6700
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
6701
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
6702
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
6703
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
6704
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
6705
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
6706
}// end loop over 's'
6707
}// end loop over 'r'
6708
for (unsigned int r = 0; r < 3; r++)
6710
for (unsigned int s = 0; s < 3 - r; s++)
6712
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
6713
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
6714
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
6715
}// end loop over 's'
6716
}// end loop over 'r'
6717
for (unsigned int r = 0; r < 2; r++)
6719
for (unsigned int s = 0; s < 2 - r; s++)
6721
for (unsigned int t = 1; t < 3 - r - s; t++)
6723
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
6724
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
6725
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
6726
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
6727
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
6728
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
6729
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
6730
}// end loop over 't'
6731
}// end loop over 's'
6732
}// end loop over 'r'
6733
for (unsigned int r = 0; r < 4; r++)
6735
for (unsigned int s = 0; s < 4 - r; s++)
6737
for (unsigned int t = 0; t < 4 - r - s; t++)
6739
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
6740
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
6741
}// end loop over 't'
6742
}// end loop over 's'
6743
}// end loop over 'r'
5656
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
5657
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
5658
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
5659
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
5660
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
5661
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
5662
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
5663
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
5664
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
5665
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
5666
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
5667
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
5668
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
5669
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
5670
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
5671
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
5672
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
5673
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
5674
basisvalues[0] *= std::sqrt(0.75);
5675
basisvalues[3] *= std::sqrt(1.25);
5676
basisvalues[9] *= std::sqrt(1.75);
5677
basisvalues[19] *= std::sqrt(2.25);
5678
basisvalues[2] *= std::sqrt(2.5);
5679
basisvalues[8] *= std::sqrt(3.5);
5680
basisvalues[18] *= std::sqrt(4.5);
5681
basisvalues[7] *= std::sqrt(5.25);
5682
basisvalues[17] *= std::sqrt(6.75);
5683
basisvalues[16] *= std::sqrt(9.0);
5684
basisvalues[1] *= std::sqrt(7.5);
5685
basisvalues[6] *= std::sqrt(10.5);
5686
basisvalues[15] *= std::sqrt(13.5);
5687
basisvalues[5] *= std::sqrt(15.75);
5688
basisvalues[14] *= std::sqrt(20.25);
5689
basisvalues[13] *= std::sqrt(27.0);
5690
basisvalues[4] *= std::sqrt(26.25);
5691
basisvalues[12] *= std::sqrt(33.75);
5692
basisvalues[11] *= std::sqrt(45.0);
5693
basisvalues[10] *= std::sqrt(63.0);
6745
5695
// Table(s) of coefficients.
6746
5696
static const double coefficients0[20] = \
6997
5941
// Compute basisvalues.
6998
5942
basisvalues[0] = 1.0;
6999
5943
basisvalues[1] = tmp0;
7000
for (unsigned int r = 1; r < 3; r++)
7002
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
7003
ss = r*(r + 1)*(r + 2)/6;
7004
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
7005
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
7006
}// end loop over 'r'
7007
for (unsigned int r = 0; r < 3; r++)
7009
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
7010
ss = r*(r + 1)*(r + 2)/6;
7011
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
7012
}// end loop over 'r'
7013
for (unsigned int r = 0; r < 2; r++)
7015
for (unsigned int s = 1; s < 3 - r; s++)
7017
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
7018
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
7019
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
7020
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
7021
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
7022
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
7023
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
7024
}// end loop over 's'
7025
}// end loop over 'r'
7026
for (unsigned int r = 0; r < 3; r++)
7028
for (unsigned int s = 0; s < 3 - r; s++)
7030
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
7031
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
7032
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
7033
}// end loop over 's'
7034
}// end loop over 'r'
7035
for (unsigned int r = 0; r < 2; r++)
7037
for (unsigned int s = 0; s < 2 - r; s++)
7039
for (unsigned int t = 1; t < 3 - r - s; t++)
7041
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
7042
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
7043
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
7044
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
7045
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
7046
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
7047
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
7048
}// end loop over 't'
7049
}// end loop over 's'
7050
}// end loop over 'r'
7051
for (unsigned int r = 0; r < 4; r++)
7053
for (unsigned int s = 0; s < 4 - r; s++)
7055
for (unsigned int t = 0; t < 4 - r - s; t++)
7057
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
7058
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
7059
}// end loop over 't'
7060
}// end loop over 's'
7061
}// end loop over 'r'
5944
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
5945
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
5946
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
5947
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
5948
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
5949
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
5950
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
5951
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
5952
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
5953
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
5954
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
5955
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
5956
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
5957
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
5958
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
5959
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
5960
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
5961
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
5962
basisvalues[0] *= std::sqrt(0.75);
5963
basisvalues[3] *= std::sqrt(1.25);
5964
basisvalues[9] *= std::sqrt(1.75);
5965
basisvalues[19] *= std::sqrt(2.25);
5966
basisvalues[2] *= std::sqrt(2.5);
5967
basisvalues[8] *= std::sqrt(3.5);
5968
basisvalues[18] *= std::sqrt(4.5);
5969
basisvalues[7] *= std::sqrt(5.25);
5970
basisvalues[17] *= std::sqrt(6.75);
5971
basisvalues[16] *= std::sqrt(9.0);
5972
basisvalues[1] *= std::sqrt(7.5);
5973
basisvalues[6] *= std::sqrt(10.5);
5974
basisvalues[15] *= std::sqrt(13.5);
5975
basisvalues[5] *= std::sqrt(15.75);
5976
basisvalues[14] *= std::sqrt(20.25);
5977
basisvalues[13] *= std::sqrt(27.0);
5978
basisvalues[4] *= std::sqrt(26.25);
5979
basisvalues[12] *= std::sqrt(33.75);
5980
basisvalues[11] *= std::sqrt(45.0);
5981
basisvalues[10] *= std::sqrt(63.0);
7063
5983
// Table(s) of coefficients.
7064
5984
static const double coefficients0[20] = \
7315
6229
// Compute basisvalues.
7316
6230
basisvalues[0] = 1.0;
7317
6231
basisvalues[1] = tmp0;
7318
for (unsigned int r = 1; r < 3; r++)
7320
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
7321
ss = r*(r + 1)*(r + 2)/6;
7322
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
7323
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
7324
}// end loop over 'r'
7325
for (unsigned int r = 0; r < 3; r++)
7327
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
7328
ss = r*(r + 1)*(r + 2)/6;
7329
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
7330
}// end loop over 'r'
7331
for (unsigned int r = 0; r < 2; r++)
7333
for (unsigned int s = 1; s < 3 - r; s++)
7335
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
7336
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
7337
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
7338
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
7339
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
7340
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
7341
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
7342
}// end loop over 's'
7343
}// end loop over 'r'
7344
for (unsigned int r = 0; r < 3; r++)
7346
for (unsigned int s = 0; s < 3 - r; s++)
7348
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
7349
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
7350
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
7351
}// end loop over 's'
7352
}// end loop over 'r'
7353
for (unsigned int r = 0; r < 2; r++)
7355
for (unsigned int s = 0; s < 2 - r; s++)
7357
for (unsigned int t = 1; t < 3 - r - s; t++)
7359
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
7360
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
7361
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
7362
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
7363
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
7364
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
7365
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
7366
}// end loop over 't'
7367
}// end loop over 's'
7368
}// end loop over 'r'
7369
for (unsigned int r = 0; r < 4; r++)
7371
for (unsigned int s = 0; s < 4 - r; s++)
7373
for (unsigned int t = 0; t < 4 - r - s; t++)
7375
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
7376
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
7377
}// end loop over 't'
7378
}// end loop over 's'
7379
}// end loop over 'r'
6232
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
6233
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
6234
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
6235
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
6236
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
6237
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
6238
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
6239
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
6240
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
6241
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
6242
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
6243
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
6244
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
6245
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
6246
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
6247
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
6248
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
6249
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
6250
basisvalues[0] *= std::sqrt(0.75);
6251
basisvalues[3] *= std::sqrt(1.25);
6252
basisvalues[9] *= std::sqrt(1.75);
6253
basisvalues[19] *= std::sqrt(2.25);
6254
basisvalues[2] *= std::sqrt(2.5);
6255
basisvalues[8] *= std::sqrt(3.5);
6256
basisvalues[18] *= std::sqrt(4.5);
6257
basisvalues[7] *= std::sqrt(5.25);
6258
basisvalues[17] *= std::sqrt(6.75);
6259
basisvalues[16] *= std::sqrt(9.0);
6260
basisvalues[1] *= std::sqrt(7.5);
6261
basisvalues[6] *= std::sqrt(10.5);
6262
basisvalues[15] *= std::sqrt(13.5);
6263
basisvalues[5] *= std::sqrt(15.75);
6264
basisvalues[14] *= std::sqrt(20.25);
6265
basisvalues[13] *= std::sqrt(27.0);
6266
basisvalues[4] *= std::sqrt(26.25);
6267
basisvalues[12] *= std::sqrt(33.75);
6268
basisvalues[11] *= std::sqrt(45.0);
6269
basisvalues[10] *= std::sqrt(63.0);
7381
6271
// Table(s) of coefficients.
7382
6272
static const double coefficients0[20] = \
7633
6517
// Compute basisvalues.
7634
6518
basisvalues[0] = 1.0;
7635
6519
basisvalues[1] = tmp0;
7636
for (unsigned int r = 1; r < 3; r++)
7638
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
7639
ss = r*(r + 1)*(r + 2)/6;
7640
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
7641
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
7642
}// end loop over 'r'
7643
for (unsigned int r = 0; r < 3; r++)
7645
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
7646
ss = r*(r + 1)*(r + 2)/6;
7647
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
7648
}// end loop over 'r'
7649
for (unsigned int r = 0; r < 2; r++)
7651
for (unsigned int s = 1; s < 3 - r; s++)
7653
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
7654
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
7655
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
7656
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
7657
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
7658
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
7659
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
7660
}// end loop over 's'
7661
}// end loop over 'r'
7662
for (unsigned int r = 0; r < 3; r++)
7664
for (unsigned int s = 0; s < 3 - r; s++)
7666
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
7667
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
7668
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
7669
}// end loop over 's'
7670
}// end loop over 'r'
7671
for (unsigned int r = 0; r < 2; r++)
7673
for (unsigned int s = 0; s < 2 - r; s++)
7675
for (unsigned int t = 1; t < 3 - r - s; t++)
7677
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
7678
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
7679
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
7680
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
7681
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
7682
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
7683
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
7684
}// end loop over 't'
7685
}// end loop over 's'
7686
}// end loop over 'r'
7687
for (unsigned int r = 0; r < 4; r++)
7689
for (unsigned int s = 0; s < 4 - r; s++)
7691
for (unsigned int t = 0; t < 4 - r - s; t++)
7693
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
7694
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
7695
}// end loop over 't'
7696
}// end loop over 's'
7697
}// end loop over 'r'
6520
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
6521
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
6522
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
6523
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
6524
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
6525
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
6526
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
6527
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
6528
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
6529
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
6530
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
6531
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
6532
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
6533
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
6534
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
6535
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
6536
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
6537
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
6538
basisvalues[0] *= std::sqrt(0.75);
6539
basisvalues[3] *= std::sqrt(1.25);
6540
basisvalues[9] *= std::sqrt(1.75);
6541
basisvalues[19] *= std::sqrt(2.25);
6542
basisvalues[2] *= std::sqrt(2.5);
6543
basisvalues[8] *= std::sqrt(3.5);
6544
basisvalues[18] *= std::sqrt(4.5);
6545
basisvalues[7] *= std::sqrt(5.25);
6546
basisvalues[17] *= std::sqrt(6.75);
6547
basisvalues[16] *= std::sqrt(9.0);
6548
basisvalues[1] *= std::sqrt(7.5);
6549
basisvalues[6] *= std::sqrt(10.5);
6550
basisvalues[15] *= std::sqrt(13.5);
6551
basisvalues[5] *= std::sqrt(15.75);
6552
basisvalues[14] *= std::sqrt(20.25);
6553
basisvalues[13] *= std::sqrt(27.0);
6554
basisvalues[4] *= std::sqrt(26.25);
6555
basisvalues[12] *= std::sqrt(33.75);
6556
basisvalues[11] *= std::sqrt(45.0);
6557
basisvalues[10] *= std::sqrt(63.0);
7699
6559
// Table(s) of coefficients.
7700
6560
static const double coefficients0[20] = \
7951
6805
// Compute basisvalues.
7952
6806
basisvalues[0] = 1.0;
7953
6807
basisvalues[1] = tmp0;
7954
for (unsigned int r = 1; r < 3; r++)
7956
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
7957
ss = r*(r + 1)*(r + 2)/6;
7958
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
7959
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
7960
}// end loop over 'r'
7961
for (unsigned int r = 0; r < 3; r++)
7963
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
7964
ss = r*(r + 1)*(r + 2)/6;
7965
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
7966
}// end loop over 'r'
7967
for (unsigned int r = 0; r < 2; r++)
7969
for (unsigned int s = 1; s < 3 - r; s++)
7971
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
7972
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
7973
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
7974
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
7975
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
7976
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
7977
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
7978
}// end loop over 's'
7979
}// end loop over 'r'
7980
for (unsigned int r = 0; r < 3; r++)
7982
for (unsigned int s = 0; s < 3 - r; s++)
7984
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
7985
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
7986
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
7987
}// end loop over 's'
7988
}// end loop over 'r'
7989
for (unsigned int r = 0; r < 2; r++)
7991
for (unsigned int s = 0; s < 2 - r; s++)
7993
for (unsigned int t = 1; t < 3 - r - s; t++)
7995
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
7996
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
7997
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
7998
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
7999
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
8000
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
8001
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
8002
}// end loop over 't'
8003
}// end loop over 's'
8004
}// end loop over 'r'
8005
for (unsigned int r = 0; r < 4; r++)
8007
for (unsigned int s = 0; s < 4 - r; s++)
8009
for (unsigned int t = 0; t < 4 - r - s; t++)
8011
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
8012
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
8013
}// end loop over 't'
8014
}// end loop over 's'
8015
}// end loop over 'r'
6808
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
6809
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
6810
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
6811
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
6812
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
6813
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
6814
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
6815
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
6816
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
6817
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
6818
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
6819
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
6820
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
6821
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
6822
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
6823
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
6824
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
6825
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
6826
basisvalues[0] *= std::sqrt(0.75);
6827
basisvalues[3] *= std::sqrt(1.25);
6828
basisvalues[9] *= std::sqrt(1.75);
6829
basisvalues[19] *= std::sqrt(2.25);
6830
basisvalues[2] *= std::sqrt(2.5);
6831
basisvalues[8] *= std::sqrt(3.5);
6832
basisvalues[18] *= std::sqrt(4.5);
6833
basisvalues[7] *= std::sqrt(5.25);
6834
basisvalues[17] *= std::sqrt(6.75);
6835
basisvalues[16] *= std::sqrt(9.0);
6836
basisvalues[1] *= std::sqrt(7.5);
6837
basisvalues[6] *= std::sqrt(10.5);
6838
basisvalues[15] *= std::sqrt(13.5);
6839
basisvalues[5] *= std::sqrt(15.75);
6840
basisvalues[14] *= std::sqrt(20.25);
6841
basisvalues[13] *= std::sqrt(27.0);
6842
basisvalues[4] *= std::sqrt(26.25);
6843
basisvalues[12] *= std::sqrt(33.75);
6844
basisvalues[11] *= std::sqrt(45.0);
6845
basisvalues[10] *= std::sqrt(63.0);
8017
6847
// Table(s) of coefficients.
8018
6848
static const double coefficients0[20] = \
8269
7093
// Compute basisvalues.
8270
7094
basisvalues[0] = 1.0;
8271
7095
basisvalues[1] = tmp0;
8272
for (unsigned int r = 1; r < 3; r++)
8274
rr = (r + 1)*((r + 1) + 1)*((r + 1) + 2)/6;
8275
ss = r*(r + 1)*(r + 2)/6;
8276
tt = (r - 1)*((r - 1) + 1)*((r - 1) + 2)/6;
8277
basisvalues[rr] = (basisvalues[ss]*tmp0*(1.0 + 2.0*r)/(1.0 + r) - basisvalues[tt]*tmp1*r/(1.0 + r));
8278
}// end loop over 'r'
8279
for (unsigned int r = 0; r < 3; r++)
8281
rr = (r + 1)*(r + 1 + 1)*(r + 1 + 2)/6 + 1*(1 + 1)/2;
8282
ss = r*(r + 1)*(r + 2)/6;
8283
basisvalues[rr] = basisvalues[ss]*(r*(1.0 + Y) + (2.0 + Z + 3.0*Y)/2.0);
8284
}// end loop over 'r'
8285
for (unsigned int r = 0; r < 2; r++)
8287
for (unsigned int s = 1; s < 3 - r; s++)
8289
rr = (r + (s + 1))*(r + (s + 1) + 1)*(r + (s + 1) + 2)/6 + (s + 1)*((s + 1) + 1)/2;
8290
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
8291
tt = (r + (s - 1))*(r + (s - 1) + 1)*(r + (s - 1) + 2)/6 + (s - 1)*((s - 1) + 1)/2;
8292
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
8293
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
8294
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
8295
basisvalues[rr] = (basisvalues[ss]*(tmp2*tmp5 + tmp3*tmp6) - basisvalues[tt]*tmp4*tmp7);
8296
}// end loop over 's'
8297
}// end loop over 'r'
8298
for (unsigned int r = 0; r < 3; r++)
8300
for (unsigned int s = 0; s < 3 - r; s++)
8302
rr = (r + s + 1)*(r + s + 1 + 1)*(r + s + 1 + 2)/6 + (s + 1)*(s + 1 + 1)/2 + 1;
8303
ss = (r + s)*(r + s + 1)*(r + s + 2)/6 + s*(s + 1)/2;
8304
basisvalues[rr] = basisvalues[ss]*(1.0 + r + s + Z*(2.0 + r + s));
8305
}// end loop over 's'
8306
}// end loop over 'r'
8307
for (unsigned int r = 0; r < 2; r++)
8309
for (unsigned int s = 0; s < 2 - r; s++)
8311
for (unsigned int t = 1; t < 3 - r - s; t++)
8313
rr = (r + s + t + 1)*(r + s + t + 1 + 1)*(r + s + t + 1 + 2)/6 + (s + t + 1)*(s + t + 1 + 1)/2 + t + 1;
8314
ss = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
8315
tt = (r + s + t - 1)*(r + s + t - 1 + 1)*(r + s + t - 1 + 2)/6 + (s + t - 1)*(s + t - 1 + 1)/2 + t - 1;
8316
tmp5 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 2.0*r + 2.0*s + 2.0*t)/(2.0*(1.0 + t)*(3.0 + t + 2.0*r + 2.0*s));
8317
tmp6 = (3.0 + 2.0*r + 2.0*s + 2.0*t)*(4.0 + 4.0*r*r + 4.0*s*s + 8.0*r*s + 8.0*r + 8.0*s)/(2.0*(1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
8318
tmp7 = (2.0 + t + 2.0*r + 2.0*s)*(4.0 + 2.0*r + 2.0*s + 2.0*t)*t/((1.0 + t)*(2.0 + 2.0*r + 2.0*s + 2.0*t)*(3.0 + t + 2.0*r + 2.0*s));
8319
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Z*tmp5) - basisvalues[tt]*tmp7);
8320
}// end loop over 't'
8321
}// end loop over 's'
8322
}// end loop over 'r'
8323
for (unsigned int r = 0; r < 4; r++)
8325
for (unsigned int s = 0; s < 4 - r; s++)
8327
for (unsigned int t = 0; t < 4 - r - s; t++)
8329
rr = (r + s + t)*(r + s + t + 1)*(r + s + t + 2)/6 + (s + t)*(s + t + 1)/2 + t;
8330
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s)*(1.5 + r + s + t));
8331
}// end loop over 't'
8332
}// end loop over 's'
8333
}// end loop over 'r'
7096
basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0];
7097
basisvalues[10] = 1.6666667*tmp0*basisvalues[4] - 0.66666667*tmp1*basisvalues[1];
7098
basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0];
7099
basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1];
7100
basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4];
7101
basisvalues[7] = (1.6666667*tmp2 + 0.11111111*tmp3)*basisvalues[2] - 0.55555556*tmp4*basisvalues[0];
7102
basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2];
7103
basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1];
7104
basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0];
7105
basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2];
7106
basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7];
7107
basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1];
7108
basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5];
7109
basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4];
7110
basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0];
7111
basisvalues[19] = basisvalues[9]*(0.15555556 + 1.8666667*Z) - 0.71111111*basisvalues[3];
7112
basisvalues[18] = basisvalues[8]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[2];
7113
basisvalues[15] = basisvalues[6]*(0.77777778 + 2.3333333*Z) - 0.55555556*basisvalues[1];
7114
basisvalues[0] *= std::sqrt(0.75);
7115
basisvalues[3] *= std::sqrt(1.25);
7116
basisvalues[9] *= std::sqrt(1.75);
7117
basisvalues[19] *= std::sqrt(2.25);
7118
basisvalues[2] *= std::sqrt(2.5);
7119
basisvalues[8] *= std::sqrt(3.5);
7120
basisvalues[18] *= std::sqrt(4.5);
7121
basisvalues[7] *= std::sqrt(5.25);
7122
basisvalues[17] *= std::sqrt(6.75);
7123
basisvalues[16] *= std::sqrt(9.0);
7124
basisvalues[1] *= std::sqrt(7.5);
7125
basisvalues[6] *= std::sqrt(10.5);
7126
basisvalues[15] *= std::sqrt(13.5);
7127
basisvalues[5] *= std::sqrt(15.75);
7128
basisvalues[14] *= std::sqrt(20.25);
7129
basisvalues[13] *= std::sqrt(27.0);
7130
basisvalues[4] *= std::sqrt(26.25);
7131
basisvalues[12] *= std::sqrt(33.75);
7132
basisvalues[11] *= std::sqrt(45.0);
7133
basisvalues[10] *= std::sqrt(63.0);
8335
7135
// Table(s) of coefficients.
8336
7136
static const double coefficients0[20] = \