227 operator()(
const int local_subdomain_id,
const int x_cell,
const int y_cell,
const int r_cell )
const
232 if ( !applyStoredLMatrices_ )
234 double wedge_surf_phy_coords[2][3][3];
235 double quad_surface_coords[2][2][3];
236 quad_surface_coords[0][0][0] = grid_( local_subdomain_id, x_cell, y_cell, 0 );
237 quad_surface_coords[0][0][1] = grid_( local_subdomain_id, x_cell, y_cell, 1 );
238 quad_surface_coords[0][0][2] = grid_( local_subdomain_id, x_cell, y_cell, 2 );
239 quad_surface_coords[0][1][0] = grid_( local_subdomain_id, x_cell, y_cell + 1, 0 );
240 quad_surface_coords[0][1][1] = grid_( local_subdomain_id, x_cell, y_cell + 1, 1 );
241 quad_surface_coords[0][1][2] = grid_( local_subdomain_id, x_cell, y_cell + 1, 2 );
242 quad_surface_coords[1][0][0] = grid_( local_subdomain_id, x_cell + 1, y_cell, 0 );
243 quad_surface_coords[1][0][1] = grid_( local_subdomain_id, x_cell + 1, y_cell, 1 );
244 quad_surface_coords[1][0][2] = grid_( local_subdomain_id, x_cell + 1, y_cell, 2 );
245 quad_surface_coords[1][1][0] = grid_( local_subdomain_id, x_cell + 1, y_cell + 1, 0 );
246 quad_surface_coords[1][1][1] = grid_( local_subdomain_id, x_cell + 1, y_cell + 1, 1 );
247 quad_surface_coords[1][1][2] = grid_( local_subdomain_id, x_cell + 1, y_cell + 1, 2 );
248 wedge_surf_phy_coords[0][0][0] = quad_surface_coords[0][0][0];
249 wedge_surf_phy_coords[0][0][1] = quad_surface_coords[0][0][1];
250 wedge_surf_phy_coords[0][0][2] = quad_surface_coords[0][0][2];
251 wedge_surf_phy_coords[0][1][0] = quad_surface_coords[1][0][0];
252 wedge_surf_phy_coords[0][1][1] = quad_surface_coords[1][0][1];
253 wedge_surf_phy_coords[0][1][2] = quad_surface_coords[1][0][2];
254 wedge_surf_phy_coords[0][2][0] = quad_surface_coords[0][1][0];
255 wedge_surf_phy_coords[0][2][1] = quad_surface_coords[0][1][1];
256 wedge_surf_phy_coords[0][2][2] = quad_surface_coords[0][1][2];
257 wedge_surf_phy_coords[1][0][0] = quad_surface_coords[1][1][0];
258 wedge_surf_phy_coords[1][0][1] = quad_surface_coords[1][1][1];
259 wedge_surf_phy_coords[1][0][2] = quad_surface_coords[1][1][2];
260 wedge_surf_phy_coords[1][1][0] = quad_surface_coords[0][1][0];
261 wedge_surf_phy_coords[1][1][1] = quad_surface_coords[0][1][1];
262 wedge_surf_phy_coords[1][1][2] = quad_surface_coords[0][1][2];
263 wedge_surf_phy_coords[1][2][0] = quad_surface_coords[1][0][0];
264 wedge_surf_phy_coords[1][2][1] = quad_surface_coords[1][0][1];
265 wedge_surf_phy_coords[1][2][2] = quad_surface_coords[1][0][2];
266 double r_0 = radii_( local_subdomain_id, r_cell );
267 double r_1 = radii_( local_subdomain_id, r_cell + 1 );
268 double src_local_hex[3][2][6];
270 for ( dim = 0; dim < 3; dim += 1 )
272 src_local_hex[dim][0][0] = src_( local_subdomain_id, x_cell, y_cell, r_cell, dim );
273 src_local_hex[dim][0][1] = src_( local_subdomain_id, x_cell + 1, y_cell, r_cell, dim );
274 src_local_hex[dim][0][2] = src_( local_subdomain_id, x_cell, y_cell + 1, r_cell, dim );
275 src_local_hex[dim][0][3] = src_( local_subdomain_id, x_cell, y_cell, r_cell + 1, dim );
276 src_local_hex[dim][0][4] = src_( local_subdomain_id, x_cell + 1, y_cell, r_cell + 1, dim );
277 src_local_hex[dim][0][5] = src_( local_subdomain_id, x_cell, y_cell + 1, r_cell + 1, dim );
278 src_local_hex[dim][1][0] = src_( local_subdomain_id, x_cell + 1, y_cell + 1, r_cell, dim );
279 src_local_hex[dim][1][1] = src_( local_subdomain_id, x_cell, y_cell + 1, r_cell, dim );
280 src_local_hex[dim][1][2] = src_( local_subdomain_id, x_cell + 1, y_cell, r_cell, dim );
281 src_local_hex[dim][1][3] = src_( local_subdomain_id, x_cell + 1, y_cell + 1, r_cell + 1, dim );
282 src_local_hex[dim][1][4] = src_( local_subdomain_id, x_cell, y_cell + 1, r_cell + 1, dim );
283 src_local_hex[dim][1][5] = src_( local_subdomain_id, x_cell + 1, y_cell, r_cell + 1, dim );
285 double k_local_hex[2][6];
286 k_local_hex[0][0] = k_( local_subdomain_id, x_cell, y_cell, r_cell );
287 k_local_hex[0][1] = k_( local_subdomain_id, x_cell + 1, y_cell, r_cell );
288 k_local_hex[0][2] = k_( local_subdomain_id, x_cell, y_cell + 1, r_cell );
289 k_local_hex[0][3] = k_( local_subdomain_id, x_cell, y_cell, r_cell + 1 );
290 k_local_hex[0][4] = k_( local_subdomain_id, x_cell + 1, y_cell, r_cell + 1 );
291 k_local_hex[0][5] = k_( local_subdomain_id, x_cell, y_cell + 1, r_cell + 1 );
292 k_local_hex[1][0] = k_( local_subdomain_id, x_cell + 1, y_cell + 1, r_cell );
293 k_local_hex[1][1] = k_( local_subdomain_id, x_cell, y_cell + 1, r_cell );
294 k_local_hex[1][2] = k_( local_subdomain_id, x_cell + 1, y_cell, r_cell );
295 k_local_hex[1][3] = k_( local_subdomain_id, x_cell + 1, y_cell + 1, r_cell + 1 );
296 k_local_hex[1][4] = k_( local_subdomain_id, x_cell, y_cell + 1, r_cell + 1 );
297 k_local_hex[1][5] = k_( local_subdomain_id, x_cell + 1, y_cell, r_cell + 1 );
298 double qp_array[6][3];
300 qp_array[0][0] = 0.66666666666666663;
301 qp_array[1][0] = 0.16666666666666671;
302 qp_array[2][0] = 0.16666666666666671;
303 qp_array[3][0] = 0.66666666666666663;
304 qp_array[4][0] = 0.16666666666666671;
305 qp_array[5][0] = 0.16666666666666671;
306 qp_array[0][1] = 0.16666666666666671;
307 qp_array[1][1] = 0.66666666666666663;
308 qp_array[2][1] = 0.16666666666666671;
309 qp_array[3][1] = 0.16666666666666671;
310 qp_array[4][1] = 0.66666666666666663;
311 qp_array[5][1] = 0.16666666666666671;
312 qp_array[0][2] = -0.57735026918962573;
313 qp_array[1][2] = -0.57735026918962573;
314 qp_array[2][2] = -0.57735026918962573;
315 qp_array[3][2] = 0.57735026918962573;
316 qp_array[4][2] = 0.57735026918962573;
317 qp_array[5][2] = 0.57735026918962573;
318 qw_array[0] = 0.16666666666666671;
319 qw_array[1] = 0.16666666666666671;
320 qw_array[2] = 0.16666666666666671;
321 qw_array[3] = 0.16666666666666671;
322 qw_array[4] = 0.16666666666666671;
323 qw_array[5] = 0.16666666666666671;
324 int cmb_shift = ( ( treat_boundary_ && diagonal_ ==
false && r_cell == 0 ) ? ( 3 ) : ( 0 ) );
325 int max_rad = -1 + radii_.extent( 1 );
326 int surface_shift = ( ( treat_boundary_ && diagonal_ ==
false && max_rad == r_cell + 1 ) ? ( 3 ) : ( 0 ) );
327 double dst_array[3][2][6] = { 0 };
329 for ( w = 0; w < 2; w += 1 )
332 for ( q = 0; q < 6; q += 1 )
335 double tmpcse_k_eval_0 = ( 1.0 / 2.0 ) * qp_array[q][2];
336 double tmpcse_k_eval_1 = 1.0 / 2.0 - tmpcse_k_eval_0;
337 double tmpcse_k_eval_2 = tmpcse_k_eval_0 + 1.0 / 2.0;
338 double tmpcse_k_eval_3 = -qp_array[q][0] - qp_array[q][1] + 1;
339 double k_eval = tmpcse_k_eval_1 * tmpcse_k_eval_3 * k_local_hex[w][0] +
340 tmpcse_k_eval_1 * k_local_hex[w][1] * qp_array[q][0] +
341 tmpcse_k_eval_1 * k_local_hex[w][2] * qp_array[q][1] +
342 tmpcse_k_eval_2 * tmpcse_k_eval_3 * k_local_hex[w][3] +
343 tmpcse_k_eval_2 * k_local_hex[w][4] * qp_array[q][0] +
344 tmpcse_k_eval_2 * k_local_hex[w][5] * qp_array[q][1];
346 double tmpcse_J_0 = -1.0 / 2.0 * r_0 + ( 1.0 / 2.0 ) * r_1;
347 double tmpcse_J_1 = r_0 + tmpcse_J_0 * ( qp_array[q][2] + 1 );
348 double tmpcse_J_2 = -qp_array[q][0] - qp_array[q][1] + 1;
349 double J_0_0 = tmpcse_J_1 * ( -wedge_surf_phy_coords[w][0][0] + wedge_surf_phy_coords[w][1][0] );
350 double J_0_1 = tmpcse_J_1 * ( -wedge_surf_phy_coords[w][0][0] + wedge_surf_phy_coords[w][2][0] );
351 double J_0_2 = tmpcse_J_0 * ( tmpcse_J_2 * wedge_surf_phy_coords[w][0][0] +
352 qp_array[q][0] * wedge_surf_phy_coords[w][1][0] +
353 qp_array[q][1] * wedge_surf_phy_coords[w][2][0] );
354 double J_1_0 = tmpcse_J_1 * ( -wedge_surf_phy_coords[w][0][1] + wedge_surf_phy_coords[w][1][1] );
355 double J_1_1 = tmpcse_J_1 * ( -wedge_surf_phy_coords[w][0][1] + wedge_surf_phy_coords[w][2][1] );
356 double J_1_2 = tmpcse_J_0 * ( tmpcse_J_2 * wedge_surf_phy_coords[w][0][1] +
357 qp_array[q][0] * wedge_surf_phy_coords[w][1][1] +
358 qp_array[q][1] * wedge_surf_phy_coords[w][2][1] );
359 double J_2_0 = tmpcse_J_1 * ( -wedge_surf_phy_coords[w][0][2] + wedge_surf_phy_coords[w][1][2] );
360 double J_2_1 = tmpcse_J_1 * ( -wedge_surf_phy_coords[w][0][2] + wedge_surf_phy_coords[w][2][2] );
361 double J_2_2 = tmpcse_J_0 * ( tmpcse_J_2 * wedge_surf_phy_coords[w][0][2] +
362 qp_array[q][0] * wedge_surf_phy_coords[w][1][2] +
363 qp_array[q][1] * wedge_surf_phy_coords[w][2][2] );
364 double J_det = J_0_0 * J_1_1 * J_2_2 - J_0_0 * J_1_2 * J_2_1 - J_0_1 * J_1_0 * J_2_2 +
365 J_0_1 * J_1_2 * J_2_0 + J_0_2 * J_1_0 * J_2_1 - J_0_2 * J_1_1 * J_2_0;
366 double tmpcse_J_invT_0 = 1.0 / J_det;
367 double J_invT_cse_0_0 = tmpcse_J_invT_0 * ( J_1_1 * J_2_2 - J_1_2 * J_2_1 );
368 double J_invT_cse_0_1 = tmpcse_J_invT_0 * ( -J_1_0 * J_2_2 + J_1_2 * J_2_0 );
369 double J_invT_cse_0_2 = tmpcse_J_invT_0 * ( J_1_0 * J_2_1 - J_1_1 * J_2_0 );
370 double J_invT_cse_1_0 = tmpcse_J_invT_0 * ( -J_0_1 * J_2_2 + J_0_2 * J_2_1 );
371 double J_invT_cse_1_1 = tmpcse_J_invT_0 * ( J_0_0 * J_2_2 - J_0_2 * J_2_0 );
372 double J_invT_cse_1_2 = tmpcse_J_invT_0 * ( -J_0_0 * J_2_1 + J_0_1 * J_2_0 );
373 double J_invT_cse_2_0 = tmpcse_J_invT_0 * ( J_0_1 * J_1_2 - J_0_2 * J_1_1 );
374 double J_invT_cse_2_1 = tmpcse_J_invT_0 * ( -J_0_0 * J_1_2 + J_0_2 * J_1_0 );
375 double J_invT_cse_2_2 = tmpcse_J_invT_0 * ( J_0_0 * J_1_1 - J_0_1 * J_1_0 );
377 double scalar_grad[6][3] = { 0 };
378 double tmpcse_grad_i_0 = ( 1.0 / 2.0 ) * qp_array[q][2];
379 double tmpcse_grad_i_1 = tmpcse_grad_i_0 - 1.0 / 2.0;
380 double tmpcse_grad_i_2 = ( 1.0 / 2.0 ) * qp_array[q][0];
381 double tmpcse_grad_i_3 = ( 1.0 / 2.0 ) * qp_array[q][1];
382 double tmpcse_grad_i_4 = tmpcse_grad_i_2 + tmpcse_grad_i_3 - 1.0 / 2.0;
383 double tmpcse_grad_i_5 = J_invT_cse_0_2 * tmpcse_grad_i_2;
384 double tmpcse_grad_i_6 = -tmpcse_grad_i_1;
385 double tmpcse_grad_i_7 = J_invT_cse_1_2 * tmpcse_grad_i_2;
386 double tmpcse_grad_i_8 = J_invT_cse_2_2 * tmpcse_grad_i_2;
387 double tmpcse_grad_i_9 = J_invT_cse_0_2 * tmpcse_grad_i_3;
388 double tmpcse_grad_i_10 = J_invT_cse_1_2 * tmpcse_grad_i_3;
389 double tmpcse_grad_i_11 = J_invT_cse_2_2 * tmpcse_grad_i_3;
390 double tmpcse_grad_i_12 = tmpcse_grad_i_0 + 1.0 / 2.0;
391 double tmpcse_grad_i_13 = -tmpcse_grad_i_12;
392 double tmpcse_grad_i_14 = -tmpcse_grad_i_4;
393 scalar_grad[0][0] = J_invT_cse_0_0 * tmpcse_grad_i_1 + J_invT_cse_0_1 * tmpcse_grad_i_1 +
394 J_invT_cse_0_2 * tmpcse_grad_i_4;
395 scalar_grad[0][1] = J_invT_cse_1_0 * tmpcse_grad_i_1 + J_invT_cse_1_1 * tmpcse_grad_i_1 +
396 J_invT_cse_1_2 * tmpcse_grad_i_4;
397 scalar_grad[0][2] = J_invT_cse_2_0 * tmpcse_grad_i_1 + J_invT_cse_2_1 * tmpcse_grad_i_1 +
398 J_invT_cse_2_2 * tmpcse_grad_i_4;
399 scalar_grad[1][0] = J_invT_cse_0_0 * tmpcse_grad_i_6 - tmpcse_grad_i_5;
400 scalar_grad[1][1] = J_invT_cse_1_0 * tmpcse_grad_i_6 - tmpcse_grad_i_7;
401 scalar_grad[1][2] = J_invT_cse_2_0 * tmpcse_grad_i_6 - tmpcse_grad_i_8;
402 scalar_grad[2][0] = J_invT_cse_0_1 * tmpcse_grad_i_6 - tmpcse_grad_i_9;
403 scalar_grad[2][1] = J_invT_cse_1_1 * tmpcse_grad_i_6 - tmpcse_grad_i_10;
404 scalar_grad[2][2] = J_invT_cse_2_1 * tmpcse_grad_i_6 - tmpcse_grad_i_11;
405 scalar_grad[3][0] = J_invT_cse_0_0 * tmpcse_grad_i_13 + J_invT_cse_0_1 * tmpcse_grad_i_13 +
406 J_invT_cse_0_2 * tmpcse_grad_i_14;
407 scalar_grad[3][1] = J_invT_cse_1_0 * tmpcse_grad_i_13 + J_invT_cse_1_1 * tmpcse_grad_i_13 +
408 J_invT_cse_1_2 * tmpcse_grad_i_14;
409 scalar_grad[3][2] = J_invT_cse_2_0 * tmpcse_grad_i_13 + J_invT_cse_2_1 * tmpcse_grad_i_13 +
410 J_invT_cse_2_2 * tmpcse_grad_i_14;
411 scalar_grad[4][0] = J_invT_cse_0_0 * tmpcse_grad_i_12 + tmpcse_grad_i_5;
412 scalar_grad[4][1] = J_invT_cse_1_0 * tmpcse_grad_i_12 + tmpcse_grad_i_7;
413 scalar_grad[4][2] = J_invT_cse_2_0 * tmpcse_grad_i_12 + tmpcse_grad_i_8;
414 scalar_grad[5][0] = J_invT_cse_0_1 * tmpcse_grad_i_12 + tmpcse_grad_i_9;
415 scalar_grad[5][1] = J_invT_cse_1_1 * tmpcse_grad_i_12 + tmpcse_grad_i_10;
416 scalar_grad[5][2] = J_invT_cse_2_1 * tmpcse_grad_i_12 + tmpcse_grad_i_11;
419 for ( dimi = 0; dimi < 3; dimi += 1 )
421 for ( dimj = 0; dimj < 3; dimj += 1 )
423 if ( diagonal_ ==
false )
425 double grad_u[3][3] = { 0 };
428 for ( node_idx = cmb_shift; node_idx < 6 - surface_shift; node_idx += 1 )
430 double E_grad_trial[3][3] = { 0 };
431 E_grad_trial[0][dimj] = scalar_grad[node_idx][0];
432 E_grad_trial[1][dimj] = scalar_grad[node_idx][1];
433 E_grad_trial[2][dimj] = scalar_grad[node_idx][2];
434 double tmpcse_symgrad_trial_0 = 0.5 * E_grad_trial[0][1] + 0.5 * E_grad_trial[1][0];
435 double tmpcse_symgrad_trial_1 = 0.5 * E_grad_trial[0][2] + 0.5 * E_grad_trial[2][0];
436 double tmpcse_symgrad_trial_2 = 0.5 * E_grad_trial[1][2] + 0.5 * E_grad_trial[2][1];
438 1.0 * E_grad_trial[0][0] * src_local_hex[dimj][w][node_idx] + grad_u[0][0];
440 tmpcse_symgrad_trial_0 * src_local_hex[dimj][w][node_idx] + grad_u[0][1];
442 tmpcse_symgrad_trial_1 * src_local_hex[dimj][w][node_idx] + grad_u[0][2];
444 tmpcse_symgrad_trial_0 * src_local_hex[dimj][w][node_idx] + grad_u[1][0];
446 1.0 * E_grad_trial[1][1] * src_local_hex[dimj][w][node_idx] + grad_u[1][1];
448 tmpcse_symgrad_trial_2 * src_local_hex[dimj][w][node_idx] + grad_u[1][2];
450 tmpcse_symgrad_trial_1 * src_local_hex[dimj][w][node_idx] + grad_u[2][0];
452 tmpcse_symgrad_trial_2 * src_local_hex[dimj][w][node_idx] + grad_u[2][1];
454 1.0 * E_grad_trial[2][2] * src_local_hex[dimj][w][node_idx] + grad_u[2][2];
455 div_u = div_u + E_grad_trial[dimj][dimj] * src_local_hex[dimj][w][node_idx];
457 for ( node_idx = cmb_shift; node_idx < 6 - surface_shift; node_idx += 1 )
459 double E_grad_test[3][3] = { 0 };
460 E_grad_test[0][dimi] = scalar_grad[node_idx][0];
461 E_grad_test[1][dimi] = scalar_grad[node_idx][1];
462 E_grad_test[2][dimi] = scalar_grad[node_idx][2];
463 double tmpcse_symgrad_test_0 = 0.5 * E_grad_test[0][1] + 0.5 * E_grad_test[1][0];
464 double tmpcse_symgrad_test_1 = 0.5 * E_grad_test[0][2] + 0.5 * E_grad_test[2][0];
465 double tmpcse_symgrad_test_2 = 0.5 * E_grad_test[1][2] + 0.5 * E_grad_test[2][1];
466 double tmpcse_pairing_0 = 2 * tmpcse_symgrad_test_0;
467 double tmpcse_pairing_1 = 2 * tmpcse_symgrad_test_1;
468 double tmpcse_pairing_2 = 2 * tmpcse_symgrad_test_2;
469 dst_array[dimi][w][node_idx] =
471 ( -0.66666666666666663 * div_u * E_grad_test[dimi][dimi] +
472 tmpcse_pairing_0 * grad_u[0][1] + tmpcse_pairing_0 * grad_u[1][0] +
473 tmpcse_pairing_1 * grad_u[0][2] + tmpcse_pairing_1 * grad_u[2][0] +
474 tmpcse_pairing_2 * grad_u[1][2] + tmpcse_pairing_2 * grad_u[2][1] +
475 2.0 * E_grad_test[0][0] * grad_u[0][0] +
476 2.0 * E_grad_test[1][1] * grad_u[1][1] +
477 2.0 * E_grad_test[2][2] * grad_u[2][2] ) *
478 fabs( J_det ) * qw_array[q] +
479 dst_array[dimi][w][node_idx];
483 ( diagonal_ || treat_boundary_ && ( r_cell == 0 || r_cell + 1 == max_rad ) ) )
486 for ( node_idx = surface_shift; node_idx < 6 - cmb_shift; node_idx += 1 )
488 double E_grad_test[3][3] = { 0 };
489 E_grad_test[0][dimj] = scalar_grad[node_idx][0];
490 E_grad_test[1][dimj] = scalar_grad[node_idx][1];
491 E_grad_test[2][dimj] = scalar_grad[node_idx][2];
493 double grad_u_diag[3][3] = { 0 };
494 double tmpcse_symgrad_test_0 = 0.5 * E_grad_test[0][1] + 0.5 * E_grad_test[1][0];
495 double tmpcse_symgrad_test_1 = 0.5 * E_grad_test[0][2] + 0.5 * E_grad_test[2][0];
496 double tmpcse_symgrad_test_2 = 0.5 * E_grad_test[1][2] + 0.5 * E_grad_test[2][1];
497 grad_u_diag[0][0] = 1.0 * E_grad_test[0][0] * src_local_hex[dimj][w][node_idx];
498 grad_u_diag[0][1] = tmpcse_symgrad_test_0 * src_local_hex[dimj][w][node_idx];
499 grad_u_diag[0][2] = tmpcse_symgrad_test_1 * src_local_hex[dimj][w][node_idx];
500 grad_u_diag[1][0] = tmpcse_symgrad_test_0 * src_local_hex[dimj][w][node_idx];
501 grad_u_diag[1][1] = 1.0 * E_grad_test[1][1] * src_local_hex[dimj][w][node_idx];
502 grad_u_diag[1][2] = tmpcse_symgrad_test_2 * src_local_hex[dimj][w][node_idx];
503 grad_u_diag[2][0] = tmpcse_symgrad_test_1 * src_local_hex[dimj][w][node_idx];
504 grad_u_diag[2][1] = tmpcse_symgrad_test_2 * src_local_hex[dimj][w][node_idx];
505 grad_u_diag[2][2] = 1.0 * E_grad_test[2][2] * src_local_hex[dimj][w][node_idx];
506 double tmpcse_pairing_0 = 4 * src_local_hex[dimj][w][node_idx];
507 double tmpcse_pairing_1 = 2.0 * src_local_hex[dimj][w][node_idx];
508 dst_array[dimi][w][node_idx] =
510 ( tmpcse_pairing_0 * pow( tmpcse_symgrad_test_0, 2 ) +
511 tmpcse_pairing_0 * pow( tmpcse_symgrad_test_1, 2 ) +
512 tmpcse_pairing_0 * pow( tmpcse_symgrad_test_2, 2 ) +
513 tmpcse_pairing_1 * pow( E_grad_test[0][0], 2 ) +
514 tmpcse_pairing_1 * pow( E_grad_test[1][1], 2 ) +
515 tmpcse_pairing_1 * pow( E_grad_test[2][2], 2 ) -
516 0.66666666666666663 * E_grad_test[dimi][dimi] * E_grad_test[dimj][dimj] *
517 src_local_hex[dimj][w][node_idx] ) *
518 fabs( J_det ) * qw_array[q] +
519 dst_array[dimi][w][node_idx];
527 for ( dim_add = 0; dim_add < 3; dim_add += 1 )
530 &dst_( local_subdomain_id, x_cell, y_cell, r_cell, dim_add ), dst_array[dim_add][0][0] );
532 &dst_( local_subdomain_id, x_cell + 1, y_cell, r_cell, dim_add ),
533 dst_array[dim_add][0][1] + dst_array[dim_add][1][2] );
535 &dst_( local_subdomain_id, x_cell, y_cell + 1, r_cell, dim_add ),
536 dst_array[dim_add][0][2] + dst_array[dim_add][1][1] );
538 &dst_( local_subdomain_id, x_cell, y_cell, r_cell + 1, dim_add ), dst_array[dim_add][0][3] );
540 &dst_( local_subdomain_id, x_cell + 1, y_cell, r_cell + 1, dim_add ),
541 dst_array[dim_add][0][4] + dst_array[dim_add][1][5] );
543 &dst_( local_subdomain_id, x_cell, y_cell + 1, r_cell + 1, dim_add ),
544 dst_array[dim_add][0][5] + dst_array[dim_add][1][4] );
546 &dst_( local_subdomain_id, x_cell + 1, y_cell + 1, r_cell, dim_add ), dst_array[dim_add][1][0] );
548 &dst_( local_subdomain_id, x_cell + 1, y_cell + 1, r_cell + 1, dim_add ),
549 dst_array[dim_add][1][3] );
555 A[0] = lmatrices_( local_subdomain_id, x_cell, y_cell, r_cell, 0 );
556 A[1] = lmatrices_( local_subdomain_id, x_cell, y_cell, r_cell, 1 );
565 if ( storeLMatrices_ )
568 lmatrices_( local_subdomain_id, x_cell, y_cell, r_cell, 0 ) = A[0];
569 lmatrices_( local_subdomain_id, x_cell, y_cell, r_cell, 1 ) = A[1];
574 for (
int dimj = 0; dimj < 3; dimj++ )
578 src_d, local_subdomain_id, x_cell, y_cell, r_cell, dimj, src_ );
592 dst[0] = A[0] * src[0];
593 dst[1] = A[1] * src[1];
596 for (
int dimi = 0; dimi < 3; dimi++ )
603 dst_, local_subdomain_id, x_cell, y_cell, r_cell, dimi, dst_d );