227 operator()(
const int local_subdomain_id,
const int x_cell,
const int y_cell,
const int r_cell )
const
232 if ( !applyStoredLMatrices_ )
235double wedge_surf_phy_coords[2][3][3];
236double quad_surface_coords[2][2][3];
237quad_surface_coords[0][0][0] = grid_(local_subdomain_id, x_cell, y_cell, 0);
238quad_surface_coords[0][0][1] = grid_(local_subdomain_id, x_cell, y_cell, 1);
239quad_surface_coords[0][0][2] = grid_(local_subdomain_id, x_cell, y_cell, 2);
240quad_surface_coords[0][1][0] = grid_(local_subdomain_id, x_cell, y_cell + 1, 0);
241quad_surface_coords[0][1][1] = grid_(local_subdomain_id, x_cell, y_cell + 1, 1);
242quad_surface_coords[0][1][2] = grid_(local_subdomain_id, x_cell, y_cell + 1, 2);
243quad_surface_coords[1][0][0] = grid_(local_subdomain_id, x_cell + 1, y_cell, 0);
244quad_surface_coords[1][0][1] = grid_(local_subdomain_id, x_cell + 1, y_cell, 1);
245quad_surface_coords[1][0][2] = grid_(local_subdomain_id, x_cell + 1, y_cell, 2);
246quad_surface_coords[1][1][0] = grid_(local_subdomain_id, x_cell + 1, y_cell + 1, 0);
247quad_surface_coords[1][1][1] = grid_(local_subdomain_id, x_cell + 1, y_cell + 1, 1);
248quad_surface_coords[1][1][2] = grid_(local_subdomain_id, x_cell + 1, y_cell + 1, 2);
249wedge_surf_phy_coords[0][0][0] = quad_surface_coords[0][0][0];
250wedge_surf_phy_coords[0][0][1] = quad_surface_coords[0][0][1];
251wedge_surf_phy_coords[0][0][2] = quad_surface_coords[0][0][2];
252wedge_surf_phy_coords[0][1][0] = quad_surface_coords[1][0][0];
253wedge_surf_phy_coords[0][1][1] = quad_surface_coords[1][0][1];
254wedge_surf_phy_coords[0][1][2] = quad_surface_coords[1][0][2];
255wedge_surf_phy_coords[0][2][0] = quad_surface_coords[0][1][0];
256wedge_surf_phy_coords[0][2][1] = quad_surface_coords[0][1][1];
257wedge_surf_phy_coords[0][2][2] = quad_surface_coords[0][1][2];
258wedge_surf_phy_coords[1][0][0] = quad_surface_coords[1][1][0];
259wedge_surf_phy_coords[1][0][1] = quad_surface_coords[1][1][1];
260wedge_surf_phy_coords[1][0][2] = quad_surface_coords[1][1][2];
261wedge_surf_phy_coords[1][1][0] = quad_surface_coords[0][1][0];
262wedge_surf_phy_coords[1][1][1] = quad_surface_coords[0][1][1];
263wedge_surf_phy_coords[1][1][2] = quad_surface_coords[0][1][2];
264wedge_surf_phy_coords[1][2][0] = quad_surface_coords[1][0][0];
265wedge_surf_phy_coords[1][2][1] = quad_surface_coords[1][0][1];
266wedge_surf_phy_coords[1][2][2] = quad_surface_coords[1][0][2];
267double r_0 = radii_(local_subdomain_id, r_cell);
268double r_1 = radii_(local_subdomain_id, r_cell + 1);
269double src_local_hex[3][2][6];
271for (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);
285double k_local_hex[2][6];
286k_local_hex[0][0] = k_(local_subdomain_id, x_cell, y_cell, r_cell);
287k_local_hex[0][1] = k_(local_subdomain_id, x_cell + 1, y_cell, r_cell);
288k_local_hex[0][2] = k_(local_subdomain_id, x_cell, y_cell + 1, r_cell);
289k_local_hex[0][3] = k_(local_subdomain_id, x_cell, y_cell, r_cell + 1);
290k_local_hex[0][4] = k_(local_subdomain_id, x_cell + 1, y_cell, r_cell + 1);
291k_local_hex[0][5] = k_(local_subdomain_id, x_cell, y_cell + 1, r_cell + 1);
292k_local_hex[1][0] = k_(local_subdomain_id, x_cell + 1, y_cell + 1, r_cell);
293k_local_hex[1][1] = k_(local_subdomain_id, x_cell, y_cell + 1, r_cell);
294k_local_hex[1][2] = k_(local_subdomain_id, x_cell + 1, y_cell, r_cell);
295k_local_hex[1][3] = k_(local_subdomain_id, x_cell + 1, y_cell + 1, r_cell + 1);
296k_local_hex[1][4] = k_(local_subdomain_id, x_cell, y_cell + 1, r_cell + 1);
297k_local_hex[1][5] = k_(local_subdomain_id, x_cell + 1, y_cell, r_cell + 1);
298double qp_array[6][3];
300qp_array[0][0] = 0.66666666666666663;
301qp_array[1][0] = 0.16666666666666671;
302qp_array[2][0] = 0.16666666666666671;
303qp_array[3][0] = 0.66666666666666663;
304qp_array[4][0] = 0.16666666666666671;
305qp_array[5][0] = 0.16666666666666671;
306qp_array[0][1] = 0.16666666666666671;
307qp_array[1][1] = 0.66666666666666663;
308qp_array[2][1] = 0.16666666666666671;
309qp_array[3][1] = 0.16666666666666671;
310qp_array[4][1] = 0.66666666666666663;
311qp_array[5][1] = 0.16666666666666671;
312qp_array[0][2] = -0.57735026918962573;
313qp_array[1][2] = -0.57735026918962573;
314qp_array[2][2] = -0.57735026918962573;
315qp_array[3][2] = 0.57735026918962573;
316qp_array[4][2] = 0.57735026918962573;
317qp_array[5][2] = 0.57735026918962573;
318qw_array[0] = 0.16666666666666671;
319qw_array[1] = 0.16666666666666671;
320qw_array[2] = 0.16666666666666671;
321qw_array[3] = 0.16666666666666671;
322qw_array[4] = 0.16666666666666671;
323qw_array[5] = 0.16666666666666671;
324int cmb_shift = ((treat_boundary_ && diagonal_ ==
false && r_cell == 0) ? (
330int max_rad = radii_.extent(1) - 1;
331int surface_shift = ((treat_boundary_ && diagonal_ ==
false && max_rad == r_cell + 1) ? (
337double dst_array[3][2][6] = {0};
339for (w = 0; w < 2; w += 1) {
341 for (q = 0; q < 6; q += 1) {
343 double tmpcse_k_eval_0 = (1.0/2.0)*qp_array[q][2];
344 double tmpcse_k_eval_1 = 1.0/2.0 - tmpcse_k_eval_0;
345 double tmpcse_k_eval_2 = tmpcse_k_eval_0 + 1.0/2.0;
346 double tmpcse_k_eval_3 = -qp_array[q][0] - qp_array[q][1] + 1;
347 double k_eval = tmpcse_k_eval_1*tmpcse_k_eval_3*k_local_hex[w][0] + tmpcse_k_eval_1*k_local_hex[w][1]*qp_array[q][0] + tmpcse_k_eval_1*k_local_hex[w][2]*qp_array[q][1] + tmpcse_k_eval_2*tmpcse_k_eval_3*k_local_hex[w][3] + tmpcse_k_eval_2*k_local_hex[w][4]*qp_array[q][0] + tmpcse_k_eval_2*k_local_hex[w][5]*qp_array[q][1];
349 double tmpcse_J_0 = -1.0/2.0*r_0 + (1.0/2.0)*r_1;
350 double tmpcse_J_1 = r_0 + tmpcse_J_0*(qp_array[q][2] + 1);
351 double tmpcse_J_2 = -qp_array[q][0] - qp_array[q][1] + 1;
352 double J_0_0 = tmpcse_J_1*(-wedge_surf_phy_coords[w][0][0] + wedge_surf_phy_coords[w][1][0]);
353 double J_0_1 = tmpcse_J_1*(-wedge_surf_phy_coords[w][0][0] + wedge_surf_phy_coords[w][2][0]);
354 double J_0_2 = tmpcse_J_0*(tmpcse_J_2*wedge_surf_phy_coords[w][0][0] + qp_array[q][0]*wedge_surf_phy_coords[w][1][0] + qp_array[q][1]*wedge_surf_phy_coords[w][2][0]);
355 double J_1_0 = tmpcse_J_1*(-wedge_surf_phy_coords[w][0][1] + wedge_surf_phy_coords[w][1][1]);
356 double J_1_1 = tmpcse_J_1*(-wedge_surf_phy_coords[w][0][1] + wedge_surf_phy_coords[w][2][1]);
357 double J_1_2 = tmpcse_J_0*(tmpcse_J_2*wedge_surf_phy_coords[w][0][1] + qp_array[q][0]*wedge_surf_phy_coords[w][1][1] + qp_array[q][1]*wedge_surf_phy_coords[w][2][1]);
358 double J_2_0 = tmpcse_J_1*(-wedge_surf_phy_coords[w][0][2] + wedge_surf_phy_coords[w][1][2]);
359 double J_2_1 = tmpcse_J_1*(-wedge_surf_phy_coords[w][0][2] + wedge_surf_phy_coords[w][2][2]);
360 double J_2_2 = tmpcse_J_0*(tmpcse_J_2*wedge_surf_phy_coords[w][0][2] + qp_array[q][0]*wedge_surf_phy_coords[w][1][2] + qp_array[q][1]*wedge_surf_phy_coords[w][2][2]);
361 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 + 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;
362 double tmpcse_J_invT_0 = 1.0/J_det;
363 double J_invT_cse_0_0 = tmpcse_J_invT_0*(J_1_1*J_2_2 - J_1_2*J_2_1);
364 double J_invT_cse_0_1 = tmpcse_J_invT_0*(-J_1_0*J_2_2 + J_1_2*J_2_0);
365 double J_invT_cse_0_2 = tmpcse_J_invT_0*(J_1_0*J_2_1 - J_1_1*J_2_0);
366 double J_invT_cse_1_0 = tmpcse_J_invT_0*(-J_0_1*J_2_2 + J_0_2*J_2_1);
367 double J_invT_cse_1_1 = tmpcse_J_invT_0*(J_0_0*J_2_2 - J_0_2*J_2_0);
368 double J_invT_cse_1_2 = tmpcse_J_invT_0*(-J_0_0*J_2_1 + J_0_1*J_2_0);
369 double J_invT_cse_2_0 = tmpcse_J_invT_0*(J_0_1*J_1_2 - J_0_2*J_1_1);
370 double J_invT_cse_2_1 = tmpcse_J_invT_0*(-J_0_0*J_1_2 + J_0_2*J_1_0);
371 double J_invT_cse_2_2 = tmpcse_J_invT_0*(J_0_0*J_1_1 - J_0_1*J_1_0);
373 double scalar_grad[6][3] = {0};
374 double tmpcse_grad_i_0 = (1.0/2.0)*qp_array[q][2];
375 double tmpcse_grad_i_1 = tmpcse_grad_i_0 - 1.0/2.0;
376 double tmpcse_grad_i_2 = (1.0/2.0)*qp_array[q][0];
377 double tmpcse_grad_i_3 = (1.0/2.0)*qp_array[q][1];
378 double tmpcse_grad_i_4 = tmpcse_grad_i_2 + tmpcse_grad_i_3 - 1.0/2.0;
379 double tmpcse_grad_i_5 = J_invT_cse_0_2*tmpcse_grad_i_2;
380 double tmpcse_grad_i_6 = -tmpcse_grad_i_1;
381 double tmpcse_grad_i_7 = J_invT_cse_1_2*tmpcse_grad_i_2;
382 double tmpcse_grad_i_8 = J_invT_cse_2_2*tmpcse_grad_i_2;
383 double tmpcse_grad_i_9 = J_invT_cse_0_2*tmpcse_grad_i_3;
384 double tmpcse_grad_i_10 = J_invT_cse_1_2*tmpcse_grad_i_3;
385 double tmpcse_grad_i_11 = J_invT_cse_2_2*tmpcse_grad_i_3;
386 double tmpcse_grad_i_12 = tmpcse_grad_i_0 + 1.0/2.0;
387 double tmpcse_grad_i_13 = -tmpcse_grad_i_12;
388 double tmpcse_grad_i_14 = -tmpcse_grad_i_4;
389 scalar_grad[0][0] = J_invT_cse_0_0*tmpcse_grad_i_1 + J_invT_cse_0_1*tmpcse_grad_i_1 + J_invT_cse_0_2*tmpcse_grad_i_4;
390 scalar_grad[0][1] = J_invT_cse_1_0*tmpcse_grad_i_1 + J_invT_cse_1_1*tmpcse_grad_i_1 + J_invT_cse_1_2*tmpcse_grad_i_4;
391 scalar_grad[0][2] = J_invT_cse_2_0*tmpcse_grad_i_1 + J_invT_cse_2_1*tmpcse_grad_i_1 + J_invT_cse_2_2*tmpcse_grad_i_4;
392 scalar_grad[1][0] = J_invT_cse_0_0*tmpcse_grad_i_6 - tmpcse_grad_i_5;
393 scalar_grad[1][1] = J_invT_cse_1_0*tmpcse_grad_i_6 - tmpcse_grad_i_7;
394 scalar_grad[1][2] = J_invT_cse_2_0*tmpcse_grad_i_6 - tmpcse_grad_i_8;
395 scalar_grad[2][0] = J_invT_cse_0_1*tmpcse_grad_i_6 - tmpcse_grad_i_9;
396 scalar_grad[2][1] = J_invT_cse_1_1*tmpcse_grad_i_6 - tmpcse_grad_i_10;
397 scalar_grad[2][2] = J_invT_cse_2_1*tmpcse_grad_i_6 - tmpcse_grad_i_11;
398 scalar_grad[3][0] = J_invT_cse_0_0*tmpcse_grad_i_13 + J_invT_cse_0_1*tmpcse_grad_i_13 + J_invT_cse_0_2*tmpcse_grad_i_14;
399 scalar_grad[3][1] = J_invT_cse_1_0*tmpcse_grad_i_13 + J_invT_cse_1_1*tmpcse_grad_i_13 + J_invT_cse_1_2*tmpcse_grad_i_14;
400 scalar_grad[3][2] = J_invT_cse_2_0*tmpcse_grad_i_13 + J_invT_cse_2_1*tmpcse_grad_i_13 + J_invT_cse_2_2*tmpcse_grad_i_14;
401 scalar_grad[4][0] = J_invT_cse_0_0*tmpcse_grad_i_12 + tmpcse_grad_i_5;
402 scalar_grad[4][1] = J_invT_cse_1_0*tmpcse_grad_i_12 + tmpcse_grad_i_7;
403 scalar_grad[4][2] = J_invT_cse_2_0*tmpcse_grad_i_12 + tmpcse_grad_i_8;
404 scalar_grad[5][0] = J_invT_cse_0_1*tmpcse_grad_i_12 + tmpcse_grad_i_9;
405 scalar_grad[5][1] = J_invT_cse_1_1*tmpcse_grad_i_12 + tmpcse_grad_i_10;
406 scalar_grad[5][2] = J_invT_cse_2_1*tmpcse_grad_i_12 + tmpcse_grad_i_11;
409 double grad_u[3][3] = {0};
412 for (dimj = 0; dimj < 3; dimj += 1) {
413 if (diagonal_ ==
false) {
414 for (node_idx = cmb_shift; node_idx < 6 - surface_shift; node_idx += 1) {
416 double E_grad_trial[3][3] = {0};
417 E_grad_trial[0][dimj] = scalar_grad[node_idx][0];
418 E_grad_trial[1][dimj] = scalar_grad[node_idx][1];
419 E_grad_trial[2][dimj] = scalar_grad[node_idx][2];
420 double tmpcse_symgrad_trial_0 = 0.5*E_grad_trial[0][1] + 0.5*E_grad_trial[1][0];
421 double tmpcse_symgrad_trial_1 = 0.5*E_grad_trial[0][2] + 0.5*E_grad_trial[2][0];
422 double tmpcse_symgrad_trial_2 = 0.5*E_grad_trial[1][2] + 0.5*E_grad_trial[2][1];
423 grad_u[0][0] = 1.0*E_grad_trial[0][0]*src_local_hex[dimj][w][node_idx] + grad_u[0][0];
424 grad_u[0][1] = tmpcse_symgrad_trial_0*src_local_hex[dimj][w][node_idx] + grad_u[0][1];
425 grad_u[0][2] = tmpcse_symgrad_trial_1*src_local_hex[dimj][w][node_idx] + grad_u[0][2];
426 grad_u[1][0] = tmpcse_symgrad_trial_0*src_local_hex[dimj][w][node_idx] + grad_u[1][0];
427 grad_u[1][1] = 1.0*E_grad_trial[1][1]*src_local_hex[dimj][w][node_idx] + grad_u[1][1];
428 grad_u[1][2] = tmpcse_symgrad_trial_2*src_local_hex[dimj][w][node_idx] + grad_u[1][2];
429 grad_u[2][0] = tmpcse_symgrad_trial_1*src_local_hex[dimj][w][node_idx] + grad_u[2][0];
430 grad_u[2][1] = tmpcse_symgrad_trial_2*src_local_hex[dimj][w][node_idx] + grad_u[2][1];
431 grad_u[2][2] = 1.0*E_grad_trial[2][2]*src_local_hex[dimj][w][node_idx] + grad_u[2][2];
432 div_u = div_u + E_grad_trial[dimj][dimj]*src_local_hex[dimj][w][node_idx];
437 for (dimi = 0; dimi < 3; dimi += 1) {
438 if (diagonal_ ==
false) {
439 for (node_idx = cmb_shift; node_idx < 6 - surface_shift; node_idx += 1) {
441 double E_grad_test[3][3] = {0};
442 E_grad_test[0][dimi] = scalar_grad[node_idx][0];
443 E_grad_test[1][dimi] = scalar_grad[node_idx][1];
444 E_grad_test[2][dimi] = scalar_grad[node_idx][2];
445 double tmpcse_symgrad_test_0 = 0.5*E_grad_test[0][1] + 0.5*E_grad_test[1][0];
446 double tmpcse_symgrad_test_1 = 0.5*E_grad_test[0][2] + 0.5*E_grad_test[2][0];
447 double tmpcse_symgrad_test_2 = 0.5*E_grad_test[1][2] + 0.5*E_grad_test[2][1];
448 double tmpcse_pairing_0 = 2*tmpcse_symgrad_test_0;
449 double tmpcse_pairing_1 = 2*tmpcse_symgrad_test_1;
450 double tmpcse_pairing_2 = 2*tmpcse_symgrad_test_2;
451 dst_array[dimi][w][node_idx] = k_eval*(-0.66666666666666663*div_u*E_grad_test[dimi][dimi] + tmpcse_pairing_0*grad_u[0][1] + tmpcse_pairing_0*grad_u[1][0] + tmpcse_pairing_1*grad_u[0][2] + tmpcse_pairing_1*grad_u[2][0] + tmpcse_pairing_2*grad_u[1][2] + tmpcse_pairing_2*grad_u[2][1] + 2.0*E_grad_test[0][0]*grad_u[0][0] + 2.0*E_grad_test[1][1]*grad_u[1][1] + 2.0*E_grad_test[2][2]*grad_u[2][2])*fabs(J_det)*qw_array[q] + dst_array[dimi][w][node_idx];
456 for (dim_diagBC = 0; dim_diagBC < 3; dim_diagBC += 1) {
457 if (diagonal_ || treat_boundary_ && (r_cell == 0 || r_cell + 1 == max_rad)) {
459 for (node_idx = surface_shift; node_idx < 6 - cmb_shift; node_idx += 1) {
461 double E_grad_test[3][3] = {0};
462 E_grad_test[0][dim_diagBC] = scalar_grad[node_idx][0];
463 E_grad_test[1][dim_diagBC] = scalar_grad[node_idx][1];
464 E_grad_test[2][dim_diagBC] = scalar_grad[node_idx][2];
466 double grad_u_diag[3][3] = {0};
467 double tmpcse_symgrad_test_0 = 0.5*E_grad_test[0][1] + 0.5*E_grad_test[1][0];
468 double tmpcse_symgrad_test_1 = 0.5*E_grad_test[0][2] + 0.5*E_grad_test[2][0];
469 double tmpcse_symgrad_test_2 = 0.5*E_grad_test[1][2] + 0.5*E_grad_test[2][1];
470 grad_u_diag[0][0] = 1.0*E_grad_test[0][0]*src_local_hex[dim_diagBC][w][node_idx];
471 grad_u_diag[0][1] = tmpcse_symgrad_test_0*src_local_hex[dim_diagBC][w][node_idx];
472 grad_u_diag[0][2] = tmpcse_symgrad_test_1*src_local_hex[dim_diagBC][w][node_idx];
473 grad_u_diag[1][0] = tmpcse_symgrad_test_0*src_local_hex[dim_diagBC][w][node_idx];
474 grad_u_diag[1][1] = 1.0*E_grad_test[1][1]*src_local_hex[dim_diagBC][w][node_idx];
475 grad_u_diag[1][2] = tmpcse_symgrad_test_2*src_local_hex[dim_diagBC][w][node_idx];
476 grad_u_diag[2][0] = tmpcse_symgrad_test_1*src_local_hex[dim_diagBC][w][node_idx];
477 grad_u_diag[2][1] = tmpcse_symgrad_test_2*src_local_hex[dim_diagBC][w][node_idx];
478 grad_u_diag[2][2] = 1.0*E_grad_test[2][2]*src_local_hex[dim_diagBC][w][node_idx];
479 double tmpcse_pairing_0 = 4*src_local_hex[dim_diagBC][w][node_idx];
480 double tmpcse_pairing_1 = 2.0*src_local_hex[dim_diagBC][w][node_idx];
481 dst_array[dim_diagBC][w][node_idx] = k_eval*(tmpcse_pairing_0*pow(tmpcse_symgrad_test_0, 2) + tmpcse_pairing_0*pow(tmpcse_symgrad_test_1, 2) + tmpcse_pairing_0*pow(tmpcse_symgrad_test_2, 2) + tmpcse_pairing_1*pow(E_grad_test[0][0], 2) + tmpcse_pairing_1*pow(E_grad_test[1][1], 2) + tmpcse_pairing_1*pow(E_grad_test[2][2], 2) - 0.66666666666666663*pow(E_grad_test[dim_diagBC][dim_diagBC], 2)*src_local_hex[dim_diagBC][w][node_idx])*fabs(J_det)*qw_array[q] + dst_array[dim_diagBC][w][node_idx];
488for (dim_add = 0; dim_add < 3; dim_add += 1) {
489 Kokkos::atomic_add(&dst_(local_subdomain_id, x_cell, y_cell, r_cell, dim_add), dst_array[dim_add][0][0]);
490 Kokkos::atomic_add(&dst_(local_subdomain_id, x_cell + 1, y_cell, r_cell, dim_add), dst_array[dim_add][0][1] + dst_array[dim_add][1][2]);
491 Kokkos::atomic_add(&dst_(local_subdomain_id, x_cell, y_cell + 1, r_cell, dim_add), dst_array[dim_add][0][2] + dst_array[dim_add][1][1]);
492 Kokkos::atomic_add(&dst_(local_subdomain_id, x_cell, y_cell, r_cell + 1, dim_add), dst_array[dim_add][0][3]);
493 Kokkos::atomic_add(&dst_(local_subdomain_id, x_cell + 1, y_cell, r_cell + 1, dim_add), dst_array[dim_add][0][4] + dst_array[dim_add][1][5]);
494 Kokkos::atomic_add(&dst_(local_subdomain_id, x_cell, y_cell + 1, r_cell + 1, dim_add), dst_array[dim_add][0][5] + dst_array[dim_add][1][4]);
495 Kokkos::atomic_add(&dst_(local_subdomain_id, x_cell + 1, y_cell + 1, r_cell, dim_add), dst_array[dim_add][1][0]);
496 Kokkos::atomic_add(&dst_(local_subdomain_id, x_cell + 1, y_cell + 1, r_cell + 1, dim_add), dst_array[dim_add][1][3]);
502 A[0] = lmatrices_( local_subdomain_id, x_cell, y_cell, r_cell, 0 );
503 A[1] = lmatrices_( local_subdomain_id, x_cell, y_cell, r_cell, 1 );
512 if ( storeLMatrices_ )
515 lmatrices_( local_subdomain_id, x_cell, y_cell, r_cell, 0 ) = A[0];
516 lmatrices_( local_subdomain_id, x_cell, y_cell, r_cell, 1 ) = A[1];
521 for (
int dimj = 0; dimj < 3; dimj++ )
525 src_d, local_subdomain_id, x_cell, y_cell, r_cell, dimj, src_ );
539 dst[0] = A[0] * src[0];
540 dst[1] = A[1] * src[1];
543 for (
int dimi = 0; dimi < 3; dimi++ )
550 dst_, local_subdomain_id, x_cell, y_cell, r_cell, dimi, dst_d );