~ubuntu-branches/ubuntu/raring/ffc/raring

« back to all changes in this revision

Viewing changes to test/regression/references/r_auto/X_Element1.h

  • Committer: Package Import Robot
  • Author(s): Johannes Ring
  • Date: 2011-10-26 17:52:20 UTC
  • mfrom: (1.1.10)
  • Revision ID: package-import@ubuntu.com-20111026175220-ope1dzqv4jn2b8pq
Tags: 1.0-beta2-1
* New upstream release. This release includes some performance
  improvements for evaluating basis functions. It also adds support
  for Bessel functions and error functions.
* debian/control: Bump version numbers for python-ufc, python-fiat,
  python-instant, and python-ufl.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// This code conforms with the UFC specification version 2.0.0
2
 
// and was automatically generated by FFC version 1.0-beta.
 
1
// This code conforms with the UFC specification version 2.0.2
 
2
// and was automatically generated by FFC version 1.0-beta+.
3
3
// 
4
4
// This code was generated with the following parameters:
5
5
// 
130
130
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
131
131
      
132
132
      // Declare helper variables.
133
 
      unsigned int rr = 0;
134
 
      unsigned int ss = 0;
135
 
      unsigned int tt = 0;
136
 
      double tmp5 = 0.0;
137
 
      double tmp6 = 0.0;
138
 
      double tmp7 = 0.0;
139
133
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
140
134
      double tmp1 = (1.0 - Y)/2.0;
141
135
      double tmp2 = tmp1*tmp1;
143
137
      // Compute basisvalues.
144
138
      basisvalues[0] = 1.0;
145
139
      basisvalues[1] = tmp0;
146
 
      for (unsigned int r = 1; r < 3; r++)
147
 
      {
148
 
        rr = (r + 1)*((r + 1) + 1)/2;
149
 
        ss = r*(r + 1)/2;
150
 
        tt = (r - 1)*((r - 1) + 1)/2;
151
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
152
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
153
 
      }// end loop over 'r'
154
 
      for (unsigned int r = 0; r < 3; r++)
155
 
      {
156
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
157
 
        ss = r*(r + 1)/2;
158
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
159
 
      }// end loop over 'r'
160
 
      for (unsigned int r = 0; r < 2; r++)
161
 
      {
162
 
        for (unsigned int s = 1; s < 3 - r; s++)
163
 
        {
164
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
165
 
          ss = (r + s)*(r + s + 1)/2 + s;
166
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
167
 
          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));
168
 
          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));
169
 
          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));
170
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
171
 
        }// end loop over 's'
172
 
      }// end loop over 'r'
173
 
      for (unsigned int r = 0; r < 4; r++)
174
 
      {
175
 
        for (unsigned int s = 0; s < 4 - r; s++)
176
 
        {
177
 
          rr = (r + s)*(r + s + 1)/2 + s;
178
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
179
 
        }// end loop over 's'
180
 
      }// end loop over 'r'
 
140
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
141
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
142
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
143
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
144
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
145
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
146
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
147
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
148
      basisvalues[0] *= std::sqrt(0.5);
 
149
      basisvalues[2] *= std::sqrt(1.0);
 
150
      basisvalues[5] *= std::sqrt(1.5);
 
151
      basisvalues[9] *= std::sqrt(2.0);
 
152
      basisvalues[1] *= std::sqrt(3.0);
 
153
      basisvalues[4] *= std::sqrt(4.5);
 
154
      basisvalues[8] *= std::sqrt(6.0);
 
155
      basisvalues[3] *= std::sqrt(7.5);
 
156
      basisvalues[7] *= std::sqrt(10.0);
 
157
      basisvalues[6] *= std::sqrt(14.0);
181
158
      
182
159
      // Table(s) of coefficients.
183
160
      static const double coefficients0[10] = \
197
174
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
198
175
      
199
176
      // Declare helper variables.
200
 
      unsigned int rr = 0;
201
 
      unsigned int ss = 0;
202
 
      unsigned int tt = 0;
203
 
      double tmp5 = 0.0;
204
 
      double tmp6 = 0.0;
205
 
      double tmp7 = 0.0;
206
177
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
207
178
      double tmp1 = (1.0 - Y)/2.0;
208
179
      double tmp2 = tmp1*tmp1;
210
181
      // Compute basisvalues.
211
182
      basisvalues[0] = 1.0;
212
183
      basisvalues[1] = tmp0;
213
 
      for (unsigned int r = 1; r < 3; r++)
214
 
      {
215
 
        rr = (r + 1)*((r + 1) + 1)/2;
216
 
        ss = r*(r + 1)/2;
217
 
        tt = (r - 1)*((r - 1) + 1)/2;
218
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
219
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
220
 
      }// end loop over 'r'
221
 
      for (unsigned int r = 0; r < 3; r++)
222
 
      {
223
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
224
 
        ss = r*(r + 1)/2;
225
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
226
 
      }// end loop over 'r'
227
 
      for (unsigned int r = 0; r < 2; r++)
228
 
      {
229
 
        for (unsigned int s = 1; s < 3 - r; s++)
230
 
        {
231
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
232
 
          ss = (r + s)*(r + s + 1)/2 + s;
233
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
234
 
          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));
235
 
          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));
236
 
          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));
237
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
238
 
        }// end loop over 's'
239
 
      }// end loop over 'r'
240
 
      for (unsigned int r = 0; r < 4; r++)
241
 
      {
242
 
        for (unsigned int s = 0; s < 4 - r; s++)
243
 
        {
244
 
          rr = (r + s)*(r + s + 1)/2 + s;
245
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
246
 
        }// end loop over 's'
247
 
      }// end loop over 'r'
 
184
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
185
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
186
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
187
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
188
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
189
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
190
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
191
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
192
      basisvalues[0] *= std::sqrt(0.5);
 
193
      basisvalues[2] *= std::sqrt(1.0);
 
194
      basisvalues[5] *= std::sqrt(1.5);
 
195
      basisvalues[9] *= std::sqrt(2.0);
 
196
      basisvalues[1] *= std::sqrt(3.0);
 
197
      basisvalues[4] *= std::sqrt(4.5);
 
198
      basisvalues[8] *= std::sqrt(6.0);
 
199
      basisvalues[3] *= std::sqrt(7.5);
 
200
      basisvalues[7] *= std::sqrt(10.0);
 
201
      basisvalues[6] *= std::sqrt(14.0);
248
202
      
249
203
      // Table(s) of coefficients.
250
204
      static const double coefficients0[10] = \
264
218
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
265
219
      
266
220
      // Declare helper variables.
267
 
      unsigned int rr = 0;
268
 
      unsigned int ss = 0;
269
 
      unsigned int tt = 0;
270
 
      double tmp5 = 0.0;
271
 
      double tmp6 = 0.0;
272
 
      double tmp7 = 0.0;
273
221
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
274
222
      double tmp1 = (1.0 - Y)/2.0;
275
223
      double tmp2 = tmp1*tmp1;
277
225
      // Compute basisvalues.
278
226
      basisvalues[0] = 1.0;
279
227
      basisvalues[1] = tmp0;
280
 
      for (unsigned int r = 1; r < 3; r++)
281
 
      {
282
 
        rr = (r + 1)*((r + 1) + 1)/2;
283
 
        ss = r*(r + 1)/2;
284
 
        tt = (r - 1)*((r - 1) + 1)/2;
285
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
286
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
287
 
      }// end loop over 'r'
288
 
      for (unsigned int r = 0; r < 3; r++)
289
 
      {
290
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
291
 
        ss = r*(r + 1)/2;
292
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
293
 
      }// end loop over 'r'
294
 
      for (unsigned int r = 0; r < 2; r++)
295
 
      {
296
 
        for (unsigned int s = 1; s < 3 - r; s++)
297
 
        {
298
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
299
 
          ss = (r + s)*(r + s + 1)/2 + s;
300
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
301
 
          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));
302
 
          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));
303
 
          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));
304
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
305
 
        }// end loop over 's'
306
 
      }// end loop over 'r'
307
 
      for (unsigned int r = 0; r < 4; r++)
308
 
      {
309
 
        for (unsigned int s = 0; s < 4 - r; s++)
310
 
        {
311
 
          rr = (r + s)*(r + s + 1)/2 + s;
312
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
313
 
        }// end loop over 's'
314
 
      }// end loop over 'r'
 
228
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
229
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
230
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
231
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
232
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
233
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
234
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
235
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
236
      basisvalues[0] *= std::sqrt(0.5);
 
237
      basisvalues[2] *= std::sqrt(1.0);
 
238
      basisvalues[5] *= std::sqrt(1.5);
 
239
      basisvalues[9] *= std::sqrt(2.0);
 
240
      basisvalues[1] *= std::sqrt(3.0);
 
241
      basisvalues[4] *= std::sqrt(4.5);
 
242
      basisvalues[8] *= std::sqrt(6.0);
 
243
      basisvalues[3] *= std::sqrt(7.5);
 
244
      basisvalues[7] *= std::sqrt(10.0);
 
245
      basisvalues[6] *= std::sqrt(14.0);
315
246
      
316
247
      // Table(s) of coefficients.
317
248
      static const double coefficients0[10] = \
331
262
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
332
263
      
333
264
      // Declare helper variables.
334
 
      unsigned int rr = 0;
335
 
      unsigned int ss = 0;
336
 
      unsigned int tt = 0;
337
 
      double tmp5 = 0.0;
338
 
      double tmp6 = 0.0;
339
 
      double tmp7 = 0.0;
340
265
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
341
266
      double tmp1 = (1.0 - Y)/2.0;
342
267
      double tmp2 = tmp1*tmp1;
344
269
      // Compute basisvalues.
345
270
      basisvalues[0] = 1.0;
346
271
      basisvalues[1] = tmp0;
347
 
      for (unsigned int r = 1; r < 3; r++)
348
 
      {
349
 
        rr = (r + 1)*((r + 1) + 1)/2;
350
 
        ss = r*(r + 1)/2;
351
 
        tt = (r - 1)*((r - 1) + 1)/2;
352
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
353
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
354
 
      }// end loop over 'r'
355
 
      for (unsigned int r = 0; r < 3; r++)
356
 
      {
357
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
358
 
        ss = r*(r + 1)/2;
359
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
360
 
      }// end loop over 'r'
361
 
      for (unsigned int r = 0; r < 2; r++)
362
 
      {
363
 
        for (unsigned int s = 1; s < 3 - r; s++)
364
 
        {
365
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
366
 
          ss = (r + s)*(r + s + 1)/2 + s;
367
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
368
 
          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));
369
 
          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));
370
 
          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));
371
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
372
 
        }// end loop over 's'
373
 
      }// end loop over 'r'
374
 
      for (unsigned int r = 0; r < 4; r++)
375
 
      {
376
 
        for (unsigned int s = 0; s < 4 - r; s++)
377
 
        {
378
 
          rr = (r + s)*(r + s + 1)/2 + s;
379
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
380
 
        }// end loop over 's'
381
 
      }// end loop over 'r'
 
272
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
273
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
274
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
275
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
276
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
277
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
278
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
279
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
280
      basisvalues[0] *= std::sqrt(0.5);
 
281
      basisvalues[2] *= std::sqrt(1.0);
 
282
      basisvalues[5] *= std::sqrt(1.5);
 
283
      basisvalues[9] *= std::sqrt(2.0);
 
284
      basisvalues[1] *= std::sqrt(3.0);
 
285
      basisvalues[4] *= std::sqrt(4.5);
 
286
      basisvalues[8] *= std::sqrt(6.0);
 
287
      basisvalues[3] *= std::sqrt(7.5);
 
288
      basisvalues[7] *= std::sqrt(10.0);
 
289
      basisvalues[6] *= std::sqrt(14.0);
382
290
      
383
291
      // Table(s) of coefficients.
384
292
      static const double coefficients0[10] = \
398
306
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
399
307
      
400
308
      // Declare helper variables.
401
 
      unsigned int rr = 0;
402
 
      unsigned int ss = 0;
403
 
      unsigned int tt = 0;
404
 
      double tmp5 = 0.0;
405
 
      double tmp6 = 0.0;
406
 
      double tmp7 = 0.0;
407
309
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
408
310
      double tmp1 = (1.0 - Y)/2.0;
409
311
      double tmp2 = tmp1*tmp1;
411
313
      // Compute basisvalues.
412
314
      basisvalues[0] = 1.0;
413
315
      basisvalues[1] = tmp0;
414
 
      for (unsigned int r = 1; r < 3; r++)
415
 
      {
416
 
        rr = (r + 1)*((r + 1) + 1)/2;
417
 
        ss = r*(r + 1)/2;
418
 
        tt = (r - 1)*((r - 1) + 1)/2;
419
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
420
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
421
 
      }// end loop over 'r'
422
 
      for (unsigned int r = 0; r < 3; r++)
423
 
      {
424
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
425
 
        ss = r*(r + 1)/2;
426
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
427
 
      }// end loop over 'r'
428
 
      for (unsigned int r = 0; r < 2; r++)
429
 
      {
430
 
        for (unsigned int s = 1; s < 3 - r; s++)
431
 
        {
432
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
433
 
          ss = (r + s)*(r + s + 1)/2 + s;
434
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
435
 
          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));
436
 
          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));
437
 
          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));
438
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
439
 
        }// end loop over 's'
440
 
      }// end loop over 'r'
441
 
      for (unsigned int r = 0; r < 4; r++)
442
 
      {
443
 
        for (unsigned int s = 0; s < 4 - r; s++)
444
 
        {
445
 
          rr = (r + s)*(r + s + 1)/2 + s;
446
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
447
 
        }// end loop over 's'
448
 
      }// end loop over 'r'
 
316
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
317
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
318
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
319
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
320
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
321
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
322
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
323
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
324
      basisvalues[0] *= std::sqrt(0.5);
 
325
      basisvalues[2] *= std::sqrt(1.0);
 
326
      basisvalues[5] *= std::sqrt(1.5);
 
327
      basisvalues[9] *= std::sqrt(2.0);
 
328
      basisvalues[1] *= std::sqrt(3.0);
 
329
      basisvalues[4] *= std::sqrt(4.5);
 
330
      basisvalues[8] *= std::sqrt(6.0);
 
331
      basisvalues[3] *= std::sqrt(7.5);
 
332
      basisvalues[7] *= std::sqrt(10.0);
 
333
      basisvalues[6] *= std::sqrt(14.0);
449
334
      
450
335
      // Table(s) of coefficients.
451
336
      static const double coefficients0[10] = \
465
350
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
466
351
      
467
352
      // Declare helper variables.
468
 
      unsigned int rr = 0;
469
 
      unsigned int ss = 0;
470
 
      unsigned int tt = 0;
471
 
      double tmp5 = 0.0;
472
 
      double tmp6 = 0.0;
473
 
      double tmp7 = 0.0;
474
353
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
475
354
      double tmp1 = (1.0 - Y)/2.0;
476
355
      double tmp2 = tmp1*tmp1;
478
357
      // Compute basisvalues.
479
358
      basisvalues[0] = 1.0;
480
359
      basisvalues[1] = tmp0;
481
 
      for (unsigned int r = 1; r < 3; r++)
482
 
      {
483
 
        rr = (r + 1)*((r + 1) + 1)/2;
484
 
        ss = r*(r + 1)/2;
485
 
        tt = (r - 1)*((r - 1) + 1)/2;
486
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
487
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
488
 
      }// end loop over 'r'
489
 
      for (unsigned int r = 0; r < 3; r++)
490
 
      {
491
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
492
 
        ss = r*(r + 1)/2;
493
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
494
 
      }// end loop over 'r'
495
 
      for (unsigned int r = 0; r < 2; r++)
496
 
      {
497
 
        for (unsigned int s = 1; s < 3 - r; s++)
498
 
        {
499
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
500
 
          ss = (r + s)*(r + s + 1)/2 + s;
501
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
502
 
          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));
503
 
          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));
504
 
          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));
505
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
506
 
        }// end loop over 's'
507
 
      }// end loop over 'r'
508
 
      for (unsigned int r = 0; r < 4; r++)
509
 
      {
510
 
        for (unsigned int s = 0; s < 4 - r; s++)
511
 
        {
512
 
          rr = (r + s)*(r + s + 1)/2 + s;
513
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
514
 
        }// end loop over 's'
515
 
      }// end loop over 'r'
 
360
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
361
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
362
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
363
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
364
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
365
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
366
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
367
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
368
      basisvalues[0] *= std::sqrt(0.5);
 
369
      basisvalues[2] *= std::sqrt(1.0);
 
370
      basisvalues[5] *= std::sqrt(1.5);
 
371
      basisvalues[9] *= std::sqrt(2.0);
 
372
      basisvalues[1] *= std::sqrt(3.0);
 
373
      basisvalues[4] *= std::sqrt(4.5);
 
374
      basisvalues[8] *= std::sqrt(6.0);
 
375
      basisvalues[3] *= std::sqrt(7.5);
 
376
      basisvalues[7] *= std::sqrt(10.0);
 
377
      basisvalues[6] *= std::sqrt(14.0);
516
378
      
517
379
      // Table(s) of coefficients.
518
380
      static const double coefficients0[10] = \
532
394
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
533
395
      
534
396
      // Declare helper variables.
535
 
      unsigned int rr = 0;
536
 
      unsigned int ss = 0;
537
 
      unsigned int tt = 0;
538
 
      double tmp5 = 0.0;
539
 
      double tmp6 = 0.0;
540
 
      double tmp7 = 0.0;
541
397
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
542
398
      double tmp1 = (1.0 - Y)/2.0;
543
399
      double tmp2 = tmp1*tmp1;
545
401
      // Compute basisvalues.
546
402
      basisvalues[0] = 1.0;
547
403
      basisvalues[1] = tmp0;
548
 
      for (unsigned int r = 1; r < 3; r++)
549
 
      {
550
 
        rr = (r + 1)*((r + 1) + 1)/2;
551
 
        ss = r*(r + 1)/2;
552
 
        tt = (r - 1)*((r - 1) + 1)/2;
553
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
554
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
555
 
      }// end loop over 'r'
556
 
      for (unsigned int r = 0; r < 3; r++)
557
 
      {
558
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
559
 
        ss = r*(r + 1)/2;
560
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
561
 
      }// end loop over 'r'
562
 
      for (unsigned int r = 0; r < 2; r++)
563
 
      {
564
 
        for (unsigned int s = 1; s < 3 - r; s++)
565
 
        {
566
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
567
 
          ss = (r + s)*(r + s + 1)/2 + s;
568
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
569
 
          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));
570
 
          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));
571
 
          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));
572
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
573
 
        }// end loop over 's'
574
 
      }// end loop over 'r'
575
 
      for (unsigned int r = 0; r < 4; r++)
576
 
      {
577
 
        for (unsigned int s = 0; s < 4 - r; s++)
578
 
        {
579
 
          rr = (r + s)*(r + s + 1)/2 + s;
580
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
581
 
        }// end loop over 's'
582
 
      }// end loop over 'r'
 
404
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
405
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
406
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
407
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
408
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
409
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
410
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
411
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
412
      basisvalues[0] *= std::sqrt(0.5);
 
413
      basisvalues[2] *= std::sqrt(1.0);
 
414
      basisvalues[5] *= std::sqrt(1.5);
 
415
      basisvalues[9] *= std::sqrt(2.0);
 
416
      basisvalues[1] *= std::sqrt(3.0);
 
417
      basisvalues[4] *= std::sqrt(4.5);
 
418
      basisvalues[8] *= std::sqrt(6.0);
 
419
      basisvalues[3] *= std::sqrt(7.5);
 
420
      basisvalues[7] *= std::sqrt(10.0);
 
421
      basisvalues[6] *= std::sqrt(14.0);
583
422
      
584
423
      // Table(s) of coefficients.
585
424
      static const double coefficients0[10] = \
599
438
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
600
439
      
601
440
      // Declare helper variables.
602
 
      unsigned int rr = 0;
603
 
      unsigned int ss = 0;
604
 
      unsigned int tt = 0;
605
 
      double tmp5 = 0.0;
606
 
      double tmp6 = 0.0;
607
 
      double tmp7 = 0.0;
608
441
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
609
442
      double tmp1 = (1.0 - Y)/2.0;
610
443
      double tmp2 = tmp1*tmp1;
612
445
      // Compute basisvalues.
613
446
      basisvalues[0] = 1.0;
614
447
      basisvalues[1] = tmp0;
615
 
      for (unsigned int r = 1; r < 3; r++)
616
 
      {
617
 
        rr = (r + 1)*((r + 1) + 1)/2;
618
 
        ss = r*(r + 1)/2;
619
 
        tt = (r - 1)*((r - 1) + 1)/2;
620
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
621
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
622
 
      }// end loop over 'r'
623
 
      for (unsigned int r = 0; r < 3; r++)
624
 
      {
625
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
626
 
        ss = r*(r + 1)/2;
627
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
628
 
      }// end loop over 'r'
629
 
      for (unsigned int r = 0; r < 2; r++)
630
 
      {
631
 
        for (unsigned int s = 1; s < 3 - r; s++)
632
 
        {
633
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
634
 
          ss = (r + s)*(r + s + 1)/2 + s;
635
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
636
 
          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));
637
 
          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));
638
 
          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));
639
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
640
 
        }// end loop over 's'
641
 
      }// end loop over 'r'
642
 
      for (unsigned int r = 0; r < 4; r++)
643
 
      {
644
 
        for (unsigned int s = 0; s < 4 - r; s++)
645
 
        {
646
 
          rr = (r + s)*(r + s + 1)/2 + s;
647
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
648
 
        }// end loop over 's'
649
 
      }// end loop over 'r'
 
448
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
449
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
450
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
451
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
452
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
453
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
454
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
455
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
456
      basisvalues[0] *= std::sqrt(0.5);
 
457
      basisvalues[2] *= std::sqrt(1.0);
 
458
      basisvalues[5] *= std::sqrt(1.5);
 
459
      basisvalues[9] *= std::sqrt(2.0);
 
460
      basisvalues[1] *= std::sqrt(3.0);
 
461
      basisvalues[4] *= std::sqrt(4.5);
 
462
      basisvalues[8] *= std::sqrt(6.0);
 
463
      basisvalues[3] *= std::sqrt(7.5);
 
464
      basisvalues[7] *= std::sqrt(10.0);
 
465
      basisvalues[6] *= std::sqrt(14.0);
650
466
      
651
467
      // Table(s) of coefficients.
652
468
      static const double coefficients0[10] = \
666
482
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
667
483
      
668
484
      // Declare helper variables.
669
 
      unsigned int rr = 0;
670
 
      unsigned int ss = 0;
671
 
      unsigned int tt = 0;
672
 
      double tmp5 = 0.0;
673
 
      double tmp6 = 0.0;
674
 
      double tmp7 = 0.0;
675
485
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
676
486
      double tmp1 = (1.0 - Y)/2.0;
677
487
      double tmp2 = tmp1*tmp1;
679
489
      // Compute basisvalues.
680
490
      basisvalues[0] = 1.0;
681
491
      basisvalues[1] = tmp0;
682
 
      for (unsigned int r = 1; r < 3; r++)
683
 
      {
684
 
        rr = (r + 1)*((r + 1) + 1)/2;
685
 
        ss = r*(r + 1)/2;
686
 
        tt = (r - 1)*((r - 1) + 1)/2;
687
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
688
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
689
 
      }// end loop over 'r'
690
 
      for (unsigned int r = 0; r < 3; r++)
691
 
      {
692
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
693
 
        ss = r*(r + 1)/2;
694
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
695
 
      }// end loop over 'r'
696
 
      for (unsigned int r = 0; r < 2; r++)
697
 
      {
698
 
        for (unsigned int s = 1; s < 3 - r; s++)
699
 
        {
700
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
701
 
          ss = (r + s)*(r + s + 1)/2 + s;
702
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
703
 
          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));
704
 
          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));
705
 
          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));
706
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
707
 
        }// end loop over 's'
708
 
      }// end loop over 'r'
709
 
      for (unsigned int r = 0; r < 4; r++)
710
 
      {
711
 
        for (unsigned int s = 0; s < 4 - r; s++)
712
 
        {
713
 
          rr = (r + s)*(r + s + 1)/2 + s;
714
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
715
 
        }// end loop over 's'
716
 
      }// end loop over 'r'
 
492
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
493
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
494
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
495
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
496
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
497
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
498
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
499
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
500
      basisvalues[0] *= std::sqrt(0.5);
 
501
      basisvalues[2] *= std::sqrt(1.0);
 
502
      basisvalues[5] *= std::sqrt(1.5);
 
503
      basisvalues[9] *= std::sqrt(2.0);
 
504
      basisvalues[1] *= std::sqrt(3.0);
 
505
      basisvalues[4] *= std::sqrt(4.5);
 
506
      basisvalues[8] *= std::sqrt(6.0);
 
507
      basisvalues[3] *= std::sqrt(7.5);
 
508
      basisvalues[7] *= std::sqrt(10.0);
 
509
      basisvalues[6] *= std::sqrt(14.0);
717
510
      
718
511
      // Table(s) of coefficients.
719
512
      static const double coefficients0[10] = \
733
526
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
734
527
      
735
528
      // Declare helper variables.
736
 
      unsigned int rr = 0;
737
 
      unsigned int ss = 0;
738
 
      unsigned int tt = 0;
739
 
      double tmp5 = 0.0;
740
 
      double tmp6 = 0.0;
741
 
      double tmp7 = 0.0;
742
529
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
743
530
      double tmp1 = (1.0 - Y)/2.0;
744
531
      double tmp2 = tmp1*tmp1;
746
533
      // Compute basisvalues.
747
534
      basisvalues[0] = 1.0;
748
535
      basisvalues[1] = tmp0;
749
 
      for (unsigned int r = 1; r < 3; r++)
750
 
      {
751
 
        rr = (r + 1)*((r + 1) + 1)/2;
752
 
        ss = r*(r + 1)/2;
753
 
        tt = (r - 1)*((r - 1) + 1)/2;
754
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
755
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
756
 
      }// end loop over 'r'
757
 
      for (unsigned int r = 0; r < 3; r++)
758
 
      {
759
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
760
 
        ss = r*(r + 1)/2;
761
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
762
 
      }// end loop over 'r'
763
 
      for (unsigned int r = 0; r < 2; r++)
764
 
      {
765
 
        for (unsigned int s = 1; s < 3 - r; s++)
766
 
        {
767
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
768
 
          ss = (r + s)*(r + s + 1)/2 + s;
769
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
770
 
          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));
771
 
          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));
772
 
          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));
773
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
774
 
        }// end loop over 's'
775
 
      }// end loop over 'r'
776
 
      for (unsigned int r = 0; r < 4; r++)
777
 
      {
778
 
        for (unsigned int s = 0; s < 4 - r; s++)
779
 
        {
780
 
          rr = (r + s)*(r + s + 1)/2 + s;
781
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
782
 
        }// end loop over 's'
783
 
      }// end loop over 'r'
 
536
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
537
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
538
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
539
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
540
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
541
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
542
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
543
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
544
      basisvalues[0] *= std::sqrt(0.5);
 
545
      basisvalues[2] *= std::sqrt(1.0);
 
546
      basisvalues[5] *= std::sqrt(1.5);
 
547
      basisvalues[9] *= std::sqrt(2.0);
 
548
      basisvalues[1] *= std::sqrt(3.0);
 
549
      basisvalues[4] *= std::sqrt(4.5);
 
550
      basisvalues[8] *= std::sqrt(6.0);
 
551
      basisvalues[3] *= std::sqrt(7.5);
 
552
      basisvalues[7] *= std::sqrt(10.0);
 
553
      basisvalues[6] *= std::sqrt(14.0);
784
554
      
785
555
      // Table(s) of coefficients.
786
556
      static const double coefficients0[10] = \
919
689
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
920
690
      
921
691
      // Declare helper variables.
922
 
      unsigned int rr = 0;
923
 
      unsigned int ss = 0;
924
 
      unsigned int tt = 0;
925
 
      double tmp5 = 0.0;
926
 
      double tmp6 = 0.0;
927
 
      double tmp7 = 0.0;
928
692
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
929
693
      double tmp1 = (1.0 - Y)/2.0;
930
694
      double tmp2 = tmp1*tmp1;
932
696
      // Compute basisvalues.
933
697
      basisvalues[0] = 1.0;
934
698
      basisvalues[1] = tmp0;
935
 
      for (unsigned int r = 1; r < 3; r++)
936
 
      {
937
 
        rr = (r + 1)*((r + 1) + 1)/2;
938
 
        ss = r*(r + 1)/2;
939
 
        tt = (r - 1)*((r - 1) + 1)/2;
940
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
941
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
942
 
      }// end loop over 'r'
943
 
      for (unsigned int r = 0; r < 3; r++)
944
 
      {
945
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
946
 
        ss = r*(r + 1)/2;
947
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
948
 
      }// end loop over 'r'
949
 
      for (unsigned int r = 0; r < 2; r++)
950
 
      {
951
 
        for (unsigned int s = 1; s < 3 - r; s++)
952
 
        {
953
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
954
 
          ss = (r + s)*(r + s + 1)/2 + s;
955
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
956
 
          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));
957
 
          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));
958
 
          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));
959
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
960
 
        }// end loop over 's'
961
 
      }// end loop over 'r'
962
 
      for (unsigned int r = 0; r < 4; r++)
963
 
      {
964
 
        for (unsigned int s = 0; s < 4 - r; s++)
965
 
        {
966
 
          rr = (r + s)*(r + s + 1)/2 + s;
967
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
968
 
        }// end loop over 's'
969
 
      }// end loop over 'r'
 
699
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
700
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
701
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
702
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
703
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
704
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
705
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
706
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
707
      basisvalues[0] *= std::sqrt(0.5);
 
708
      basisvalues[2] *= std::sqrt(1.0);
 
709
      basisvalues[5] *= std::sqrt(1.5);
 
710
      basisvalues[9] *= std::sqrt(2.0);
 
711
      basisvalues[1] *= std::sqrt(3.0);
 
712
      basisvalues[4] *= std::sqrt(4.5);
 
713
      basisvalues[8] *= std::sqrt(6.0);
 
714
      basisvalues[3] *= std::sqrt(7.5);
 
715
      basisvalues[7] *= std::sqrt(10.0);
 
716
      basisvalues[6] *= std::sqrt(14.0);
970
717
      
971
718
      // Table(s) of coefficients.
972
719
      static const double coefficients0[10] = \
1132
879
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1133
880
      
1134
881
      // Declare helper variables.
1135
 
      unsigned int rr = 0;
1136
 
      unsigned int ss = 0;
1137
 
      unsigned int tt = 0;
1138
 
      double tmp5 = 0.0;
1139
 
      double tmp6 = 0.0;
1140
 
      double tmp7 = 0.0;
1141
882
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1142
883
      double tmp1 = (1.0 - Y)/2.0;
1143
884
      double tmp2 = tmp1*tmp1;
1145
886
      // Compute basisvalues.
1146
887
      basisvalues[0] = 1.0;
1147
888
      basisvalues[1] = tmp0;
1148
 
      for (unsigned int r = 1; r < 3; r++)
1149
 
      {
1150
 
        rr = (r + 1)*((r + 1) + 1)/2;
1151
 
        ss = r*(r + 1)/2;
1152
 
        tt = (r - 1)*((r - 1) + 1)/2;
1153
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1154
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1155
 
      }// end loop over 'r'
1156
 
      for (unsigned int r = 0; r < 3; r++)
1157
 
      {
1158
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1159
 
        ss = r*(r + 1)/2;
1160
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1161
 
      }// end loop over 'r'
1162
 
      for (unsigned int r = 0; r < 2; r++)
1163
 
      {
1164
 
        for (unsigned int s = 1; s < 3 - r; s++)
1165
 
        {
1166
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1167
 
          ss = (r + s)*(r + s + 1)/2 + s;
1168
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1169
 
          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));
1170
 
          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));
1171
 
          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));
1172
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1173
 
        }// end loop over 's'
1174
 
      }// end loop over 'r'
1175
 
      for (unsigned int r = 0; r < 4; r++)
1176
 
      {
1177
 
        for (unsigned int s = 0; s < 4 - r; s++)
1178
 
        {
1179
 
          rr = (r + s)*(r + s + 1)/2 + s;
1180
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1181
 
        }// end loop over 's'
1182
 
      }// end loop over 'r'
 
889
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
890
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
891
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
892
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
893
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
894
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
895
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
896
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
897
      basisvalues[0] *= std::sqrt(0.5);
 
898
      basisvalues[2] *= std::sqrt(1.0);
 
899
      basisvalues[5] *= std::sqrt(1.5);
 
900
      basisvalues[9] *= std::sqrt(2.0);
 
901
      basisvalues[1] *= std::sqrt(3.0);
 
902
      basisvalues[4] *= std::sqrt(4.5);
 
903
      basisvalues[8] *= std::sqrt(6.0);
 
904
      basisvalues[3] *= std::sqrt(7.5);
 
905
      basisvalues[7] *= std::sqrt(10.0);
 
906
      basisvalues[6] *= std::sqrt(14.0);
1183
907
      
1184
908
      // Table(s) of coefficients.
1185
909
      static const double coefficients0[10] = \
1345
1069
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1346
1070
      
1347
1071
      // Declare helper variables.
1348
 
      unsigned int rr = 0;
1349
 
      unsigned int ss = 0;
1350
 
      unsigned int tt = 0;
1351
 
      double tmp5 = 0.0;
1352
 
      double tmp6 = 0.0;
1353
 
      double tmp7 = 0.0;
1354
1072
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1355
1073
      double tmp1 = (1.0 - Y)/2.0;
1356
1074
      double tmp2 = tmp1*tmp1;
1358
1076
      // Compute basisvalues.
1359
1077
      basisvalues[0] = 1.0;
1360
1078
      basisvalues[1] = tmp0;
1361
 
      for (unsigned int r = 1; r < 3; r++)
1362
 
      {
1363
 
        rr = (r + 1)*((r + 1) + 1)/2;
1364
 
        ss = r*(r + 1)/2;
1365
 
        tt = (r - 1)*((r - 1) + 1)/2;
1366
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1367
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1368
 
      }// end loop over 'r'
1369
 
      for (unsigned int r = 0; r < 3; r++)
1370
 
      {
1371
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1372
 
        ss = r*(r + 1)/2;
1373
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1374
 
      }// end loop over 'r'
1375
 
      for (unsigned int r = 0; r < 2; r++)
1376
 
      {
1377
 
        for (unsigned int s = 1; s < 3 - r; s++)
1378
 
        {
1379
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1380
 
          ss = (r + s)*(r + s + 1)/2 + s;
1381
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1382
 
          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));
1383
 
          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));
1384
 
          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));
1385
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1386
 
        }// end loop over 's'
1387
 
      }// end loop over 'r'
1388
 
      for (unsigned int r = 0; r < 4; r++)
1389
 
      {
1390
 
        for (unsigned int s = 0; s < 4 - r; s++)
1391
 
        {
1392
 
          rr = (r + s)*(r + s + 1)/2 + s;
1393
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1394
 
        }// end loop over 's'
1395
 
      }// end loop over 'r'
 
1079
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1080
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
1081
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1082
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1083
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
1084
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1085
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
1086
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
1087
      basisvalues[0] *= std::sqrt(0.5);
 
1088
      basisvalues[2] *= std::sqrt(1.0);
 
1089
      basisvalues[5] *= std::sqrt(1.5);
 
1090
      basisvalues[9] *= std::sqrt(2.0);
 
1091
      basisvalues[1] *= std::sqrt(3.0);
 
1092
      basisvalues[4] *= std::sqrt(4.5);
 
1093
      basisvalues[8] *= std::sqrt(6.0);
 
1094
      basisvalues[3] *= std::sqrt(7.5);
 
1095
      basisvalues[7] *= std::sqrt(10.0);
 
1096
      basisvalues[6] *= std::sqrt(14.0);
1396
1097
      
1397
1098
      // Table(s) of coefficients.
1398
1099
      static const double coefficients0[10] = \
1558
1259
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1559
1260
      
1560
1261
      // Declare helper variables.
1561
 
      unsigned int rr = 0;
1562
 
      unsigned int ss = 0;
1563
 
      unsigned int tt = 0;
1564
 
      double tmp5 = 0.0;
1565
 
      double tmp6 = 0.0;
1566
 
      double tmp7 = 0.0;
1567
1262
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1568
1263
      double tmp1 = (1.0 - Y)/2.0;
1569
1264
      double tmp2 = tmp1*tmp1;
1571
1266
      // Compute basisvalues.
1572
1267
      basisvalues[0] = 1.0;
1573
1268
      basisvalues[1] = tmp0;
1574
 
      for (unsigned int r = 1; r < 3; r++)
1575
 
      {
1576
 
        rr = (r + 1)*((r + 1) + 1)/2;
1577
 
        ss = r*(r + 1)/2;
1578
 
        tt = (r - 1)*((r - 1) + 1)/2;
1579
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1580
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1581
 
      }// end loop over 'r'
1582
 
      for (unsigned int r = 0; r < 3; r++)
1583
 
      {
1584
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1585
 
        ss = r*(r + 1)/2;
1586
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1587
 
      }// end loop over 'r'
1588
 
      for (unsigned int r = 0; r < 2; r++)
1589
 
      {
1590
 
        for (unsigned int s = 1; s < 3 - r; s++)
1591
 
        {
1592
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1593
 
          ss = (r + s)*(r + s + 1)/2 + s;
1594
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1595
 
          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));
1596
 
          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));
1597
 
          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));
1598
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1599
 
        }// end loop over 's'
1600
 
      }// end loop over 'r'
1601
 
      for (unsigned int r = 0; r < 4; r++)
1602
 
      {
1603
 
        for (unsigned int s = 0; s < 4 - r; s++)
1604
 
        {
1605
 
          rr = (r + s)*(r + s + 1)/2 + s;
1606
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1607
 
        }// end loop over 's'
1608
 
      }// end loop over 'r'
 
1269
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1270
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
1271
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1272
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1273
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
1274
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1275
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
1276
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
1277
      basisvalues[0] *= std::sqrt(0.5);
 
1278
      basisvalues[2] *= std::sqrt(1.0);
 
1279
      basisvalues[5] *= std::sqrt(1.5);
 
1280
      basisvalues[9] *= std::sqrt(2.0);
 
1281
      basisvalues[1] *= std::sqrt(3.0);
 
1282
      basisvalues[4] *= std::sqrt(4.5);
 
1283
      basisvalues[8] *= std::sqrt(6.0);
 
1284
      basisvalues[3] *= std::sqrt(7.5);
 
1285
      basisvalues[7] *= std::sqrt(10.0);
 
1286
      basisvalues[6] *= std::sqrt(14.0);
1609
1287
      
1610
1288
      // Table(s) of coefficients.
1611
1289
      static const double coefficients0[10] = \
1771
1449
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1772
1450
      
1773
1451
      // Declare helper variables.
1774
 
      unsigned int rr = 0;
1775
 
      unsigned int ss = 0;
1776
 
      unsigned int tt = 0;
1777
 
      double tmp5 = 0.0;
1778
 
      double tmp6 = 0.0;
1779
 
      double tmp7 = 0.0;
1780
1452
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1781
1453
      double tmp1 = (1.0 - Y)/2.0;
1782
1454
      double tmp2 = tmp1*tmp1;
1784
1456
      // Compute basisvalues.
1785
1457
      basisvalues[0] = 1.0;
1786
1458
      basisvalues[1] = tmp0;
1787
 
      for (unsigned int r = 1; r < 3; r++)
1788
 
      {
1789
 
        rr = (r + 1)*((r + 1) + 1)/2;
1790
 
        ss = r*(r + 1)/2;
1791
 
        tt = (r - 1)*((r - 1) + 1)/2;
1792
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1793
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1794
 
      }// end loop over 'r'
1795
 
      for (unsigned int r = 0; r < 3; r++)
1796
 
      {
1797
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1798
 
        ss = r*(r + 1)/2;
1799
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1800
 
      }// end loop over 'r'
1801
 
      for (unsigned int r = 0; r < 2; r++)
1802
 
      {
1803
 
        for (unsigned int s = 1; s < 3 - r; s++)
1804
 
        {
1805
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1806
 
          ss = (r + s)*(r + s + 1)/2 + s;
1807
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1808
 
          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));
1809
 
          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));
1810
 
          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));
1811
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1812
 
        }// end loop over 's'
1813
 
      }// end loop over 'r'
1814
 
      for (unsigned int r = 0; r < 4; r++)
1815
 
      {
1816
 
        for (unsigned int s = 0; s < 4 - r; s++)
1817
 
        {
1818
 
          rr = (r + s)*(r + s + 1)/2 + s;
1819
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1820
 
        }// end loop over 's'
1821
 
      }// end loop over 'r'
 
1459
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1460
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
1461
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1462
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1463
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
1464
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1465
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
1466
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
1467
      basisvalues[0] *= std::sqrt(0.5);
 
1468
      basisvalues[2] *= std::sqrt(1.0);
 
1469
      basisvalues[5] *= std::sqrt(1.5);
 
1470
      basisvalues[9] *= std::sqrt(2.0);
 
1471
      basisvalues[1] *= std::sqrt(3.0);
 
1472
      basisvalues[4] *= std::sqrt(4.5);
 
1473
      basisvalues[8] *= std::sqrt(6.0);
 
1474
      basisvalues[3] *= std::sqrt(7.5);
 
1475
      basisvalues[7] *= std::sqrt(10.0);
 
1476
      basisvalues[6] *= std::sqrt(14.0);
1822
1477
      
1823
1478
      // Table(s) of coefficients.
1824
1479
      static const double coefficients0[10] = \
1984
1639
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1985
1640
      
1986
1641
      // Declare helper variables.
1987
 
      unsigned int rr = 0;
1988
 
      unsigned int ss = 0;
1989
 
      unsigned int tt = 0;
1990
 
      double tmp5 = 0.0;
1991
 
      double tmp6 = 0.0;
1992
 
      double tmp7 = 0.0;
1993
1642
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1994
1643
      double tmp1 = (1.0 - Y)/2.0;
1995
1644
      double tmp2 = tmp1*tmp1;
1997
1646
      // Compute basisvalues.
1998
1647
      basisvalues[0] = 1.0;
1999
1648
      basisvalues[1] = tmp0;
2000
 
      for (unsigned int r = 1; r < 3; r++)
2001
 
      {
2002
 
        rr = (r + 1)*((r + 1) + 1)/2;
2003
 
        ss = r*(r + 1)/2;
2004
 
        tt = (r - 1)*((r - 1) + 1)/2;
2005
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2006
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2007
 
      }// end loop over 'r'
2008
 
      for (unsigned int r = 0; r < 3; r++)
2009
 
      {
2010
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2011
 
        ss = r*(r + 1)/2;
2012
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2013
 
      }// end loop over 'r'
2014
 
      for (unsigned int r = 0; r < 2; r++)
2015
 
      {
2016
 
        for (unsigned int s = 1; s < 3 - r; s++)
2017
 
        {
2018
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2019
 
          ss = (r + s)*(r + s + 1)/2 + s;
2020
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2021
 
          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));
2022
 
          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));
2023
 
          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));
2024
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2025
 
        }// end loop over 's'
2026
 
      }// end loop over 'r'
2027
 
      for (unsigned int r = 0; r < 4; r++)
2028
 
      {
2029
 
        for (unsigned int s = 0; s < 4 - r; s++)
2030
 
        {
2031
 
          rr = (r + s)*(r + s + 1)/2 + s;
2032
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2033
 
        }// end loop over 's'
2034
 
      }// end loop over 'r'
 
1649
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1650
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
1651
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1652
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1653
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
1654
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1655
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
1656
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
1657
      basisvalues[0] *= std::sqrt(0.5);
 
1658
      basisvalues[2] *= std::sqrt(1.0);
 
1659
      basisvalues[5] *= std::sqrt(1.5);
 
1660
      basisvalues[9] *= std::sqrt(2.0);
 
1661
      basisvalues[1] *= std::sqrt(3.0);
 
1662
      basisvalues[4] *= std::sqrt(4.5);
 
1663
      basisvalues[8] *= std::sqrt(6.0);
 
1664
      basisvalues[3] *= std::sqrt(7.5);
 
1665
      basisvalues[7] *= std::sqrt(10.0);
 
1666
      basisvalues[6] *= std::sqrt(14.0);
2035
1667
      
2036
1668
      // Table(s) of coefficients.
2037
1669
      static const double coefficients0[10] = \
2197
1829
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2198
1830
      
2199
1831
      // Declare helper variables.
2200
 
      unsigned int rr = 0;
2201
 
      unsigned int ss = 0;
2202
 
      unsigned int tt = 0;
2203
 
      double tmp5 = 0.0;
2204
 
      double tmp6 = 0.0;
2205
 
      double tmp7 = 0.0;
2206
1832
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2207
1833
      double tmp1 = (1.0 - Y)/2.0;
2208
1834
      double tmp2 = tmp1*tmp1;
2210
1836
      // Compute basisvalues.
2211
1837
      basisvalues[0] = 1.0;
2212
1838
      basisvalues[1] = tmp0;
2213
 
      for (unsigned int r = 1; r < 3; r++)
2214
 
      {
2215
 
        rr = (r + 1)*((r + 1) + 1)/2;
2216
 
        ss = r*(r + 1)/2;
2217
 
        tt = (r - 1)*((r - 1) + 1)/2;
2218
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2219
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2220
 
      }// end loop over 'r'
2221
 
      for (unsigned int r = 0; r < 3; r++)
2222
 
      {
2223
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2224
 
        ss = r*(r + 1)/2;
2225
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2226
 
      }// end loop over 'r'
2227
 
      for (unsigned int r = 0; r < 2; r++)
2228
 
      {
2229
 
        for (unsigned int s = 1; s < 3 - r; s++)
2230
 
        {
2231
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2232
 
          ss = (r + s)*(r + s + 1)/2 + s;
2233
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2234
 
          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));
2235
 
          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));
2236
 
          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));
2237
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2238
 
        }// end loop over 's'
2239
 
      }// end loop over 'r'
2240
 
      for (unsigned int r = 0; r < 4; r++)
2241
 
      {
2242
 
        for (unsigned int s = 0; s < 4 - r; s++)
2243
 
        {
2244
 
          rr = (r + s)*(r + s + 1)/2 + s;
2245
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2246
 
        }// end loop over 's'
2247
 
      }// end loop over 'r'
 
1839
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1840
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
1841
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1842
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1843
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
1844
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1845
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
1846
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
1847
      basisvalues[0] *= std::sqrt(0.5);
 
1848
      basisvalues[2] *= std::sqrt(1.0);
 
1849
      basisvalues[5] *= std::sqrt(1.5);
 
1850
      basisvalues[9] *= std::sqrt(2.0);
 
1851
      basisvalues[1] *= std::sqrt(3.0);
 
1852
      basisvalues[4] *= std::sqrt(4.5);
 
1853
      basisvalues[8] *= std::sqrt(6.0);
 
1854
      basisvalues[3] *= std::sqrt(7.5);
 
1855
      basisvalues[7] *= std::sqrt(10.0);
 
1856
      basisvalues[6] *= std::sqrt(14.0);
2248
1857
      
2249
1858
      // Table(s) of coefficients.
2250
1859
      static const double coefficients0[10] = \
2410
2019
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2411
2020
      
2412
2021
      // Declare helper variables.
2413
 
      unsigned int rr = 0;
2414
 
      unsigned int ss = 0;
2415
 
      unsigned int tt = 0;
2416
 
      double tmp5 = 0.0;
2417
 
      double tmp6 = 0.0;
2418
 
      double tmp7 = 0.0;
2419
2022
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2420
2023
      double tmp1 = (1.0 - Y)/2.0;
2421
2024
      double tmp2 = tmp1*tmp1;
2423
2026
      // Compute basisvalues.
2424
2027
      basisvalues[0] = 1.0;
2425
2028
      basisvalues[1] = tmp0;
2426
 
      for (unsigned int r = 1; r < 3; r++)
2427
 
      {
2428
 
        rr = (r + 1)*((r + 1) + 1)/2;
2429
 
        ss = r*(r + 1)/2;
2430
 
        tt = (r - 1)*((r - 1) + 1)/2;
2431
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2432
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2433
 
      }// end loop over 'r'
2434
 
      for (unsigned int r = 0; r < 3; r++)
2435
 
      {
2436
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2437
 
        ss = r*(r + 1)/2;
2438
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2439
 
      }// end loop over 'r'
2440
 
      for (unsigned int r = 0; r < 2; r++)
2441
 
      {
2442
 
        for (unsigned int s = 1; s < 3 - r; s++)
2443
 
        {
2444
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2445
 
          ss = (r + s)*(r + s + 1)/2 + s;
2446
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2447
 
          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));
2448
 
          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));
2449
 
          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));
2450
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2451
 
        }// end loop over 's'
2452
 
      }// end loop over 'r'
2453
 
      for (unsigned int r = 0; r < 4; r++)
2454
 
      {
2455
 
        for (unsigned int s = 0; s < 4 - r; s++)
2456
 
        {
2457
 
          rr = (r + s)*(r + s + 1)/2 + s;
2458
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2459
 
        }// end loop over 's'
2460
 
      }// end loop over 'r'
 
2029
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2030
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2031
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2032
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2033
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2034
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2035
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2036
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2037
      basisvalues[0] *= std::sqrt(0.5);
 
2038
      basisvalues[2] *= std::sqrt(1.0);
 
2039
      basisvalues[5] *= std::sqrt(1.5);
 
2040
      basisvalues[9] *= std::sqrt(2.0);
 
2041
      basisvalues[1] *= std::sqrt(3.0);
 
2042
      basisvalues[4] *= std::sqrt(4.5);
 
2043
      basisvalues[8] *= std::sqrt(6.0);
 
2044
      basisvalues[3] *= std::sqrt(7.5);
 
2045
      basisvalues[7] *= std::sqrt(10.0);
 
2046
      basisvalues[6] *= std::sqrt(14.0);
2461
2047
      
2462
2048
      // Table(s) of coefficients.
2463
2049
      static const double coefficients0[10] = \
2623
2209
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2624
2210
      
2625
2211
      // Declare helper variables.
2626
 
      unsigned int rr = 0;
2627
 
      unsigned int ss = 0;
2628
 
      unsigned int tt = 0;
2629
 
      double tmp5 = 0.0;
2630
 
      double tmp6 = 0.0;
2631
 
      double tmp7 = 0.0;
2632
2212
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2633
2213
      double tmp1 = (1.0 - Y)/2.0;
2634
2214
      double tmp2 = tmp1*tmp1;
2636
2216
      // Compute basisvalues.
2637
2217
      basisvalues[0] = 1.0;
2638
2218
      basisvalues[1] = tmp0;
2639
 
      for (unsigned int r = 1; r < 3; r++)
2640
 
      {
2641
 
        rr = (r + 1)*((r + 1) + 1)/2;
2642
 
        ss = r*(r + 1)/2;
2643
 
        tt = (r - 1)*((r - 1) + 1)/2;
2644
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2645
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2646
 
      }// end loop over 'r'
2647
 
      for (unsigned int r = 0; r < 3; r++)
2648
 
      {
2649
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2650
 
        ss = r*(r + 1)/2;
2651
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2652
 
      }// end loop over 'r'
2653
 
      for (unsigned int r = 0; r < 2; r++)
2654
 
      {
2655
 
        for (unsigned int s = 1; s < 3 - r; s++)
2656
 
        {
2657
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2658
 
          ss = (r + s)*(r + s + 1)/2 + s;
2659
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2660
 
          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));
2661
 
          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));
2662
 
          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));
2663
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2664
 
        }// end loop over 's'
2665
 
      }// end loop over 'r'
2666
 
      for (unsigned int r = 0; r < 4; r++)
2667
 
      {
2668
 
        for (unsigned int s = 0; s < 4 - r; s++)
2669
 
        {
2670
 
          rr = (r + s)*(r + s + 1)/2 + s;
2671
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2672
 
        }// end loop over 's'
2673
 
      }// end loop over 'r'
 
2219
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2220
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2221
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2222
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2223
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2224
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2225
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2226
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2227
      basisvalues[0] *= std::sqrt(0.5);
 
2228
      basisvalues[2] *= std::sqrt(1.0);
 
2229
      basisvalues[5] *= std::sqrt(1.5);
 
2230
      basisvalues[9] *= std::sqrt(2.0);
 
2231
      basisvalues[1] *= std::sqrt(3.0);
 
2232
      basisvalues[4] *= std::sqrt(4.5);
 
2233
      basisvalues[8] *= std::sqrt(6.0);
 
2234
      basisvalues[3] *= std::sqrt(7.5);
 
2235
      basisvalues[7] *= std::sqrt(10.0);
 
2236
      basisvalues[6] *= std::sqrt(14.0);
2674
2237
      
2675
2238
      // Table(s) of coefficients.
2676
2239
      static const double coefficients0[10] = \
2836
2399
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2837
2400
      
2838
2401
      // Declare helper variables.
2839
 
      unsigned int rr = 0;
2840
 
      unsigned int ss = 0;
2841
 
      unsigned int tt = 0;
2842
 
      double tmp5 = 0.0;
2843
 
      double tmp6 = 0.0;
2844
 
      double tmp7 = 0.0;
2845
2402
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2846
2403
      double tmp1 = (1.0 - Y)/2.0;
2847
2404
      double tmp2 = tmp1*tmp1;
2849
2406
      // Compute basisvalues.
2850
2407
      basisvalues[0] = 1.0;
2851
2408
      basisvalues[1] = tmp0;
2852
 
      for (unsigned int r = 1; r < 3; r++)
2853
 
      {
2854
 
        rr = (r + 1)*((r + 1) + 1)/2;
2855
 
        ss = r*(r + 1)/2;
2856
 
        tt = (r - 1)*((r - 1) + 1)/2;
2857
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2858
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2859
 
      }// end loop over 'r'
2860
 
      for (unsigned int r = 0; r < 3; r++)
2861
 
      {
2862
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2863
 
        ss = r*(r + 1)/2;
2864
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2865
 
      }// end loop over 'r'
2866
 
      for (unsigned int r = 0; r < 2; r++)
2867
 
      {
2868
 
        for (unsigned int s = 1; s < 3 - r; s++)
2869
 
        {
2870
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2871
 
          ss = (r + s)*(r + s + 1)/2 + s;
2872
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2873
 
          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));
2874
 
          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));
2875
 
          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));
2876
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2877
 
        }// end loop over 's'
2878
 
      }// end loop over 'r'
2879
 
      for (unsigned int r = 0; r < 4; r++)
2880
 
      {
2881
 
        for (unsigned int s = 0; s < 4 - r; s++)
2882
 
        {
2883
 
          rr = (r + s)*(r + s + 1)/2 + s;
2884
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2885
 
        }// end loop over 's'
2886
 
      }// end loop over 'r'
 
2409
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2410
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2411
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2412
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2413
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2414
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2415
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2416
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2417
      basisvalues[0] *= std::sqrt(0.5);
 
2418
      basisvalues[2] *= std::sqrt(1.0);
 
2419
      basisvalues[5] *= std::sqrt(1.5);
 
2420
      basisvalues[9] *= std::sqrt(2.0);
 
2421
      basisvalues[1] *= std::sqrt(3.0);
 
2422
      basisvalues[4] *= std::sqrt(4.5);
 
2423
      basisvalues[8] *= std::sqrt(6.0);
 
2424
      basisvalues[3] *= std::sqrt(7.5);
 
2425
      basisvalues[7] *= std::sqrt(10.0);
 
2426
      basisvalues[6] *= std::sqrt(14.0);
2887
2427
      
2888
2428
      // Table(s) of coefficients.
2889
2429
      static const double coefficients0[10] = \
3387
2927
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3388
2928
      
3389
2929
      // Declare helper variables.
3390
 
      unsigned int rr = 0;
3391
 
      unsigned int ss = 0;
3392
 
      unsigned int tt = 0;
3393
 
      double tmp5 = 0.0;
3394
 
      double tmp6 = 0.0;
3395
 
      double tmp7 = 0.0;
3396
2930
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3397
2931
      double tmp1 = (1.0 - Y)/2.0;
3398
2932
      double tmp2 = tmp1*tmp1;
3400
2934
      // Compute basisvalues.
3401
2935
      basisvalues[0] = 1.0;
3402
2936
      basisvalues[1] = tmp0;
3403
 
      for (unsigned int r = 1; r < 3; r++)
3404
 
      {
3405
 
        rr = (r + 1)*((r + 1) + 1)/2;
3406
 
        ss = r*(r + 1)/2;
3407
 
        tt = (r - 1)*((r - 1) + 1)/2;
3408
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3409
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3410
 
      }// end loop over 'r'
3411
 
      for (unsigned int r = 0; r < 3; r++)
3412
 
      {
3413
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3414
 
        ss = r*(r + 1)/2;
3415
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3416
 
      }// end loop over 'r'
3417
 
      for (unsigned int r = 0; r < 2; r++)
3418
 
      {
3419
 
        for (unsigned int s = 1; s < 3 - r; s++)
3420
 
        {
3421
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3422
 
          ss = (r + s)*(r + s + 1)/2 + s;
3423
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3424
 
          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));
3425
 
          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));
3426
 
          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));
3427
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3428
 
        }// end loop over 's'
3429
 
      }// end loop over 'r'
3430
 
      for (unsigned int r = 0; r < 4; r++)
3431
 
      {
3432
 
        for (unsigned int s = 0; s < 4 - r; s++)
3433
 
        {
3434
 
          rr = (r + s)*(r + s + 1)/2 + s;
3435
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3436
 
        }// end loop over 's'
3437
 
      }// end loop over 'r'
 
2937
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2938
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2939
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2940
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2941
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2942
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2943
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2944
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2945
      basisvalues[0] *= std::sqrt(0.5);
 
2946
      basisvalues[2] *= std::sqrt(1.0);
 
2947
      basisvalues[5] *= std::sqrt(1.5);
 
2948
      basisvalues[9] *= std::sqrt(2.0);
 
2949
      basisvalues[1] *= std::sqrt(3.0);
 
2950
      basisvalues[4] *= std::sqrt(4.5);
 
2951
      basisvalues[8] *= std::sqrt(6.0);
 
2952
      basisvalues[3] *= std::sqrt(7.5);
 
2953
      basisvalues[7] *= std::sqrt(10.0);
 
2954
      basisvalues[6] *= std::sqrt(14.0);
3438
2955
      
3439
2956
      // Table(s) of coefficients.
3440
2957
      static const double coefficients0[10] = \
3454
2971
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3455
2972
      
3456
2973
      // Declare helper variables.
3457
 
      unsigned int rr = 0;
3458
 
      unsigned int ss = 0;
3459
 
      unsigned int tt = 0;
3460
 
      double tmp5 = 0.0;
3461
 
      double tmp6 = 0.0;
3462
 
      double tmp7 = 0.0;
3463
2974
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3464
2975
      double tmp1 = (1.0 - Y)/2.0;
3465
2976
      double tmp2 = tmp1*tmp1;
3467
2978
      // Compute basisvalues.
3468
2979
      basisvalues[0] = 1.0;
3469
2980
      basisvalues[1] = tmp0;
3470
 
      for (unsigned int r = 1; r < 3; r++)
3471
 
      {
3472
 
        rr = (r + 1)*((r + 1) + 1)/2;
3473
 
        ss = r*(r + 1)/2;
3474
 
        tt = (r - 1)*((r - 1) + 1)/2;
3475
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3476
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3477
 
      }// end loop over 'r'
3478
 
      for (unsigned int r = 0; r < 3; r++)
3479
 
      {
3480
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3481
 
        ss = r*(r + 1)/2;
3482
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3483
 
      }// end loop over 'r'
3484
 
      for (unsigned int r = 0; r < 2; r++)
3485
 
      {
3486
 
        for (unsigned int s = 1; s < 3 - r; s++)
3487
 
        {
3488
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3489
 
          ss = (r + s)*(r + s + 1)/2 + s;
3490
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3491
 
          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));
3492
 
          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));
3493
 
          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));
3494
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3495
 
        }// end loop over 's'
3496
 
      }// end loop over 'r'
3497
 
      for (unsigned int r = 0; r < 4; r++)
3498
 
      {
3499
 
        for (unsigned int s = 0; s < 4 - r; s++)
3500
 
        {
3501
 
          rr = (r + s)*(r + s + 1)/2 + s;
3502
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3503
 
        }// end loop over 's'
3504
 
      }// end loop over 'r'
 
2981
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2982
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2983
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2984
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2985
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2986
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2987
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2988
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2989
      basisvalues[0] *= std::sqrt(0.5);
 
2990
      basisvalues[2] *= std::sqrt(1.0);
 
2991
      basisvalues[5] *= std::sqrt(1.5);
 
2992
      basisvalues[9] *= std::sqrt(2.0);
 
2993
      basisvalues[1] *= std::sqrt(3.0);
 
2994
      basisvalues[4] *= std::sqrt(4.5);
 
2995
      basisvalues[8] *= std::sqrt(6.0);
 
2996
      basisvalues[3] *= std::sqrt(7.5);
 
2997
      basisvalues[7] *= std::sqrt(10.0);
 
2998
      basisvalues[6] *= std::sqrt(14.0);
3505
2999
      
3506
3000
      // Table(s) of coefficients.
3507
3001
      static const double coefficients0[10] = \
3521
3015
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3522
3016
      
3523
3017
      // Declare helper variables.
3524
 
      unsigned int rr = 0;
3525
 
      unsigned int ss = 0;
3526
 
      unsigned int tt = 0;
3527
 
      double tmp5 = 0.0;
3528
 
      double tmp6 = 0.0;
3529
 
      double tmp7 = 0.0;
3530
3018
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3531
3019
      double tmp1 = (1.0 - Y)/2.0;
3532
3020
      double tmp2 = tmp1*tmp1;
3534
3022
      // Compute basisvalues.
3535
3023
      basisvalues[0] = 1.0;
3536
3024
      basisvalues[1] = tmp0;
3537
 
      for (unsigned int r = 1; r < 3; r++)
3538
 
      {
3539
 
        rr = (r + 1)*((r + 1) + 1)/2;
3540
 
        ss = r*(r + 1)/2;
3541
 
        tt = (r - 1)*((r - 1) + 1)/2;
3542
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3543
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3544
 
      }// end loop over 'r'
3545
 
      for (unsigned int r = 0; r < 3; r++)
3546
 
      {
3547
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3548
 
        ss = r*(r + 1)/2;
3549
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3550
 
      }// end loop over 'r'
3551
 
      for (unsigned int r = 0; r < 2; r++)
3552
 
      {
3553
 
        for (unsigned int s = 1; s < 3 - r; s++)
3554
 
        {
3555
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3556
 
          ss = (r + s)*(r + s + 1)/2 + s;
3557
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3558
 
          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));
3559
 
          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));
3560
 
          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));
3561
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3562
 
        }// end loop over 's'
3563
 
      }// end loop over 'r'
3564
 
      for (unsigned int r = 0; r < 4; r++)
3565
 
      {
3566
 
        for (unsigned int s = 0; s < 4 - r; s++)
3567
 
        {
3568
 
          rr = (r + s)*(r + s + 1)/2 + s;
3569
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3570
 
        }// end loop over 's'
3571
 
      }// end loop over 'r'
 
3025
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3026
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3027
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3028
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3029
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3030
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3031
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3032
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3033
      basisvalues[0] *= std::sqrt(0.5);
 
3034
      basisvalues[2] *= std::sqrt(1.0);
 
3035
      basisvalues[5] *= std::sqrt(1.5);
 
3036
      basisvalues[9] *= std::sqrt(2.0);
 
3037
      basisvalues[1] *= std::sqrt(3.0);
 
3038
      basisvalues[4] *= std::sqrt(4.5);
 
3039
      basisvalues[8] *= std::sqrt(6.0);
 
3040
      basisvalues[3] *= std::sqrt(7.5);
 
3041
      basisvalues[7] *= std::sqrt(10.0);
 
3042
      basisvalues[6] *= std::sqrt(14.0);
3572
3043
      
3573
3044
      // Table(s) of coefficients.
3574
3045
      static const double coefficients0[10] = \
3588
3059
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3589
3060
      
3590
3061
      // Declare helper variables.
3591
 
      unsigned int rr = 0;
3592
 
      unsigned int ss = 0;
3593
 
      unsigned int tt = 0;
3594
 
      double tmp5 = 0.0;
3595
 
      double tmp6 = 0.0;
3596
 
      double tmp7 = 0.0;
3597
3062
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3598
3063
      double tmp1 = (1.0 - Y)/2.0;
3599
3064
      double tmp2 = tmp1*tmp1;
3601
3066
      // Compute basisvalues.
3602
3067
      basisvalues[0] = 1.0;
3603
3068
      basisvalues[1] = tmp0;
3604
 
      for (unsigned int r = 1; r < 3; r++)
3605
 
      {
3606
 
        rr = (r + 1)*((r + 1) + 1)/2;
3607
 
        ss = r*(r + 1)/2;
3608
 
        tt = (r - 1)*((r - 1) + 1)/2;
3609
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3610
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3611
 
      }// end loop over 'r'
3612
 
      for (unsigned int r = 0; r < 3; r++)
3613
 
      {
3614
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3615
 
        ss = r*(r + 1)/2;
3616
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3617
 
      }// end loop over 'r'
3618
 
      for (unsigned int r = 0; r < 2; r++)
3619
 
      {
3620
 
        for (unsigned int s = 1; s < 3 - r; s++)
3621
 
        {
3622
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3623
 
          ss = (r + s)*(r + s + 1)/2 + s;
3624
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3625
 
          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));
3626
 
          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));
3627
 
          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));
3628
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3629
 
        }// end loop over 's'
3630
 
      }// end loop over 'r'
3631
 
      for (unsigned int r = 0; r < 4; r++)
3632
 
      {
3633
 
        for (unsigned int s = 0; s < 4 - r; s++)
3634
 
        {
3635
 
          rr = (r + s)*(r + s + 1)/2 + s;
3636
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3637
 
        }// end loop over 's'
3638
 
      }// end loop over 'r'
 
3069
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3070
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3071
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3072
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3073
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3074
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3075
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3076
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3077
      basisvalues[0] *= std::sqrt(0.5);
 
3078
      basisvalues[2] *= std::sqrt(1.0);
 
3079
      basisvalues[5] *= std::sqrt(1.5);
 
3080
      basisvalues[9] *= std::sqrt(2.0);
 
3081
      basisvalues[1] *= std::sqrt(3.0);
 
3082
      basisvalues[4] *= std::sqrt(4.5);
 
3083
      basisvalues[8] *= std::sqrt(6.0);
 
3084
      basisvalues[3] *= std::sqrt(7.5);
 
3085
      basisvalues[7] *= std::sqrt(10.0);
 
3086
      basisvalues[6] *= std::sqrt(14.0);
3639
3087
      
3640
3088
      // Table(s) of coefficients.
3641
3089
      static const double coefficients0[10] = \
3655
3103
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3656
3104
      
3657
3105
      // Declare helper variables.
3658
 
      unsigned int rr = 0;
3659
 
      unsigned int ss = 0;
3660
 
      unsigned int tt = 0;
3661
 
      double tmp5 = 0.0;
3662
 
      double tmp6 = 0.0;
3663
 
      double tmp7 = 0.0;
3664
3106
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3665
3107
      double tmp1 = (1.0 - Y)/2.0;
3666
3108
      double tmp2 = tmp1*tmp1;
3668
3110
      // Compute basisvalues.
3669
3111
      basisvalues[0] = 1.0;
3670
3112
      basisvalues[1] = tmp0;
3671
 
      for (unsigned int r = 1; r < 3; r++)
3672
 
      {
3673
 
        rr = (r + 1)*((r + 1) + 1)/2;
3674
 
        ss = r*(r + 1)/2;
3675
 
        tt = (r - 1)*((r - 1) + 1)/2;
3676
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3677
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3678
 
      }// end loop over 'r'
3679
 
      for (unsigned int r = 0; r < 3; r++)
3680
 
      {
3681
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3682
 
        ss = r*(r + 1)/2;
3683
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3684
 
      }// end loop over 'r'
3685
 
      for (unsigned int r = 0; r < 2; r++)
3686
 
      {
3687
 
        for (unsigned int s = 1; s < 3 - r; s++)
3688
 
        {
3689
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3690
 
          ss = (r + s)*(r + s + 1)/2 + s;
3691
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3692
 
          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));
3693
 
          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));
3694
 
          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));
3695
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3696
 
        }// end loop over 's'
3697
 
      }// end loop over 'r'
3698
 
      for (unsigned int r = 0; r < 4; r++)
3699
 
      {
3700
 
        for (unsigned int s = 0; s < 4 - r; s++)
3701
 
        {
3702
 
          rr = (r + s)*(r + s + 1)/2 + s;
3703
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3704
 
        }// end loop over 's'
3705
 
      }// end loop over 'r'
 
3113
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3114
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3115
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3116
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3117
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3118
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3119
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3120
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3121
      basisvalues[0] *= std::sqrt(0.5);
 
3122
      basisvalues[2] *= std::sqrt(1.0);
 
3123
      basisvalues[5] *= std::sqrt(1.5);
 
3124
      basisvalues[9] *= std::sqrt(2.0);
 
3125
      basisvalues[1] *= std::sqrt(3.0);
 
3126
      basisvalues[4] *= std::sqrt(4.5);
 
3127
      basisvalues[8] *= std::sqrt(6.0);
 
3128
      basisvalues[3] *= std::sqrt(7.5);
 
3129
      basisvalues[7] *= std::sqrt(10.0);
 
3130
      basisvalues[6] *= std::sqrt(14.0);
3706
3131
      
3707
3132
      // Table(s) of coefficients.
3708
3133
      static const double coefficients0[10] = \
3722
3147
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3723
3148
      
3724
3149
      // Declare helper variables.
3725
 
      unsigned int rr = 0;
3726
 
      unsigned int ss = 0;
3727
 
      unsigned int tt = 0;
3728
 
      double tmp5 = 0.0;
3729
 
      double tmp6 = 0.0;
3730
 
      double tmp7 = 0.0;
3731
3150
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3732
3151
      double tmp1 = (1.0 - Y)/2.0;
3733
3152
      double tmp2 = tmp1*tmp1;
3735
3154
      // Compute basisvalues.
3736
3155
      basisvalues[0] = 1.0;
3737
3156
      basisvalues[1] = tmp0;
3738
 
      for (unsigned int r = 1; r < 3; r++)
3739
 
      {
3740
 
        rr = (r + 1)*((r + 1) + 1)/2;
3741
 
        ss = r*(r + 1)/2;
3742
 
        tt = (r - 1)*((r - 1) + 1)/2;
3743
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3744
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3745
 
      }// end loop over 'r'
3746
 
      for (unsigned int r = 0; r < 3; r++)
3747
 
      {
3748
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3749
 
        ss = r*(r + 1)/2;
3750
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3751
 
      }// end loop over 'r'
3752
 
      for (unsigned int r = 0; r < 2; r++)
3753
 
      {
3754
 
        for (unsigned int s = 1; s < 3 - r; s++)
3755
 
        {
3756
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3757
 
          ss = (r + s)*(r + s + 1)/2 + s;
3758
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3759
 
          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));
3760
 
          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));
3761
 
          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));
3762
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3763
 
        }// end loop over 's'
3764
 
      }// end loop over 'r'
3765
 
      for (unsigned int r = 0; r < 4; r++)
3766
 
      {
3767
 
        for (unsigned int s = 0; s < 4 - r; s++)
3768
 
        {
3769
 
          rr = (r + s)*(r + s + 1)/2 + s;
3770
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3771
 
        }// end loop over 's'
3772
 
      }// end loop over 'r'
 
3157
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3158
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3159
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3160
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3161
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3162
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3163
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3164
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3165
      basisvalues[0] *= std::sqrt(0.5);
 
3166
      basisvalues[2] *= std::sqrt(1.0);
 
3167
      basisvalues[5] *= std::sqrt(1.5);
 
3168
      basisvalues[9] *= std::sqrt(2.0);
 
3169
      basisvalues[1] *= std::sqrt(3.0);
 
3170
      basisvalues[4] *= std::sqrt(4.5);
 
3171
      basisvalues[8] *= std::sqrt(6.0);
 
3172
      basisvalues[3] *= std::sqrt(7.5);
 
3173
      basisvalues[7] *= std::sqrt(10.0);
 
3174
      basisvalues[6] *= std::sqrt(14.0);
3773
3175
      
3774
3176
      // Table(s) of coefficients.
3775
3177
      static const double coefficients0[10] = \
3789
3191
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3790
3192
      
3791
3193
      // Declare helper variables.
3792
 
      unsigned int rr = 0;
3793
 
      unsigned int ss = 0;
3794
 
      unsigned int tt = 0;
3795
 
      double tmp5 = 0.0;
3796
 
      double tmp6 = 0.0;
3797
 
      double tmp7 = 0.0;
3798
3194
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3799
3195
      double tmp1 = (1.0 - Y)/2.0;
3800
3196
      double tmp2 = tmp1*tmp1;
3802
3198
      // Compute basisvalues.
3803
3199
      basisvalues[0] = 1.0;
3804
3200
      basisvalues[1] = tmp0;
3805
 
      for (unsigned int r = 1; r < 3; r++)
3806
 
      {
3807
 
        rr = (r + 1)*((r + 1) + 1)/2;
3808
 
        ss = r*(r + 1)/2;
3809
 
        tt = (r - 1)*((r - 1) + 1)/2;
3810
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3811
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3812
 
      }// end loop over 'r'
3813
 
      for (unsigned int r = 0; r < 3; r++)
3814
 
      {
3815
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3816
 
        ss = r*(r + 1)/2;
3817
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3818
 
      }// end loop over 'r'
3819
 
      for (unsigned int r = 0; r < 2; r++)
3820
 
      {
3821
 
        for (unsigned int s = 1; s < 3 - r; s++)
3822
 
        {
3823
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3824
 
          ss = (r + s)*(r + s + 1)/2 + s;
3825
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3826
 
          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));
3827
 
          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));
3828
 
          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));
3829
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3830
 
        }// end loop over 's'
3831
 
      }// end loop over 'r'
3832
 
      for (unsigned int r = 0; r < 4; r++)
3833
 
      {
3834
 
        for (unsigned int s = 0; s < 4 - r; s++)
3835
 
        {
3836
 
          rr = (r + s)*(r + s + 1)/2 + s;
3837
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3838
 
        }// end loop over 's'
3839
 
      }// end loop over 'r'
 
3201
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3202
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3203
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3204
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3205
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3206
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3207
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3208
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3209
      basisvalues[0] *= std::sqrt(0.5);
 
3210
      basisvalues[2] *= std::sqrt(1.0);
 
3211
      basisvalues[5] *= std::sqrt(1.5);
 
3212
      basisvalues[9] *= std::sqrt(2.0);
 
3213
      basisvalues[1] *= std::sqrt(3.0);
 
3214
      basisvalues[4] *= std::sqrt(4.5);
 
3215
      basisvalues[8] *= std::sqrt(6.0);
 
3216
      basisvalues[3] *= std::sqrt(7.5);
 
3217
      basisvalues[7] *= std::sqrt(10.0);
 
3218
      basisvalues[6] *= std::sqrt(14.0);
3840
3219
      
3841
3220
      // Table(s) of coefficients.
3842
3221
      static const double coefficients0[10] = \
3856
3235
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3857
3236
      
3858
3237
      // Declare helper variables.
3859
 
      unsigned int rr = 0;
3860
 
      unsigned int ss = 0;
3861
 
      unsigned int tt = 0;
3862
 
      double tmp5 = 0.0;
3863
 
      double tmp6 = 0.0;
3864
 
      double tmp7 = 0.0;
3865
3238
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3866
3239
      double tmp1 = (1.0 - Y)/2.0;
3867
3240
      double tmp2 = tmp1*tmp1;
3869
3242
      // Compute basisvalues.
3870
3243
      basisvalues[0] = 1.0;
3871
3244
      basisvalues[1] = tmp0;
3872
 
      for (unsigned int r = 1; r < 3; r++)
3873
 
      {
3874
 
        rr = (r + 1)*((r + 1) + 1)/2;
3875
 
        ss = r*(r + 1)/2;
3876
 
        tt = (r - 1)*((r - 1) + 1)/2;
3877
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3878
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3879
 
      }// end loop over 'r'
3880
 
      for (unsigned int r = 0; r < 3; r++)
3881
 
      {
3882
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3883
 
        ss = r*(r + 1)/2;
3884
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3885
 
      }// end loop over 'r'
3886
 
      for (unsigned int r = 0; r < 2; r++)
3887
 
      {
3888
 
        for (unsigned int s = 1; s < 3 - r; s++)
3889
 
        {
3890
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3891
 
          ss = (r + s)*(r + s + 1)/2 + s;
3892
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3893
 
          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));
3894
 
          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));
3895
 
          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));
3896
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3897
 
        }// end loop over 's'
3898
 
      }// end loop over 'r'
3899
 
      for (unsigned int r = 0; r < 4; r++)
3900
 
      {
3901
 
        for (unsigned int s = 0; s < 4 - r; s++)
3902
 
        {
3903
 
          rr = (r + s)*(r + s + 1)/2 + s;
3904
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3905
 
        }// end loop over 's'
3906
 
      }// end loop over 'r'
 
3245
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3246
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3247
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3248
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3249
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3250
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3251
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3252
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3253
      basisvalues[0] *= std::sqrt(0.5);
 
3254
      basisvalues[2] *= std::sqrt(1.0);
 
3255
      basisvalues[5] *= std::sqrt(1.5);
 
3256
      basisvalues[9] *= std::sqrt(2.0);
 
3257
      basisvalues[1] *= std::sqrt(3.0);
 
3258
      basisvalues[4] *= std::sqrt(4.5);
 
3259
      basisvalues[8] *= std::sqrt(6.0);
 
3260
      basisvalues[3] *= std::sqrt(7.5);
 
3261
      basisvalues[7] *= std::sqrt(10.0);
 
3262
      basisvalues[6] *= std::sqrt(14.0);
3907
3263
      
3908
3264
      // Table(s) of coefficients.
3909
3265
      static const double coefficients0[10] = \
3923
3279
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3924
3280
      
3925
3281
      // Declare helper variables.
3926
 
      unsigned int rr = 0;
3927
 
      unsigned int ss = 0;
3928
 
      unsigned int tt = 0;
3929
 
      double tmp5 = 0.0;
3930
 
      double tmp6 = 0.0;
3931
 
      double tmp7 = 0.0;
3932
3282
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3933
3283
      double tmp1 = (1.0 - Y)/2.0;
3934
3284
      double tmp2 = tmp1*tmp1;
3936
3286
      // Compute basisvalues.
3937
3287
      basisvalues[0] = 1.0;
3938
3288
      basisvalues[1] = tmp0;
3939
 
      for (unsigned int r = 1; r < 3; r++)
3940
 
      {
3941
 
        rr = (r + 1)*((r + 1) + 1)/2;
3942
 
        ss = r*(r + 1)/2;
3943
 
        tt = (r - 1)*((r - 1) + 1)/2;
3944
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3945
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3946
 
      }// end loop over 'r'
3947
 
      for (unsigned int r = 0; r < 3; r++)
3948
 
      {
3949
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3950
 
        ss = r*(r + 1)/2;
3951
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3952
 
      }// end loop over 'r'
3953
 
      for (unsigned int r = 0; r < 2; r++)
3954
 
      {
3955
 
        for (unsigned int s = 1; s < 3 - r; s++)
3956
 
        {
3957
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3958
 
          ss = (r + s)*(r + s + 1)/2 + s;
3959
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3960
 
          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));
3961
 
          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));
3962
 
          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));
3963
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3964
 
        }// end loop over 's'
3965
 
      }// end loop over 'r'
3966
 
      for (unsigned int r = 0; r < 4; r++)
3967
 
      {
3968
 
        for (unsigned int s = 0; s < 4 - r; s++)
3969
 
        {
3970
 
          rr = (r + s)*(r + s + 1)/2 + s;
3971
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3972
 
        }// end loop over 's'
3973
 
      }// end loop over 'r'
 
3289
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3290
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3291
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3292
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3293
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3294
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3295
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3296
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3297
      basisvalues[0] *= std::sqrt(0.5);
 
3298
      basisvalues[2] *= std::sqrt(1.0);
 
3299
      basisvalues[5] *= std::sqrt(1.5);
 
3300
      basisvalues[9] *= std::sqrt(2.0);
 
3301
      basisvalues[1] *= std::sqrt(3.0);
 
3302
      basisvalues[4] *= std::sqrt(4.5);
 
3303
      basisvalues[8] *= std::sqrt(6.0);
 
3304
      basisvalues[3] *= std::sqrt(7.5);
 
3305
      basisvalues[7] *= std::sqrt(10.0);
 
3306
      basisvalues[6] *= std::sqrt(14.0);
3974
3307
      
3975
3308
      // Table(s) of coefficients.
3976
3309
      static const double coefficients0[10] = \
3990
3323
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3991
3324
      
3992
3325
      // Declare helper variables.
3993
 
      unsigned int rr = 0;
3994
 
      unsigned int ss = 0;
3995
 
      unsigned int tt = 0;
3996
 
      double tmp5 = 0.0;
3997
 
      double tmp6 = 0.0;
3998
 
      double tmp7 = 0.0;
3999
3326
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4000
3327
      double tmp1 = (1.0 - Y)/2.0;
4001
3328
      double tmp2 = tmp1*tmp1;
4003
3330
      // Compute basisvalues.
4004
3331
      basisvalues[0] = 1.0;
4005
3332
      basisvalues[1] = tmp0;
4006
 
      for (unsigned int r = 1; r < 3; r++)
4007
 
      {
4008
 
        rr = (r + 1)*((r + 1) + 1)/2;
4009
 
        ss = r*(r + 1)/2;
4010
 
        tt = (r - 1)*((r - 1) + 1)/2;
4011
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4012
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4013
 
      }// end loop over 'r'
4014
 
      for (unsigned int r = 0; r < 3; r++)
4015
 
      {
4016
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4017
 
        ss = r*(r + 1)/2;
4018
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4019
 
      }// end loop over 'r'
4020
 
      for (unsigned int r = 0; r < 2; r++)
4021
 
      {
4022
 
        for (unsigned int s = 1; s < 3 - r; s++)
4023
 
        {
4024
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4025
 
          ss = (r + s)*(r + s + 1)/2 + s;
4026
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4027
 
          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));
4028
 
          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));
4029
 
          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));
4030
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4031
 
        }// end loop over 's'
4032
 
      }// end loop over 'r'
4033
 
      for (unsigned int r = 0; r < 4; r++)
4034
 
      {
4035
 
        for (unsigned int s = 0; s < 4 - r; s++)
4036
 
        {
4037
 
          rr = (r + s)*(r + s + 1)/2 + s;
4038
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4039
 
        }// end loop over 's'
4040
 
      }// end loop over 'r'
 
3333
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3334
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3335
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3336
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3337
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3338
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3339
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3340
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3341
      basisvalues[0] *= std::sqrt(0.5);
 
3342
      basisvalues[2] *= std::sqrt(1.0);
 
3343
      basisvalues[5] *= std::sqrt(1.5);
 
3344
      basisvalues[9] *= std::sqrt(2.0);
 
3345
      basisvalues[1] *= std::sqrt(3.0);
 
3346
      basisvalues[4] *= std::sqrt(4.5);
 
3347
      basisvalues[8] *= std::sqrt(6.0);
 
3348
      basisvalues[3] *= std::sqrt(7.5);
 
3349
      basisvalues[7] *= std::sqrt(10.0);
 
3350
      basisvalues[6] *= std::sqrt(14.0);
4041
3351
      
4042
3352
      // Table(s) of coefficients.
4043
3353
      static const double coefficients0[10] = \
4057
3367
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4058
3368
      
4059
3369
      // Declare helper variables.
4060
 
      unsigned int rr = 0;
4061
 
      unsigned int ss = 0;
4062
 
      unsigned int tt = 0;
4063
 
      double tmp5 = 0.0;
4064
 
      double tmp6 = 0.0;
4065
 
      double tmp7 = 0.0;
4066
3370
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4067
3371
      double tmp1 = (1.0 - Y)/2.0;
4068
3372
      double tmp2 = tmp1*tmp1;
4070
3374
      // Compute basisvalues.
4071
3375
      basisvalues[0] = 1.0;
4072
3376
      basisvalues[1] = tmp0;
4073
 
      for (unsigned int r = 1; r < 3; r++)
4074
 
      {
4075
 
        rr = (r + 1)*((r + 1) + 1)/2;
4076
 
        ss = r*(r + 1)/2;
4077
 
        tt = (r - 1)*((r - 1) + 1)/2;
4078
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4079
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4080
 
      }// end loop over 'r'
4081
 
      for (unsigned int r = 0; r < 3; r++)
4082
 
      {
4083
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4084
 
        ss = r*(r + 1)/2;
4085
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4086
 
      }// end loop over 'r'
4087
 
      for (unsigned int r = 0; r < 2; r++)
4088
 
      {
4089
 
        for (unsigned int s = 1; s < 3 - r; s++)
4090
 
        {
4091
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4092
 
          ss = (r + s)*(r + s + 1)/2 + s;
4093
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4094
 
          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));
4095
 
          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));
4096
 
          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));
4097
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4098
 
        }// end loop over 's'
4099
 
      }// end loop over 'r'
4100
 
      for (unsigned int r = 0; r < 4; r++)
4101
 
      {
4102
 
        for (unsigned int s = 0; s < 4 - r; s++)
4103
 
        {
4104
 
          rr = (r + s)*(r + s + 1)/2 + s;
4105
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4106
 
        }// end loop over 's'
4107
 
      }// end loop over 'r'
 
3377
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3378
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3379
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3380
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3381
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3382
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3383
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3384
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3385
      basisvalues[0] *= std::sqrt(0.5);
 
3386
      basisvalues[2] *= std::sqrt(1.0);
 
3387
      basisvalues[5] *= std::sqrt(1.5);
 
3388
      basisvalues[9] *= std::sqrt(2.0);
 
3389
      basisvalues[1] *= std::sqrt(3.0);
 
3390
      basisvalues[4] *= std::sqrt(4.5);
 
3391
      basisvalues[8] *= std::sqrt(6.0);
 
3392
      basisvalues[3] *= std::sqrt(7.5);
 
3393
      basisvalues[7] *= std::sqrt(10.0);
 
3394
      basisvalues[6] *= std::sqrt(14.0);
4108
3395
      
4109
3396
      // Table(s) of coefficients.
4110
3397
      static const double coefficients0[10] = \
4124
3411
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4125
3412
      
4126
3413
      // Declare helper variables.
4127
 
      unsigned int rr = 0;
4128
 
      unsigned int ss = 0;
4129
 
      unsigned int tt = 0;
4130
 
      double tmp5 = 0.0;
4131
 
      double tmp6 = 0.0;
4132
 
      double tmp7 = 0.0;
4133
3414
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4134
3415
      double tmp1 = (1.0 - Y)/2.0;
4135
3416
      double tmp2 = tmp1*tmp1;
4137
3418
      // Compute basisvalues.
4138
3419
      basisvalues[0] = 1.0;
4139
3420
      basisvalues[1] = tmp0;
4140
 
      for (unsigned int r = 1; r < 3; r++)
4141
 
      {
4142
 
        rr = (r + 1)*((r + 1) + 1)/2;
4143
 
        ss = r*(r + 1)/2;
4144
 
        tt = (r - 1)*((r - 1) + 1)/2;
4145
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4146
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4147
 
      }// end loop over 'r'
4148
 
      for (unsigned int r = 0; r < 3; r++)
4149
 
      {
4150
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4151
 
        ss = r*(r + 1)/2;
4152
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4153
 
      }// end loop over 'r'
4154
 
      for (unsigned int r = 0; r < 2; r++)
4155
 
      {
4156
 
        for (unsigned int s = 1; s < 3 - r; s++)
4157
 
        {
4158
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4159
 
          ss = (r + s)*(r + s + 1)/2 + s;
4160
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4161
 
          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));
4162
 
          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));
4163
 
          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));
4164
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4165
 
        }// end loop over 's'
4166
 
      }// end loop over 'r'
4167
 
      for (unsigned int r = 0; r < 4; r++)
4168
 
      {
4169
 
        for (unsigned int s = 0; s < 4 - r; s++)
4170
 
        {
4171
 
          rr = (r + s)*(r + s + 1)/2 + s;
4172
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4173
 
        }// end loop over 's'
4174
 
      }// end loop over 'r'
 
3421
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3422
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3423
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3424
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3425
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3426
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3427
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3428
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3429
      basisvalues[0] *= std::sqrt(0.5);
 
3430
      basisvalues[2] *= std::sqrt(1.0);
 
3431
      basisvalues[5] *= std::sqrt(1.5);
 
3432
      basisvalues[9] *= std::sqrt(2.0);
 
3433
      basisvalues[1] *= std::sqrt(3.0);
 
3434
      basisvalues[4] *= std::sqrt(4.5);
 
3435
      basisvalues[8] *= std::sqrt(6.0);
 
3436
      basisvalues[3] *= std::sqrt(7.5);
 
3437
      basisvalues[7] *= std::sqrt(10.0);
 
3438
      basisvalues[6] *= std::sqrt(14.0);
4175
3439
      
4176
3440
      // Table(s) of coefficients.
4177
3441
      static const double coefficients0[10] = \
4191
3455
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4192
3456
      
4193
3457
      // Declare helper variables.
4194
 
      unsigned int rr = 0;
4195
 
      unsigned int ss = 0;
4196
 
      unsigned int tt = 0;
4197
 
      double tmp5 = 0.0;
4198
 
      double tmp6 = 0.0;
4199
 
      double tmp7 = 0.0;
4200
3458
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4201
3459
      double tmp1 = (1.0 - Y)/2.0;
4202
3460
      double tmp2 = tmp1*tmp1;
4204
3462
      // Compute basisvalues.
4205
3463
      basisvalues[0] = 1.0;
4206
3464
      basisvalues[1] = tmp0;
4207
 
      for (unsigned int r = 1; r < 3; r++)
4208
 
      {
4209
 
        rr = (r + 1)*((r + 1) + 1)/2;
4210
 
        ss = r*(r + 1)/2;
4211
 
        tt = (r - 1)*((r - 1) + 1)/2;
4212
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4213
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4214
 
      }// end loop over 'r'
4215
 
      for (unsigned int r = 0; r < 3; r++)
4216
 
      {
4217
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4218
 
        ss = r*(r + 1)/2;
4219
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4220
 
      }// end loop over 'r'
4221
 
      for (unsigned int r = 0; r < 2; r++)
4222
 
      {
4223
 
        for (unsigned int s = 1; s < 3 - r; s++)
4224
 
        {
4225
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4226
 
          ss = (r + s)*(r + s + 1)/2 + s;
4227
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4228
 
          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));
4229
 
          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));
4230
 
          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));
4231
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4232
 
        }// end loop over 's'
4233
 
      }// end loop over 'r'
4234
 
      for (unsigned int r = 0; r < 4; r++)
4235
 
      {
4236
 
        for (unsigned int s = 0; s < 4 - r; s++)
4237
 
        {
4238
 
          rr = (r + s)*(r + s + 1)/2 + s;
4239
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4240
 
        }// end loop over 's'
4241
 
      }// end loop over 'r'
 
3465
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3466
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3467
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3468
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3469
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3470
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3471
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3472
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3473
      basisvalues[0] *= std::sqrt(0.5);
 
3474
      basisvalues[2] *= std::sqrt(1.0);
 
3475
      basisvalues[5] *= std::sqrt(1.5);
 
3476
      basisvalues[9] *= std::sqrt(2.0);
 
3477
      basisvalues[1] *= std::sqrt(3.0);
 
3478
      basisvalues[4] *= std::sqrt(4.5);
 
3479
      basisvalues[8] *= std::sqrt(6.0);
 
3480
      basisvalues[3] *= std::sqrt(7.5);
 
3481
      basisvalues[7] *= std::sqrt(10.0);
 
3482
      basisvalues[6] *= std::sqrt(14.0);
4242
3483
      
4243
3484
      // Table(s) of coefficients.
4244
3485
      static const double coefficients0[10] = \
4258
3499
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4259
3500
      
4260
3501
      // Declare helper variables.
4261
 
      unsigned int rr = 0;
4262
 
      unsigned int ss = 0;
4263
 
      unsigned int tt = 0;
4264
 
      double tmp5 = 0.0;
4265
 
      double tmp6 = 0.0;
4266
 
      double tmp7 = 0.0;
4267
3502
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4268
3503
      double tmp1 = (1.0 - Y)/2.0;
4269
3504
      double tmp2 = tmp1*tmp1;
4271
3506
      // Compute basisvalues.
4272
3507
      basisvalues[0] = 1.0;
4273
3508
      basisvalues[1] = tmp0;
4274
 
      for (unsigned int r = 1; r < 3; r++)
4275
 
      {
4276
 
        rr = (r + 1)*((r + 1) + 1)/2;
4277
 
        ss = r*(r + 1)/2;
4278
 
        tt = (r - 1)*((r - 1) + 1)/2;
4279
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4280
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4281
 
      }// end loop over 'r'
4282
 
      for (unsigned int r = 0; r < 3; r++)
4283
 
      {
4284
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4285
 
        ss = r*(r + 1)/2;
4286
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4287
 
      }// end loop over 'r'
4288
 
      for (unsigned int r = 0; r < 2; r++)
4289
 
      {
4290
 
        for (unsigned int s = 1; s < 3 - r; s++)
4291
 
        {
4292
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4293
 
          ss = (r + s)*(r + s + 1)/2 + s;
4294
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4295
 
          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));
4296
 
          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));
4297
 
          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));
4298
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4299
 
        }// end loop over 's'
4300
 
      }// end loop over 'r'
4301
 
      for (unsigned int r = 0; r < 4; r++)
4302
 
      {
4303
 
        for (unsigned int s = 0; s < 4 - r; s++)
4304
 
        {
4305
 
          rr = (r + s)*(r + s + 1)/2 + s;
4306
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4307
 
        }// end loop over 's'
4308
 
      }// end loop over 'r'
 
3509
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3510
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3511
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3512
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3513
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3514
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3515
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3516
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3517
      basisvalues[0] *= std::sqrt(0.5);
 
3518
      basisvalues[2] *= std::sqrt(1.0);
 
3519
      basisvalues[5] *= std::sqrt(1.5);
 
3520
      basisvalues[9] *= std::sqrt(2.0);
 
3521
      basisvalues[1] *= std::sqrt(3.0);
 
3522
      basisvalues[4] *= std::sqrt(4.5);
 
3523
      basisvalues[8] *= std::sqrt(6.0);
 
3524
      basisvalues[3] *= std::sqrt(7.5);
 
3525
      basisvalues[7] *= std::sqrt(10.0);
 
3526
      basisvalues[6] *= std::sqrt(14.0);
4309
3527
      
4310
3528
      // Table(s) of coefficients.
4311
3529
      static const double coefficients0[10] = \
4325
3543
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4326
3544
      
4327
3545
      // Declare helper variables.
4328
 
      unsigned int rr = 0;
4329
 
      unsigned int ss = 0;
4330
 
      unsigned int tt = 0;
4331
 
      double tmp5 = 0.0;
4332
 
      double tmp6 = 0.0;
4333
 
      double tmp7 = 0.0;
4334
3546
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4335
3547
      double tmp1 = (1.0 - Y)/2.0;
4336
3548
      double tmp2 = tmp1*tmp1;
4338
3550
      // Compute basisvalues.
4339
3551
      basisvalues[0] = 1.0;
4340
3552
      basisvalues[1] = tmp0;
4341
 
      for (unsigned int r = 1; r < 3; r++)
4342
 
      {
4343
 
        rr = (r + 1)*((r + 1) + 1)/2;
4344
 
        ss = r*(r + 1)/2;
4345
 
        tt = (r - 1)*((r - 1) + 1)/2;
4346
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4347
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4348
 
      }// end loop over 'r'
4349
 
      for (unsigned int r = 0; r < 3; r++)
4350
 
      {
4351
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4352
 
        ss = r*(r + 1)/2;
4353
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4354
 
      }// end loop over 'r'
4355
 
      for (unsigned int r = 0; r < 2; r++)
4356
 
      {
4357
 
        for (unsigned int s = 1; s < 3 - r; s++)
4358
 
        {
4359
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4360
 
          ss = (r + s)*(r + s + 1)/2 + s;
4361
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4362
 
          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));
4363
 
          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));
4364
 
          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));
4365
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4366
 
        }// end loop over 's'
4367
 
      }// end loop over 'r'
4368
 
      for (unsigned int r = 0; r < 4; r++)
4369
 
      {
4370
 
        for (unsigned int s = 0; s < 4 - r; s++)
4371
 
        {
4372
 
          rr = (r + s)*(r + s + 1)/2 + s;
4373
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4374
 
        }// end loop over 's'
4375
 
      }// end loop over 'r'
 
3553
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3554
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3555
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3556
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3557
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3558
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3559
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3560
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3561
      basisvalues[0] *= std::sqrt(0.5);
 
3562
      basisvalues[2] *= std::sqrt(1.0);
 
3563
      basisvalues[5] *= std::sqrt(1.5);
 
3564
      basisvalues[9] *= std::sqrt(2.0);
 
3565
      basisvalues[1] *= std::sqrt(3.0);
 
3566
      basisvalues[4] *= std::sqrt(4.5);
 
3567
      basisvalues[8] *= std::sqrt(6.0);
 
3568
      basisvalues[3] *= std::sqrt(7.5);
 
3569
      basisvalues[7] *= std::sqrt(10.0);
 
3570
      basisvalues[6] *= std::sqrt(14.0);
4376
3571
      
4377
3572
      // Table(s) of coefficients.
4378
3573
      static const double coefficients0[10] = \
4392
3587
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4393
3588
      
4394
3589
      // Declare helper variables.
4395
 
      unsigned int rr = 0;
4396
 
      unsigned int ss = 0;
4397
 
      unsigned int tt = 0;
4398
 
      double tmp5 = 0.0;
4399
 
      double tmp6 = 0.0;
4400
 
      double tmp7 = 0.0;
4401
3590
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4402
3591
      double tmp1 = (1.0 - Y)/2.0;
4403
3592
      double tmp2 = tmp1*tmp1;
4405
3594
      // Compute basisvalues.
4406
3595
      basisvalues[0] = 1.0;
4407
3596
      basisvalues[1] = tmp0;
4408
 
      for (unsigned int r = 1; r < 3; r++)
4409
 
      {
4410
 
        rr = (r + 1)*((r + 1) + 1)/2;
4411
 
        ss = r*(r + 1)/2;
4412
 
        tt = (r - 1)*((r - 1) + 1)/2;
4413
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4414
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4415
 
      }// end loop over 'r'
4416
 
      for (unsigned int r = 0; r < 3; r++)
4417
 
      {
4418
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4419
 
        ss = r*(r + 1)/2;
4420
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4421
 
      }// end loop over 'r'
4422
 
      for (unsigned int r = 0; r < 2; r++)
4423
 
      {
4424
 
        for (unsigned int s = 1; s < 3 - r; s++)
4425
 
        {
4426
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4427
 
          ss = (r + s)*(r + s + 1)/2 + s;
4428
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4429
 
          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));
4430
 
          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));
4431
 
          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));
4432
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4433
 
        }// end loop over 's'
4434
 
      }// end loop over 'r'
4435
 
      for (unsigned int r = 0; r < 4; r++)
4436
 
      {
4437
 
        for (unsigned int s = 0; s < 4 - r; s++)
4438
 
        {
4439
 
          rr = (r + s)*(r + s + 1)/2 + s;
4440
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4441
 
        }// end loop over 's'
4442
 
      }// end loop over 'r'
 
3597
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3598
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3599
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3600
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3601
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3602
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3603
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3604
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3605
      basisvalues[0] *= std::sqrt(0.5);
 
3606
      basisvalues[2] *= std::sqrt(1.0);
 
3607
      basisvalues[5] *= std::sqrt(1.5);
 
3608
      basisvalues[9] *= std::sqrt(2.0);
 
3609
      basisvalues[1] *= std::sqrt(3.0);
 
3610
      basisvalues[4] *= std::sqrt(4.5);
 
3611
      basisvalues[8] *= std::sqrt(6.0);
 
3612
      basisvalues[3] *= std::sqrt(7.5);
 
3613
      basisvalues[7] *= std::sqrt(10.0);
 
3614
      basisvalues[6] *= std::sqrt(14.0);
4443
3615
      
4444
3616
      // Table(s) of coefficients.
4445
3617
      static const double coefficients0[10] = \
4459
3631
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4460
3632
      
4461
3633
      // Declare helper variables.
4462
 
      unsigned int rr = 0;
4463
 
      unsigned int ss = 0;
4464
 
      unsigned int tt = 0;
4465
 
      double tmp5 = 0.0;
4466
 
      double tmp6 = 0.0;
4467
 
      double tmp7 = 0.0;
4468
3634
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4469
3635
      double tmp1 = (1.0 - Y)/2.0;
4470
3636
      double tmp2 = tmp1*tmp1;
4472
3638
      // Compute basisvalues.
4473
3639
      basisvalues[0] = 1.0;
4474
3640
      basisvalues[1] = tmp0;
4475
 
      for (unsigned int r = 1; r < 3; r++)
4476
 
      {
4477
 
        rr = (r + 1)*((r + 1) + 1)/2;
4478
 
        ss = r*(r + 1)/2;
4479
 
        tt = (r - 1)*((r - 1) + 1)/2;
4480
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4481
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4482
 
      }// end loop over 'r'
4483
 
      for (unsigned int r = 0; r < 3; r++)
4484
 
      {
4485
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4486
 
        ss = r*(r + 1)/2;
4487
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4488
 
      }// end loop over 'r'
4489
 
      for (unsigned int r = 0; r < 2; r++)
4490
 
      {
4491
 
        for (unsigned int s = 1; s < 3 - r; s++)
4492
 
        {
4493
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4494
 
          ss = (r + s)*(r + s + 1)/2 + s;
4495
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4496
 
          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));
4497
 
          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));
4498
 
          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));
4499
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4500
 
        }// end loop over 's'
4501
 
      }// end loop over 'r'
4502
 
      for (unsigned int r = 0; r < 4; r++)
4503
 
      {
4504
 
        for (unsigned int s = 0; s < 4 - r; s++)
4505
 
        {
4506
 
          rr = (r + s)*(r + s + 1)/2 + s;
4507
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4508
 
        }// end loop over 's'
4509
 
      }// end loop over 'r'
 
3641
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3642
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3643
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3644
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3645
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3646
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3647
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3648
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3649
      basisvalues[0] *= std::sqrt(0.5);
 
3650
      basisvalues[2] *= std::sqrt(1.0);
 
3651
      basisvalues[5] *= std::sqrt(1.5);
 
3652
      basisvalues[9] *= std::sqrt(2.0);
 
3653
      basisvalues[1] *= std::sqrt(3.0);
 
3654
      basisvalues[4] *= std::sqrt(4.5);
 
3655
      basisvalues[8] *= std::sqrt(6.0);
 
3656
      basisvalues[3] *= std::sqrt(7.5);
 
3657
      basisvalues[7] *= std::sqrt(10.0);
 
3658
      basisvalues[6] *= std::sqrt(14.0);
4510
3659
      
4511
3660
      // Table(s) of coefficients.
4512
3661
      static const double coefficients0[10] = \
4526
3675
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4527
3676
      
4528
3677
      // Declare helper variables.
4529
 
      unsigned int rr = 0;
4530
 
      unsigned int ss = 0;
4531
 
      unsigned int tt = 0;
4532
 
      double tmp5 = 0.0;
4533
 
      double tmp6 = 0.0;
4534
 
      double tmp7 = 0.0;
4535
3678
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4536
3679
      double tmp1 = (1.0 - Y)/2.0;
4537
3680
      double tmp2 = tmp1*tmp1;
4539
3682
      // Compute basisvalues.
4540
3683
      basisvalues[0] = 1.0;
4541
3684
      basisvalues[1] = tmp0;
4542
 
      for (unsigned int r = 1; r < 3; r++)
4543
 
      {
4544
 
        rr = (r + 1)*((r + 1) + 1)/2;
4545
 
        ss = r*(r + 1)/2;
4546
 
        tt = (r - 1)*((r - 1) + 1)/2;
4547
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4548
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4549
 
      }// end loop over 'r'
4550
 
      for (unsigned int r = 0; r < 3; r++)
4551
 
      {
4552
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4553
 
        ss = r*(r + 1)/2;
4554
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4555
 
      }// end loop over 'r'
4556
 
      for (unsigned int r = 0; r < 2; r++)
4557
 
      {
4558
 
        for (unsigned int s = 1; s < 3 - r; s++)
4559
 
        {
4560
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4561
 
          ss = (r + s)*(r + s + 1)/2 + s;
4562
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4563
 
          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));
4564
 
          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));
4565
 
          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));
4566
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4567
 
        }// end loop over 's'
4568
 
      }// end loop over 'r'
4569
 
      for (unsigned int r = 0; r < 4; r++)
4570
 
      {
4571
 
        for (unsigned int s = 0; s < 4 - r; s++)
4572
 
        {
4573
 
          rr = (r + s)*(r + s + 1)/2 + s;
4574
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4575
 
        }// end loop over 's'
4576
 
      }// end loop over 'r'
 
3685
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3686
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3687
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3688
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3689
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3690
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3691
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3692
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3693
      basisvalues[0] *= std::sqrt(0.5);
 
3694
      basisvalues[2] *= std::sqrt(1.0);
 
3695
      basisvalues[5] *= std::sqrt(1.5);
 
3696
      basisvalues[9] *= std::sqrt(2.0);
 
3697
      basisvalues[1] *= std::sqrt(3.0);
 
3698
      basisvalues[4] *= std::sqrt(4.5);
 
3699
      basisvalues[8] *= std::sqrt(6.0);
 
3700
      basisvalues[3] *= std::sqrt(7.5);
 
3701
      basisvalues[7] *= std::sqrt(10.0);
 
3702
      basisvalues[6] *= std::sqrt(14.0);
4577
3703
      
4578
3704
      // Table(s) of coefficients.
4579
3705
      static const double coefficients0[10] = \
4715
3841
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4716
3842
      
4717
3843
      // Declare helper variables.
4718
 
      unsigned int rr = 0;
4719
 
      unsigned int ss = 0;
4720
 
      unsigned int tt = 0;
4721
 
      double tmp5 = 0.0;
4722
 
      double tmp6 = 0.0;
4723
 
      double tmp7 = 0.0;
4724
3844
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4725
3845
      double tmp1 = (1.0 - Y)/2.0;
4726
3846
      double tmp2 = tmp1*tmp1;
4728
3848
      // Compute basisvalues.
4729
3849
      basisvalues[0] = 1.0;
4730
3850
      basisvalues[1] = tmp0;
4731
 
      for (unsigned int r = 1; r < 3; r++)
4732
 
      {
4733
 
        rr = (r + 1)*((r + 1) + 1)/2;
4734
 
        ss = r*(r + 1)/2;
4735
 
        tt = (r - 1)*((r - 1) + 1)/2;
4736
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4737
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4738
 
      }// end loop over 'r'
4739
 
      for (unsigned int r = 0; r < 3; r++)
4740
 
      {
4741
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4742
 
        ss = r*(r + 1)/2;
4743
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4744
 
      }// end loop over 'r'
4745
 
      for (unsigned int r = 0; r < 2; r++)
4746
 
      {
4747
 
        for (unsigned int s = 1; s < 3 - r; s++)
4748
 
        {
4749
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4750
 
          ss = (r + s)*(r + s + 1)/2 + s;
4751
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4752
 
          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));
4753
 
          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));
4754
 
          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));
4755
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4756
 
        }// end loop over 's'
4757
 
      }// end loop over 'r'
4758
 
      for (unsigned int r = 0; r < 4; r++)
4759
 
      {
4760
 
        for (unsigned int s = 0; s < 4 - r; s++)
4761
 
        {
4762
 
          rr = (r + s)*(r + s + 1)/2 + s;
4763
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4764
 
        }// end loop over 's'
4765
 
      }// end loop over 'r'
 
3851
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3852
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3853
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3854
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3855
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3856
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3857
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3858
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3859
      basisvalues[0] *= std::sqrt(0.5);
 
3860
      basisvalues[2] *= std::sqrt(1.0);
 
3861
      basisvalues[5] *= std::sqrt(1.5);
 
3862
      basisvalues[9] *= std::sqrt(2.0);
 
3863
      basisvalues[1] *= std::sqrt(3.0);
 
3864
      basisvalues[4] *= std::sqrt(4.5);
 
3865
      basisvalues[8] *= std::sqrt(6.0);
 
3866
      basisvalues[3] *= std::sqrt(7.5);
 
3867
      basisvalues[7] *= std::sqrt(10.0);
 
3868
      basisvalues[6] *= std::sqrt(14.0);
4766
3869
      
4767
3870
      // Table(s) of coefficients.
4768
3871
      static const double coefficients0[10] = \
4928
4031
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4929
4032
      
4930
4033
      // Declare helper variables.
4931
 
      unsigned int rr = 0;
4932
 
      unsigned int ss = 0;
4933
 
      unsigned int tt = 0;
4934
 
      double tmp5 = 0.0;
4935
 
      double tmp6 = 0.0;
4936
 
      double tmp7 = 0.0;
4937
4034
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
4938
4035
      double tmp1 = (1.0 - Y)/2.0;
4939
4036
      double tmp2 = tmp1*tmp1;
4941
4038
      // Compute basisvalues.
4942
4039
      basisvalues[0] = 1.0;
4943
4040
      basisvalues[1] = tmp0;
4944
 
      for (unsigned int r = 1; r < 3; r++)
4945
 
      {
4946
 
        rr = (r + 1)*((r + 1) + 1)/2;
4947
 
        ss = r*(r + 1)/2;
4948
 
        tt = (r - 1)*((r - 1) + 1)/2;
4949
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
4950
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
4951
 
      }// end loop over 'r'
4952
 
      for (unsigned int r = 0; r < 3; r++)
4953
 
      {
4954
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
4955
 
        ss = r*(r + 1)/2;
4956
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
4957
 
      }// end loop over 'r'
4958
 
      for (unsigned int r = 0; r < 2; r++)
4959
 
      {
4960
 
        for (unsigned int s = 1; s < 3 - r; s++)
4961
 
        {
4962
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
4963
 
          ss = (r + s)*(r + s + 1)/2 + s;
4964
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
4965
 
          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));
4966
 
          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));
4967
 
          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));
4968
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
4969
 
        }// end loop over 's'
4970
 
      }// end loop over 'r'
4971
 
      for (unsigned int r = 0; r < 4; r++)
4972
 
      {
4973
 
        for (unsigned int s = 0; s < 4 - r; s++)
4974
 
        {
4975
 
          rr = (r + s)*(r + s + 1)/2 + s;
4976
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
4977
 
        }// end loop over 's'
4978
 
      }// end loop over 'r'
 
4041
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
4042
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
4043
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
4044
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
4045
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
4046
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
4047
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
4048
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
4049
      basisvalues[0] *= std::sqrt(0.5);
 
4050
      basisvalues[2] *= std::sqrt(1.0);
 
4051
      basisvalues[5] *= std::sqrt(1.5);
 
4052
      basisvalues[9] *= std::sqrt(2.0);
 
4053
      basisvalues[1] *= std::sqrt(3.0);
 
4054
      basisvalues[4] *= std::sqrt(4.5);
 
4055
      basisvalues[8] *= std::sqrt(6.0);
 
4056
      basisvalues[3] *= std::sqrt(7.5);
 
4057
      basisvalues[7] *= std::sqrt(10.0);
 
4058
      basisvalues[6] *= std::sqrt(14.0);
4979
4059
      
4980
4060
      // Table(s) of coefficients.
4981
4061
      static const double coefficients0[10] = \
5141
4221
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
5142
4222
      
5143
4223
      // Declare helper variables.
5144
 
      unsigned int rr = 0;
5145
 
      unsigned int ss = 0;
5146
 
      unsigned int tt = 0;
5147
 
      double tmp5 = 0.0;
5148
 
      double tmp6 = 0.0;
5149
 
      double tmp7 = 0.0;
5150
4224
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
5151
4225
      double tmp1 = (1.0 - Y)/2.0;
5152
4226
      double tmp2 = tmp1*tmp1;
5154
4228
      // Compute basisvalues.
5155
4229
      basisvalues[0] = 1.0;
5156
4230
      basisvalues[1] = tmp0;
5157
 
      for (unsigned int r = 1; r < 3; r++)
5158
 
      {
5159
 
        rr = (r + 1)*((r + 1) + 1)/2;
5160
 
        ss = r*(r + 1)/2;
5161
 
        tt = (r - 1)*((r - 1) + 1)/2;
5162
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
5163
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
5164
 
      }// end loop over 'r'
5165
 
      for (unsigned int r = 0; r < 3; r++)
5166
 
      {
5167
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
5168
 
        ss = r*(r + 1)/2;
5169
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
5170
 
      }// end loop over 'r'
5171
 
      for (unsigned int r = 0; r < 2; r++)
5172
 
      {
5173
 
        for (unsigned int s = 1; s < 3 - r; s++)
5174
 
        {
5175
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
5176
 
          ss = (r + s)*(r + s + 1)/2 + s;
5177
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
5178
 
          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));
5179
 
          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));
5180
 
          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));
5181
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
5182
 
        }// end loop over 's'
5183
 
      }// end loop over 'r'
5184
 
      for (unsigned int r = 0; r < 4; r++)
5185
 
      {
5186
 
        for (unsigned int s = 0; s < 4 - r; s++)
5187
 
        {
5188
 
          rr = (r + s)*(r + s + 1)/2 + s;
5189
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
5190
 
        }// end loop over 's'
5191
 
      }// end loop over 'r'
 
4231
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
4232
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
4233
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
4234
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
4235
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
4236
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
4237
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
4238
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
4239
      basisvalues[0] *= std::sqrt(0.5);
 
4240
      basisvalues[2] *= std::sqrt(1.0);
 
4241
      basisvalues[5] *= std::sqrt(1.5);
 
4242
      basisvalues[9] *= std::sqrt(2.0);
 
4243
      basisvalues[1] *= std::sqrt(3.0);
 
4244
      basisvalues[4] *= std::sqrt(4.5);
 
4245
      basisvalues[8] *= std::sqrt(6.0);
 
4246
      basisvalues[3] *= std::sqrt(7.5);
 
4247
      basisvalues[7] *= std::sqrt(10.0);
 
4248
      basisvalues[6] *= std::sqrt(14.0);
5192
4249
      
5193
4250
      // Table(s) of coefficients.
5194
4251
      static const double coefficients0[10] = \
5354
4411
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
5355
4412
      
5356
4413
      // Declare helper variables.
5357
 
      unsigned int rr = 0;
5358
 
      unsigned int ss = 0;
5359
 
      unsigned int tt = 0;
5360
 
      double tmp5 = 0.0;
5361
 
      double tmp6 = 0.0;
5362
 
      double tmp7 = 0.0;
5363
4414
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
5364
4415
      double tmp1 = (1.0 - Y)/2.0;
5365
4416
      double tmp2 = tmp1*tmp1;
5367
4418
      // Compute basisvalues.
5368
4419
      basisvalues[0] = 1.0;
5369
4420
      basisvalues[1] = tmp0;
5370
 
      for (unsigned int r = 1; r < 3; r++)
5371
 
      {
5372
 
        rr = (r + 1)*((r + 1) + 1)/2;
5373
 
        ss = r*(r + 1)/2;
5374
 
        tt = (r - 1)*((r - 1) + 1)/2;
5375
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
5376
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
5377
 
      }// end loop over 'r'
5378
 
      for (unsigned int r = 0; r < 3; r++)
5379
 
      {
5380
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
5381
 
        ss = r*(r + 1)/2;
5382
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
5383
 
      }// end loop over 'r'
5384
 
      for (unsigned int r = 0; r < 2; r++)
5385
 
      {
5386
 
        for (unsigned int s = 1; s < 3 - r; s++)
5387
 
        {
5388
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
5389
 
          ss = (r + s)*(r + s + 1)/2 + s;
5390
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
5391
 
          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));
5392
 
          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));
5393
 
          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));
5394
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
5395
 
        }// end loop over 's'
5396
 
      }// end loop over 'r'
5397
 
      for (unsigned int r = 0; r < 4; r++)
5398
 
      {
5399
 
        for (unsigned int s = 0; s < 4 - r; s++)
5400
 
        {
5401
 
          rr = (r + s)*(r + s + 1)/2 + s;
5402
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
5403
 
        }// end loop over 's'
5404
 
      }// end loop over 'r'
 
4421
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
4422
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
4423
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
4424
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
4425
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
4426
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
4427
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
4428
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
4429
      basisvalues[0] *= std::sqrt(0.5);
 
4430
      basisvalues[2] *= std::sqrt(1.0);
 
4431
      basisvalues[5] *= std::sqrt(1.5);
 
4432
      basisvalues[9] *= std::sqrt(2.0);
 
4433
      basisvalues[1] *= std::sqrt(3.0);
 
4434
      basisvalues[4] *= std::sqrt(4.5);
 
4435
      basisvalues[8] *= std::sqrt(6.0);
 
4436
      basisvalues[3] *= std::sqrt(7.5);
 
4437
      basisvalues[7] *= std::sqrt(10.0);
 
4438
      basisvalues[6] *= std::sqrt(14.0);
5405
4439
      
5406
4440
      // Table(s) of coefficients.
5407
4441
      static const double coefficients0[10] = \
5567
4601
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
5568
4602
      
5569
4603
      // Declare helper variables.
5570
 
      unsigned int rr = 0;
5571
 
      unsigned int ss = 0;
5572
 
      unsigned int tt = 0;
5573
 
      double tmp5 = 0.0;
5574
 
      double tmp6 = 0.0;
5575
 
      double tmp7 = 0.0;
5576
4604
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
5577
4605
      double tmp1 = (1.0 - Y)/2.0;
5578
4606
      double tmp2 = tmp1*tmp1;
5580
4608
      // Compute basisvalues.
5581
4609
      basisvalues[0] = 1.0;
5582
4610
      basisvalues[1] = tmp0;
5583
 
      for (unsigned int r = 1; r < 3; r++)
5584
 
      {
5585
 
        rr = (r + 1)*((r + 1) + 1)/2;
5586
 
        ss = r*(r + 1)/2;
5587
 
        tt = (r - 1)*((r - 1) + 1)/2;
5588
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
5589
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
5590
 
      }// end loop over 'r'
5591
 
      for (unsigned int r = 0; r < 3; r++)
5592
 
      {
5593
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
5594
 
        ss = r*(r + 1)/2;
5595
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
5596
 
      }// end loop over 'r'
5597
 
      for (unsigned int r = 0; r < 2; r++)
5598
 
      {
5599
 
        for (unsigned int s = 1; s < 3 - r; s++)
5600
 
        {
5601
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
5602
 
          ss = (r + s)*(r + s + 1)/2 + s;
5603
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
5604
 
          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));
5605
 
          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));
5606
 
          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));
5607
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
5608
 
        }// end loop over 's'
5609
 
      }// end loop over 'r'
5610
 
      for (unsigned int r = 0; r < 4; r++)
5611
 
      {
5612
 
        for (unsigned int s = 0; s < 4 - r; s++)
5613
 
        {
5614
 
          rr = (r + s)*(r + s + 1)/2 + s;
5615
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
5616
 
        }// end loop over 's'
5617
 
      }// end loop over 'r'
 
4611
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
4612
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
4613
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
4614
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
4615
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
4616
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
4617
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
4618
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
4619
      basisvalues[0] *= std::sqrt(0.5);
 
4620
      basisvalues[2] *= std::sqrt(1.0);
 
4621
      basisvalues[5] *= std::sqrt(1.5);
 
4622
      basisvalues[9] *= std::sqrt(2.0);
 
4623
      basisvalues[1] *= std::sqrt(3.0);
 
4624
      basisvalues[4] *= std::sqrt(4.5);
 
4625
      basisvalues[8] *= std::sqrt(6.0);
 
4626
      basisvalues[3] *= std::sqrt(7.5);
 
4627
      basisvalues[7] *= std::sqrt(10.0);
 
4628
      basisvalues[6] *= std::sqrt(14.0);
5618
4629
      
5619
4630
      // Table(s) of coefficients.
5620
4631
      static const double coefficients0[10] = \
5780
4791
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
5781
4792
      
5782
4793
      // Declare helper variables.
5783
 
      unsigned int rr = 0;
5784
 
      unsigned int ss = 0;
5785
 
      unsigned int tt = 0;
5786
 
      double tmp5 = 0.0;
5787
 
      double tmp6 = 0.0;
5788
 
      double tmp7 = 0.0;
5789
4794
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
5790
4795
      double tmp1 = (1.0 - Y)/2.0;
5791
4796
      double tmp2 = tmp1*tmp1;
5793
4798
      // Compute basisvalues.
5794
4799
      basisvalues[0] = 1.0;
5795
4800
      basisvalues[1] = tmp0;
5796
 
      for (unsigned int r = 1; r < 3; r++)
5797
 
      {
5798
 
        rr = (r + 1)*((r + 1) + 1)/2;
5799
 
        ss = r*(r + 1)/2;
5800
 
        tt = (r - 1)*((r - 1) + 1)/2;
5801
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
5802
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
5803
 
      }// end loop over 'r'
5804
 
      for (unsigned int r = 0; r < 3; r++)
5805
 
      {
5806
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
5807
 
        ss = r*(r + 1)/2;
5808
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
5809
 
      }// end loop over 'r'
5810
 
      for (unsigned int r = 0; r < 2; r++)
5811
 
      {
5812
 
        for (unsigned int s = 1; s < 3 - r; s++)
5813
 
        {
5814
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
5815
 
          ss = (r + s)*(r + s + 1)/2 + s;
5816
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
5817
 
          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));
5818
 
          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));
5819
 
          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));
5820
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
5821
 
        }// end loop over 's'
5822
 
      }// end loop over 'r'
5823
 
      for (unsigned int r = 0; r < 4; r++)
5824
 
      {
5825
 
        for (unsigned int s = 0; s < 4 - r; s++)
5826
 
        {
5827
 
          rr = (r + s)*(r + s + 1)/2 + s;
5828
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
5829
 
        }// end loop over 's'
5830
 
      }// end loop over 'r'
 
4801
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
4802
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
4803
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
4804
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
4805
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
4806
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
4807
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
4808
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
4809
      basisvalues[0] *= std::sqrt(0.5);
 
4810
      basisvalues[2] *= std::sqrt(1.0);
 
4811
      basisvalues[5] *= std::sqrt(1.5);
 
4812
      basisvalues[9] *= std::sqrt(2.0);
 
4813
      basisvalues[1] *= std::sqrt(3.0);
 
4814
      basisvalues[4] *= std::sqrt(4.5);
 
4815
      basisvalues[8] *= std::sqrt(6.0);
 
4816
      basisvalues[3] *= std::sqrt(7.5);
 
4817
      basisvalues[7] *= std::sqrt(10.0);
 
4818
      basisvalues[6] *= std::sqrt(14.0);
5831
4819
      
5832
4820
      // Table(s) of coefficients.
5833
4821
      static const double coefficients0[10] = \
5993
4981
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
5994
4982
      
5995
4983
      // Declare helper variables.
5996
 
      unsigned int rr = 0;
5997
 
      unsigned int ss = 0;
5998
 
      unsigned int tt = 0;
5999
 
      double tmp5 = 0.0;
6000
 
      double tmp6 = 0.0;
6001
 
      double tmp7 = 0.0;
6002
4984
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
6003
4985
      double tmp1 = (1.0 - Y)/2.0;
6004
4986
      double tmp2 = tmp1*tmp1;
6006
4988
      // Compute basisvalues.
6007
4989
      basisvalues[0] = 1.0;
6008
4990
      basisvalues[1] = tmp0;
6009
 
      for (unsigned int r = 1; r < 3; r++)
6010
 
      {
6011
 
        rr = (r + 1)*((r + 1) + 1)/2;
6012
 
        ss = r*(r + 1)/2;
6013
 
        tt = (r - 1)*((r - 1) + 1)/2;
6014
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
6015
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
6016
 
      }// end loop over 'r'
6017
 
      for (unsigned int r = 0; r < 3; r++)
6018
 
      {
6019
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
6020
 
        ss = r*(r + 1)/2;
6021
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
6022
 
      }// end loop over 'r'
6023
 
      for (unsigned int r = 0; r < 2; r++)
6024
 
      {
6025
 
        for (unsigned int s = 1; s < 3 - r; s++)
6026
 
        {
6027
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
6028
 
          ss = (r + s)*(r + s + 1)/2 + s;
6029
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
6030
 
          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));
6031
 
          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));
6032
 
          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));
6033
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
6034
 
        }// end loop over 's'
6035
 
      }// end loop over 'r'
6036
 
      for (unsigned int r = 0; r < 4; r++)
6037
 
      {
6038
 
        for (unsigned int s = 0; s < 4 - r; s++)
6039
 
        {
6040
 
          rr = (r + s)*(r + s + 1)/2 + s;
6041
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
6042
 
        }// end loop over 's'
6043
 
      }// end loop over 'r'
 
4991
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
4992
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
4993
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
4994
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
4995
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
4996
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
4997
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
4998
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
4999
      basisvalues[0] *= std::sqrt(0.5);
 
5000
      basisvalues[2] *= std::sqrt(1.0);
 
5001
      basisvalues[5] *= std::sqrt(1.5);
 
5002
      basisvalues[9] *= std::sqrt(2.0);
 
5003
      basisvalues[1] *= std::sqrt(3.0);
 
5004
      basisvalues[4] *= std::sqrt(4.5);
 
5005
      basisvalues[8] *= std::sqrt(6.0);
 
5006
      basisvalues[3] *= std::sqrt(7.5);
 
5007
      basisvalues[7] *= std::sqrt(10.0);
 
5008
      basisvalues[6] *= std::sqrt(14.0);
6044
5009
      
6045
5010
      // Table(s) of coefficients.
6046
5011
      static const double coefficients0[10] = \
6206
5171
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
6207
5172
      
6208
5173
      // Declare helper variables.
6209
 
      unsigned int rr = 0;
6210
 
      unsigned int ss = 0;
6211
 
      unsigned int tt = 0;
6212
 
      double tmp5 = 0.0;
6213
 
      double tmp6 = 0.0;
6214
 
      double tmp7 = 0.0;
6215
5174
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
6216
5175
      double tmp1 = (1.0 - Y)/2.0;
6217
5176
      double tmp2 = tmp1*tmp1;
6219
5178
      // Compute basisvalues.
6220
5179
      basisvalues[0] = 1.0;
6221
5180
      basisvalues[1] = tmp0;
6222
 
      for (unsigned int r = 1; r < 3; r++)
6223
 
      {
6224
 
        rr = (r + 1)*((r + 1) + 1)/2;
6225
 
        ss = r*(r + 1)/2;
6226
 
        tt = (r - 1)*((r - 1) + 1)/2;
6227
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
6228
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
6229
 
      }// end loop over 'r'
6230
 
      for (unsigned int r = 0; r < 3; r++)
6231
 
      {
6232
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
6233
 
        ss = r*(r + 1)/2;
6234
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
6235
 
      }// end loop over 'r'
6236
 
      for (unsigned int r = 0; r < 2; r++)
6237
 
      {
6238
 
        for (unsigned int s = 1; s < 3 - r; s++)
6239
 
        {
6240
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
6241
 
          ss = (r + s)*(r + s + 1)/2 + s;
6242
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
6243
 
          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));
6244
 
          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));
6245
 
          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));
6246
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
6247
 
        }// end loop over 's'
6248
 
      }// end loop over 'r'
6249
 
      for (unsigned int r = 0; r < 4; r++)
6250
 
      {
6251
 
        for (unsigned int s = 0; s < 4 - r; s++)
6252
 
        {
6253
 
          rr = (r + s)*(r + s + 1)/2 + s;
6254
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
6255
 
        }// end loop over 's'
6256
 
      }// end loop over 'r'
 
5181
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
5182
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
5183
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
5184
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
5185
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
5186
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
5187
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
5188
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
5189
      basisvalues[0] *= std::sqrt(0.5);
 
5190
      basisvalues[2] *= std::sqrt(1.0);
 
5191
      basisvalues[5] *= std::sqrt(1.5);
 
5192
      basisvalues[9] *= std::sqrt(2.0);
 
5193
      basisvalues[1] *= std::sqrt(3.0);
 
5194
      basisvalues[4] *= std::sqrt(4.5);
 
5195
      basisvalues[8] *= std::sqrt(6.0);
 
5196
      basisvalues[3] *= std::sqrt(7.5);
 
5197
      basisvalues[7] *= std::sqrt(10.0);
 
5198
      basisvalues[6] *= std::sqrt(14.0);
6257
5199
      
6258
5200
      // Table(s) of coefficients.
6259
5201
      static const double coefficients0[10] = \
6419
5361
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
6420
5362
      
6421
5363
      // Declare helper variables.
6422
 
      unsigned int rr = 0;
6423
 
      unsigned int ss = 0;
6424
 
      unsigned int tt = 0;
6425
 
      double tmp5 = 0.0;
6426
 
      double tmp6 = 0.0;
6427
 
      double tmp7 = 0.0;
6428
5364
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
6429
5365
      double tmp1 = (1.0 - Y)/2.0;
6430
5366
      double tmp2 = tmp1*tmp1;
6432
5368
      // Compute basisvalues.
6433
5369
      basisvalues[0] = 1.0;
6434
5370
      basisvalues[1] = tmp0;
6435
 
      for (unsigned int r = 1; r < 3; r++)
6436
 
      {
6437
 
        rr = (r + 1)*((r + 1) + 1)/2;
6438
 
        ss = r*(r + 1)/2;
6439
 
        tt = (r - 1)*((r - 1) + 1)/2;
6440
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
6441
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
6442
 
      }// end loop over 'r'
6443
 
      for (unsigned int r = 0; r < 3; r++)
6444
 
      {
6445
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
6446
 
        ss = r*(r + 1)/2;
6447
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
6448
 
      }// end loop over 'r'
6449
 
      for (unsigned int r = 0; r < 2; r++)
6450
 
      {
6451
 
        for (unsigned int s = 1; s < 3 - r; s++)
6452
 
        {
6453
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
6454
 
          ss = (r + s)*(r + s + 1)/2 + s;
6455
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
6456
 
          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));
6457
 
          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));
6458
 
          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));
6459
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
6460
 
        }// end loop over 's'
6461
 
      }// end loop over 'r'
6462
 
      for (unsigned int r = 0; r < 4; r++)
6463
 
      {
6464
 
        for (unsigned int s = 0; s < 4 - r; s++)
6465
 
        {
6466
 
          rr = (r + s)*(r + s + 1)/2 + s;
6467
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
6468
 
        }// end loop over 's'
6469
 
      }// end loop over 'r'
 
5371
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
5372
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
5373
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
5374
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
5375
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
5376
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
5377
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
5378
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
5379
      basisvalues[0] *= std::sqrt(0.5);
 
5380
      basisvalues[2] *= std::sqrt(1.0);
 
5381
      basisvalues[5] *= std::sqrt(1.5);
 
5382
      basisvalues[9] *= std::sqrt(2.0);
 
5383
      basisvalues[1] *= std::sqrt(3.0);
 
5384
      basisvalues[4] *= std::sqrt(4.5);
 
5385
      basisvalues[8] *= std::sqrt(6.0);
 
5386
      basisvalues[3] *= std::sqrt(7.5);
 
5387
      basisvalues[7] *= std::sqrt(10.0);
 
5388
      basisvalues[6] *= std::sqrt(14.0);
6470
5389
      
6471
5390
      // Table(s) of coefficients.
6472
5391
      static const double coefficients0[10] = \
6632
5551
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
6633
5552
      
6634
5553
      // Declare helper variables.
6635
 
      unsigned int rr = 0;
6636
 
      unsigned int ss = 0;
6637
 
      unsigned int tt = 0;
6638
 
      double tmp5 = 0.0;
6639
 
      double tmp6 = 0.0;
6640
 
      double tmp7 = 0.0;
6641
5554
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
6642
5555
      double tmp1 = (1.0 - Y)/2.0;
6643
5556
      double tmp2 = tmp1*tmp1;
6645
5558
      // Compute basisvalues.
6646
5559
      basisvalues[0] = 1.0;
6647
5560
      basisvalues[1] = tmp0;
6648
 
      for (unsigned int r = 1; r < 3; r++)
6649
 
      {
6650
 
        rr = (r + 1)*((r + 1) + 1)/2;
6651
 
        ss = r*(r + 1)/2;
6652
 
        tt = (r - 1)*((r - 1) + 1)/2;
6653
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
6654
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
6655
 
      }// end loop over 'r'
6656
 
      for (unsigned int r = 0; r < 3; r++)
6657
 
      {
6658
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
6659
 
        ss = r*(r + 1)/2;
6660
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
6661
 
      }// end loop over 'r'
6662
 
      for (unsigned int r = 0; r < 2; r++)
6663
 
      {
6664
 
        for (unsigned int s = 1; s < 3 - r; s++)
6665
 
        {
6666
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
6667
 
          ss = (r + s)*(r + s + 1)/2 + s;
6668
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
6669
 
          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));
6670
 
          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));
6671
 
          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));
6672
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
6673
 
        }// end loop over 's'
6674
 
      }// end loop over 'r'
6675
 
      for (unsigned int r = 0; r < 4; r++)
6676
 
      {
6677
 
        for (unsigned int s = 0; s < 4 - r; s++)
6678
 
        {
6679
 
          rr = (r + s)*(r + s + 1)/2 + s;
6680
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
6681
 
        }// end loop over 's'
6682
 
      }// end loop over 'r'
 
5561
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
5562
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
5563
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
5564
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
5565
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
5566
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
5567
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
5568
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
5569
      basisvalues[0] *= std::sqrt(0.5);
 
5570
      basisvalues[2] *= std::sqrt(1.0);
 
5571
      basisvalues[5] *= std::sqrt(1.5);
 
5572
      basisvalues[9] *= std::sqrt(2.0);
 
5573
      basisvalues[1] *= std::sqrt(3.0);
 
5574
      basisvalues[4] *= std::sqrt(4.5);
 
5575
      basisvalues[8] *= std::sqrt(6.0);
 
5576
      basisvalues[3] *= std::sqrt(7.5);
 
5577
      basisvalues[7] *= std::sqrt(10.0);
 
5578
      basisvalues[6] *= std::sqrt(14.0);
6683
5579
      
6684
5580
      // Table(s) of coefficients.
6685
5581
      static const double coefficients0[10] = \
6845
5741
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
6846
5742
      
6847
5743
      // Declare helper variables.
6848
 
      unsigned int rr = 0;
6849
 
      unsigned int ss = 0;
6850
 
      unsigned int tt = 0;
6851
 
      double tmp5 = 0.0;
6852
 
      double tmp6 = 0.0;
6853
 
      double tmp7 = 0.0;
6854
5744
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
6855
5745
      double tmp1 = (1.0 - Y)/2.0;
6856
5746
      double tmp2 = tmp1*tmp1;
6858
5748
      // Compute basisvalues.
6859
5749
      basisvalues[0] = 1.0;
6860
5750
      basisvalues[1] = tmp0;
6861
 
      for (unsigned int r = 1; r < 3; r++)
6862
 
      {
6863
 
        rr = (r + 1)*((r + 1) + 1)/2;
6864
 
        ss = r*(r + 1)/2;
6865
 
        tt = (r - 1)*((r - 1) + 1)/2;
6866
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
6867
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
6868
 
      }// end loop over 'r'
6869
 
      for (unsigned int r = 0; r < 3; r++)
6870
 
      {
6871
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
6872
 
        ss = r*(r + 1)/2;
6873
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
6874
 
      }// end loop over 'r'
6875
 
      for (unsigned int r = 0; r < 2; r++)
6876
 
      {
6877
 
        for (unsigned int s = 1; s < 3 - r; s++)
6878
 
        {
6879
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
6880
 
          ss = (r + s)*(r + s + 1)/2 + s;
6881
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
6882
 
          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));
6883
 
          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));
6884
 
          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));
6885
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
6886
 
        }// end loop over 's'
6887
 
      }// end loop over 'r'
6888
 
      for (unsigned int r = 0; r < 4; r++)
6889
 
      {
6890
 
        for (unsigned int s = 0; s < 4 - r; s++)
6891
 
        {
6892
 
          rr = (r + s)*(r + s + 1)/2 + s;
6893
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
6894
 
        }// end loop over 's'
6895
 
      }// end loop over 'r'
 
5751
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
5752
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
5753
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
5754
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
5755
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
5756
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
5757
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
5758
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
5759
      basisvalues[0] *= std::sqrt(0.5);
 
5760
      basisvalues[2] *= std::sqrt(1.0);
 
5761
      basisvalues[5] *= std::sqrt(1.5);
 
5762
      basisvalues[9] *= std::sqrt(2.0);
 
5763
      basisvalues[1] *= std::sqrt(3.0);
 
5764
      basisvalues[4] *= std::sqrt(4.5);
 
5765
      basisvalues[8] *= std::sqrt(6.0);
 
5766
      basisvalues[3] *= std::sqrt(7.5);
 
5767
      basisvalues[7] *= std::sqrt(10.0);
 
5768
      basisvalues[6] *= std::sqrt(14.0);
6896
5769
      
6897
5770
      // Table(s) of coefficients.
6898
5771
      static const double coefficients0[10] = \
7058
5931
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
7059
5932
      
7060
5933
      // Declare helper variables.
7061
 
      unsigned int rr = 0;
7062
 
      unsigned int ss = 0;
7063
 
      unsigned int tt = 0;
7064
 
      double tmp5 = 0.0;
7065
 
      double tmp6 = 0.0;
7066
 
      double tmp7 = 0.0;
7067
5934
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
7068
5935
      double tmp1 = (1.0 - Y)/2.0;
7069
5936
      double tmp2 = tmp1*tmp1;
7071
5938
      // Compute basisvalues.
7072
5939
      basisvalues[0] = 1.0;
7073
5940
      basisvalues[1] = tmp0;
7074
 
      for (unsigned int r = 1; r < 3; r++)
7075
 
      {
7076
 
        rr = (r + 1)*((r + 1) + 1)/2;
7077
 
        ss = r*(r + 1)/2;
7078
 
        tt = (r - 1)*((r - 1) + 1)/2;
7079
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
7080
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
7081
 
      }// end loop over 'r'
7082
 
      for (unsigned int r = 0; r < 3; r++)
7083
 
      {
7084
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
7085
 
        ss = r*(r + 1)/2;
7086
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
7087
 
      }// end loop over 'r'
7088
 
      for (unsigned int r = 0; r < 2; r++)
7089
 
      {
7090
 
        for (unsigned int s = 1; s < 3 - r; s++)
7091
 
        {
7092
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
7093
 
          ss = (r + s)*(r + s + 1)/2 + s;
7094
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
7095
 
          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));
7096
 
          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));
7097
 
          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));
7098
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
7099
 
        }// end loop over 's'
7100
 
      }// end loop over 'r'
7101
 
      for (unsigned int r = 0; r < 4; r++)
7102
 
      {
7103
 
        for (unsigned int s = 0; s < 4 - r; s++)
7104
 
        {
7105
 
          rr = (r + s)*(r + s + 1)/2 + s;
7106
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
7107
 
        }// end loop over 's'
7108
 
      }// end loop over 'r'
 
5941
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
5942
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
5943
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
5944
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
5945
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
5946
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
5947
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
5948
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
5949
      basisvalues[0] *= std::sqrt(0.5);
 
5950
      basisvalues[2] *= std::sqrt(1.0);
 
5951
      basisvalues[5] *= std::sqrt(1.5);
 
5952
      basisvalues[9] *= std::sqrt(2.0);
 
5953
      basisvalues[1] *= std::sqrt(3.0);
 
5954
      basisvalues[4] *= std::sqrt(4.5);
 
5955
      basisvalues[8] *= std::sqrt(6.0);
 
5956
      basisvalues[3] *= std::sqrt(7.5);
 
5957
      basisvalues[7] *= std::sqrt(10.0);
 
5958
      basisvalues[6] *= std::sqrt(14.0);
7109
5959
      
7110
5960
      // Table(s) of coefficients.
7111
5961
      static const double coefficients0[10] = \
7271
6121
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
7272
6122
      
7273
6123
      // Declare helper variables.
7274
 
      unsigned int rr = 0;
7275
 
      unsigned int ss = 0;
7276
 
      unsigned int tt = 0;
7277
 
      double tmp5 = 0.0;
7278
 
      double tmp6 = 0.0;
7279
 
      double tmp7 = 0.0;
7280
6124
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
7281
6125
      double tmp1 = (1.0 - Y)/2.0;
7282
6126
      double tmp2 = tmp1*tmp1;
7284
6128
      // Compute basisvalues.
7285
6129
      basisvalues[0] = 1.0;
7286
6130
      basisvalues[1] = tmp0;
7287
 
      for (unsigned int r = 1; r < 3; r++)
7288
 
      {
7289
 
        rr = (r + 1)*((r + 1) + 1)/2;
7290
 
        ss = r*(r + 1)/2;
7291
 
        tt = (r - 1)*((r - 1) + 1)/2;
7292
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
7293
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
7294
 
      }// end loop over 'r'
7295
 
      for (unsigned int r = 0; r < 3; r++)
7296
 
      {
7297
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
7298
 
        ss = r*(r + 1)/2;
7299
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
7300
 
      }// end loop over 'r'
7301
 
      for (unsigned int r = 0; r < 2; r++)
7302
 
      {
7303
 
        for (unsigned int s = 1; s < 3 - r; s++)
7304
 
        {
7305
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
7306
 
          ss = (r + s)*(r + s + 1)/2 + s;
7307
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
7308
 
          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));
7309
 
          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));
7310
 
          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));
7311
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
7312
 
        }// end loop over 's'
7313
 
      }// end loop over 'r'
7314
 
      for (unsigned int r = 0; r < 4; r++)
7315
 
      {
7316
 
        for (unsigned int s = 0; s < 4 - r; s++)
7317
 
        {
7318
 
          rr = (r + s)*(r + s + 1)/2 + s;
7319
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
7320
 
        }// end loop over 's'
7321
 
      }// end loop over 'r'
 
6131
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
6132
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
6133
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
6134
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
6135
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
6136
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
6137
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
6138
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
6139
      basisvalues[0] *= std::sqrt(0.5);
 
6140
      basisvalues[2] *= std::sqrt(1.0);
 
6141
      basisvalues[5] *= std::sqrt(1.5);
 
6142
      basisvalues[9] *= std::sqrt(2.0);
 
6143
      basisvalues[1] *= std::sqrt(3.0);
 
6144
      basisvalues[4] *= std::sqrt(4.5);
 
6145
      basisvalues[8] *= std::sqrt(6.0);
 
6146
      basisvalues[3] *= std::sqrt(7.5);
 
6147
      basisvalues[7] *= std::sqrt(10.0);
 
6148
      basisvalues[6] *= std::sqrt(14.0);
7322
6149
      
7323
6150
      // Table(s) of coefficients.
7324
6151
      static const double coefficients0[10] = \
7484
6311
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
7485
6312
      
7486
6313
      // Declare helper variables.
7487
 
      unsigned int rr = 0;
7488
 
      unsigned int ss = 0;
7489
 
      unsigned int tt = 0;
7490
 
      double tmp5 = 0.0;
7491
 
      double tmp6 = 0.0;
7492
 
      double tmp7 = 0.0;
7493
6314
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
7494
6315
      double tmp1 = (1.0 - Y)/2.0;
7495
6316
      double tmp2 = tmp1*tmp1;
7497
6318
      // Compute basisvalues.
7498
6319
      basisvalues[0] = 1.0;
7499
6320
      basisvalues[1] = tmp0;
7500
 
      for (unsigned int r = 1; r < 3; r++)
7501
 
      {
7502
 
        rr = (r + 1)*((r + 1) + 1)/2;
7503
 
        ss = r*(r + 1)/2;
7504
 
        tt = (r - 1)*((r - 1) + 1)/2;
7505
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
7506
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
7507
 
      }// end loop over 'r'
7508
 
      for (unsigned int r = 0; r < 3; r++)
7509
 
      {
7510
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
7511
 
        ss = r*(r + 1)/2;
7512
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
7513
 
      }// end loop over 'r'
7514
 
      for (unsigned int r = 0; r < 2; r++)
7515
 
      {
7516
 
        for (unsigned int s = 1; s < 3 - r; s++)
7517
 
        {
7518
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
7519
 
          ss = (r + s)*(r + s + 1)/2 + s;
7520
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
7521
 
          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));
7522
 
          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));
7523
 
          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));
7524
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
7525
 
        }// end loop over 's'
7526
 
      }// end loop over 'r'
7527
 
      for (unsigned int r = 0; r < 4; r++)
7528
 
      {
7529
 
        for (unsigned int s = 0; s < 4 - r; s++)
7530
 
        {
7531
 
          rr = (r + s)*(r + s + 1)/2 + s;
7532
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
7533
 
        }// end loop over 's'
7534
 
      }// end loop over 'r'
 
6321
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
6322
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
6323
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
6324
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
6325
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
6326
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
6327
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
6328
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
6329
      basisvalues[0] *= std::sqrt(0.5);
 
6330
      basisvalues[2] *= std::sqrt(1.0);
 
6331
      basisvalues[5] *= std::sqrt(1.5);
 
6332
      basisvalues[9] *= std::sqrt(2.0);
 
6333
      basisvalues[1] *= std::sqrt(3.0);
 
6334
      basisvalues[4] *= std::sqrt(4.5);
 
6335
      basisvalues[8] *= std::sqrt(6.0);
 
6336
      basisvalues[3] *= std::sqrt(7.5);
 
6337
      basisvalues[7] *= std::sqrt(10.0);
 
6338
      basisvalues[6] *= std::sqrt(14.0);
7535
6339
      
7536
6340
      // Table(s) of coefficients.
7537
6341
      static const double coefficients0[10] = \
7697
6501
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
7698
6502
      
7699
6503
      // Declare helper variables.
7700
 
      unsigned int rr = 0;
7701
 
      unsigned int ss = 0;
7702
 
      unsigned int tt = 0;
7703
 
      double tmp5 = 0.0;
7704
 
      double tmp6 = 0.0;
7705
 
      double tmp7 = 0.0;
7706
6504
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
7707
6505
      double tmp1 = (1.0 - Y)/2.0;
7708
6506
      double tmp2 = tmp1*tmp1;
7710
6508
      // Compute basisvalues.
7711
6509
      basisvalues[0] = 1.0;
7712
6510
      basisvalues[1] = tmp0;
7713
 
      for (unsigned int r = 1; r < 3; r++)
7714
 
      {
7715
 
        rr = (r + 1)*((r + 1) + 1)/2;
7716
 
        ss = r*(r + 1)/2;
7717
 
        tt = (r - 1)*((r - 1) + 1)/2;
7718
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
7719
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
7720
 
      }// end loop over 'r'
7721
 
      for (unsigned int r = 0; r < 3; r++)
7722
 
      {
7723
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
7724
 
        ss = r*(r + 1)/2;
7725
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
7726
 
      }// end loop over 'r'
7727
 
      for (unsigned int r = 0; r < 2; r++)
7728
 
      {
7729
 
        for (unsigned int s = 1; s < 3 - r; s++)
7730
 
        {
7731
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
7732
 
          ss = (r + s)*(r + s + 1)/2 + s;
7733
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
7734
 
          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));
7735
 
          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));
7736
 
          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));
7737
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
7738
 
        }// end loop over 's'
7739
 
      }// end loop over 'r'
7740
 
      for (unsigned int r = 0; r < 4; r++)
7741
 
      {
7742
 
        for (unsigned int s = 0; s < 4 - r; s++)
7743
 
        {
7744
 
          rr = (r + s)*(r + s + 1)/2 + s;
7745
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
7746
 
        }// end loop over 's'
7747
 
      }// end loop over 'r'
 
6511
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
6512
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
6513
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
6514
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
6515
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
6516
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
6517
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
6518
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
6519
      basisvalues[0] *= std::sqrt(0.5);
 
6520
      basisvalues[2] *= std::sqrt(1.0);
 
6521
      basisvalues[5] *= std::sqrt(1.5);
 
6522
      basisvalues[9] *= std::sqrt(2.0);
 
6523
      basisvalues[1] *= std::sqrt(3.0);
 
6524
      basisvalues[4] *= std::sqrt(4.5);
 
6525
      basisvalues[8] *= std::sqrt(6.0);
 
6526
      basisvalues[3] *= std::sqrt(7.5);
 
6527
      basisvalues[7] *= std::sqrt(10.0);
 
6528
      basisvalues[6] *= std::sqrt(14.0);
7748
6529
      
7749
6530
      // Table(s) of coefficients.
7750
6531
      static const double coefficients0[10] = \
7910
6691
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
7911
6692
      
7912
6693
      // Declare helper variables.
7913
 
      unsigned int rr = 0;
7914
 
      unsigned int ss = 0;
7915
 
      unsigned int tt = 0;
7916
 
      double tmp5 = 0.0;
7917
 
      double tmp6 = 0.0;
7918
 
      double tmp7 = 0.0;
7919
6694
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
7920
6695
      double tmp1 = (1.0 - Y)/2.0;
7921
6696
      double tmp2 = tmp1*tmp1;
7923
6698
      // Compute basisvalues.
7924
6699
      basisvalues[0] = 1.0;
7925
6700
      basisvalues[1] = tmp0;
7926
 
      for (unsigned int r = 1; r < 3; r++)
7927
 
      {
7928
 
        rr = (r + 1)*((r + 1) + 1)/2;
7929
 
        ss = r*(r + 1)/2;
7930
 
        tt = (r - 1)*((r - 1) + 1)/2;
7931
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
7932
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
7933
 
      }// end loop over 'r'
7934
 
      for (unsigned int r = 0; r < 3; r++)
7935
 
      {
7936
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
7937
 
        ss = r*(r + 1)/2;
7938
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
7939
 
      }// end loop over 'r'
7940
 
      for (unsigned int r = 0; r < 2; r++)
7941
 
      {
7942
 
        for (unsigned int s = 1; s < 3 - r; s++)
7943
 
        {
7944
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
7945
 
          ss = (r + s)*(r + s + 1)/2 + s;
7946
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
7947
 
          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));
7948
 
          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));
7949
 
          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));
7950
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
7951
 
        }// end loop over 's'
7952
 
      }// end loop over 'r'
7953
 
      for (unsigned int r = 0; r < 4; r++)
7954
 
      {
7955
 
        for (unsigned int s = 0; s < 4 - r; s++)
7956
 
        {
7957
 
          rr = (r + s)*(r + s + 1)/2 + s;
7958
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
7959
 
        }// end loop over 's'
7960
 
      }// end loop over 'r'
 
6701
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
6702
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
6703
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
6704
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
6705
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
6706
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
6707
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
6708
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
6709
      basisvalues[0] *= std::sqrt(0.5);
 
6710
      basisvalues[2] *= std::sqrt(1.0);
 
6711
      basisvalues[5] *= std::sqrt(1.5);
 
6712
      basisvalues[9] *= std::sqrt(2.0);
 
6713
      basisvalues[1] *= std::sqrt(3.0);
 
6714
      basisvalues[4] *= std::sqrt(4.5);
 
6715
      basisvalues[8] *= std::sqrt(6.0);
 
6716
      basisvalues[3] *= std::sqrt(7.5);
 
6717
      basisvalues[7] *= std::sqrt(10.0);
 
6718
      basisvalues[6] *= std::sqrt(14.0);
7961
6719
      
7962
6720
      // Table(s) of coefficients.
7963
6721
      static const double coefficients0[10] = \
8123
6881
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
8124
6882
      
8125
6883
      // Declare helper variables.
8126
 
      unsigned int rr = 0;
8127
 
      unsigned int ss = 0;
8128
 
      unsigned int tt = 0;
8129
 
      double tmp5 = 0.0;
8130
 
      double tmp6 = 0.0;
8131
 
      double tmp7 = 0.0;
8132
6884
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
8133
6885
      double tmp1 = (1.0 - Y)/2.0;
8134
6886
      double tmp2 = tmp1*tmp1;
8136
6888
      // Compute basisvalues.
8137
6889
      basisvalues[0] = 1.0;
8138
6890
      basisvalues[1] = tmp0;
8139
 
      for (unsigned int r = 1; r < 3; r++)
8140
 
      {
8141
 
        rr = (r + 1)*((r + 1) + 1)/2;
8142
 
        ss = r*(r + 1)/2;
8143
 
        tt = (r - 1)*((r - 1) + 1)/2;
8144
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
8145
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
8146
 
      }// end loop over 'r'
8147
 
      for (unsigned int r = 0; r < 3; r++)
8148
 
      {
8149
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
8150
 
        ss = r*(r + 1)/2;
8151
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
8152
 
      }// end loop over 'r'
8153
 
      for (unsigned int r = 0; r < 2; r++)
8154
 
      {
8155
 
        for (unsigned int s = 1; s < 3 - r; s++)
8156
 
        {
8157
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
8158
 
          ss = (r + s)*(r + s + 1)/2 + s;
8159
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
8160
 
          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));
8161
 
          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));
8162
 
          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));
8163
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
8164
 
        }// end loop over 's'
8165
 
      }// end loop over 'r'
8166
 
      for (unsigned int r = 0; r < 4; r++)
8167
 
      {
8168
 
        for (unsigned int s = 0; s < 4 - r; s++)
8169
 
        {
8170
 
          rr = (r + s)*(r + s + 1)/2 + s;
8171
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
8172
 
        }// end loop over 's'
8173
 
      }// end loop over 'r'
 
6891
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
6892
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
6893
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
6894
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
6895
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
6896
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
6897
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
6898
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
6899
      basisvalues[0] *= std::sqrt(0.5);
 
6900
      basisvalues[2] *= std::sqrt(1.0);
 
6901
      basisvalues[5] *= std::sqrt(1.5);
 
6902
      basisvalues[9] *= std::sqrt(2.0);
 
6903
      basisvalues[1] *= std::sqrt(3.0);
 
6904
      basisvalues[4] *= std::sqrt(4.5);
 
6905
      basisvalues[8] *= std::sqrt(6.0);
 
6906
      basisvalues[3] *= std::sqrt(7.5);
 
6907
      basisvalues[7] *= std::sqrt(10.0);
 
6908
      basisvalues[6] *= std::sqrt(14.0);
8174
6909
      
8175
6910
      // Table(s) of coefficients.
8176
6911
      static const double coefficients0[10] = \
8336
7071
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
8337
7072
      
8338
7073
      // Declare helper variables.
8339
 
      unsigned int rr = 0;
8340
 
      unsigned int ss = 0;
8341
 
      unsigned int tt = 0;
8342
 
      double tmp5 = 0.0;
8343
 
      double tmp6 = 0.0;
8344
 
      double tmp7 = 0.0;
8345
7074
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
8346
7075
      double tmp1 = (1.0 - Y)/2.0;
8347
7076
      double tmp2 = tmp1*tmp1;
8349
7078
      // Compute basisvalues.
8350
7079
      basisvalues[0] = 1.0;
8351
7080
      basisvalues[1] = tmp0;
8352
 
      for (unsigned int r = 1; r < 3; r++)
8353
 
      {
8354
 
        rr = (r + 1)*((r + 1) + 1)/2;
8355
 
        ss = r*(r + 1)/2;
8356
 
        tt = (r - 1)*((r - 1) + 1)/2;
8357
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
8358
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
8359
 
      }// end loop over 'r'
8360
 
      for (unsigned int r = 0; r < 3; r++)
8361
 
      {
8362
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
8363
 
        ss = r*(r + 1)/2;
8364
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
8365
 
      }// end loop over 'r'
8366
 
      for (unsigned int r = 0; r < 2; r++)
8367
 
      {
8368
 
        for (unsigned int s = 1; s < 3 - r; s++)
8369
 
        {
8370
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
8371
 
          ss = (r + s)*(r + s + 1)/2 + s;
8372
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
8373
 
          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));
8374
 
          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));
8375
 
          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));
8376
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
8377
 
        }// end loop over 's'
8378
 
      }// end loop over 'r'
8379
 
      for (unsigned int r = 0; r < 4; r++)
8380
 
      {
8381
 
        for (unsigned int s = 0; s < 4 - r; s++)
8382
 
        {
8383
 
          rr = (r + s)*(r + s + 1)/2 + s;
8384
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
8385
 
        }// end loop over 's'
8386
 
      }// end loop over 'r'
 
7081
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
7082
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
7083
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
7084
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
7085
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
7086
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
7087
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
7088
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
7089
      basisvalues[0] *= std::sqrt(0.5);
 
7090
      basisvalues[2] *= std::sqrt(1.0);
 
7091
      basisvalues[5] *= std::sqrt(1.5);
 
7092
      basisvalues[9] *= std::sqrt(2.0);
 
7093
      basisvalues[1] *= std::sqrt(3.0);
 
7094
      basisvalues[4] *= std::sqrt(4.5);
 
7095
      basisvalues[8] *= std::sqrt(6.0);
 
7096
      basisvalues[3] *= std::sqrt(7.5);
 
7097
      basisvalues[7] *= std::sqrt(10.0);
 
7098
      basisvalues[6] *= std::sqrt(14.0);
8387
7099
      
8388
7100
      // Table(s) of coefficients.
8389
7101
      static const double coefficients0[10] = \
8861
7573
  /// Return the number of sub elements (for a mixed element)
8862
7574
  virtual unsigned int num_sub_elements() const
8863
7575
  {
8864
 
    return 0;
 
7576
    return 2;
8865
7577
  }
8866
7578
 
8867
7579
  /// Create a new finite element for sub element i (for a mixed element)
8868
7580
  virtual ufc::finite_element* create_sub_element(unsigned int i) const
8869
7581
  {
 
7582
    switch (i)
 
7583
    {
 
7584
    case 0:
 
7585
      {
 
7586
        return new x_element1_finite_element_0();
 
7587
        break;
 
7588
      }
 
7589
    case 1:
 
7590
      {
 
7591
        return new x_element1_finite_element_0();
 
7592
        break;
 
7593
      }
 
7594
    }
 
7595
    
8870
7596
    return 0;
8871
7597
  }
8872
7598
 
8988
7714
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
8989
7715
      
8990
7716
      // Declare helper variables.
8991
 
      unsigned int rr = 0;
8992
 
      unsigned int ss = 0;
8993
 
      unsigned int tt = 0;
8994
 
      double tmp5 = 0.0;
8995
 
      double tmp6 = 0.0;
8996
 
      double tmp7 = 0.0;
8997
7717
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
8998
7718
      double tmp1 = (1.0 - Y)/2.0;
8999
7719
      double tmp2 = tmp1*tmp1;
9001
7721
      // Compute basisvalues.
9002
7722
      basisvalues[0] = 1.0;
9003
7723
      basisvalues[1] = tmp0;
9004
 
      for (unsigned int r = 1; r < 3; r++)
9005
 
      {
9006
 
        rr = (r + 1)*((r + 1) + 1)/2;
9007
 
        ss = r*(r + 1)/2;
9008
 
        tt = (r - 1)*((r - 1) + 1)/2;
9009
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9010
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9011
 
      }// end loop over 'r'
9012
 
      for (unsigned int r = 0; r < 3; r++)
9013
 
      {
9014
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9015
 
        ss = r*(r + 1)/2;
9016
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9017
 
      }// end loop over 'r'
9018
 
      for (unsigned int r = 0; r < 2; r++)
9019
 
      {
9020
 
        for (unsigned int s = 1; s < 3 - r; s++)
9021
 
        {
9022
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9023
 
          ss = (r + s)*(r + s + 1)/2 + s;
9024
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9025
 
          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));
9026
 
          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));
9027
 
          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));
9028
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9029
 
        }// end loop over 's'
9030
 
      }// end loop over 'r'
9031
 
      for (unsigned int r = 0; r < 4; r++)
9032
 
      {
9033
 
        for (unsigned int s = 0; s < 4 - r; s++)
9034
 
        {
9035
 
          rr = (r + s)*(r + s + 1)/2 + s;
9036
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9037
 
        }// end loop over 's'
9038
 
      }// end loop over 'r'
 
7724
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
7725
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
7726
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
7727
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
7728
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
7729
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
7730
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
7731
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
7732
      basisvalues[0] *= std::sqrt(0.5);
 
7733
      basisvalues[2] *= std::sqrt(1.0);
 
7734
      basisvalues[5] *= std::sqrt(1.5);
 
7735
      basisvalues[9] *= std::sqrt(2.0);
 
7736
      basisvalues[1] *= std::sqrt(3.0);
 
7737
      basisvalues[4] *= std::sqrt(4.5);
 
7738
      basisvalues[8] *= std::sqrt(6.0);
 
7739
      basisvalues[3] *= std::sqrt(7.5);
 
7740
      basisvalues[7] *= std::sqrt(10.0);
 
7741
      basisvalues[6] *= std::sqrt(14.0);
9039
7742
      
9040
7743
      // Table(s) of coefficients.
9041
7744
      static const double coefficients0[10] = \
9055
7758
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9056
7759
      
9057
7760
      // Declare helper variables.
9058
 
      unsigned int rr = 0;
9059
 
      unsigned int ss = 0;
9060
 
      unsigned int tt = 0;
9061
 
      double tmp5 = 0.0;
9062
 
      double tmp6 = 0.0;
9063
 
      double tmp7 = 0.0;
9064
7761
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9065
7762
      double tmp1 = (1.0 - Y)/2.0;
9066
7763
      double tmp2 = tmp1*tmp1;
9068
7765
      // Compute basisvalues.
9069
7766
      basisvalues[0] = 1.0;
9070
7767
      basisvalues[1] = tmp0;
9071
 
      for (unsigned int r = 1; r < 3; r++)
9072
 
      {
9073
 
        rr = (r + 1)*((r + 1) + 1)/2;
9074
 
        ss = r*(r + 1)/2;
9075
 
        tt = (r - 1)*((r - 1) + 1)/2;
9076
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9077
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9078
 
      }// end loop over 'r'
9079
 
      for (unsigned int r = 0; r < 3; r++)
9080
 
      {
9081
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9082
 
        ss = r*(r + 1)/2;
9083
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9084
 
      }// end loop over 'r'
9085
 
      for (unsigned int r = 0; r < 2; r++)
9086
 
      {
9087
 
        for (unsigned int s = 1; s < 3 - r; s++)
9088
 
        {
9089
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9090
 
          ss = (r + s)*(r + s + 1)/2 + s;
9091
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9092
 
          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));
9093
 
          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));
9094
 
          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));
9095
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9096
 
        }// end loop over 's'
9097
 
      }// end loop over 'r'
9098
 
      for (unsigned int r = 0; r < 4; r++)
9099
 
      {
9100
 
        for (unsigned int s = 0; s < 4 - r; s++)
9101
 
        {
9102
 
          rr = (r + s)*(r + s + 1)/2 + s;
9103
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9104
 
        }// end loop over 's'
9105
 
      }// end loop over 'r'
 
7768
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
7769
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
7770
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
7771
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
7772
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
7773
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
7774
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
7775
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
7776
      basisvalues[0] *= std::sqrt(0.5);
 
7777
      basisvalues[2] *= std::sqrt(1.0);
 
7778
      basisvalues[5] *= std::sqrt(1.5);
 
7779
      basisvalues[9] *= std::sqrt(2.0);
 
7780
      basisvalues[1] *= std::sqrt(3.0);
 
7781
      basisvalues[4] *= std::sqrt(4.5);
 
7782
      basisvalues[8] *= std::sqrt(6.0);
 
7783
      basisvalues[3] *= std::sqrt(7.5);
 
7784
      basisvalues[7] *= std::sqrt(10.0);
 
7785
      basisvalues[6] *= std::sqrt(14.0);
9106
7786
      
9107
7787
      // Table(s) of coefficients.
9108
7788
      static const double coefficients0[10] = \
9122
7802
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9123
7803
      
9124
7804
      // Declare helper variables.
9125
 
      unsigned int rr = 0;
9126
 
      unsigned int ss = 0;
9127
 
      unsigned int tt = 0;
9128
 
      double tmp5 = 0.0;
9129
 
      double tmp6 = 0.0;
9130
 
      double tmp7 = 0.0;
9131
7805
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9132
7806
      double tmp1 = (1.0 - Y)/2.0;
9133
7807
      double tmp2 = tmp1*tmp1;
9135
7809
      // Compute basisvalues.
9136
7810
      basisvalues[0] = 1.0;
9137
7811
      basisvalues[1] = tmp0;
9138
 
      for (unsigned int r = 1; r < 3; r++)
9139
 
      {
9140
 
        rr = (r + 1)*((r + 1) + 1)/2;
9141
 
        ss = r*(r + 1)/2;
9142
 
        tt = (r - 1)*((r - 1) + 1)/2;
9143
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9144
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9145
 
      }// end loop over 'r'
9146
 
      for (unsigned int r = 0; r < 3; r++)
9147
 
      {
9148
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9149
 
        ss = r*(r + 1)/2;
9150
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9151
 
      }// end loop over 'r'
9152
 
      for (unsigned int r = 0; r < 2; r++)
9153
 
      {
9154
 
        for (unsigned int s = 1; s < 3 - r; s++)
9155
 
        {
9156
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9157
 
          ss = (r + s)*(r + s + 1)/2 + s;
9158
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9159
 
          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));
9160
 
          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));
9161
 
          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));
9162
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9163
 
        }// end loop over 's'
9164
 
      }// end loop over 'r'
9165
 
      for (unsigned int r = 0; r < 4; r++)
9166
 
      {
9167
 
        for (unsigned int s = 0; s < 4 - r; s++)
9168
 
        {
9169
 
          rr = (r + s)*(r + s + 1)/2 + s;
9170
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9171
 
        }// end loop over 's'
9172
 
      }// end loop over 'r'
 
7812
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
7813
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
7814
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
7815
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
7816
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
7817
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
7818
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
7819
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
7820
      basisvalues[0] *= std::sqrt(0.5);
 
7821
      basisvalues[2] *= std::sqrt(1.0);
 
7822
      basisvalues[5] *= std::sqrt(1.5);
 
7823
      basisvalues[9] *= std::sqrt(2.0);
 
7824
      basisvalues[1] *= std::sqrt(3.0);
 
7825
      basisvalues[4] *= std::sqrt(4.5);
 
7826
      basisvalues[8] *= std::sqrt(6.0);
 
7827
      basisvalues[3] *= std::sqrt(7.5);
 
7828
      basisvalues[7] *= std::sqrt(10.0);
 
7829
      basisvalues[6] *= std::sqrt(14.0);
9173
7830
      
9174
7831
      // Table(s) of coefficients.
9175
7832
      static const double coefficients0[10] = \
9189
7846
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9190
7847
      
9191
7848
      // Declare helper variables.
9192
 
      unsigned int rr = 0;
9193
 
      unsigned int ss = 0;
9194
 
      unsigned int tt = 0;
9195
 
      double tmp5 = 0.0;
9196
 
      double tmp6 = 0.0;
9197
 
      double tmp7 = 0.0;
9198
7849
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9199
7850
      double tmp1 = (1.0 - Y)/2.0;
9200
7851
      double tmp2 = tmp1*tmp1;
9202
7853
      // Compute basisvalues.
9203
7854
      basisvalues[0] = 1.0;
9204
7855
      basisvalues[1] = tmp0;
9205
 
      for (unsigned int r = 1; r < 3; r++)
9206
 
      {
9207
 
        rr = (r + 1)*((r + 1) + 1)/2;
9208
 
        ss = r*(r + 1)/2;
9209
 
        tt = (r - 1)*((r - 1) + 1)/2;
9210
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9211
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9212
 
      }// end loop over 'r'
9213
 
      for (unsigned int r = 0; r < 3; r++)
9214
 
      {
9215
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9216
 
        ss = r*(r + 1)/2;
9217
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9218
 
      }// end loop over 'r'
9219
 
      for (unsigned int r = 0; r < 2; r++)
9220
 
      {
9221
 
        for (unsigned int s = 1; s < 3 - r; s++)
9222
 
        {
9223
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9224
 
          ss = (r + s)*(r + s + 1)/2 + s;
9225
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9226
 
          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));
9227
 
          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));
9228
 
          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));
9229
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9230
 
        }// end loop over 's'
9231
 
      }// end loop over 'r'
9232
 
      for (unsigned int r = 0; r < 4; r++)
9233
 
      {
9234
 
        for (unsigned int s = 0; s < 4 - r; s++)
9235
 
        {
9236
 
          rr = (r + s)*(r + s + 1)/2 + s;
9237
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9238
 
        }// end loop over 's'
9239
 
      }// end loop over 'r'
 
7856
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
7857
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
7858
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
7859
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
7860
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
7861
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
7862
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
7863
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
7864
      basisvalues[0] *= std::sqrt(0.5);
 
7865
      basisvalues[2] *= std::sqrt(1.0);
 
7866
      basisvalues[5] *= std::sqrt(1.5);
 
7867
      basisvalues[9] *= std::sqrt(2.0);
 
7868
      basisvalues[1] *= std::sqrt(3.0);
 
7869
      basisvalues[4] *= std::sqrt(4.5);
 
7870
      basisvalues[8] *= std::sqrt(6.0);
 
7871
      basisvalues[3] *= std::sqrt(7.5);
 
7872
      basisvalues[7] *= std::sqrt(10.0);
 
7873
      basisvalues[6] *= std::sqrt(14.0);
9240
7874
      
9241
7875
      // Table(s) of coefficients.
9242
7876
      static const double coefficients0[10] = \
9256
7890
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9257
7891
      
9258
7892
      // Declare helper variables.
9259
 
      unsigned int rr = 0;
9260
 
      unsigned int ss = 0;
9261
 
      unsigned int tt = 0;
9262
 
      double tmp5 = 0.0;
9263
 
      double tmp6 = 0.0;
9264
 
      double tmp7 = 0.0;
9265
7893
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9266
7894
      double tmp1 = (1.0 - Y)/2.0;
9267
7895
      double tmp2 = tmp1*tmp1;
9269
7897
      // Compute basisvalues.
9270
7898
      basisvalues[0] = 1.0;
9271
7899
      basisvalues[1] = tmp0;
9272
 
      for (unsigned int r = 1; r < 3; r++)
9273
 
      {
9274
 
        rr = (r + 1)*((r + 1) + 1)/2;
9275
 
        ss = r*(r + 1)/2;
9276
 
        tt = (r - 1)*((r - 1) + 1)/2;
9277
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9278
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9279
 
      }// end loop over 'r'
9280
 
      for (unsigned int r = 0; r < 3; r++)
9281
 
      {
9282
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9283
 
        ss = r*(r + 1)/2;
9284
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9285
 
      }// end loop over 'r'
9286
 
      for (unsigned int r = 0; r < 2; r++)
9287
 
      {
9288
 
        for (unsigned int s = 1; s < 3 - r; s++)
9289
 
        {
9290
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9291
 
          ss = (r + s)*(r + s + 1)/2 + s;
9292
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9293
 
          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));
9294
 
          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));
9295
 
          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));
9296
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9297
 
        }// end loop over 's'
9298
 
      }// end loop over 'r'
9299
 
      for (unsigned int r = 0; r < 4; r++)
9300
 
      {
9301
 
        for (unsigned int s = 0; s < 4 - r; s++)
9302
 
        {
9303
 
          rr = (r + s)*(r + s + 1)/2 + s;
9304
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9305
 
        }// end loop over 's'
9306
 
      }// end loop over 'r'
 
7900
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
7901
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
7902
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
7903
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
7904
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
7905
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
7906
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
7907
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
7908
      basisvalues[0] *= std::sqrt(0.5);
 
7909
      basisvalues[2] *= std::sqrt(1.0);
 
7910
      basisvalues[5] *= std::sqrt(1.5);
 
7911
      basisvalues[9] *= std::sqrt(2.0);
 
7912
      basisvalues[1] *= std::sqrt(3.0);
 
7913
      basisvalues[4] *= std::sqrt(4.5);
 
7914
      basisvalues[8] *= std::sqrt(6.0);
 
7915
      basisvalues[3] *= std::sqrt(7.5);
 
7916
      basisvalues[7] *= std::sqrt(10.0);
 
7917
      basisvalues[6] *= std::sqrt(14.0);
9307
7918
      
9308
7919
      // Table(s) of coefficients.
9309
7920
      static const double coefficients0[10] = \
9323
7934
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9324
7935
      
9325
7936
      // Declare helper variables.
9326
 
      unsigned int rr = 0;
9327
 
      unsigned int ss = 0;
9328
 
      unsigned int tt = 0;
9329
 
      double tmp5 = 0.0;
9330
 
      double tmp6 = 0.0;
9331
 
      double tmp7 = 0.0;
9332
7937
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9333
7938
      double tmp1 = (1.0 - Y)/2.0;
9334
7939
      double tmp2 = tmp1*tmp1;
9336
7941
      // Compute basisvalues.
9337
7942
      basisvalues[0] = 1.0;
9338
7943
      basisvalues[1] = tmp0;
9339
 
      for (unsigned int r = 1; r < 3; r++)
9340
 
      {
9341
 
        rr = (r + 1)*((r + 1) + 1)/2;
9342
 
        ss = r*(r + 1)/2;
9343
 
        tt = (r - 1)*((r - 1) + 1)/2;
9344
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9345
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9346
 
      }// end loop over 'r'
9347
 
      for (unsigned int r = 0; r < 3; r++)
9348
 
      {
9349
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9350
 
        ss = r*(r + 1)/2;
9351
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9352
 
      }// end loop over 'r'
9353
 
      for (unsigned int r = 0; r < 2; r++)
9354
 
      {
9355
 
        for (unsigned int s = 1; s < 3 - r; s++)
9356
 
        {
9357
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9358
 
          ss = (r + s)*(r + s + 1)/2 + s;
9359
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9360
 
          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));
9361
 
          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));
9362
 
          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));
9363
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9364
 
        }// end loop over 's'
9365
 
      }// end loop over 'r'
9366
 
      for (unsigned int r = 0; r < 4; r++)
9367
 
      {
9368
 
        for (unsigned int s = 0; s < 4 - r; s++)
9369
 
        {
9370
 
          rr = (r + s)*(r + s + 1)/2 + s;
9371
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9372
 
        }// end loop over 's'
9373
 
      }// end loop over 'r'
 
7944
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
7945
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
7946
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
7947
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
7948
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
7949
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
7950
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
7951
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
7952
      basisvalues[0] *= std::sqrt(0.5);
 
7953
      basisvalues[2] *= std::sqrt(1.0);
 
7954
      basisvalues[5] *= std::sqrt(1.5);
 
7955
      basisvalues[9] *= std::sqrt(2.0);
 
7956
      basisvalues[1] *= std::sqrt(3.0);
 
7957
      basisvalues[4] *= std::sqrt(4.5);
 
7958
      basisvalues[8] *= std::sqrt(6.0);
 
7959
      basisvalues[3] *= std::sqrt(7.5);
 
7960
      basisvalues[7] *= std::sqrt(10.0);
 
7961
      basisvalues[6] *= std::sqrt(14.0);
9374
7962
      
9375
7963
      // Table(s) of coefficients.
9376
7964
      static const double coefficients0[10] = \
9390
7978
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9391
7979
      
9392
7980
      // Declare helper variables.
9393
 
      unsigned int rr = 0;
9394
 
      unsigned int ss = 0;
9395
 
      unsigned int tt = 0;
9396
 
      double tmp5 = 0.0;
9397
 
      double tmp6 = 0.0;
9398
 
      double tmp7 = 0.0;
9399
7981
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9400
7982
      double tmp1 = (1.0 - Y)/2.0;
9401
7983
      double tmp2 = tmp1*tmp1;
9403
7985
      // Compute basisvalues.
9404
7986
      basisvalues[0] = 1.0;
9405
7987
      basisvalues[1] = tmp0;
9406
 
      for (unsigned int r = 1; r < 3; r++)
9407
 
      {
9408
 
        rr = (r + 1)*((r + 1) + 1)/2;
9409
 
        ss = r*(r + 1)/2;
9410
 
        tt = (r - 1)*((r - 1) + 1)/2;
9411
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9412
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9413
 
      }// end loop over 'r'
9414
 
      for (unsigned int r = 0; r < 3; r++)
9415
 
      {
9416
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9417
 
        ss = r*(r + 1)/2;
9418
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9419
 
      }// end loop over 'r'
9420
 
      for (unsigned int r = 0; r < 2; r++)
9421
 
      {
9422
 
        for (unsigned int s = 1; s < 3 - r; s++)
9423
 
        {
9424
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9425
 
          ss = (r + s)*(r + s + 1)/2 + s;
9426
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9427
 
          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));
9428
 
          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));
9429
 
          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));
9430
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9431
 
        }// end loop over 's'
9432
 
      }// end loop over 'r'
9433
 
      for (unsigned int r = 0; r < 4; r++)
9434
 
      {
9435
 
        for (unsigned int s = 0; s < 4 - r; s++)
9436
 
        {
9437
 
          rr = (r + s)*(r + s + 1)/2 + s;
9438
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9439
 
        }// end loop over 's'
9440
 
      }// end loop over 'r'
 
7988
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
7989
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
7990
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
7991
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
7992
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
7993
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
7994
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
7995
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
7996
      basisvalues[0] *= std::sqrt(0.5);
 
7997
      basisvalues[2] *= std::sqrt(1.0);
 
7998
      basisvalues[5] *= std::sqrt(1.5);
 
7999
      basisvalues[9] *= std::sqrt(2.0);
 
8000
      basisvalues[1] *= std::sqrt(3.0);
 
8001
      basisvalues[4] *= std::sqrt(4.5);
 
8002
      basisvalues[8] *= std::sqrt(6.0);
 
8003
      basisvalues[3] *= std::sqrt(7.5);
 
8004
      basisvalues[7] *= std::sqrt(10.0);
 
8005
      basisvalues[6] *= std::sqrt(14.0);
9441
8006
      
9442
8007
      // Table(s) of coefficients.
9443
8008
      static const double coefficients0[10] = \
9457
8022
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9458
8023
      
9459
8024
      // Declare helper variables.
9460
 
      unsigned int rr = 0;
9461
 
      unsigned int ss = 0;
9462
 
      unsigned int tt = 0;
9463
 
      double tmp5 = 0.0;
9464
 
      double tmp6 = 0.0;
9465
 
      double tmp7 = 0.0;
9466
8025
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9467
8026
      double tmp1 = (1.0 - Y)/2.0;
9468
8027
      double tmp2 = tmp1*tmp1;
9470
8029
      // Compute basisvalues.
9471
8030
      basisvalues[0] = 1.0;
9472
8031
      basisvalues[1] = tmp0;
9473
 
      for (unsigned int r = 1; r < 3; r++)
9474
 
      {
9475
 
        rr = (r + 1)*((r + 1) + 1)/2;
9476
 
        ss = r*(r + 1)/2;
9477
 
        tt = (r - 1)*((r - 1) + 1)/2;
9478
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9479
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9480
 
      }// end loop over 'r'
9481
 
      for (unsigned int r = 0; r < 3; r++)
9482
 
      {
9483
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9484
 
        ss = r*(r + 1)/2;
9485
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9486
 
      }// end loop over 'r'
9487
 
      for (unsigned int r = 0; r < 2; r++)
9488
 
      {
9489
 
        for (unsigned int s = 1; s < 3 - r; s++)
9490
 
        {
9491
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9492
 
          ss = (r + s)*(r + s + 1)/2 + s;
9493
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9494
 
          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));
9495
 
          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));
9496
 
          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));
9497
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9498
 
        }// end loop over 's'
9499
 
      }// end loop over 'r'
9500
 
      for (unsigned int r = 0; r < 4; r++)
9501
 
      {
9502
 
        for (unsigned int s = 0; s < 4 - r; s++)
9503
 
        {
9504
 
          rr = (r + s)*(r + s + 1)/2 + s;
9505
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9506
 
        }// end loop over 's'
9507
 
      }// end loop over 'r'
 
8032
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8033
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8034
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8035
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8036
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8037
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8038
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8039
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8040
      basisvalues[0] *= std::sqrt(0.5);
 
8041
      basisvalues[2] *= std::sqrt(1.0);
 
8042
      basisvalues[5] *= std::sqrt(1.5);
 
8043
      basisvalues[9] *= std::sqrt(2.0);
 
8044
      basisvalues[1] *= std::sqrt(3.0);
 
8045
      basisvalues[4] *= std::sqrt(4.5);
 
8046
      basisvalues[8] *= std::sqrt(6.0);
 
8047
      basisvalues[3] *= std::sqrt(7.5);
 
8048
      basisvalues[7] *= std::sqrt(10.0);
 
8049
      basisvalues[6] *= std::sqrt(14.0);
9508
8050
      
9509
8051
      // Table(s) of coefficients.
9510
8052
      static const double coefficients0[10] = \
9524
8066
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9525
8067
      
9526
8068
      // Declare helper variables.
9527
 
      unsigned int rr = 0;
9528
 
      unsigned int ss = 0;
9529
 
      unsigned int tt = 0;
9530
 
      double tmp5 = 0.0;
9531
 
      double tmp6 = 0.0;
9532
 
      double tmp7 = 0.0;
9533
8069
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9534
8070
      double tmp1 = (1.0 - Y)/2.0;
9535
8071
      double tmp2 = tmp1*tmp1;
9537
8073
      // Compute basisvalues.
9538
8074
      basisvalues[0] = 1.0;
9539
8075
      basisvalues[1] = tmp0;
9540
 
      for (unsigned int r = 1; r < 3; r++)
9541
 
      {
9542
 
        rr = (r + 1)*((r + 1) + 1)/2;
9543
 
        ss = r*(r + 1)/2;
9544
 
        tt = (r - 1)*((r - 1) + 1)/2;
9545
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9546
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9547
 
      }// end loop over 'r'
9548
 
      for (unsigned int r = 0; r < 3; r++)
9549
 
      {
9550
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9551
 
        ss = r*(r + 1)/2;
9552
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9553
 
      }// end loop over 'r'
9554
 
      for (unsigned int r = 0; r < 2; r++)
9555
 
      {
9556
 
        for (unsigned int s = 1; s < 3 - r; s++)
9557
 
        {
9558
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9559
 
          ss = (r + s)*(r + s + 1)/2 + s;
9560
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9561
 
          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));
9562
 
          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));
9563
 
          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));
9564
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9565
 
        }// end loop over 's'
9566
 
      }// end loop over 'r'
9567
 
      for (unsigned int r = 0; r < 4; r++)
9568
 
      {
9569
 
        for (unsigned int s = 0; s < 4 - r; s++)
9570
 
        {
9571
 
          rr = (r + s)*(r + s + 1)/2 + s;
9572
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9573
 
        }// end loop over 's'
9574
 
      }// end loop over 'r'
 
8076
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8077
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8078
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8079
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8080
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8081
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8082
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8083
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8084
      basisvalues[0] *= std::sqrt(0.5);
 
8085
      basisvalues[2] *= std::sqrt(1.0);
 
8086
      basisvalues[5] *= std::sqrt(1.5);
 
8087
      basisvalues[9] *= std::sqrt(2.0);
 
8088
      basisvalues[1] *= std::sqrt(3.0);
 
8089
      basisvalues[4] *= std::sqrt(4.5);
 
8090
      basisvalues[8] *= std::sqrt(6.0);
 
8091
      basisvalues[3] *= std::sqrt(7.5);
 
8092
      basisvalues[7] *= std::sqrt(10.0);
 
8093
      basisvalues[6] *= std::sqrt(14.0);
9575
8094
      
9576
8095
      // Table(s) of coefficients.
9577
8096
      static const double coefficients0[10] = \
9591
8110
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9592
8111
      
9593
8112
      // Declare helper variables.
9594
 
      unsigned int rr = 0;
9595
 
      unsigned int ss = 0;
9596
 
      unsigned int tt = 0;
9597
 
      double tmp5 = 0.0;
9598
 
      double tmp6 = 0.0;
9599
 
      double tmp7 = 0.0;
9600
8113
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9601
8114
      double tmp1 = (1.0 - Y)/2.0;
9602
8115
      double tmp2 = tmp1*tmp1;
9604
8117
      // Compute basisvalues.
9605
8118
      basisvalues[0] = 1.0;
9606
8119
      basisvalues[1] = tmp0;
9607
 
      for (unsigned int r = 1; r < 3; r++)
9608
 
      {
9609
 
        rr = (r + 1)*((r + 1) + 1)/2;
9610
 
        ss = r*(r + 1)/2;
9611
 
        tt = (r - 1)*((r - 1) + 1)/2;
9612
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9613
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9614
 
      }// end loop over 'r'
9615
 
      for (unsigned int r = 0; r < 3; r++)
9616
 
      {
9617
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9618
 
        ss = r*(r + 1)/2;
9619
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9620
 
      }// end loop over 'r'
9621
 
      for (unsigned int r = 0; r < 2; r++)
9622
 
      {
9623
 
        for (unsigned int s = 1; s < 3 - r; s++)
9624
 
        {
9625
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9626
 
          ss = (r + s)*(r + s + 1)/2 + s;
9627
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9628
 
          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));
9629
 
          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));
9630
 
          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));
9631
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9632
 
        }// end loop over 's'
9633
 
      }// end loop over 'r'
9634
 
      for (unsigned int r = 0; r < 4; r++)
9635
 
      {
9636
 
        for (unsigned int s = 0; s < 4 - r; s++)
9637
 
        {
9638
 
          rr = (r + s)*(r + s + 1)/2 + s;
9639
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9640
 
        }// end loop over 's'
9641
 
      }// end loop over 'r'
 
8120
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8121
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8122
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8123
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8124
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8125
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8126
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8127
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8128
      basisvalues[0] *= std::sqrt(0.5);
 
8129
      basisvalues[2] *= std::sqrt(1.0);
 
8130
      basisvalues[5] *= std::sqrt(1.5);
 
8131
      basisvalues[9] *= std::sqrt(2.0);
 
8132
      basisvalues[1] *= std::sqrt(3.0);
 
8133
      basisvalues[4] *= std::sqrt(4.5);
 
8134
      basisvalues[8] *= std::sqrt(6.0);
 
8135
      basisvalues[3] *= std::sqrt(7.5);
 
8136
      basisvalues[7] *= std::sqrt(10.0);
 
8137
      basisvalues[6] *= std::sqrt(14.0);
9642
8138
      
9643
8139
      // Table(s) of coefficients.
9644
8140
      static const double coefficients0[10] = \
9658
8154
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9659
8155
      
9660
8156
      // Declare helper variables.
9661
 
      unsigned int rr = 0;
9662
 
      unsigned int ss = 0;
9663
 
      unsigned int tt = 0;
9664
 
      double tmp5 = 0.0;
9665
 
      double tmp6 = 0.0;
9666
 
      double tmp7 = 0.0;
9667
8157
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9668
8158
      double tmp1 = (1.0 - Y)/2.0;
9669
8159
      double tmp2 = tmp1*tmp1;
9671
8161
      // Compute basisvalues.
9672
8162
      basisvalues[0] = 1.0;
9673
8163
      basisvalues[1] = tmp0;
9674
 
      for (unsigned int r = 1; r < 3; r++)
9675
 
      {
9676
 
        rr = (r + 1)*((r + 1) + 1)/2;
9677
 
        ss = r*(r + 1)/2;
9678
 
        tt = (r - 1)*((r - 1) + 1)/2;
9679
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9680
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9681
 
      }// end loop over 'r'
9682
 
      for (unsigned int r = 0; r < 3; r++)
9683
 
      {
9684
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9685
 
        ss = r*(r + 1)/2;
9686
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9687
 
      }// end loop over 'r'
9688
 
      for (unsigned int r = 0; r < 2; r++)
9689
 
      {
9690
 
        for (unsigned int s = 1; s < 3 - r; s++)
9691
 
        {
9692
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9693
 
          ss = (r + s)*(r + s + 1)/2 + s;
9694
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9695
 
          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));
9696
 
          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));
9697
 
          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));
9698
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9699
 
        }// end loop over 's'
9700
 
      }// end loop over 'r'
9701
 
      for (unsigned int r = 0; r < 4; r++)
9702
 
      {
9703
 
        for (unsigned int s = 0; s < 4 - r; s++)
9704
 
        {
9705
 
          rr = (r + s)*(r + s + 1)/2 + s;
9706
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9707
 
        }// end loop over 's'
9708
 
      }// end loop over 'r'
 
8164
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8165
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8166
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8167
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8168
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8169
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8170
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8171
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8172
      basisvalues[0] *= std::sqrt(0.5);
 
8173
      basisvalues[2] *= std::sqrt(1.0);
 
8174
      basisvalues[5] *= std::sqrt(1.5);
 
8175
      basisvalues[9] *= std::sqrt(2.0);
 
8176
      basisvalues[1] *= std::sqrt(3.0);
 
8177
      basisvalues[4] *= std::sqrt(4.5);
 
8178
      basisvalues[8] *= std::sqrt(6.0);
 
8179
      basisvalues[3] *= std::sqrt(7.5);
 
8180
      basisvalues[7] *= std::sqrt(10.0);
 
8181
      basisvalues[6] *= std::sqrt(14.0);
9709
8182
      
9710
8183
      // Table(s) of coefficients.
9711
8184
      static const double coefficients0[10] = \
9725
8198
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9726
8199
      
9727
8200
      // Declare helper variables.
9728
 
      unsigned int rr = 0;
9729
 
      unsigned int ss = 0;
9730
 
      unsigned int tt = 0;
9731
 
      double tmp5 = 0.0;
9732
 
      double tmp6 = 0.0;
9733
 
      double tmp7 = 0.0;
9734
8201
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9735
8202
      double tmp1 = (1.0 - Y)/2.0;
9736
8203
      double tmp2 = tmp1*tmp1;
9738
8205
      // Compute basisvalues.
9739
8206
      basisvalues[0] = 1.0;
9740
8207
      basisvalues[1] = tmp0;
9741
 
      for (unsigned int r = 1; r < 3; r++)
9742
 
      {
9743
 
        rr = (r + 1)*((r + 1) + 1)/2;
9744
 
        ss = r*(r + 1)/2;
9745
 
        tt = (r - 1)*((r - 1) + 1)/2;
9746
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9747
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9748
 
      }// end loop over 'r'
9749
 
      for (unsigned int r = 0; r < 3; r++)
9750
 
      {
9751
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9752
 
        ss = r*(r + 1)/2;
9753
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9754
 
      }// end loop over 'r'
9755
 
      for (unsigned int r = 0; r < 2; r++)
9756
 
      {
9757
 
        for (unsigned int s = 1; s < 3 - r; s++)
9758
 
        {
9759
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9760
 
          ss = (r + s)*(r + s + 1)/2 + s;
9761
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9762
 
          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));
9763
 
          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));
9764
 
          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));
9765
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9766
 
        }// end loop over 's'
9767
 
      }// end loop over 'r'
9768
 
      for (unsigned int r = 0; r < 4; r++)
9769
 
      {
9770
 
        for (unsigned int s = 0; s < 4 - r; s++)
9771
 
        {
9772
 
          rr = (r + s)*(r + s + 1)/2 + s;
9773
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9774
 
        }// end loop over 's'
9775
 
      }// end loop over 'r'
 
8208
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8209
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8210
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8211
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8212
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8213
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8214
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8215
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8216
      basisvalues[0] *= std::sqrt(0.5);
 
8217
      basisvalues[2] *= std::sqrt(1.0);
 
8218
      basisvalues[5] *= std::sqrt(1.5);
 
8219
      basisvalues[9] *= std::sqrt(2.0);
 
8220
      basisvalues[1] *= std::sqrt(3.0);
 
8221
      basisvalues[4] *= std::sqrt(4.5);
 
8222
      basisvalues[8] *= std::sqrt(6.0);
 
8223
      basisvalues[3] *= std::sqrt(7.5);
 
8224
      basisvalues[7] *= std::sqrt(10.0);
 
8225
      basisvalues[6] *= std::sqrt(14.0);
9776
8226
      
9777
8227
      // Table(s) of coefficients.
9778
8228
      static const double coefficients0[10] = \
9792
8242
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9793
8243
      
9794
8244
      // Declare helper variables.
9795
 
      unsigned int rr = 0;
9796
 
      unsigned int ss = 0;
9797
 
      unsigned int tt = 0;
9798
 
      double tmp5 = 0.0;
9799
 
      double tmp6 = 0.0;
9800
 
      double tmp7 = 0.0;
9801
8245
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9802
8246
      double tmp1 = (1.0 - Y)/2.0;
9803
8247
      double tmp2 = tmp1*tmp1;
9805
8249
      // Compute basisvalues.
9806
8250
      basisvalues[0] = 1.0;
9807
8251
      basisvalues[1] = tmp0;
9808
 
      for (unsigned int r = 1; r < 3; r++)
9809
 
      {
9810
 
        rr = (r + 1)*((r + 1) + 1)/2;
9811
 
        ss = r*(r + 1)/2;
9812
 
        tt = (r - 1)*((r - 1) + 1)/2;
9813
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9814
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9815
 
      }// end loop over 'r'
9816
 
      for (unsigned int r = 0; r < 3; r++)
9817
 
      {
9818
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9819
 
        ss = r*(r + 1)/2;
9820
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9821
 
      }// end loop over 'r'
9822
 
      for (unsigned int r = 0; r < 2; r++)
9823
 
      {
9824
 
        for (unsigned int s = 1; s < 3 - r; s++)
9825
 
        {
9826
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9827
 
          ss = (r + s)*(r + s + 1)/2 + s;
9828
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9829
 
          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));
9830
 
          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));
9831
 
          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));
9832
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9833
 
        }// end loop over 's'
9834
 
      }// end loop over 'r'
9835
 
      for (unsigned int r = 0; r < 4; r++)
9836
 
      {
9837
 
        for (unsigned int s = 0; s < 4 - r; s++)
9838
 
        {
9839
 
          rr = (r + s)*(r + s + 1)/2 + s;
9840
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9841
 
        }// end loop over 's'
9842
 
      }// end loop over 'r'
 
8252
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8253
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8254
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8255
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8256
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8257
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8258
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8259
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8260
      basisvalues[0] *= std::sqrt(0.5);
 
8261
      basisvalues[2] *= std::sqrt(1.0);
 
8262
      basisvalues[5] *= std::sqrt(1.5);
 
8263
      basisvalues[9] *= std::sqrt(2.0);
 
8264
      basisvalues[1] *= std::sqrt(3.0);
 
8265
      basisvalues[4] *= std::sqrt(4.5);
 
8266
      basisvalues[8] *= std::sqrt(6.0);
 
8267
      basisvalues[3] *= std::sqrt(7.5);
 
8268
      basisvalues[7] *= std::sqrt(10.0);
 
8269
      basisvalues[6] *= std::sqrt(14.0);
9843
8270
      
9844
8271
      // Table(s) of coefficients.
9845
8272
      static const double coefficients0[10] = \
9859
8286
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9860
8287
      
9861
8288
      // Declare helper variables.
9862
 
      unsigned int rr = 0;
9863
 
      unsigned int ss = 0;
9864
 
      unsigned int tt = 0;
9865
 
      double tmp5 = 0.0;
9866
 
      double tmp6 = 0.0;
9867
 
      double tmp7 = 0.0;
9868
8289
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9869
8290
      double tmp1 = (1.0 - Y)/2.0;
9870
8291
      double tmp2 = tmp1*tmp1;
9872
8293
      // Compute basisvalues.
9873
8294
      basisvalues[0] = 1.0;
9874
8295
      basisvalues[1] = tmp0;
9875
 
      for (unsigned int r = 1; r < 3; r++)
9876
 
      {
9877
 
        rr = (r + 1)*((r + 1) + 1)/2;
9878
 
        ss = r*(r + 1)/2;
9879
 
        tt = (r - 1)*((r - 1) + 1)/2;
9880
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9881
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9882
 
      }// end loop over 'r'
9883
 
      for (unsigned int r = 0; r < 3; r++)
9884
 
      {
9885
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9886
 
        ss = r*(r + 1)/2;
9887
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9888
 
      }// end loop over 'r'
9889
 
      for (unsigned int r = 0; r < 2; r++)
9890
 
      {
9891
 
        for (unsigned int s = 1; s < 3 - r; s++)
9892
 
        {
9893
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9894
 
          ss = (r + s)*(r + s + 1)/2 + s;
9895
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9896
 
          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));
9897
 
          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));
9898
 
          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));
9899
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9900
 
        }// end loop over 's'
9901
 
      }// end loop over 'r'
9902
 
      for (unsigned int r = 0; r < 4; r++)
9903
 
      {
9904
 
        for (unsigned int s = 0; s < 4 - r; s++)
9905
 
        {
9906
 
          rr = (r + s)*(r + s + 1)/2 + s;
9907
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9908
 
        }// end loop over 's'
9909
 
      }// end loop over 'r'
 
8296
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8297
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8298
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8299
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8300
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8301
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8302
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8303
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8304
      basisvalues[0] *= std::sqrt(0.5);
 
8305
      basisvalues[2] *= std::sqrt(1.0);
 
8306
      basisvalues[5] *= std::sqrt(1.5);
 
8307
      basisvalues[9] *= std::sqrt(2.0);
 
8308
      basisvalues[1] *= std::sqrt(3.0);
 
8309
      basisvalues[4] *= std::sqrt(4.5);
 
8310
      basisvalues[8] *= std::sqrt(6.0);
 
8311
      basisvalues[3] *= std::sqrt(7.5);
 
8312
      basisvalues[7] *= std::sqrt(10.0);
 
8313
      basisvalues[6] *= std::sqrt(14.0);
9910
8314
      
9911
8315
      // Table(s) of coefficients.
9912
8316
      static const double coefficients0[10] = \
9926
8330
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9927
8331
      
9928
8332
      // Declare helper variables.
9929
 
      unsigned int rr = 0;
9930
 
      unsigned int ss = 0;
9931
 
      unsigned int tt = 0;
9932
 
      double tmp5 = 0.0;
9933
 
      double tmp6 = 0.0;
9934
 
      double tmp7 = 0.0;
9935
8333
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
9936
8334
      double tmp1 = (1.0 - Y)/2.0;
9937
8335
      double tmp2 = tmp1*tmp1;
9939
8337
      // Compute basisvalues.
9940
8338
      basisvalues[0] = 1.0;
9941
8339
      basisvalues[1] = tmp0;
9942
 
      for (unsigned int r = 1; r < 3; r++)
9943
 
      {
9944
 
        rr = (r + 1)*((r + 1) + 1)/2;
9945
 
        ss = r*(r + 1)/2;
9946
 
        tt = (r - 1)*((r - 1) + 1)/2;
9947
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
9948
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
9949
 
      }// end loop over 'r'
9950
 
      for (unsigned int r = 0; r < 3; r++)
9951
 
      {
9952
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
9953
 
        ss = r*(r + 1)/2;
9954
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
9955
 
      }// end loop over 'r'
9956
 
      for (unsigned int r = 0; r < 2; r++)
9957
 
      {
9958
 
        for (unsigned int s = 1; s < 3 - r; s++)
9959
 
        {
9960
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
9961
 
          ss = (r + s)*(r + s + 1)/2 + s;
9962
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
9963
 
          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));
9964
 
          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));
9965
 
          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));
9966
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
9967
 
        }// end loop over 's'
9968
 
      }// end loop over 'r'
9969
 
      for (unsigned int r = 0; r < 4; r++)
9970
 
      {
9971
 
        for (unsigned int s = 0; s < 4 - r; s++)
9972
 
        {
9973
 
          rr = (r + s)*(r + s + 1)/2 + s;
9974
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
9975
 
        }// end loop over 's'
9976
 
      }// end loop over 'r'
 
8340
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8341
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8342
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8343
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8344
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8345
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8346
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8347
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8348
      basisvalues[0] *= std::sqrt(0.5);
 
8349
      basisvalues[2] *= std::sqrt(1.0);
 
8350
      basisvalues[5] *= std::sqrt(1.5);
 
8351
      basisvalues[9] *= std::sqrt(2.0);
 
8352
      basisvalues[1] *= std::sqrt(3.0);
 
8353
      basisvalues[4] *= std::sqrt(4.5);
 
8354
      basisvalues[8] *= std::sqrt(6.0);
 
8355
      basisvalues[3] *= std::sqrt(7.5);
 
8356
      basisvalues[7] *= std::sqrt(10.0);
 
8357
      basisvalues[6] *= std::sqrt(14.0);
9977
8358
      
9978
8359
      // Table(s) of coefficients.
9979
8360
      static const double coefficients0[10] = \
9993
8374
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
9994
8375
      
9995
8376
      // Declare helper variables.
9996
 
      unsigned int rr = 0;
9997
 
      unsigned int ss = 0;
9998
 
      unsigned int tt = 0;
9999
 
      double tmp5 = 0.0;
10000
 
      double tmp6 = 0.0;
10001
 
      double tmp7 = 0.0;
10002
8377
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10003
8378
      double tmp1 = (1.0 - Y)/2.0;
10004
8379
      double tmp2 = tmp1*tmp1;
10006
8381
      // Compute basisvalues.
10007
8382
      basisvalues[0] = 1.0;
10008
8383
      basisvalues[1] = tmp0;
10009
 
      for (unsigned int r = 1; r < 3; r++)
10010
 
      {
10011
 
        rr = (r + 1)*((r + 1) + 1)/2;
10012
 
        ss = r*(r + 1)/2;
10013
 
        tt = (r - 1)*((r - 1) + 1)/2;
10014
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10015
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10016
 
      }// end loop over 'r'
10017
 
      for (unsigned int r = 0; r < 3; r++)
10018
 
      {
10019
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10020
 
        ss = r*(r + 1)/2;
10021
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10022
 
      }// end loop over 'r'
10023
 
      for (unsigned int r = 0; r < 2; r++)
10024
 
      {
10025
 
        for (unsigned int s = 1; s < 3 - r; s++)
10026
 
        {
10027
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10028
 
          ss = (r + s)*(r + s + 1)/2 + s;
10029
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10030
 
          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));
10031
 
          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));
10032
 
          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));
10033
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10034
 
        }// end loop over 's'
10035
 
      }// end loop over 'r'
10036
 
      for (unsigned int r = 0; r < 4; r++)
10037
 
      {
10038
 
        for (unsigned int s = 0; s < 4 - r; s++)
10039
 
        {
10040
 
          rr = (r + s)*(r + s + 1)/2 + s;
10041
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10042
 
        }// end loop over 's'
10043
 
      }// end loop over 'r'
 
8384
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8385
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8386
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8387
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8388
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8389
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8390
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8391
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8392
      basisvalues[0] *= std::sqrt(0.5);
 
8393
      basisvalues[2] *= std::sqrt(1.0);
 
8394
      basisvalues[5] *= std::sqrt(1.5);
 
8395
      basisvalues[9] *= std::sqrt(2.0);
 
8396
      basisvalues[1] *= std::sqrt(3.0);
 
8397
      basisvalues[4] *= std::sqrt(4.5);
 
8398
      basisvalues[8] *= std::sqrt(6.0);
 
8399
      basisvalues[3] *= std::sqrt(7.5);
 
8400
      basisvalues[7] *= std::sqrt(10.0);
 
8401
      basisvalues[6] *= std::sqrt(14.0);
10044
8402
      
10045
8403
      // Table(s) of coefficients.
10046
8404
      static const double coefficients0[10] = \
10060
8418
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10061
8419
      
10062
8420
      // Declare helper variables.
10063
 
      unsigned int rr = 0;
10064
 
      unsigned int ss = 0;
10065
 
      unsigned int tt = 0;
10066
 
      double tmp5 = 0.0;
10067
 
      double tmp6 = 0.0;
10068
 
      double tmp7 = 0.0;
10069
8421
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10070
8422
      double tmp1 = (1.0 - Y)/2.0;
10071
8423
      double tmp2 = tmp1*tmp1;
10073
8425
      // Compute basisvalues.
10074
8426
      basisvalues[0] = 1.0;
10075
8427
      basisvalues[1] = tmp0;
10076
 
      for (unsigned int r = 1; r < 3; r++)
10077
 
      {
10078
 
        rr = (r + 1)*((r + 1) + 1)/2;
10079
 
        ss = r*(r + 1)/2;
10080
 
        tt = (r - 1)*((r - 1) + 1)/2;
10081
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10082
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10083
 
      }// end loop over 'r'
10084
 
      for (unsigned int r = 0; r < 3; r++)
10085
 
      {
10086
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10087
 
        ss = r*(r + 1)/2;
10088
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10089
 
      }// end loop over 'r'
10090
 
      for (unsigned int r = 0; r < 2; r++)
10091
 
      {
10092
 
        for (unsigned int s = 1; s < 3 - r; s++)
10093
 
        {
10094
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10095
 
          ss = (r + s)*(r + s + 1)/2 + s;
10096
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10097
 
          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));
10098
 
          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));
10099
 
          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));
10100
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10101
 
        }// end loop over 's'
10102
 
      }// end loop over 'r'
10103
 
      for (unsigned int r = 0; r < 4; r++)
10104
 
      {
10105
 
        for (unsigned int s = 0; s < 4 - r; s++)
10106
 
        {
10107
 
          rr = (r + s)*(r + s + 1)/2 + s;
10108
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10109
 
        }// end loop over 's'
10110
 
      }// end loop over 'r'
 
8428
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8429
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8430
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8431
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8432
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8433
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8434
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8435
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8436
      basisvalues[0] *= std::sqrt(0.5);
 
8437
      basisvalues[2] *= std::sqrt(1.0);
 
8438
      basisvalues[5] *= std::sqrt(1.5);
 
8439
      basisvalues[9] *= std::sqrt(2.0);
 
8440
      basisvalues[1] *= std::sqrt(3.0);
 
8441
      basisvalues[4] *= std::sqrt(4.5);
 
8442
      basisvalues[8] *= std::sqrt(6.0);
 
8443
      basisvalues[3] *= std::sqrt(7.5);
 
8444
      basisvalues[7] *= std::sqrt(10.0);
 
8445
      basisvalues[6] *= std::sqrt(14.0);
10111
8446
      
10112
8447
      // Table(s) of coefficients.
10113
8448
      static const double coefficients0[10] = \
10127
8462
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10128
8463
      
10129
8464
      // Declare helper variables.
10130
 
      unsigned int rr = 0;
10131
 
      unsigned int ss = 0;
10132
 
      unsigned int tt = 0;
10133
 
      double tmp5 = 0.0;
10134
 
      double tmp6 = 0.0;
10135
 
      double tmp7 = 0.0;
10136
8465
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10137
8466
      double tmp1 = (1.0 - Y)/2.0;
10138
8467
      double tmp2 = tmp1*tmp1;
10140
8469
      // Compute basisvalues.
10141
8470
      basisvalues[0] = 1.0;
10142
8471
      basisvalues[1] = tmp0;
10143
 
      for (unsigned int r = 1; r < 3; r++)
10144
 
      {
10145
 
        rr = (r + 1)*((r + 1) + 1)/2;
10146
 
        ss = r*(r + 1)/2;
10147
 
        tt = (r - 1)*((r - 1) + 1)/2;
10148
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10149
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10150
 
      }// end loop over 'r'
10151
 
      for (unsigned int r = 0; r < 3; r++)
10152
 
      {
10153
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10154
 
        ss = r*(r + 1)/2;
10155
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10156
 
      }// end loop over 'r'
10157
 
      for (unsigned int r = 0; r < 2; r++)
10158
 
      {
10159
 
        for (unsigned int s = 1; s < 3 - r; s++)
10160
 
        {
10161
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10162
 
          ss = (r + s)*(r + s + 1)/2 + s;
10163
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10164
 
          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));
10165
 
          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));
10166
 
          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));
10167
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10168
 
        }// end loop over 's'
10169
 
      }// end loop over 'r'
10170
 
      for (unsigned int r = 0; r < 4; r++)
10171
 
      {
10172
 
        for (unsigned int s = 0; s < 4 - r; s++)
10173
 
        {
10174
 
          rr = (r + s)*(r + s + 1)/2 + s;
10175
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10176
 
        }// end loop over 's'
10177
 
      }// end loop over 'r'
 
8472
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8473
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8474
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8475
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8476
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8477
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8478
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8479
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8480
      basisvalues[0] *= std::sqrt(0.5);
 
8481
      basisvalues[2] *= std::sqrt(1.0);
 
8482
      basisvalues[5] *= std::sqrt(1.5);
 
8483
      basisvalues[9] *= std::sqrt(2.0);
 
8484
      basisvalues[1] *= std::sqrt(3.0);
 
8485
      basisvalues[4] *= std::sqrt(4.5);
 
8486
      basisvalues[8] *= std::sqrt(6.0);
 
8487
      basisvalues[3] *= std::sqrt(7.5);
 
8488
      basisvalues[7] *= std::sqrt(10.0);
 
8489
      basisvalues[6] *= std::sqrt(14.0);
10178
8490
      
10179
8491
      // Table(s) of coefficients.
10180
8492
      static const double coefficients0[10] = \
10194
8506
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10195
8507
      
10196
8508
      // Declare helper variables.
10197
 
      unsigned int rr = 0;
10198
 
      unsigned int ss = 0;
10199
 
      unsigned int tt = 0;
10200
 
      double tmp5 = 0.0;
10201
 
      double tmp6 = 0.0;
10202
 
      double tmp7 = 0.0;
10203
8509
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10204
8510
      double tmp1 = (1.0 - Y)/2.0;
10205
8511
      double tmp2 = tmp1*tmp1;
10207
8513
      // Compute basisvalues.
10208
8514
      basisvalues[0] = 1.0;
10209
8515
      basisvalues[1] = tmp0;
10210
 
      for (unsigned int r = 1; r < 3; r++)
10211
 
      {
10212
 
        rr = (r + 1)*((r + 1) + 1)/2;
10213
 
        ss = r*(r + 1)/2;
10214
 
        tt = (r - 1)*((r - 1) + 1)/2;
10215
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10216
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10217
 
      }// end loop over 'r'
10218
 
      for (unsigned int r = 0; r < 3; r++)
10219
 
      {
10220
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10221
 
        ss = r*(r + 1)/2;
10222
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10223
 
      }// end loop over 'r'
10224
 
      for (unsigned int r = 0; r < 2; r++)
10225
 
      {
10226
 
        for (unsigned int s = 1; s < 3 - r; s++)
10227
 
        {
10228
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10229
 
          ss = (r + s)*(r + s + 1)/2 + s;
10230
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10231
 
          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));
10232
 
          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));
10233
 
          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));
10234
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10235
 
        }// end loop over 's'
10236
 
      }// end loop over 'r'
10237
 
      for (unsigned int r = 0; r < 4; r++)
10238
 
      {
10239
 
        for (unsigned int s = 0; s < 4 - r; s++)
10240
 
        {
10241
 
          rr = (r + s)*(r + s + 1)/2 + s;
10242
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10243
 
        }// end loop over 's'
10244
 
      }// end loop over 'r'
 
8516
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8517
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8518
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8519
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8520
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8521
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8522
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8523
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8524
      basisvalues[0] *= std::sqrt(0.5);
 
8525
      basisvalues[2] *= std::sqrt(1.0);
 
8526
      basisvalues[5] *= std::sqrt(1.5);
 
8527
      basisvalues[9] *= std::sqrt(2.0);
 
8528
      basisvalues[1] *= std::sqrt(3.0);
 
8529
      basisvalues[4] *= std::sqrt(4.5);
 
8530
      basisvalues[8] *= std::sqrt(6.0);
 
8531
      basisvalues[3] *= std::sqrt(7.5);
 
8532
      basisvalues[7] *= std::sqrt(10.0);
 
8533
      basisvalues[6] *= std::sqrt(14.0);
10245
8534
      
10246
8535
      // Table(s) of coefficients.
10247
8536
      static const double coefficients0[10] = \
10261
8550
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10262
8551
      
10263
8552
      // Declare helper variables.
10264
 
      unsigned int rr = 0;
10265
 
      unsigned int ss = 0;
10266
 
      unsigned int tt = 0;
10267
 
      double tmp5 = 0.0;
10268
 
      double tmp6 = 0.0;
10269
 
      double tmp7 = 0.0;
10270
8553
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10271
8554
      double tmp1 = (1.0 - Y)/2.0;
10272
8555
      double tmp2 = tmp1*tmp1;
10274
8557
      // Compute basisvalues.
10275
8558
      basisvalues[0] = 1.0;
10276
8559
      basisvalues[1] = tmp0;
10277
 
      for (unsigned int r = 1; r < 3; r++)
10278
 
      {
10279
 
        rr = (r + 1)*((r + 1) + 1)/2;
10280
 
        ss = r*(r + 1)/2;
10281
 
        tt = (r - 1)*((r - 1) + 1)/2;
10282
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10283
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10284
 
      }// end loop over 'r'
10285
 
      for (unsigned int r = 0; r < 3; r++)
10286
 
      {
10287
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10288
 
        ss = r*(r + 1)/2;
10289
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10290
 
      }// end loop over 'r'
10291
 
      for (unsigned int r = 0; r < 2; r++)
10292
 
      {
10293
 
        for (unsigned int s = 1; s < 3 - r; s++)
10294
 
        {
10295
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10296
 
          ss = (r + s)*(r + s + 1)/2 + s;
10297
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10298
 
          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));
10299
 
          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));
10300
 
          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));
10301
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10302
 
        }// end loop over 's'
10303
 
      }// end loop over 'r'
10304
 
      for (unsigned int r = 0; r < 4; r++)
10305
 
      {
10306
 
        for (unsigned int s = 0; s < 4 - r; s++)
10307
 
        {
10308
 
          rr = (r + s)*(r + s + 1)/2 + s;
10309
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10310
 
        }// end loop over 's'
10311
 
      }// end loop over 'r'
 
8560
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8561
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8562
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8563
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8564
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8565
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8566
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8567
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8568
      basisvalues[0] *= std::sqrt(0.5);
 
8569
      basisvalues[2] *= std::sqrt(1.0);
 
8570
      basisvalues[5] *= std::sqrt(1.5);
 
8571
      basisvalues[9] *= std::sqrt(2.0);
 
8572
      basisvalues[1] *= std::sqrt(3.0);
 
8573
      basisvalues[4] *= std::sqrt(4.5);
 
8574
      basisvalues[8] *= std::sqrt(6.0);
 
8575
      basisvalues[3] *= std::sqrt(7.5);
 
8576
      basisvalues[7] *= std::sqrt(10.0);
 
8577
      basisvalues[6] *= std::sqrt(14.0);
10312
8578
      
10313
8579
      // Table(s) of coefficients.
10314
8580
      static const double coefficients0[10] = \
10328
8594
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10329
8595
      
10330
8596
      // Declare helper variables.
10331
 
      unsigned int rr = 0;
10332
 
      unsigned int ss = 0;
10333
 
      unsigned int tt = 0;
10334
 
      double tmp5 = 0.0;
10335
 
      double tmp6 = 0.0;
10336
 
      double tmp7 = 0.0;
10337
8597
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10338
8598
      double tmp1 = (1.0 - Y)/2.0;
10339
8599
      double tmp2 = tmp1*tmp1;
10341
8601
      // Compute basisvalues.
10342
8602
      basisvalues[0] = 1.0;
10343
8603
      basisvalues[1] = tmp0;
10344
 
      for (unsigned int r = 1; r < 3; r++)
10345
 
      {
10346
 
        rr = (r + 1)*((r + 1) + 1)/2;
10347
 
        ss = r*(r + 1)/2;
10348
 
        tt = (r - 1)*((r - 1) + 1)/2;
10349
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10350
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10351
 
      }// end loop over 'r'
10352
 
      for (unsigned int r = 0; r < 3; r++)
10353
 
      {
10354
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10355
 
        ss = r*(r + 1)/2;
10356
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10357
 
      }// end loop over 'r'
10358
 
      for (unsigned int r = 0; r < 2; r++)
10359
 
      {
10360
 
        for (unsigned int s = 1; s < 3 - r; s++)
10361
 
        {
10362
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10363
 
          ss = (r + s)*(r + s + 1)/2 + s;
10364
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10365
 
          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));
10366
 
          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));
10367
 
          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));
10368
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10369
 
        }// end loop over 's'
10370
 
      }// end loop over 'r'
10371
 
      for (unsigned int r = 0; r < 4; r++)
10372
 
      {
10373
 
        for (unsigned int s = 0; s < 4 - r; s++)
10374
 
        {
10375
 
          rr = (r + s)*(r + s + 1)/2 + s;
10376
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10377
 
        }// end loop over 's'
10378
 
      }// end loop over 'r'
 
8604
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8605
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8606
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8607
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8608
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8609
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8610
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8611
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8612
      basisvalues[0] *= std::sqrt(0.5);
 
8613
      basisvalues[2] *= std::sqrt(1.0);
 
8614
      basisvalues[5] *= std::sqrt(1.5);
 
8615
      basisvalues[9] *= std::sqrt(2.0);
 
8616
      basisvalues[1] *= std::sqrt(3.0);
 
8617
      basisvalues[4] *= std::sqrt(4.5);
 
8618
      basisvalues[8] *= std::sqrt(6.0);
 
8619
      basisvalues[3] *= std::sqrt(7.5);
 
8620
      basisvalues[7] *= std::sqrt(10.0);
 
8621
      basisvalues[6] *= std::sqrt(14.0);
10379
8622
      
10380
8623
      // Table(s) of coefficients.
10381
8624
      static const double coefficients0[10] = \
10395
8638
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10396
8639
      
10397
8640
      // Declare helper variables.
10398
 
      unsigned int rr = 0;
10399
 
      unsigned int ss = 0;
10400
 
      unsigned int tt = 0;
10401
 
      double tmp5 = 0.0;
10402
 
      double tmp6 = 0.0;
10403
 
      double tmp7 = 0.0;
10404
8641
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10405
8642
      double tmp1 = (1.0 - Y)/2.0;
10406
8643
      double tmp2 = tmp1*tmp1;
10408
8645
      // Compute basisvalues.
10409
8646
      basisvalues[0] = 1.0;
10410
8647
      basisvalues[1] = tmp0;
10411
 
      for (unsigned int r = 1; r < 3; r++)
10412
 
      {
10413
 
        rr = (r + 1)*((r + 1) + 1)/2;
10414
 
        ss = r*(r + 1)/2;
10415
 
        tt = (r - 1)*((r - 1) + 1)/2;
10416
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10417
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10418
 
      }// end loop over 'r'
10419
 
      for (unsigned int r = 0; r < 3; r++)
10420
 
      {
10421
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10422
 
        ss = r*(r + 1)/2;
10423
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10424
 
      }// end loop over 'r'
10425
 
      for (unsigned int r = 0; r < 2; r++)
10426
 
      {
10427
 
        for (unsigned int s = 1; s < 3 - r; s++)
10428
 
        {
10429
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10430
 
          ss = (r + s)*(r + s + 1)/2 + s;
10431
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10432
 
          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));
10433
 
          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));
10434
 
          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));
10435
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10436
 
        }// end loop over 's'
10437
 
      }// end loop over 'r'
10438
 
      for (unsigned int r = 0; r < 4; r++)
10439
 
      {
10440
 
        for (unsigned int s = 0; s < 4 - r; s++)
10441
 
        {
10442
 
          rr = (r + s)*(r + s + 1)/2 + s;
10443
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10444
 
        }// end loop over 's'
10445
 
      }// end loop over 'r'
 
8648
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8649
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8650
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8651
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8652
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8653
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8654
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8655
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8656
      basisvalues[0] *= std::sqrt(0.5);
 
8657
      basisvalues[2] *= std::sqrt(1.0);
 
8658
      basisvalues[5] *= std::sqrt(1.5);
 
8659
      basisvalues[9] *= std::sqrt(2.0);
 
8660
      basisvalues[1] *= std::sqrt(3.0);
 
8661
      basisvalues[4] *= std::sqrt(4.5);
 
8662
      basisvalues[8] *= std::sqrt(6.0);
 
8663
      basisvalues[3] *= std::sqrt(7.5);
 
8664
      basisvalues[7] *= std::sqrt(10.0);
 
8665
      basisvalues[6] *= std::sqrt(14.0);
10446
8666
      
10447
8667
      // Table(s) of coefficients.
10448
8668
      static const double coefficients0[10] = \
10462
8682
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10463
8683
      
10464
8684
      // Declare helper variables.
10465
 
      unsigned int rr = 0;
10466
 
      unsigned int ss = 0;
10467
 
      unsigned int tt = 0;
10468
 
      double tmp5 = 0.0;
10469
 
      double tmp6 = 0.0;
10470
 
      double tmp7 = 0.0;
10471
8685
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10472
8686
      double tmp1 = (1.0 - Y)/2.0;
10473
8687
      double tmp2 = tmp1*tmp1;
10475
8689
      // Compute basisvalues.
10476
8690
      basisvalues[0] = 1.0;
10477
8691
      basisvalues[1] = tmp0;
10478
 
      for (unsigned int r = 1; r < 3; r++)
10479
 
      {
10480
 
        rr = (r + 1)*((r + 1) + 1)/2;
10481
 
        ss = r*(r + 1)/2;
10482
 
        tt = (r - 1)*((r - 1) + 1)/2;
10483
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10484
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10485
 
      }// end loop over 'r'
10486
 
      for (unsigned int r = 0; r < 3; r++)
10487
 
      {
10488
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10489
 
        ss = r*(r + 1)/2;
10490
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10491
 
      }// end loop over 'r'
10492
 
      for (unsigned int r = 0; r < 2; r++)
10493
 
      {
10494
 
        for (unsigned int s = 1; s < 3 - r; s++)
10495
 
        {
10496
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10497
 
          ss = (r + s)*(r + s + 1)/2 + s;
10498
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10499
 
          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));
10500
 
          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));
10501
 
          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));
10502
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10503
 
        }// end loop over 's'
10504
 
      }// end loop over 'r'
10505
 
      for (unsigned int r = 0; r < 4; r++)
10506
 
      {
10507
 
        for (unsigned int s = 0; s < 4 - r; s++)
10508
 
        {
10509
 
          rr = (r + s)*(r + s + 1)/2 + s;
10510
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10511
 
        }// end loop over 's'
10512
 
      }// end loop over 'r'
 
8692
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8693
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8694
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8695
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8696
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8697
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8698
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8699
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8700
      basisvalues[0] *= std::sqrt(0.5);
 
8701
      basisvalues[2] *= std::sqrt(1.0);
 
8702
      basisvalues[5] *= std::sqrt(1.5);
 
8703
      basisvalues[9] *= std::sqrt(2.0);
 
8704
      basisvalues[1] *= std::sqrt(3.0);
 
8705
      basisvalues[4] *= std::sqrt(4.5);
 
8706
      basisvalues[8] *= std::sqrt(6.0);
 
8707
      basisvalues[3] *= std::sqrt(7.5);
 
8708
      basisvalues[7] *= std::sqrt(10.0);
 
8709
      basisvalues[6] *= std::sqrt(14.0);
10513
8710
      
10514
8711
      // Table(s) of coefficients.
10515
8712
      static const double coefficients0[10] = \
10529
8726
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10530
8727
      
10531
8728
      // Declare helper variables.
10532
 
      unsigned int rr = 0;
10533
 
      unsigned int ss = 0;
10534
 
      unsigned int tt = 0;
10535
 
      double tmp5 = 0.0;
10536
 
      double tmp6 = 0.0;
10537
 
      double tmp7 = 0.0;
10538
8729
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10539
8730
      double tmp1 = (1.0 - Y)/2.0;
10540
8731
      double tmp2 = tmp1*tmp1;
10542
8733
      // Compute basisvalues.
10543
8734
      basisvalues[0] = 1.0;
10544
8735
      basisvalues[1] = tmp0;
10545
 
      for (unsigned int r = 1; r < 3; r++)
10546
 
      {
10547
 
        rr = (r + 1)*((r + 1) + 1)/2;
10548
 
        ss = r*(r + 1)/2;
10549
 
        tt = (r - 1)*((r - 1) + 1)/2;
10550
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10551
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10552
 
      }// end loop over 'r'
10553
 
      for (unsigned int r = 0; r < 3; r++)
10554
 
      {
10555
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10556
 
        ss = r*(r + 1)/2;
10557
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10558
 
      }// end loop over 'r'
10559
 
      for (unsigned int r = 0; r < 2; r++)
10560
 
      {
10561
 
        for (unsigned int s = 1; s < 3 - r; s++)
10562
 
        {
10563
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10564
 
          ss = (r + s)*(r + s + 1)/2 + s;
10565
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10566
 
          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));
10567
 
          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));
10568
 
          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));
10569
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10570
 
        }// end loop over 's'
10571
 
      }// end loop over 'r'
10572
 
      for (unsigned int r = 0; r < 4; r++)
10573
 
      {
10574
 
        for (unsigned int s = 0; s < 4 - r; s++)
10575
 
        {
10576
 
          rr = (r + s)*(r + s + 1)/2 + s;
10577
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10578
 
        }// end loop over 's'
10579
 
      }// end loop over 'r'
 
8736
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8737
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8738
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8739
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8740
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8741
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8742
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8743
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8744
      basisvalues[0] *= std::sqrt(0.5);
 
8745
      basisvalues[2] *= std::sqrt(1.0);
 
8746
      basisvalues[5] *= std::sqrt(1.5);
 
8747
      basisvalues[9] *= std::sqrt(2.0);
 
8748
      basisvalues[1] *= std::sqrt(3.0);
 
8749
      basisvalues[4] *= std::sqrt(4.5);
 
8750
      basisvalues[8] *= std::sqrt(6.0);
 
8751
      basisvalues[3] *= std::sqrt(7.5);
 
8752
      basisvalues[7] *= std::sqrt(10.0);
 
8753
      basisvalues[6] *= std::sqrt(14.0);
10580
8754
      
10581
8755
      // Table(s) of coefficients.
10582
8756
      static const double coefficients0[10] = \
10596
8770
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10597
8771
      
10598
8772
      // Declare helper variables.
10599
 
      unsigned int rr = 0;
10600
 
      unsigned int ss = 0;
10601
 
      unsigned int tt = 0;
10602
 
      double tmp5 = 0.0;
10603
 
      double tmp6 = 0.0;
10604
 
      double tmp7 = 0.0;
10605
8773
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10606
8774
      double tmp1 = (1.0 - Y)/2.0;
10607
8775
      double tmp2 = tmp1*tmp1;
10609
8777
      // Compute basisvalues.
10610
8778
      basisvalues[0] = 1.0;
10611
8779
      basisvalues[1] = tmp0;
10612
 
      for (unsigned int r = 1; r < 3; r++)
10613
 
      {
10614
 
        rr = (r + 1)*((r + 1) + 1)/2;
10615
 
        ss = r*(r + 1)/2;
10616
 
        tt = (r - 1)*((r - 1) + 1)/2;
10617
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10618
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10619
 
      }// end loop over 'r'
10620
 
      for (unsigned int r = 0; r < 3; r++)
10621
 
      {
10622
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10623
 
        ss = r*(r + 1)/2;
10624
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10625
 
      }// end loop over 'r'
10626
 
      for (unsigned int r = 0; r < 2; r++)
10627
 
      {
10628
 
        for (unsigned int s = 1; s < 3 - r; s++)
10629
 
        {
10630
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10631
 
          ss = (r + s)*(r + s + 1)/2 + s;
10632
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10633
 
          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));
10634
 
          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));
10635
 
          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));
10636
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10637
 
        }// end loop over 's'
10638
 
      }// end loop over 'r'
10639
 
      for (unsigned int r = 0; r < 4; r++)
10640
 
      {
10641
 
        for (unsigned int s = 0; s < 4 - r; s++)
10642
 
        {
10643
 
          rr = (r + s)*(r + s + 1)/2 + s;
10644
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10645
 
        }// end loop over 's'
10646
 
      }// end loop over 'r'
 
8780
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8781
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8782
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8783
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8784
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8785
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8786
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8787
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8788
      basisvalues[0] *= std::sqrt(0.5);
 
8789
      basisvalues[2] *= std::sqrt(1.0);
 
8790
      basisvalues[5] *= std::sqrt(1.5);
 
8791
      basisvalues[9] *= std::sqrt(2.0);
 
8792
      basisvalues[1] *= std::sqrt(3.0);
 
8793
      basisvalues[4] *= std::sqrt(4.5);
 
8794
      basisvalues[8] *= std::sqrt(6.0);
 
8795
      basisvalues[3] *= std::sqrt(7.5);
 
8796
      basisvalues[7] *= std::sqrt(10.0);
 
8797
      basisvalues[6] *= std::sqrt(14.0);
10647
8798
      
10648
8799
      // Table(s) of coefficients.
10649
8800
      static const double coefficients0[10] = \
10663
8814
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10664
8815
      
10665
8816
      // Declare helper variables.
10666
 
      unsigned int rr = 0;
10667
 
      unsigned int ss = 0;
10668
 
      unsigned int tt = 0;
10669
 
      double tmp5 = 0.0;
10670
 
      double tmp6 = 0.0;
10671
 
      double tmp7 = 0.0;
10672
8817
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10673
8818
      double tmp1 = (1.0 - Y)/2.0;
10674
8819
      double tmp2 = tmp1*tmp1;
10676
8821
      // Compute basisvalues.
10677
8822
      basisvalues[0] = 1.0;
10678
8823
      basisvalues[1] = tmp0;
10679
 
      for (unsigned int r = 1; r < 3; r++)
10680
 
      {
10681
 
        rr = (r + 1)*((r + 1) + 1)/2;
10682
 
        ss = r*(r + 1)/2;
10683
 
        tt = (r - 1)*((r - 1) + 1)/2;
10684
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10685
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10686
 
      }// end loop over 'r'
10687
 
      for (unsigned int r = 0; r < 3; r++)
10688
 
      {
10689
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10690
 
        ss = r*(r + 1)/2;
10691
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10692
 
      }// end loop over 'r'
10693
 
      for (unsigned int r = 0; r < 2; r++)
10694
 
      {
10695
 
        for (unsigned int s = 1; s < 3 - r; s++)
10696
 
        {
10697
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10698
 
          ss = (r + s)*(r + s + 1)/2 + s;
10699
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10700
 
          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));
10701
 
          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));
10702
 
          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));
10703
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10704
 
        }// end loop over 's'
10705
 
      }// end loop over 'r'
10706
 
      for (unsigned int r = 0; r < 4; r++)
10707
 
      {
10708
 
        for (unsigned int s = 0; s < 4 - r; s++)
10709
 
        {
10710
 
          rr = (r + s)*(r + s + 1)/2 + s;
10711
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10712
 
        }// end loop over 's'
10713
 
      }// end loop over 'r'
 
8824
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8825
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8826
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8827
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8828
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8829
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8830
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8831
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8832
      basisvalues[0] *= std::sqrt(0.5);
 
8833
      basisvalues[2] *= std::sqrt(1.0);
 
8834
      basisvalues[5] *= std::sqrt(1.5);
 
8835
      basisvalues[9] *= std::sqrt(2.0);
 
8836
      basisvalues[1] *= std::sqrt(3.0);
 
8837
      basisvalues[4] *= std::sqrt(4.5);
 
8838
      basisvalues[8] *= std::sqrt(6.0);
 
8839
      basisvalues[3] *= std::sqrt(7.5);
 
8840
      basisvalues[7] *= std::sqrt(10.0);
 
8841
      basisvalues[6] *= std::sqrt(14.0);
10714
8842
      
10715
8843
      // Table(s) of coefficients.
10716
8844
      static const double coefficients0[10] = \
10730
8858
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10731
8859
      
10732
8860
      // Declare helper variables.
10733
 
      unsigned int rr = 0;
10734
 
      unsigned int ss = 0;
10735
 
      unsigned int tt = 0;
10736
 
      double tmp5 = 0.0;
10737
 
      double tmp6 = 0.0;
10738
 
      double tmp7 = 0.0;
10739
8861
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10740
8862
      double tmp1 = (1.0 - Y)/2.0;
10741
8863
      double tmp2 = tmp1*tmp1;
10743
8865
      // Compute basisvalues.
10744
8866
      basisvalues[0] = 1.0;
10745
8867
      basisvalues[1] = tmp0;
10746
 
      for (unsigned int r = 1; r < 3; r++)
10747
 
      {
10748
 
        rr = (r + 1)*((r + 1) + 1)/2;
10749
 
        ss = r*(r + 1)/2;
10750
 
        tt = (r - 1)*((r - 1) + 1)/2;
10751
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10752
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10753
 
      }// end loop over 'r'
10754
 
      for (unsigned int r = 0; r < 3; r++)
10755
 
      {
10756
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10757
 
        ss = r*(r + 1)/2;
10758
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10759
 
      }// end loop over 'r'
10760
 
      for (unsigned int r = 0; r < 2; r++)
10761
 
      {
10762
 
        for (unsigned int s = 1; s < 3 - r; s++)
10763
 
        {
10764
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10765
 
          ss = (r + s)*(r + s + 1)/2 + s;
10766
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10767
 
          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));
10768
 
          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));
10769
 
          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));
10770
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10771
 
        }// end loop over 's'
10772
 
      }// end loop over 'r'
10773
 
      for (unsigned int r = 0; r < 4; r++)
10774
 
      {
10775
 
        for (unsigned int s = 0; s < 4 - r; s++)
10776
 
        {
10777
 
          rr = (r + s)*(r + s + 1)/2 + s;
10778
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10779
 
        }// end loop over 's'
10780
 
      }// end loop over 'r'
 
8868
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8869
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8870
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8871
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8872
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8873
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8874
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8875
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8876
      basisvalues[0] *= std::sqrt(0.5);
 
8877
      basisvalues[2] *= std::sqrt(1.0);
 
8878
      basisvalues[5] *= std::sqrt(1.5);
 
8879
      basisvalues[9] *= std::sqrt(2.0);
 
8880
      basisvalues[1] *= std::sqrt(3.0);
 
8881
      basisvalues[4] *= std::sqrt(4.5);
 
8882
      basisvalues[8] *= std::sqrt(6.0);
 
8883
      basisvalues[3] *= std::sqrt(7.5);
 
8884
      basisvalues[7] *= std::sqrt(10.0);
 
8885
      basisvalues[6] *= std::sqrt(14.0);
10781
8886
      
10782
8887
      // Table(s) of coefficients.
10783
8888
      static const double coefficients0[10] = \
10797
8902
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10798
8903
      
10799
8904
      // Declare helper variables.
10800
 
      unsigned int rr = 0;
10801
 
      unsigned int ss = 0;
10802
 
      unsigned int tt = 0;
10803
 
      double tmp5 = 0.0;
10804
 
      double tmp6 = 0.0;
10805
 
      double tmp7 = 0.0;
10806
8905
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10807
8906
      double tmp1 = (1.0 - Y)/2.0;
10808
8907
      double tmp2 = tmp1*tmp1;
10810
8909
      // Compute basisvalues.
10811
8910
      basisvalues[0] = 1.0;
10812
8911
      basisvalues[1] = tmp0;
10813
 
      for (unsigned int r = 1; r < 3; r++)
10814
 
      {
10815
 
        rr = (r + 1)*((r + 1) + 1)/2;
10816
 
        ss = r*(r + 1)/2;
10817
 
        tt = (r - 1)*((r - 1) + 1)/2;
10818
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
10819
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
10820
 
      }// end loop over 'r'
10821
 
      for (unsigned int r = 0; r < 3; r++)
10822
 
      {
10823
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
10824
 
        ss = r*(r + 1)/2;
10825
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
10826
 
      }// end loop over 'r'
10827
 
      for (unsigned int r = 0; r < 2; r++)
10828
 
      {
10829
 
        for (unsigned int s = 1; s < 3 - r; s++)
10830
 
        {
10831
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
10832
 
          ss = (r + s)*(r + s + 1)/2 + s;
10833
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
10834
 
          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));
10835
 
          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));
10836
 
          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));
10837
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
10838
 
        }// end loop over 's'
10839
 
      }// end loop over 'r'
10840
 
      for (unsigned int r = 0; r < 4; r++)
10841
 
      {
10842
 
        for (unsigned int s = 0; s < 4 - r; s++)
10843
 
        {
10844
 
          rr = (r + s)*(r + s + 1)/2 + s;
10845
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
10846
 
        }// end loop over 's'
10847
 
      }// end loop over 'r'
 
8912
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
8913
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
8914
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
8915
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
8916
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
8917
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
8918
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
8919
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
8920
      basisvalues[0] *= std::sqrt(0.5);
 
8921
      basisvalues[2] *= std::sqrt(1.0);
 
8922
      basisvalues[5] *= std::sqrt(1.5);
 
8923
      basisvalues[9] *= std::sqrt(2.0);
 
8924
      basisvalues[1] *= std::sqrt(3.0);
 
8925
      basisvalues[4] *= std::sqrt(4.5);
 
8926
      basisvalues[8] *= std::sqrt(6.0);
 
8927
      basisvalues[3] *= std::sqrt(7.5);
 
8928
      basisvalues[7] *= std::sqrt(10.0);
 
8929
      basisvalues[6] *= std::sqrt(14.0);
10848
8930
      
10849
8931
      // Table(s) of coefficients.
10850
8932
      static const double coefficients0[10] = \
10986
9068
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
10987
9069
      
10988
9070
      // Declare helper variables.
10989
 
      unsigned int rr = 0;
10990
 
      unsigned int ss = 0;
10991
 
      unsigned int tt = 0;
10992
 
      double tmp5 = 0.0;
10993
 
      double tmp6 = 0.0;
10994
 
      double tmp7 = 0.0;
10995
9071
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
10996
9072
      double tmp1 = (1.0 - Y)/2.0;
10997
9073
      double tmp2 = tmp1*tmp1;
10999
9075
      // Compute basisvalues.
11000
9076
      basisvalues[0] = 1.0;
11001
9077
      basisvalues[1] = tmp0;
11002
 
      for (unsigned int r = 1; r < 3; r++)
11003
 
      {
11004
 
        rr = (r + 1)*((r + 1) + 1)/2;
11005
 
        ss = r*(r + 1)/2;
11006
 
        tt = (r - 1)*((r - 1) + 1)/2;
11007
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
11008
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
11009
 
      }// end loop over 'r'
11010
 
      for (unsigned int r = 0; r < 3; r++)
11011
 
      {
11012
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
11013
 
        ss = r*(r + 1)/2;
11014
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
11015
 
      }// end loop over 'r'
11016
 
      for (unsigned int r = 0; r < 2; r++)
11017
 
      {
11018
 
        for (unsigned int s = 1; s < 3 - r; s++)
11019
 
        {
11020
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
11021
 
          ss = (r + s)*(r + s + 1)/2 + s;
11022
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
11023
 
          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));
11024
 
          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));
11025
 
          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));
11026
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
11027
 
        }// end loop over 's'
11028
 
      }// end loop over 'r'
11029
 
      for (unsigned int r = 0; r < 4; r++)
11030
 
      {
11031
 
        for (unsigned int s = 0; s < 4 - r; s++)
11032
 
        {
11033
 
          rr = (r + s)*(r + s + 1)/2 + s;
11034
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
11035
 
        }// end loop over 's'
11036
 
      }// end loop over 'r'
 
9078
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
9079
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
9080
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
9081
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
9082
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
9083
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
9084
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
9085
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
9086
      basisvalues[0] *= std::sqrt(0.5);
 
9087
      basisvalues[2] *= std::sqrt(1.0);
 
9088
      basisvalues[5] *= std::sqrt(1.5);
 
9089
      basisvalues[9] *= std::sqrt(2.0);
 
9090
      basisvalues[1] *= std::sqrt(3.0);
 
9091
      basisvalues[4] *= std::sqrt(4.5);
 
9092
      basisvalues[8] *= std::sqrt(6.0);
 
9093
      basisvalues[3] *= std::sqrt(7.5);
 
9094
      basisvalues[7] *= std::sqrt(10.0);
 
9095
      basisvalues[6] *= std::sqrt(14.0);
11037
9096
      
11038
9097
      // Table(s) of coefficients.
11039
9098
      static const double coefficients0[10] = \
11199
9258
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
11200
9259
      
11201
9260
      // Declare helper variables.
11202
 
      unsigned int rr = 0;
11203
 
      unsigned int ss = 0;
11204
 
      unsigned int tt = 0;
11205
 
      double tmp5 = 0.0;
11206
 
      double tmp6 = 0.0;
11207
 
      double tmp7 = 0.0;
11208
9261
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
11209
9262
      double tmp1 = (1.0 - Y)/2.0;
11210
9263
      double tmp2 = tmp1*tmp1;
11212
9265
      // Compute basisvalues.
11213
9266
      basisvalues[0] = 1.0;
11214
9267
      basisvalues[1] = tmp0;
11215
 
      for (unsigned int r = 1; r < 3; r++)
11216
 
      {
11217
 
        rr = (r + 1)*((r + 1) + 1)/2;
11218
 
        ss = r*(r + 1)/2;
11219
 
        tt = (r - 1)*((r - 1) + 1)/2;
11220
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
11221
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
11222
 
      }// end loop over 'r'
11223
 
      for (unsigned int r = 0; r < 3; r++)
11224
 
      {
11225
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
11226
 
        ss = r*(r + 1)/2;
11227
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
11228
 
      }// end loop over 'r'
11229
 
      for (unsigned int r = 0; r < 2; r++)
11230
 
      {
11231
 
        for (unsigned int s = 1; s < 3 - r; s++)
11232
 
        {
11233
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
11234
 
          ss = (r + s)*(r + s + 1)/2 + s;
11235
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
11236
 
          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));
11237
 
          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));
11238
 
          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));
11239
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
11240
 
        }// end loop over 's'
11241
 
      }// end loop over 'r'
11242
 
      for (unsigned int r = 0; r < 4; r++)
11243
 
      {
11244
 
        for (unsigned int s = 0; s < 4 - r; s++)
11245
 
        {
11246
 
          rr = (r + s)*(r + s + 1)/2 + s;
11247
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
11248
 
        }// end loop over 's'
11249
 
      }// end loop over 'r'
 
9268
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
9269
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
9270
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
9271
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
9272
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
9273
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
9274
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
9275
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
9276
      basisvalues[0] *= std::sqrt(0.5);
 
9277
      basisvalues[2] *= std::sqrt(1.0);
 
9278
      basisvalues[5] *= std::sqrt(1.5);
 
9279
      basisvalues[9] *= std::sqrt(2.0);
 
9280
      basisvalues[1] *= std::sqrt(3.0);
 
9281
      basisvalues[4] *= std::sqrt(4.5);
 
9282
      basisvalues[8] *= std::sqrt(6.0);
 
9283
      basisvalues[3] *= std::sqrt(7.5);
 
9284
      basisvalues[7] *= std::sqrt(10.0);
 
9285
      basisvalues[6] *= std::sqrt(14.0);
11250
9286
      
11251
9287
      // Table(s) of coefficients.
11252
9288
      static const double coefficients0[10] = \
11412
9448
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
11413
9449
      
11414
9450
      // Declare helper variables.
11415
 
      unsigned int rr = 0;
11416
 
      unsigned int ss = 0;
11417
 
      unsigned int tt = 0;
11418
 
      double tmp5 = 0.0;
11419
 
      double tmp6 = 0.0;
11420
 
      double tmp7 = 0.0;
11421
9451
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
11422
9452
      double tmp1 = (1.0 - Y)/2.0;
11423
9453
      double tmp2 = tmp1*tmp1;
11425
9455
      // Compute basisvalues.
11426
9456
      basisvalues[0] = 1.0;
11427
9457
      basisvalues[1] = tmp0;
11428
 
      for (unsigned int r = 1; r < 3; r++)
11429
 
      {
11430
 
        rr = (r + 1)*((r + 1) + 1)/2;
11431
 
        ss = r*(r + 1)/2;
11432
 
        tt = (r - 1)*((r - 1) + 1)/2;
11433
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
11434
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
11435
 
      }// end loop over 'r'
11436
 
      for (unsigned int r = 0; r < 3; r++)
11437
 
      {
11438
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
11439
 
        ss = r*(r + 1)/2;
11440
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
11441
 
      }// end loop over 'r'
11442
 
      for (unsigned int r = 0; r < 2; r++)
11443
 
      {
11444
 
        for (unsigned int s = 1; s < 3 - r; s++)
11445
 
        {
11446
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
11447
 
          ss = (r + s)*(r + s + 1)/2 + s;
11448
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
11449
 
          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));
11450
 
          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));
11451
 
          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));
11452
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
11453
 
        }// end loop over 's'
11454
 
      }// end loop over 'r'
11455
 
      for (unsigned int r = 0; r < 4; r++)
11456
 
      {
11457
 
        for (unsigned int s = 0; s < 4 - r; s++)
11458
 
        {
11459
 
          rr = (r + s)*(r + s + 1)/2 + s;
11460
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
11461
 
        }// end loop over 's'
11462
 
      }// end loop over 'r'
 
9458
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
9459
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
9460
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
9461
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
9462
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
9463
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
9464
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
9465
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
9466
      basisvalues[0] *= std::sqrt(0.5);
 
9467
      basisvalues[2] *= std::sqrt(1.0);
 
9468
      basisvalues[5] *= std::sqrt(1.5);
 
9469
      basisvalues[9] *= std::sqrt(2.0);
 
9470
      basisvalues[1] *= std::sqrt(3.0);
 
9471
      basisvalues[4] *= std::sqrt(4.5);
 
9472
      basisvalues[8] *= std::sqrt(6.0);
 
9473
      basisvalues[3] *= std::sqrt(7.5);
 
9474
      basisvalues[7] *= std::sqrt(10.0);
 
9475
      basisvalues[6] *= std::sqrt(14.0);
11463
9476
      
11464
9477
      // Table(s) of coefficients.
11465
9478
      static const double coefficients0[10] = \
11625
9638
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
11626
9639
      
11627
9640
      // Declare helper variables.
11628
 
      unsigned int rr = 0;
11629
 
      unsigned int ss = 0;
11630
 
      unsigned int tt = 0;
11631
 
      double tmp5 = 0.0;
11632
 
      double tmp6 = 0.0;
11633
 
      double tmp7 = 0.0;
11634
9641
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
11635
9642
      double tmp1 = (1.0 - Y)/2.0;
11636
9643
      double tmp2 = tmp1*tmp1;
11638
9645
      // Compute basisvalues.
11639
9646
      basisvalues[0] = 1.0;
11640
9647
      basisvalues[1] = tmp0;
11641
 
      for (unsigned int r = 1; r < 3; r++)
11642
 
      {
11643
 
        rr = (r + 1)*((r + 1) + 1)/2;
11644
 
        ss = r*(r + 1)/2;
11645
 
        tt = (r - 1)*((r - 1) + 1)/2;
11646
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
11647
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
11648
 
      }// end loop over 'r'
11649
 
      for (unsigned int r = 0; r < 3; r++)
11650
 
      {
11651
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
11652
 
        ss = r*(r + 1)/2;
11653
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
11654
 
      }// end loop over 'r'
11655
 
      for (unsigned int r = 0; r < 2; r++)
11656
 
      {
11657
 
        for (unsigned int s = 1; s < 3 - r; s++)
11658
 
        {
11659
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
11660
 
          ss = (r + s)*(r + s + 1)/2 + s;
11661
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
11662
 
          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));
11663
 
          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));
11664
 
          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));
11665
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
11666
 
        }// end loop over 's'
11667
 
      }// end loop over 'r'
11668
 
      for (unsigned int r = 0; r < 4; r++)
11669
 
      {
11670
 
        for (unsigned int s = 0; s < 4 - r; s++)
11671
 
        {
11672
 
          rr = (r + s)*(r + s + 1)/2 + s;
11673
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
11674
 
        }// end loop over 's'
11675
 
      }// end loop over 'r'
 
9648
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
9649
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
9650
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
9651
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
9652
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
9653
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
9654
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
9655
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
9656
      basisvalues[0] *= std::sqrt(0.5);
 
9657
      basisvalues[2] *= std::sqrt(1.0);
 
9658
      basisvalues[5] *= std::sqrt(1.5);
 
9659
      basisvalues[9] *= std::sqrt(2.0);
 
9660
      basisvalues[1] *= std::sqrt(3.0);
 
9661
      basisvalues[4] *= std::sqrt(4.5);
 
9662
      basisvalues[8] *= std::sqrt(6.0);
 
9663
      basisvalues[3] *= std::sqrt(7.5);
 
9664
      basisvalues[7] *= std::sqrt(10.0);
 
9665
      basisvalues[6] *= std::sqrt(14.0);
11676
9666
      
11677
9667
      // Table(s) of coefficients.
11678
9668
      static const double coefficients0[10] = \
11838
9828
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
11839
9829
      
11840
9830
      // Declare helper variables.
11841
 
      unsigned int rr = 0;
11842
 
      unsigned int ss = 0;
11843
 
      unsigned int tt = 0;
11844
 
      double tmp5 = 0.0;
11845
 
      double tmp6 = 0.0;
11846
 
      double tmp7 = 0.0;
11847
9831
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
11848
9832
      double tmp1 = (1.0 - Y)/2.0;
11849
9833
      double tmp2 = tmp1*tmp1;
11851
9835
      // Compute basisvalues.
11852
9836
      basisvalues[0] = 1.0;
11853
9837
      basisvalues[1] = tmp0;
11854
 
      for (unsigned int r = 1; r < 3; r++)
11855
 
      {
11856
 
        rr = (r + 1)*((r + 1) + 1)/2;
11857
 
        ss = r*(r + 1)/2;
11858
 
        tt = (r - 1)*((r - 1) + 1)/2;
11859
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
11860
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
11861
 
      }// end loop over 'r'
11862
 
      for (unsigned int r = 0; r < 3; r++)
11863
 
      {
11864
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
11865
 
        ss = r*(r + 1)/2;
11866
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
11867
 
      }// end loop over 'r'
11868
 
      for (unsigned int r = 0; r < 2; r++)
11869
 
      {
11870
 
        for (unsigned int s = 1; s < 3 - r; s++)
11871
 
        {
11872
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
11873
 
          ss = (r + s)*(r + s + 1)/2 + s;
11874
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
11875
 
          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));
11876
 
          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));
11877
 
          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));
11878
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
11879
 
        }// end loop over 's'
11880
 
      }// end loop over 'r'
11881
 
      for (unsigned int r = 0; r < 4; r++)
11882
 
      {
11883
 
        for (unsigned int s = 0; s < 4 - r; s++)
11884
 
        {
11885
 
          rr = (r + s)*(r + s + 1)/2 + s;
11886
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
11887
 
        }// end loop over 's'
11888
 
      }// end loop over 'r'
 
9838
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
9839
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
9840
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
9841
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
9842
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
9843
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
9844
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
9845
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
9846
      basisvalues[0] *= std::sqrt(0.5);
 
9847
      basisvalues[2] *= std::sqrt(1.0);
 
9848
      basisvalues[5] *= std::sqrt(1.5);
 
9849
      basisvalues[9] *= std::sqrt(2.0);
 
9850
      basisvalues[1] *= std::sqrt(3.0);
 
9851
      basisvalues[4] *= std::sqrt(4.5);
 
9852
      basisvalues[8] *= std::sqrt(6.0);
 
9853
      basisvalues[3] *= std::sqrt(7.5);
 
9854
      basisvalues[7] *= std::sqrt(10.0);
 
9855
      basisvalues[6] *= std::sqrt(14.0);
11889
9856
      
11890
9857
      // Table(s) of coefficients.
11891
9858
      static const double coefficients0[10] = \
12051
10018
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
12052
10019
      
12053
10020
      // Declare helper variables.
12054
 
      unsigned int rr = 0;
12055
 
      unsigned int ss = 0;
12056
 
      unsigned int tt = 0;
12057
 
      double tmp5 = 0.0;
12058
 
      double tmp6 = 0.0;
12059
 
      double tmp7 = 0.0;
12060
10021
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
12061
10022
      double tmp1 = (1.0 - Y)/2.0;
12062
10023
      double tmp2 = tmp1*tmp1;
12064
10025
      // Compute basisvalues.
12065
10026
      basisvalues[0] = 1.0;
12066
10027
      basisvalues[1] = tmp0;
12067
 
      for (unsigned int r = 1; r < 3; r++)
12068
 
      {
12069
 
        rr = (r + 1)*((r + 1) + 1)/2;
12070
 
        ss = r*(r + 1)/2;
12071
 
        tt = (r - 1)*((r - 1) + 1)/2;
12072
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
12073
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
12074
 
      }// end loop over 'r'
12075
 
      for (unsigned int r = 0; r < 3; r++)
12076
 
      {
12077
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
12078
 
        ss = r*(r + 1)/2;
12079
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
12080
 
      }// end loop over 'r'
12081
 
      for (unsigned int r = 0; r < 2; r++)
12082
 
      {
12083
 
        for (unsigned int s = 1; s < 3 - r; s++)
12084
 
        {
12085
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
12086
 
          ss = (r + s)*(r + s + 1)/2 + s;
12087
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
12088
 
          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));
12089
 
          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));
12090
 
          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));
12091
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
12092
 
        }// end loop over 's'
12093
 
      }// end loop over 'r'
12094
 
      for (unsigned int r = 0; r < 4; r++)
12095
 
      {
12096
 
        for (unsigned int s = 0; s < 4 - r; s++)
12097
 
        {
12098
 
          rr = (r + s)*(r + s + 1)/2 + s;
12099
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
12100
 
        }// end loop over 's'
12101
 
      }// end loop over 'r'
 
10028
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
10029
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
10030
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
10031
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
10032
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
10033
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
10034
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
10035
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
10036
      basisvalues[0] *= std::sqrt(0.5);
 
10037
      basisvalues[2] *= std::sqrt(1.0);
 
10038
      basisvalues[5] *= std::sqrt(1.5);
 
10039
      basisvalues[9] *= std::sqrt(2.0);
 
10040
      basisvalues[1] *= std::sqrt(3.0);
 
10041
      basisvalues[4] *= std::sqrt(4.5);
 
10042
      basisvalues[8] *= std::sqrt(6.0);
 
10043
      basisvalues[3] *= std::sqrt(7.5);
 
10044
      basisvalues[7] *= std::sqrt(10.0);
 
10045
      basisvalues[6] *= std::sqrt(14.0);
12102
10046
      
12103
10047
      // Table(s) of coefficients.
12104
10048
      static const double coefficients0[10] = \
12264
10208
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
12265
10209
      
12266
10210
      // Declare helper variables.
12267
 
      unsigned int rr = 0;
12268
 
      unsigned int ss = 0;
12269
 
      unsigned int tt = 0;
12270
 
      double tmp5 = 0.0;
12271
 
      double tmp6 = 0.0;
12272
 
      double tmp7 = 0.0;
12273
10211
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
12274
10212
      double tmp1 = (1.0 - Y)/2.0;
12275
10213
      double tmp2 = tmp1*tmp1;
12277
10215
      // Compute basisvalues.
12278
10216
      basisvalues[0] = 1.0;
12279
10217
      basisvalues[1] = tmp0;
12280
 
      for (unsigned int r = 1; r < 3; r++)
12281
 
      {
12282
 
        rr = (r + 1)*((r + 1) + 1)/2;
12283
 
        ss = r*(r + 1)/2;
12284
 
        tt = (r - 1)*((r - 1) + 1)/2;
12285
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
12286
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
12287
 
      }// end loop over 'r'
12288
 
      for (unsigned int r = 0; r < 3; r++)
12289
 
      {
12290
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
12291
 
        ss = r*(r + 1)/2;
12292
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
12293
 
      }// end loop over 'r'
12294
 
      for (unsigned int r = 0; r < 2; r++)
12295
 
      {
12296
 
        for (unsigned int s = 1; s < 3 - r; s++)
12297
 
        {
12298
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
12299
 
          ss = (r + s)*(r + s + 1)/2 + s;
12300
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
12301
 
          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));
12302
 
          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));
12303
 
          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));
12304
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
12305
 
        }// end loop over 's'
12306
 
      }// end loop over 'r'
12307
 
      for (unsigned int r = 0; r < 4; r++)
12308
 
      {
12309
 
        for (unsigned int s = 0; s < 4 - r; s++)
12310
 
        {
12311
 
          rr = (r + s)*(r + s + 1)/2 + s;
12312
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
12313
 
        }// end loop over 's'
12314
 
      }// end loop over 'r'
 
10218
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
10219
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
10220
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
10221
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
10222
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
10223
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
10224
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
10225
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
10226
      basisvalues[0] *= std::sqrt(0.5);
 
10227
      basisvalues[2] *= std::sqrt(1.0);
 
10228
      basisvalues[5] *= std::sqrt(1.5);
 
10229
      basisvalues[9] *= std::sqrt(2.0);
 
10230
      basisvalues[1] *= std::sqrt(3.0);
 
10231
      basisvalues[4] *= std::sqrt(4.5);
 
10232
      basisvalues[8] *= std::sqrt(6.0);
 
10233
      basisvalues[3] *= std::sqrt(7.5);
 
10234
      basisvalues[7] *= std::sqrt(10.0);
 
10235
      basisvalues[6] *= std::sqrt(14.0);
12315
10236
      
12316
10237
      // Table(s) of coefficients.
12317
10238
      static const double coefficients0[10] = \
12477
10398
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
12478
10399
      
12479
10400
      // Declare helper variables.
12480
 
      unsigned int rr = 0;
12481
 
      unsigned int ss = 0;
12482
 
      unsigned int tt = 0;
12483
 
      double tmp5 = 0.0;
12484
 
      double tmp6 = 0.0;
12485
 
      double tmp7 = 0.0;
12486
10401
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
12487
10402
      double tmp1 = (1.0 - Y)/2.0;
12488
10403
      double tmp2 = tmp1*tmp1;
12490
10405
      // Compute basisvalues.
12491
10406
      basisvalues[0] = 1.0;
12492
10407
      basisvalues[1] = tmp0;
12493
 
      for (unsigned int r = 1; r < 3; r++)
12494
 
      {
12495
 
        rr = (r + 1)*((r + 1) + 1)/2;
12496
 
        ss = r*(r + 1)/2;
12497
 
        tt = (r - 1)*((r - 1) + 1)/2;
12498
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
12499
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
12500
 
      }// end loop over 'r'
12501
 
      for (unsigned int r = 0; r < 3; r++)
12502
 
      {
12503
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
12504
 
        ss = r*(r + 1)/2;
12505
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
12506
 
      }// end loop over 'r'
12507
 
      for (unsigned int r = 0; r < 2; r++)
12508
 
      {
12509
 
        for (unsigned int s = 1; s < 3 - r; s++)
12510
 
        {
12511
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
12512
 
          ss = (r + s)*(r + s + 1)/2 + s;
12513
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
12514
 
          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));
12515
 
          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));
12516
 
          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));
12517
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
12518
 
        }// end loop over 's'
12519
 
      }// end loop over 'r'
12520
 
      for (unsigned int r = 0; r < 4; r++)
12521
 
      {
12522
 
        for (unsigned int s = 0; s < 4 - r; s++)
12523
 
        {
12524
 
          rr = (r + s)*(r + s + 1)/2 + s;
12525
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
12526
 
        }// end loop over 's'
12527
 
      }// end loop over 'r'
 
10408
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
10409
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
10410
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
10411
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
10412
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
10413
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
10414
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
10415
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
10416
      basisvalues[0] *= std::sqrt(0.5);
 
10417
      basisvalues[2] *= std::sqrt(1.0);
 
10418
      basisvalues[5] *= std::sqrt(1.5);
 
10419
      basisvalues[9] *= std::sqrt(2.0);
 
10420
      basisvalues[1] *= std::sqrt(3.0);
 
10421
      basisvalues[4] *= std::sqrt(4.5);
 
10422
      basisvalues[8] *= std::sqrt(6.0);
 
10423
      basisvalues[3] *= std::sqrt(7.5);
 
10424
      basisvalues[7] *= std::sqrt(10.0);
 
10425
      basisvalues[6] *= std::sqrt(14.0);
12528
10426
      
12529
10427
      // Table(s) of coefficients.
12530
10428
      static const double coefficients0[10] = \
12690
10588
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
12691
10589
      
12692
10590
      // Declare helper variables.
12693
 
      unsigned int rr = 0;
12694
 
      unsigned int ss = 0;
12695
 
      unsigned int tt = 0;
12696
 
      double tmp5 = 0.0;
12697
 
      double tmp6 = 0.0;
12698
 
      double tmp7 = 0.0;
12699
10591
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
12700
10592
      double tmp1 = (1.0 - Y)/2.0;
12701
10593
      double tmp2 = tmp1*tmp1;
12703
10595
      // Compute basisvalues.
12704
10596
      basisvalues[0] = 1.0;
12705
10597
      basisvalues[1] = tmp0;
12706
 
      for (unsigned int r = 1; r < 3; r++)
12707
 
      {
12708
 
        rr = (r + 1)*((r + 1) + 1)/2;
12709
 
        ss = r*(r + 1)/2;
12710
 
        tt = (r - 1)*((r - 1) + 1)/2;
12711
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
12712
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
12713
 
      }// end loop over 'r'
12714
 
      for (unsigned int r = 0; r < 3; r++)
12715
 
      {
12716
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
12717
 
        ss = r*(r + 1)/2;
12718
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
12719
 
      }// end loop over 'r'
12720
 
      for (unsigned int r = 0; r < 2; r++)
12721
 
      {
12722
 
        for (unsigned int s = 1; s < 3 - r; s++)
12723
 
        {
12724
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
12725
 
          ss = (r + s)*(r + s + 1)/2 + s;
12726
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
12727
 
          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));
12728
 
          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));
12729
 
          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));
12730
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
12731
 
        }// end loop over 's'
12732
 
      }// end loop over 'r'
12733
 
      for (unsigned int r = 0; r < 4; r++)
12734
 
      {
12735
 
        for (unsigned int s = 0; s < 4 - r; s++)
12736
 
        {
12737
 
          rr = (r + s)*(r + s + 1)/2 + s;
12738
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
12739
 
        }// end loop over 's'
12740
 
      }// end loop over 'r'
 
10598
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
10599
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
10600
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
10601
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
10602
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
10603
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
10604
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
10605
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
10606
      basisvalues[0] *= std::sqrt(0.5);
 
10607
      basisvalues[2] *= std::sqrt(1.0);
 
10608
      basisvalues[5] *= std::sqrt(1.5);
 
10609
      basisvalues[9] *= std::sqrt(2.0);
 
10610
      basisvalues[1] *= std::sqrt(3.0);
 
10611
      basisvalues[4] *= std::sqrt(4.5);
 
10612
      basisvalues[8] *= std::sqrt(6.0);
 
10613
      basisvalues[3] *= std::sqrt(7.5);
 
10614
      basisvalues[7] *= std::sqrt(10.0);
 
10615
      basisvalues[6] *= std::sqrt(14.0);
12741
10616
      
12742
10617
      // Table(s) of coefficients.
12743
10618
      static const double coefficients0[10] = \
12903
10778
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
12904
10779
      
12905
10780
      // Declare helper variables.
12906
 
      unsigned int rr = 0;
12907
 
      unsigned int ss = 0;
12908
 
      unsigned int tt = 0;
12909
 
      double tmp5 = 0.0;
12910
 
      double tmp6 = 0.0;
12911
 
      double tmp7 = 0.0;
12912
10781
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
12913
10782
      double tmp1 = (1.0 - Y)/2.0;
12914
10783
      double tmp2 = tmp1*tmp1;
12916
10785
      // Compute basisvalues.
12917
10786
      basisvalues[0] = 1.0;
12918
10787
      basisvalues[1] = tmp0;
12919
 
      for (unsigned int r = 1; r < 3; r++)
12920
 
      {
12921
 
        rr = (r + 1)*((r + 1) + 1)/2;
12922
 
        ss = r*(r + 1)/2;
12923
 
        tt = (r - 1)*((r - 1) + 1)/2;
12924
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
12925
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
12926
 
      }// end loop over 'r'
12927
 
      for (unsigned int r = 0; r < 3; r++)
12928
 
      {
12929
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
12930
 
        ss = r*(r + 1)/2;
12931
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
12932
 
      }// end loop over 'r'
12933
 
      for (unsigned int r = 0; r < 2; r++)
12934
 
      {
12935
 
        for (unsigned int s = 1; s < 3 - r; s++)
12936
 
        {
12937
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
12938
 
          ss = (r + s)*(r + s + 1)/2 + s;
12939
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
12940
 
          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));
12941
 
          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));
12942
 
          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));
12943
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
12944
 
        }// end loop over 's'
12945
 
      }// end loop over 'r'
12946
 
      for (unsigned int r = 0; r < 4; r++)
12947
 
      {
12948
 
        for (unsigned int s = 0; s < 4 - r; s++)
12949
 
        {
12950
 
          rr = (r + s)*(r + s + 1)/2 + s;
12951
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
12952
 
        }// end loop over 's'
12953
 
      }// end loop over 'r'
 
10788
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
10789
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
10790
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
10791
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
10792
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
10793
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
10794
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
10795
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
10796
      basisvalues[0] *= std::sqrt(0.5);
 
10797
      basisvalues[2] *= std::sqrt(1.0);
 
10798
      basisvalues[5] *= std::sqrt(1.5);
 
10799
      basisvalues[9] *= std::sqrt(2.0);
 
10800
      basisvalues[1] *= std::sqrt(3.0);
 
10801
      basisvalues[4] *= std::sqrt(4.5);
 
10802
      basisvalues[8] *= std::sqrt(6.0);
 
10803
      basisvalues[3] *= std::sqrt(7.5);
 
10804
      basisvalues[7] *= std::sqrt(10.0);
 
10805
      basisvalues[6] *= std::sqrt(14.0);
12954
10806
      
12955
10807
      // Table(s) of coefficients.
12956
10808
      static const double coefficients0[10] = \
13116
10968
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
13117
10969
      
13118
10970
      // Declare helper variables.
13119
 
      unsigned int rr = 0;
13120
 
      unsigned int ss = 0;
13121
 
      unsigned int tt = 0;
13122
 
      double tmp5 = 0.0;
13123
 
      double tmp6 = 0.0;
13124
 
      double tmp7 = 0.0;
13125
10971
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
13126
10972
      double tmp1 = (1.0 - Y)/2.0;
13127
10973
      double tmp2 = tmp1*tmp1;
13129
10975
      // Compute basisvalues.
13130
10976
      basisvalues[0] = 1.0;
13131
10977
      basisvalues[1] = tmp0;
13132
 
      for (unsigned int r = 1; r < 3; r++)
13133
 
      {
13134
 
        rr = (r + 1)*((r + 1) + 1)/2;
13135
 
        ss = r*(r + 1)/2;
13136
 
        tt = (r - 1)*((r - 1) + 1)/2;
13137
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
13138
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
13139
 
      }// end loop over 'r'
13140
 
      for (unsigned int r = 0; r < 3; r++)
13141
 
      {
13142
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
13143
 
        ss = r*(r + 1)/2;
13144
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
13145
 
      }// end loop over 'r'
13146
 
      for (unsigned int r = 0; r < 2; r++)
13147
 
      {
13148
 
        for (unsigned int s = 1; s < 3 - r; s++)
13149
 
        {
13150
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
13151
 
          ss = (r + s)*(r + s + 1)/2 + s;
13152
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
13153
 
          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));
13154
 
          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));
13155
 
          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));
13156
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
13157
 
        }// end loop over 's'
13158
 
      }// end loop over 'r'
13159
 
      for (unsigned int r = 0; r < 4; r++)
13160
 
      {
13161
 
        for (unsigned int s = 0; s < 4 - r; s++)
13162
 
        {
13163
 
          rr = (r + s)*(r + s + 1)/2 + s;
13164
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
13165
 
        }// end loop over 's'
13166
 
      }// end loop over 'r'
 
10978
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
10979
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
10980
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
10981
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
10982
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
10983
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
10984
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
10985
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
10986
      basisvalues[0] *= std::sqrt(0.5);
 
10987
      basisvalues[2] *= std::sqrt(1.0);
 
10988
      basisvalues[5] *= std::sqrt(1.5);
 
10989
      basisvalues[9] *= std::sqrt(2.0);
 
10990
      basisvalues[1] *= std::sqrt(3.0);
 
10991
      basisvalues[4] *= std::sqrt(4.5);
 
10992
      basisvalues[8] *= std::sqrt(6.0);
 
10993
      basisvalues[3] *= std::sqrt(7.5);
 
10994
      basisvalues[7] *= std::sqrt(10.0);
 
10995
      basisvalues[6] *= std::sqrt(14.0);
13167
10996
      
13168
10997
      // Table(s) of coefficients.
13169
10998
      static const double coefficients0[10] = \
13329
11158
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
13330
11159
      
13331
11160
      // Declare helper variables.
13332
 
      unsigned int rr = 0;
13333
 
      unsigned int ss = 0;
13334
 
      unsigned int tt = 0;
13335
 
      double tmp5 = 0.0;
13336
 
      double tmp6 = 0.0;
13337
 
      double tmp7 = 0.0;
13338
11161
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
13339
11162
      double tmp1 = (1.0 - Y)/2.0;
13340
11163
      double tmp2 = tmp1*tmp1;
13342
11165
      // Compute basisvalues.
13343
11166
      basisvalues[0] = 1.0;
13344
11167
      basisvalues[1] = tmp0;
13345
 
      for (unsigned int r = 1; r < 3; r++)
13346
 
      {
13347
 
        rr = (r + 1)*((r + 1) + 1)/2;
13348
 
        ss = r*(r + 1)/2;
13349
 
        tt = (r - 1)*((r - 1) + 1)/2;
13350
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
13351
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
13352
 
      }// end loop over 'r'
13353
 
      for (unsigned int r = 0; r < 3; r++)
13354
 
      {
13355
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
13356
 
        ss = r*(r + 1)/2;
13357
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
13358
 
      }// end loop over 'r'
13359
 
      for (unsigned int r = 0; r < 2; r++)
13360
 
      {
13361
 
        for (unsigned int s = 1; s < 3 - r; s++)
13362
 
        {
13363
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
13364
 
          ss = (r + s)*(r + s + 1)/2 + s;
13365
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
13366
 
          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));
13367
 
          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));
13368
 
          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));
13369
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
13370
 
        }// end loop over 's'
13371
 
      }// end loop over 'r'
13372
 
      for (unsigned int r = 0; r < 4; r++)
13373
 
      {
13374
 
        for (unsigned int s = 0; s < 4 - r; s++)
13375
 
        {
13376
 
          rr = (r + s)*(r + s + 1)/2 + s;
13377
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
13378
 
        }// end loop over 's'
13379
 
      }// end loop over 'r'
 
11168
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
11169
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
11170
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
11171
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
11172
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
11173
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
11174
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
11175
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
11176
      basisvalues[0] *= std::sqrt(0.5);
 
11177
      basisvalues[2] *= std::sqrt(1.0);
 
11178
      basisvalues[5] *= std::sqrt(1.5);
 
11179
      basisvalues[9] *= std::sqrt(2.0);
 
11180
      basisvalues[1] *= std::sqrt(3.0);
 
11181
      basisvalues[4] *= std::sqrt(4.5);
 
11182
      basisvalues[8] *= std::sqrt(6.0);
 
11183
      basisvalues[3] *= std::sqrt(7.5);
 
11184
      basisvalues[7] *= std::sqrt(10.0);
 
11185
      basisvalues[6] *= std::sqrt(14.0);
13380
11186
      
13381
11187
      // Table(s) of coefficients.
13382
11188
      static const double coefficients0[10] = \
13542
11348
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
13543
11349
      
13544
11350
      // Declare helper variables.
13545
 
      unsigned int rr = 0;
13546
 
      unsigned int ss = 0;
13547
 
      unsigned int tt = 0;
13548
 
      double tmp5 = 0.0;
13549
 
      double tmp6 = 0.0;
13550
 
      double tmp7 = 0.0;
13551
11351
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
13552
11352
      double tmp1 = (1.0 - Y)/2.0;
13553
11353
      double tmp2 = tmp1*tmp1;
13555
11355
      // Compute basisvalues.
13556
11356
      basisvalues[0] = 1.0;
13557
11357
      basisvalues[1] = tmp0;
13558
 
      for (unsigned int r = 1; r < 3; r++)
13559
 
      {
13560
 
        rr = (r + 1)*((r + 1) + 1)/2;
13561
 
        ss = r*(r + 1)/2;
13562
 
        tt = (r - 1)*((r - 1) + 1)/2;
13563
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
13564
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
13565
 
      }// end loop over 'r'
13566
 
      for (unsigned int r = 0; r < 3; r++)
13567
 
      {
13568
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
13569
 
        ss = r*(r + 1)/2;
13570
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
13571
 
      }// end loop over 'r'
13572
 
      for (unsigned int r = 0; r < 2; r++)
13573
 
      {
13574
 
        for (unsigned int s = 1; s < 3 - r; s++)
13575
 
        {
13576
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
13577
 
          ss = (r + s)*(r + s + 1)/2 + s;
13578
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
13579
 
          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));
13580
 
          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));
13581
 
          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));
13582
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
13583
 
        }// end loop over 's'
13584
 
      }// end loop over 'r'
13585
 
      for (unsigned int r = 0; r < 4; r++)
13586
 
      {
13587
 
        for (unsigned int s = 0; s < 4 - r; s++)
13588
 
        {
13589
 
          rr = (r + s)*(r + s + 1)/2 + s;
13590
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
13591
 
        }// end loop over 's'
13592
 
      }// end loop over 'r'
 
11358
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
11359
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
11360
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
11361
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
11362
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
11363
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
11364
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
11365
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
11366
      basisvalues[0] *= std::sqrt(0.5);
 
11367
      basisvalues[2] *= std::sqrt(1.0);
 
11368
      basisvalues[5] *= std::sqrt(1.5);
 
11369
      basisvalues[9] *= std::sqrt(2.0);
 
11370
      basisvalues[1] *= std::sqrt(3.0);
 
11371
      basisvalues[4] *= std::sqrt(4.5);
 
11372
      basisvalues[8] *= std::sqrt(6.0);
 
11373
      basisvalues[3] *= std::sqrt(7.5);
 
11374
      basisvalues[7] *= std::sqrt(10.0);
 
11375
      basisvalues[6] *= std::sqrt(14.0);
13593
11376
      
13594
11377
      // Table(s) of coefficients.
13595
11378
      static const double coefficients0[10] = \
13755
11538
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
13756
11539
      
13757
11540
      // Declare helper variables.
13758
 
      unsigned int rr = 0;
13759
 
      unsigned int ss = 0;
13760
 
      unsigned int tt = 0;
13761
 
      double tmp5 = 0.0;
13762
 
      double tmp6 = 0.0;
13763
 
      double tmp7 = 0.0;
13764
11541
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
13765
11542
      double tmp1 = (1.0 - Y)/2.0;
13766
11543
      double tmp2 = tmp1*tmp1;
13768
11545
      // Compute basisvalues.
13769
11546
      basisvalues[0] = 1.0;
13770
11547
      basisvalues[1] = tmp0;
13771
 
      for (unsigned int r = 1; r < 3; r++)
13772
 
      {
13773
 
        rr = (r + 1)*((r + 1) + 1)/2;
13774
 
        ss = r*(r + 1)/2;
13775
 
        tt = (r - 1)*((r - 1) + 1)/2;
13776
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
13777
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
13778
 
      }// end loop over 'r'
13779
 
      for (unsigned int r = 0; r < 3; r++)
13780
 
      {
13781
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
13782
 
        ss = r*(r + 1)/2;
13783
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
13784
 
      }// end loop over 'r'
13785
 
      for (unsigned int r = 0; r < 2; r++)
13786
 
      {
13787
 
        for (unsigned int s = 1; s < 3 - r; s++)
13788
 
        {
13789
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
13790
 
          ss = (r + s)*(r + s + 1)/2 + s;
13791
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
13792
 
          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));
13793
 
          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));
13794
 
          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));
13795
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
13796
 
        }// end loop over 's'
13797
 
      }// end loop over 'r'
13798
 
      for (unsigned int r = 0; r < 4; r++)
13799
 
      {
13800
 
        for (unsigned int s = 0; s < 4 - r; s++)
13801
 
        {
13802
 
          rr = (r + s)*(r + s + 1)/2 + s;
13803
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
13804
 
        }// end loop over 's'
13805
 
      }// end loop over 'r'
 
11548
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
11549
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
11550
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
11551
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
11552
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
11553
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
11554
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
11555
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
11556
      basisvalues[0] *= std::sqrt(0.5);
 
11557
      basisvalues[2] *= std::sqrt(1.0);
 
11558
      basisvalues[5] *= std::sqrt(1.5);
 
11559
      basisvalues[9] *= std::sqrt(2.0);
 
11560
      basisvalues[1] *= std::sqrt(3.0);
 
11561
      basisvalues[4] *= std::sqrt(4.5);
 
11562
      basisvalues[8] *= std::sqrt(6.0);
 
11563
      basisvalues[3] *= std::sqrt(7.5);
 
11564
      basisvalues[7] *= std::sqrt(10.0);
 
11565
      basisvalues[6] *= std::sqrt(14.0);
13806
11566
      
13807
11567
      // Table(s) of coefficients.
13808
11568
      static const double coefficients0[10] = \
13968
11728
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
13969
11729
      
13970
11730
      // Declare helper variables.
13971
 
      unsigned int rr = 0;
13972
 
      unsigned int ss = 0;
13973
 
      unsigned int tt = 0;
13974
 
      double tmp5 = 0.0;
13975
 
      double tmp6 = 0.0;
13976
 
      double tmp7 = 0.0;
13977
11731
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
13978
11732
      double tmp1 = (1.0 - Y)/2.0;
13979
11733
      double tmp2 = tmp1*tmp1;
13981
11735
      // Compute basisvalues.
13982
11736
      basisvalues[0] = 1.0;
13983
11737
      basisvalues[1] = tmp0;
13984
 
      for (unsigned int r = 1; r < 3; r++)
13985
 
      {
13986
 
        rr = (r + 1)*((r + 1) + 1)/2;
13987
 
        ss = r*(r + 1)/2;
13988
 
        tt = (r - 1)*((r - 1) + 1)/2;
13989
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
13990
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
13991
 
      }// end loop over 'r'
13992
 
      for (unsigned int r = 0; r < 3; r++)
13993
 
      {
13994
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
13995
 
        ss = r*(r + 1)/2;
13996
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
13997
 
      }// end loop over 'r'
13998
 
      for (unsigned int r = 0; r < 2; r++)
13999
 
      {
14000
 
        for (unsigned int s = 1; s < 3 - r; s++)
14001
 
        {
14002
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
14003
 
          ss = (r + s)*(r + s + 1)/2 + s;
14004
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
14005
 
          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));
14006
 
          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));
14007
 
          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));
14008
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
14009
 
        }// end loop over 's'
14010
 
      }// end loop over 'r'
14011
 
      for (unsigned int r = 0; r < 4; r++)
14012
 
      {
14013
 
        for (unsigned int s = 0; s < 4 - r; s++)
14014
 
        {
14015
 
          rr = (r + s)*(r + s + 1)/2 + s;
14016
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
14017
 
        }// end loop over 's'
14018
 
      }// end loop over 'r'
 
11738
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
11739
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
11740
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
11741
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
11742
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
11743
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
11744
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
11745
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
11746
      basisvalues[0] *= std::sqrt(0.5);
 
11747
      basisvalues[2] *= std::sqrt(1.0);
 
11748
      basisvalues[5] *= std::sqrt(1.5);
 
11749
      basisvalues[9] *= std::sqrt(2.0);
 
11750
      basisvalues[1] *= std::sqrt(3.0);
 
11751
      basisvalues[4] *= std::sqrt(4.5);
 
11752
      basisvalues[8] *= std::sqrt(6.0);
 
11753
      basisvalues[3] *= std::sqrt(7.5);
 
11754
      basisvalues[7] *= std::sqrt(10.0);
 
11755
      basisvalues[6] *= std::sqrt(14.0);
14019
11756
      
14020
11757
      // Table(s) of coefficients.
14021
11758
      static const double coefficients0[10] = \
14181
11918
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
14182
11919
      
14183
11920
      // Declare helper variables.
14184
 
      unsigned int rr = 0;
14185
 
      unsigned int ss = 0;
14186
 
      unsigned int tt = 0;
14187
 
      double tmp5 = 0.0;
14188
 
      double tmp6 = 0.0;
14189
 
      double tmp7 = 0.0;
14190
11921
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
14191
11922
      double tmp1 = (1.0 - Y)/2.0;
14192
11923
      double tmp2 = tmp1*tmp1;
14194
11925
      // Compute basisvalues.
14195
11926
      basisvalues[0] = 1.0;
14196
11927
      basisvalues[1] = tmp0;
14197
 
      for (unsigned int r = 1; r < 3; r++)
14198
 
      {
14199
 
        rr = (r + 1)*((r + 1) + 1)/2;
14200
 
        ss = r*(r + 1)/2;
14201
 
        tt = (r - 1)*((r - 1) + 1)/2;
14202
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
14203
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
14204
 
      }// end loop over 'r'
14205
 
      for (unsigned int r = 0; r < 3; r++)
14206
 
      {
14207
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
14208
 
        ss = r*(r + 1)/2;
14209
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
14210
 
      }// end loop over 'r'
14211
 
      for (unsigned int r = 0; r < 2; r++)
14212
 
      {
14213
 
        for (unsigned int s = 1; s < 3 - r; s++)
14214
 
        {
14215
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
14216
 
          ss = (r + s)*(r + s + 1)/2 + s;
14217
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
14218
 
          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));
14219
 
          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));
14220
 
          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));
14221
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
14222
 
        }// end loop over 's'
14223
 
      }// end loop over 'r'
14224
 
      for (unsigned int r = 0; r < 4; r++)
14225
 
      {
14226
 
        for (unsigned int s = 0; s < 4 - r; s++)
14227
 
        {
14228
 
          rr = (r + s)*(r + s + 1)/2 + s;
14229
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
14230
 
        }// end loop over 's'
14231
 
      }// end loop over 'r'
 
11928
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
11929
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
11930
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
11931
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
11932
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
11933
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
11934
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
11935
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
11936
      basisvalues[0] *= std::sqrt(0.5);
 
11937
      basisvalues[2] *= std::sqrt(1.0);
 
11938
      basisvalues[5] *= std::sqrt(1.5);
 
11939
      basisvalues[9] *= std::sqrt(2.0);
 
11940
      basisvalues[1] *= std::sqrt(3.0);
 
11941
      basisvalues[4] *= std::sqrt(4.5);
 
11942
      basisvalues[8] *= std::sqrt(6.0);
 
11943
      basisvalues[3] *= std::sqrt(7.5);
 
11944
      basisvalues[7] *= std::sqrt(10.0);
 
11945
      basisvalues[6] *= std::sqrt(14.0);
14232
11946
      
14233
11947
      // Table(s) of coefficients.
14234
11948
      static const double coefficients0[10] = \
14394
12108
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
14395
12109
      
14396
12110
      // Declare helper variables.
14397
 
      unsigned int rr = 0;
14398
 
      unsigned int ss = 0;
14399
 
      unsigned int tt = 0;
14400
 
      double tmp5 = 0.0;
14401
 
      double tmp6 = 0.0;
14402
 
      double tmp7 = 0.0;
14403
12111
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
14404
12112
      double tmp1 = (1.0 - Y)/2.0;
14405
12113
      double tmp2 = tmp1*tmp1;
14407
12115
      // Compute basisvalues.
14408
12116
      basisvalues[0] = 1.0;
14409
12117
      basisvalues[1] = tmp0;
14410
 
      for (unsigned int r = 1; r < 3; r++)
14411
 
      {
14412
 
        rr = (r + 1)*((r + 1) + 1)/2;
14413
 
        ss = r*(r + 1)/2;
14414
 
        tt = (r - 1)*((r - 1) + 1)/2;
14415
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
14416
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
14417
 
      }// end loop over 'r'
14418
 
      for (unsigned int r = 0; r < 3; r++)
14419
 
      {
14420
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
14421
 
        ss = r*(r + 1)/2;
14422
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
14423
 
      }// end loop over 'r'
14424
 
      for (unsigned int r = 0; r < 2; r++)
14425
 
      {
14426
 
        for (unsigned int s = 1; s < 3 - r; s++)
14427
 
        {
14428
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
14429
 
          ss = (r + s)*(r + s + 1)/2 + s;
14430
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
14431
 
          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));
14432
 
          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));
14433
 
          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));
14434
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
14435
 
        }// end loop over 's'
14436
 
      }// end loop over 'r'
14437
 
      for (unsigned int r = 0; r < 4; r++)
14438
 
      {
14439
 
        for (unsigned int s = 0; s < 4 - r; s++)
14440
 
        {
14441
 
          rr = (r + s)*(r + s + 1)/2 + s;
14442
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
14443
 
        }// end loop over 's'
14444
 
      }// end loop over 'r'
 
12118
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
12119
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
12120
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
12121
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
12122
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
12123
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
12124
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
12125
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
12126
      basisvalues[0] *= std::sqrt(0.5);
 
12127
      basisvalues[2] *= std::sqrt(1.0);
 
12128
      basisvalues[5] *= std::sqrt(1.5);
 
12129
      basisvalues[9] *= std::sqrt(2.0);
 
12130
      basisvalues[1] *= std::sqrt(3.0);
 
12131
      basisvalues[4] *= std::sqrt(4.5);
 
12132
      basisvalues[8] *= std::sqrt(6.0);
 
12133
      basisvalues[3] *= std::sqrt(7.5);
 
12134
      basisvalues[7] *= std::sqrt(10.0);
 
12135
      basisvalues[6] *= std::sqrt(14.0);
14445
12136
      
14446
12137
      // Table(s) of coefficients.
14447
12138
      static const double coefficients0[10] = \
14607
12298
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
14608
12299
      
14609
12300
      // Declare helper variables.
14610
 
      unsigned int rr = 0;
14611
 
      unsigned int ss = 0;
14612
 
      unsigned int tt = 0;
14613
 
      double tmp5 = 0.0;
14614
 
      double tmp6 = 0.0;
14615
 
      double tmp7 = 0.0;
14616
12301
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
14617
12302
      double tmp1 = (1.0 - Y)/2.0;
14618
12303
      double tmp2 = tmp1*tmp1;
14620
12305
      // Compute basisvalues.
14621
12306
      basisvalues[0] = 1.0;
14622
12307
      basisvalues[1] = tmp0;
14623
 
      for (unsigned int r = 1; r < 3; r++)
14624
 
      {
14625
 
        rr = (r + 1)*((r + 1) + 1)/2;
14626
 
        ss = r*(r + 1)/2;
14627
 
        tt = (r - 1)*((r - 1) + 1)/2;
14628
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
14629
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
14630
 
      }// end loop over 'r'
14631
 
      for (unsigned int r = 0; r < 3; r++)
14632
 
      {
14633
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
14634
 
        ss = r*(r + 1)/2;
14635
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
14636
 
      }// end loop over 'r'
14637
 
      for (unsigned int r = 0; r < 2; r++)
14638
 
      {
14639
 
        for (unsigned int s = 1; s < 3 - r; s++)
14640
 
        {
14641
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
14642
 
          ss = (r + s)*(r + s + 1)/2 + s;
14643
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
14644
 
          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));
14645
 
          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));
14646
 
          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));
14647
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
14648
 
        }// end loop over 's'
14649
 
      }// end loop over 'r'
14650
 
      for (unsigned int r = 0; r < 4; r++)
14651
 
      {
14652
 
        for (unsigned int s = 0; s < 4 - r; s++)
14653
 
        {
14654
 
          rr = (r + s)*(r + s + 1)/2 + s;
14655
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
14656
 
        }// end loop over 's'
14657
 
      }// end loop over 'r'
 
12308
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
12309
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
12310
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
12311
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
12312
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
12313
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
12314
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
12315
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
12316
      basisvalues[0] *= std::sqrt(0.5);
 
12317
      basisvalues[2] *= std::sqrt(1.0);
 
12318
      basisvalues[5] *= std::sqrt(1.5);
 
12319
      basisvalues[9] *= std::sqrt(2.0);
 
12320
      basisvalues[1] *= std::sqrt(3.0);
 
12321
      basisvalues[4] *= std::sqrt(4.5);
 
12322
      basisvalues[8] *= std::sqrt(6.0);
 
12323
      basisvalues[3] *= std::sqrt(7.5);
 
12324
      basisvalues[7] *= std::sqrt(10.0);
 
12325
      basisvalues[6] *= std::sqrt(14.0);
14658
12326
      
14659
12327
      // Table(s) of coefficients.
14660
12328
      static const double coefficients0[10] = \
14820
12488
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
14821
12489
      
14822
12490
      // Declare helper variables.
14823
 
      unsigned int rr = 0;
14824
 
      unsigned int ss = 0;
14825
 
      unsigned int tt = 0;
14826
 
      double tmp5 = 0.0;
14827
 
      double tmp6 = 0.0;
14828
 
      double tmp7 = 0.0;
14829
12491
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
14830
12492
      double tmp1 = (1.0 - Y)/2.0;
14831
12493
      double tmp2 = tmp1*tmp1;
14833
12495
      // Compute basisvalues.
14834
12496
      basisvalues[0] = 1.0;
14835
12497
      basisvalues[1] = tmp0;
14836
 
      for (unsigned int r = 1; r < 3; r++)
14837
 
      {
14838
 
        rr = (r + 1)*((r + 1) + 1)/2;
14839
 
        ss = r*(r + 1)/2;
14840
 
        tt = (r - 1)*((r - 1) + 1)/2;
14841
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
14842
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
14843
 
      }// end loop over 'r'
14844
 
      for (unsigned int r = 0; r < 3; r++)
14845
 
      {
14846
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
14847
 
        ss = r*(r + 1)/2;
14848
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
14849
 
      }// end loop over 'r'
14850
 
      for (unsigned int r = 0; r < 2; r++)
14851
 
      {
14852
 
        for (unsigned int s = 1; s < 3 - r; s++)
14853
 
        {
14854
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
14855
 
          ss = (r + s)*(r + s + 1)/2 + s;
14856
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
14857
 
          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));
14858
 
          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));
14859
 
          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));
14860
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
14861
 
        }// end loop over 's'
14862
 
      }// end loop over 'r'
14863
 
      for (unsigned int r = 0; r < 4; r++)
14864
 
      {
14865
 
        for (unsigned int s = 0; s < 4 - r; s++)
14866
 
        {
14867
 
          rr = (r + s)*(r + s + 1)/2 + s;
14868
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
14869
 
        }// end loop over 's'
14870
 
      }// end loop over 'r'
 
12498
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
12499
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
12500
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
12501
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
12502
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
12503
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
12504
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
12505
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
12506
      basisvalues[0] *= std::sqrt(0.5);
 
12507
      basisvalues[2] *= std::sqrt(1.0);
 
12508
      basisvalues[5] *= std::sqrt(1.5);
 
12509
      basisvalues[9] *= std::sqrt(2.0);
 
12510
      basisvalues[1] *= std::sqrt(3.0);
 
12511
      basisvalues[4] *= std::sqrt(4.5);
 
12512
      basisvalues[8] *= std::sqrt(6.0);
 
12513
      basisvalues[3] *= std::sqrt(7.5);
 
12514
      basisvalues[7] *= std::sqrt(10.0);
 
12515
      basisvalues[6] *= std::sqrt(14.0);
14871
12516
      
14872
12517
      // Table(s) of coefficients.
14873
12518
      static const double coefficients0[10] = \
15033
12678
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
15034
12679
      
15035
12680
      // Declare helper variables.
15036
 
      unsigned int rr = 0;
15037
 
      unsigned int ss = 0;
15038
 
      unsigned int tt = 0;
15039
 
      double tmp5 = 0.0;
15040
 
      double tmp6 = 0.0;
15041
 
      double tmp7 = 0.0;
15042
12681
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
15043
12682
      double tmp1 = (1.0 - Y)/2.0;
15044
12683
      double tmp2 = tmp1*tmp1;
15046
12685
      // Compute basisvalues.
15047
12686
      basisvalues[0] = 1.0;
15048
12687
      basisvalues[1] = tmp0;
15049
 
      for (unsigned int r = 1; r < 3; r++)
15050
 
      {
15051
 
        rr = (r + 1)*((r + 1) + 1)/2;
15052
 
        ss = r*(r + 1)/2;
15053
 
        tt = (r - 1)*((r - 1) + 1)/2;
15054
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
15055
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
15056
 
      }// end loop over 'r'
15057
 
      for (unsigned int r = 0; r < 3; r++)
15058
 
      {
15059
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
15060
 
        ss = r*(r + 1)/2;
15061
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
15062
 
      }// end loop over 'r'
15063
 
      for (unsigned int r = 0; r < 2; r++)
15064
 
      {
15065
 
        for (unsigned int s = 1; s < 3 - r; s++)
15066
 
        {
15067
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
15068
 
          ss = (r + s)*(r + s + 1)/2 + s;
15069
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
15070
 
          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));
15071
 
          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));
15072
 
          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));
15073
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
15074
 
        }// end loop over 's'
15075
 
      }// end loop over 'r'
15076
 
      for (unsigned int r = 0; r < 4; r++)
15077
 
      {
15078
 
        for (unsigned int s = 0; s < 4 - r; s++)
15079
 
        {
15080
 
          rr = (r + s)*(r + s + 1)/2 + s;
15081
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
15082
 
        }// end loop over 's'
15083
 
      }// end loop over 'r'
 
12688
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
12689
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
12690
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
12691
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
12692
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
12693
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
12694
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
12695
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
12696
      basisvalues[0] *= std::sqrt(0.5);
 
12697
      basisvalues[2] *= std::sqrt(1.0);
 
12698
      basisvalues[5] *= std::sqrt(1.5);
 
12699
      basisvalues[9] *= std::sqrt(2.0);
 
12700
      basisvalues[1] *= std::sqrt(3.0);
 
12701
      basisvalues[4] *= std::sqrt(4.5);
 
12702
      basisvalues[8] *= std::sqrt(6.0);
 
12703
      basisvalues[3] *= std::sqrt(7.5);
 
12704
      basisvalues[7] *= std::sqrt(10.0);
 
12705
      basisvalues[6] *= std::sqrt(14.0);
15084
12706
      
15085
12707
      // Table(s) of coefficients.
15086
12708
      static const double coefficients0[10] = \
15246
12868
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
15247
12869
      
15248
12870
      // Declare helper variables.
15249
 
      unsigned int rr = 0;
15250
 
      unsigned int ss = 0;
15251
 
      unsigned int tt = 0;
15252
 
      double tmp5 = 0.0;
15253
 
      double tmp6 = 0.0;
15254
 
      double tmp7 = 0.0;
15255
12871
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
15256
12872
      double tmp1 = (1.0 - Y)/2.0;
15257
12873
      double tmp2 = tmp1*tmp1;
15259
12875
      // Compute basisvalues.
15260
12876
      basisvalues[0] = 1.0;
15261
12877
      basisvalues[1] = tmp0;
15262
 
      for (unsigned int r = 1; r < 3; r++)
15263
 
      {
15264
 
        rr = (r + 1)*((r + 1) + 1)/2;
15265
 
        ss = r*(r + 1)/2;
15266
 
        tt = (r - 1)*((r - 1) + 1)/2;
15267
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
15268
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
15269
 
      }// end loop over 'r'
15270
 
      for (unsigned int r = 0; r < 3; r++)
15271
 
      {
15272
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
15273
 
        ss = r*(r + 1)/2;
15274
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
15275
 
      }// end loop over 'r'
15276
 
      for (unsigned int r = 0; r < 2; r++)
15277
 
      {
15278
 
        for (unsigned int s = 1; s < 3 - r; s++)
15279
 
        {
15280
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
15281
 
          ss = (r + s)*(r + s + 1)/2 + s;
15282
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
15283
 
          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));
15284
 
          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));
15285
 
          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));
15286
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
15287
 
        }// end loop over 's'
15288
 
      }// end loop over 'r'
15289
 
      for (unsigned int r = 0; r < 4; r++)
15290
 
      {
15291
 
        for (unsigned int s = 0; s < 4 - r; s++)
15292
 
        {
15293
 
          rr = (r + s)*(r + s + 1)/2 + s;
15294
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
15295
 
        }// end loop over 's'
15296
 
      }// end loop over 'r'
 
12878
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
12879
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
12880
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
12881
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
12882
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
12883
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
12884
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
12885
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
12886
      basisvalues[0] *= std::sqrt(0.5);
 
12887
      basisvalues[2] *= std::sqrt(1.0);
 
12888
      basisvalues[5] *= std::sqrt(1.5);
 
12889
      basisvalues[9] *= std::sqrt(2.0);
 
12890
      basisvalues[1] *= std::sqrt(3.0);
 
12891
      basisvalues[4] *= std::sqrt(4.5);
 
12892
      basisvalues[8] *= std::sqrt(6.0);
 
12893
      basisvalues[3] *= std::sqrt(7.5);
 
12894
      basisvalues[7] *= std::sqrt(10.0);
 
12895
      basisvalues[6] *= std::sqrt(14.0);
15297
12896
      
15298
12897
      // Table(s) of coefficients.
15299
12898
      static const double coefficients0[10] = \
15459
13058
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
15460
13059
      
15461
13060
      // Declare helper variables.
15462
 
      unsigned int rr = 0;
15463
 
      unsigned int ss = 0;
15464
 
      unsigned int tt = 0;
15465
 
      double tmp5 = 0.0;
15466
 
      double tmp6 = 0.0;
15467
 
      double tmp7 = 0.0;
15468
13061
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
15469
13062
      double tmp1 = (1.0 - Y)/2.0;
15470
13063
      double tmp2 = tmp1*tmp1;
15472
13065
      // Compute basisvalues.
15473
13066
      basisvalues[0] = 1.0;
15474
13067
      basisvalues[1] = tmp0;
15475
 
      for (unsigned int r = 1; r < 3; r++)
15476
 
      {
15477
 
        rr = (r + 1)*((r + 1) + 1)/2;
15478
 
        ss = r*(r + 1)/2;
15479
 
        tt = (r - 1)*((r - 1) + 1)/2;
15480
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
15481
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
15482
 
      }// end loop over 'r'
15483
 
      for (unsigned int r = 0; r < 3; r++)
15484
 
      {
15485
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
15486
 
        ss = r*(r + 1)/2;
15487
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
15488
 
      }// end loop over 'r'
15489
 
      for (unsigned int r = 0; r < 2; r++)
15490
 
      {
15491
 
        for (unsigned int s = 1; s < 3 - r; s++)
15492
 
        {
15493
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
15494
 
          ss = (r + s)*(r + s + 1)/2 + s;
15495
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
15496
 
          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));
15497
 
          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));
15498
 
          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));
15499
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
15500
 
        }// end loop over 's'
15501
 
      }// end loop over 'r'
15502
 
      for (unsigned int r = 0; r < 4; r++)
15503
 
      {
15504
 
        for (unsigned int s = 0; s < 4 - r; s++)
15505
 
        {
15506
 
          rr = (r + s)*(r + s + 1)/2 + s;
15507
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
15508
 
        }// end loop over 's'
15509
 
      }// end loop over 'r'
 
13068
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
13069
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
13070
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
13071
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
13072
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
13073
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
13074
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
13075
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
13076
      basisvalues[0] *= std::sqrt(0.5);
 
13077
      basisvalues[2] *= std::sqrt(1.0);
 
13078
      basisvalues[5] *= std::sqrt(1.5);
 
13079
      basisvalues[9] *= std::sqrt(2.0);
 
13080
      basisvalues[1] *= std::sqrt(3.0);
 
13081
      basisvalues[4] *= std::sqrt(4.5);
 
13082
      basisvalues[8] *= std::sqrt(6.0);
 
13083
      basisvalues[3] *= std::sqrt(7.5);
 
13084
      basisvalues[7] *= std::sqrt(10.0);
 
13085
      basisvalues[6] *= std::sqrt(14.0);
15510
13086
      
15511
13087
      // Table(s) of coefficients.
15512
13088
      static const double coefficients0[10] = \
15672
13248
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
15673
13249
      
15674
13250
      // Declare helper variables.
15675
 
      unsigned int rr = 0;
15676
 
      unsigned int ss = 0;
15677
 
      unsigned int tt = 0;
15678
 
      double tmp5 = 0.0;
15679
 
      double tmp6 = 0.0;
15680
 
      double tmp7 = 0.0;
15681
13251
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
15682
13252
      double tmp1 = (1.0 - Y)/2.0;
15683
13253
      double tmp2 = tmp1*tmp1;
15685
13255
      // Compute basisvalues.
15686
13256
      basisvalues[0] = 1.0;
15687
13257
      basisvalues[1] = tmp0;
15688
 
      for (unsigned int r = 1; r < 3; r++)
15689
 
      {
15690
 
        rr = (r + 1)*((r + 1) + 1)/2;
15691
 
        ss = r*(r + 1)/2;
15692
 
        tt = (r - 1)*((r - 1) + 1)/2;
15693
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
15694
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
15695
 
      }// end loop over 'r'
15696
 
      for (unsigned int r = 0; r < 3; r++)
15697
 
      {
15698
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
15699
 
        ss = r*(r + 1)/2;
15700
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
15701
 
      }// end loop over 'r'
15702
 
      for (unsigned int r = 0; r < 2; r++)
15703
 
      {
15704
 
        for (unsigned int s = 1; s < 3 - r; s++)
15705
 
        {
15706
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
15707
 
          ss = (r + s)*(r + s + 1)/2 + s;
15708
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
15709
 
          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));
15710
 
          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));
15711
 
          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));
15712
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
15713
 
        }// end loop over 's'
15714
 
      }// end loop over 'r'
15715
 
      for (unsigned int r = 0; r < 4; r++)
15716
 
      {
15717
 
        for (unsigned int s = 0; s < 4 - r; s++)
15718
 
        {
15719
 
          rr = (r + s)*(r + s + 1)/2 + s;
15720
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
15721
 
        }// end loop over 's'
15722
 
      }// end loop over 'r'
 
13258
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
13259
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
13260
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
13261
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
13262
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
13263
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
13264
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
13265
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
13266
      basisvalues[0] *= std::sqrt(0.5);
 
13267
      basisvalues[2] *= std::sqrt(1.0);
 
13268
      basisvalues[5] *= std::sqrt(1.5);
 
13269
      basisvalues[9] *= std::sqrt(2.0);
 
13270
      basisvalues[1] *= std::sqrt(3.0);
 
13271
      basisvalues[4] *= std::sqrt(4.5);
 
13272
      basisvalues[8] *= std::sqrt(6.0);
 
13273
      basisvalues[3] *= std::sqrt(7.5);
 
13274
      basisvalues[7] *= std::sqrt(10.0);
 
13275
      basisvalues[6] *= std::sqrt(14.0);
15723
13276
      
15724
13277
      // Table(s) of coefficients.
15725
13278
      static const double coefficients0[10] = \
15885
13438
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
15886
13439
      
15887
13440
      // Declare helper variables.
15888
 
      unsigned int rr = 0;
15889
 
      unsigned int ss = 0;
15890
 
      unsigned int tt = 0;
15891
 
      double tmp5 = 0.0;
15892
 
      double tmp6 = 0.0;
15893
 
      double tmp7 = 0.0;
15894
13441
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
15895
13442
      double tmp1 = (1.0 - Y)/2.0;
15896
13443
      double tmp2 = tmp1*tmp1;
15898
13445
      // Compute basisvalues.
15899
13446
      basisvalues[0] = 1.0;
15900
13447
      basisvalues[1] = tmp0;
15901
 
      for (unsigned int r = 1; r < 3; r++)
15902
 
      {
15903
 
        rr = (r + 1)*((r + 1) + 1)/2;
15904
 
        ss = r*(r + 1)/2;
15905
 
        tt = (r - 1)*((r - 1) + 1)/2;
15906
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
15907
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
15908
 
      }// end loop over 'r'
15909
 
      for (unsigned int r = 0; r < 3; r++)
15910
 
      {
15911
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
15912
 
        ss = r*(r + 1)/2;
15913
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
15914
 
      }// end loop over 'r'
15915
 
      for (unsigned int r = 0; r < 2; r++)
15916
 
      {
15917
 
        for (unsigned int s = 1; s < 3 - r; s++)
15918
 
        {
15919
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
15920
 
          ss = (r + s)*(r + s + 1)/2 + s;
15921
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
15922
 
          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));
15923
 
          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));
15924
 
          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));
15925
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
15926
 
        }// end loop over 's'
15927
 
      }// end loop over 'r'
15928
 
      for (unsigned int r = 0; r < 4; r++)
15929
 
      {
15930
 
        for (unsigned int s = 0; s < 4 - r; s++)
15931
 
        {
15932
 
          rr = (r + s)*(r + s + 1)/2 + s;
15933
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
15934
 
        }// end loop over 's'
15935
 
      }// end loop over 'r'
 
13448
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
13449
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
13450
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
13451
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
13452
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
13453
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
13454
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
13455
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
13456
      basisvalues[0] *= std::sqrt(0.5);
 
13457
      basisvalues[2] *= std::sqrt(1.0);
 
13458
      basisvalues[5] *= std::sqrt(1.5);
 
13459
      basisvalues[9] *= std::sqrt(2.0);
 
13460
      basisvalues[1] *= std::sqrt(3.0);
 
13461
      basisvalues[4] *= std::sqrt(4.5);
 
13462
      basisvalues[8] *= std::sqrt(6.0);
 
13463
      basisvalues[3] *= std::sqrt(7.5);
 
13464
      basisvalues[7] *= std::sqrt(10.0);
 
13465
      basisvalues[6] *= std::sqrt(14.0);
15936
13466
      
15937
13467
      // Table(s) of coefficients.
15938
13468
      static const double coefficients0[10] = \
16098
13628
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
16099
13629
      
16100
13630
      // Declare helper variables.
16101
 
      unsigned int rr = 0;
16102
 
      unsigned int ss = 0;
16103
 
      unsigned int tt = 0;
16104
 
      double tmp5 = 0.0;
16105
 
      double tmp6 = 0.0;
16106
 
      double tmp7 = 0.0;
16107
13631
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
16108
13632
      double tmp1 = (1.0 - Y)/2.0;
16109
13633
      double tmp2 = tmp1*tmp1;
16111
13635
      // Compute basisvalues.
16112
13636
      basisvalues[0] = 1.0;
16113
13637
      basisvalues[1] = tmp0;
16114
 
      for (unsigned int r = 1; r < 3; r++)
16115
 
      {
16116
 
        rr = (r + 1)*((r + 1) + 1)/2;
16117
 
        ss = r*(r + 1)/2;
16118
 
        tt = (r - 1)*((r - 1) + 1)/2;
16119
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
16120
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
16121
 
      }// end loop over 'r'
16122
 
      for (unsigned int r = 0; r < 3; r++)
16123
 
      {
16124
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
16125
 
        ss = r*(r + 1)/2;
16126
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
16127
 
      }// end loop over 'r'
16128
 
      for (unsigned int r = 0; r < 2; r++)
16129
 
      {
16130
 
        for (unsigned int s = 1; s < 3 - r; s++)
16131
 
        {
16132
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
16133
 
          ss = (r + s)*(r + s + 1)/2 + s;
16134
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
16135
 
          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));
16136
 
          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));
16137
 
          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));
16138
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
16139
 
        }// end loop over 's'
16140
 
      }// end loop over 'r'
16141
 
      for (unsigned int r = 0; r < 4; r++)
16142
 
      {
16143
 
        for (unsigned int s = 0; s < 4 - r; s++)
16144
 
        {
16145
 
          rr = (r + s)*(r + s + 1)/2 + s;
16146
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
16147
 
        }// end loop over 's'
16148
 
      }// end loop over 'r'
 
13638
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
13639
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
13640
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
13641
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
13642
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
13643
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
13644
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
13645
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
13646
      basisvalues[0] *= std::sqrt(0.5);
 
13647
      basisvalues[2] *= std::sqrt(1.0);
 
13648
      basisvalues[5] *= std::sqrt(1.5);
 
13649
      basisvalues[9] *= std::sqrt(2.0);
 
13650
      basisvalues[1] *= std::sqrt(3.0);
 
13651
      basisvalues[4] *= std::sqrt(4.5);
 
13652
      basisvalues[8] *= std::sqrt(6.0);
 
13653
      basisvalues[3] *= std::sqrt(7.5);
 
13654
      basisvalues[7] *= std::sqrt(10.0);
 
13655
      basisvalues[6] *= std::sqrt(14.0);
16149
13656
      
16150
13657
      // Table(s) of coefficients.
16151
13658
      static const double coefficients0[10] = \
16311
13818
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
16312
13819
      
16313
13820
      // Declare helper variables.
16314
 
      unsigned int rr = 0;
16315
 
      unsigned int ss = 0;
16316
 
      unsigned int tt = 0;
16317
 
      double tmp5 = 0.0;
16318
 
      double tmp6 = 0.0;
16319
 
      double tmp7 = 0.0;
16320
13821
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
16321
13822
      double tmp1 = (1.0 - Y)/2.0;
16322
13823
      double tmp2 = tmp1*tmp1;
16324
13825
      // Compute basisvalues.
16325
13826
      basisvalues[0] = 1.0;
16326
13827
      basisvalues[1] = tmp0;
16327
 
      for (unsigned int r = 1; r < 3; r++)
16328
 
      {
16329
 
        rr = (r + 1)*((r + 1) + 1)/2;
16330
 
        ss = r*(r + 1)/2;
16331
 
        tt = (r - 1)*((r - 1) + 1)/2;
16332
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
16333
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
16334
 
      }// end loop over 'r'
16335
 
      for (unsigned int r = 0; r < 3; r++)
16336
 
      {
16337
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
16338
 
        ss = r*(r + 1)/2;
16339
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
16340
 
      }// end loop over 'r'
16341
 
      for (unsigned int r = 0; r < 2; r++)
16342
 
      {
16343
 
        for (unsigned int s = 1; s < 3 - r; s++)
16344
 
        {
16345
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
16346
 
          ss = (r + s)*(r + s + 1)/2 + s;
16347
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
16348
 
          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));
16349
 
          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));
16350
 
          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));
16351
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
16352
 
        }// end loop over 's'
16353
 
      }// end loop over 'r'
16354
 
      for (unsigned int r = 0; r < 4; r++)
16355
 
      {
16356
 
        for (unsigned int s = 0; s < 4 - r; s++)
16357
 
        {
16358
 
          rr = (r + s)*(r + s + 1)/2 + s;
16359
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
16360
 
        }// end loop over 's'
16361
 
      }// end loop over 'r'
 
13828
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
13829
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
13830
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
13831
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
13832
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
13833
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
13834
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
13835
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
13836
      basisvalues[0] *= std::sqrt(0.5);
 
13837
      basisvalues[2] *= std::sqrt(1.0);
 
13838
      basisvalues[5] *= std::sqrt(1.5);
 
13839
      basisvalues[9] *= std::sqrt(2.0);
 
13840
      basisvalues[1] *= std::sqrt(3.0);
 
13841
      basisvalues[4] *= std::sqrt(4.5);
 
13842
      basisvalues[8] *= std::sqrt(6.0);
 
13843
      basisvalues[3] *= std::sqrt(7.5);
 
13844
      basisvalues[7] *= std::sqrt(10.0);
 
13845
      basisvalues[6] *= std::sqrt(14.0);
16362
13846
      
16363
13847
      // Table(s) of coefficients.
16364
13848
      static const double coefficients0[10] = \
16524
14008
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
16525
14009
      
16526
14010
      // Declare helper variables.
16527
 
      unsigned int rr = 0;
16528
 
      unsigned int ss = 0;
16529
 
      unsigned int tt = 0;
16530
 
      double tmp5 = 0.0;
16531
 
      double tmp6 = 0.0;
16532
 
      double tmp7 = 0.0;
16533
14011
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
16534
14012
      double tmp1 = (1.0 - Y)/2.0;
16535
14013
      double tmp2 = tmp1*tmp1;
16537
14015
      // Compute basisvalues.
16538
14016
      basisvalues[0] = 1.0;
16539
14017
      basisvalues[1] = tmp0;
16540
 
      for (unsigned int r = 1; r < 3; r++)
16541
 
      {
16542
 
        rr = (r + 1)*((r + 1) + 1)/2;
16543
 
        ss = r*(r + 1)/2;
16544
 
        tt = (r - 1)*((r - 1) + 1)/2;
16545
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
16546
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
16547
 
      }// end loop over 'r'
16548
 
      for (unsigned int r = 0; r < 3; r++)
16549
 
      {
16550
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
16551
 
        ss = r*(r + 1)/2;
16552
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
16553
 
      }// end loop over 'r'
16554
 
      for (unsigned int r = 0; r < 2; r++)
16555
 
      {
16556
 
        for (unsigned int s = 1; s < 3 - r; s++)
16557
 
        {
16558
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
16559
 
          ss = (r + s)*(r + s + 1)/2 + s;
16560
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
16561
 
          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));
16562
 
          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));
16563
 
          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));
16564
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
16565
 
        }// end loop over 's'
16566
 
      }// end loop over 'r'
16567
 
      for (unsigned int r = 0; r < 4; r++)
16568
 
      {
16569
 
        for (unsigned int s = 0; s < 4 - r; s++)
16570
 
        {
16571
 
          rr = (r + s)*(r + s + 1)/2 + s;
16572
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
16573
 
        }// end loop over 's'
16574
 
      }// end loop over 'r'
 
14018
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
14019
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
14020
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
14021
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
14022
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
14023
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
14024
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
14025
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
14026
      basisvalues[0] *= std::sqrt(0.5);
 
14027
      basisvalues[2] *= std::sqrt(1.0);
 
14028
      basisvalues[5] *= std::sqrt(1.5);
 
14029
      basisvalues[9] *= std::sqrt(2.0);
 
14030
      basisvalues[1] *= std::sqrt(3.0);
 
14031
      basisvalues[4] *= std::sqrt(4.5);
 
14032
      basisvalues[8] *= std::sqrt(6.0);
 
14033
      basisvalues[3] *= std::sqrt(7.5);
 
14034
      basisvalues[7] *= std::sqrt(10.0);
 
14035
      basisvalues[6] *= std::sqrt(14.0);
16575
14036
      
16576
14037
      // Table(s) of coefficients.
16577
14038
      static const double coefficients0[10] = \
16737
14198
      double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
16738
14199
      
16739
14200
      // Declare helper variables.
16740
 
      unsigned int rr = 0;
16741
 
      unsigned int ss = 0;
16742
 
      unsigned int tt = 0;
16743
 
      double tmp5 = 0.0;
16744
 
      double tmp6 = 0.0;
16745
 
      double tmp7 = 0.0;
16746
14201
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
16747
14202
      double tmp1 = (1.0 - Y)/2.0;
16748
14203
      double tmp2 = tmp1*tmp1;
16750
14205
      // Compute basisvalues.
16751
14206
      basisvalues[0] = 1.0;
16752
14207
      basisvalues[1] = tmp0;
16753
 
      for (unsigned int r = 1; r < 3; r++)
16754
 
      {
16755
 
        rr = (r + 1)*((r + 1) + 1)/2;
16756
 
        ss = r*(r + 1)/2;
16757
 
        tt = (r - 1)*((r - 1) + 1)/2;
16758
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
16759
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
16760
 
      }// end loop over 'r'
16761
 
      for (unsigned int r = 0; r < 3; r++)
16762
 
      {
16763
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
16764
 
        ss = r*(r + 1)/2;
16765
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
16766
 
      }// end loop over 'r'
16767
 
      for (unsigned int r = 0; r < 2; r++)
16768
 
      {
16769
 
        for (unsigned int s = 1; s < 3 - r; s++)
16770
 
        {
16771
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
16772
 
          ss = (r + s)*(r + s + 1)/2 + s;
16773
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
16774
 
          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));
16775
 
          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));
16776
 
          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));
16777
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
16778
 
        }// end loop over 's'
16779
 
      }// end loop over 'r'
16780
 
      for (unsigned int r = 0; r < 4; r++)
16781
 
      {
16782
 
        for (unsigned int s = 0; s < 4 - r; s++)
16783
 
        {
16784
 
          rr = (r + s)*(r + s + 1)/2 + s;
16785
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
16786
 
        }// end loop over 's'
16787
 
      }// end loop over 'r'
 
14208
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
14209
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
14210
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
14211
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
14212
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
14213
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
14214
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
14215
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
14216
      basisvalues[0] *= std::sqrt(0.5);
 
14217
      basisvalues[2] *= std::sqrt(1.0);
 
14218
      basisvalues[5] *= std::sqrt(1.5);
 
14219
      basisvalues[9] *= std::sqrt(2.0);
 
14220
      basisvalues[1] *= std::sqrt(3.0);
 
14221
      basisvalues[4] *= std::sqrt(4.5);
 
14222
      basisvalues[8] *= std::sqrt(6.0);
 
14223
      basisvalues[3] *= std::sqrt(7.5);
 
14224
      basisvalues[7] *= std::sqrt(10.0);
 
14225
      basisvalues[6] *= std::sqrt(14.0);
16788
14226
      
16789
14227
      // Table(s) of coefficients.
16790
14228
      static const double coefficients0[10] = \
18083
15521
  /// Return the number of sub dofmaps (for a mixed element)
18084
15522
  virtual unsigned int num_sub_dofmaps() const
18085
15523
  {
18086
 
    return 0;
 
15524
    return 2;
18087
15525
  }
18088
15526
 
18089
15527
  /// Create a new dofmap for sub dofmap i (for a mixed element)
18090
15528
  virtual ufc::dofmap* create_sub_dofmap(unsigned int i) const
18091
15529
  {
 
15530
    switch (i)
 
15531
    {
 
15532
    case 0:
 
15533
      {
 
15534
        return new x_element1_dofmap_0();
 
15535
        break;
 
15536
      }
 
15537
    case 1:
 
15538
      {
 
15539
        return new x_element1_dofmap_0();
 
15540
        break;
 
15541
      }
 
15542
    }
 
15543
    
18092
15544
    return 0;
18093
15545
  }
18094
15546