69 if (nf == 0) {
return; }
76 auto A_int =
Reshape(ea_data_int_tmp.
Read(), faceDofs, faceDofs, 2, nf);
77 auto A_ext =
Reshape(ea_data_ext_tmp.
Read(), faceDofs, faceDofs, 2, nf);
82 for (
int i = 0; i < faceDofs; i++)
84 for (
int j = 0; j < faceDofs; j++)
86 const real_t a_int0 = A_int(i, j, 0,
f);
87 const real_t a_int1 = A_int(i, j, 1,
f);
88 const real_t a_ext0 = A_ext(i, j, 0,
f);
89 const real_t a_ext1 = A_ext(i, j, 1,
f);
90 AT_int(j, i, 0,
f) += a_int0;
91 AT_int(j, i, 1,
f) += a_int1;
92 AT_ext(j, i, 0,
f) += a_ext1;
93 AT_ext(j, i, 1,
f) += a_ext0;
106 for (
int i = 0; i < faceDofs; i++)
108 for (
int j = i+1; j < faceDofs; j++)
110 const real_t aij_int0 = A_int(i, j, 0,
f);
111 const real_t aij_int1 = A_int(i, j, 1,
f);
112 const real_t aji_int0 = A_int(j, i, 0,
f);
113 const real_t aji_int1 = A_int(j, i, 1,
f);
114 A_int(j, i, 0,
f) = aij_int0;
115 A_int(j, i, 1,
f) = aij_int1;
116 A_int(i, j, 0,
f) = aji_int0;
117 A_int(i, j, 1,
f) = aji_int1;
120 for (
int i = 0; i < faceDofs; i++)
122 for (
int j = 0; j < faceDofs; j++)
124 const real_t aij_ext0 = A_ext(i, j, 0,
f);
125 const real_t aji_ext1 = A_ext(j, i, 1,
f);
126 A_ext(j, i, 1,
f) = aij_ext0;
127 A_ext(i, j, 0,
f) = aji_ext1;
139 if (nf == 0) {
return; }
145 auto A_bdr =
Reshape(ea_data_bdr_tmp.
Read(), faceDofs, faceDofs, nf);
149 for (
int i = 0; i < faceDofs; i++)
151 for (
int j = 0; j < faceDofs; j++)
153 const real_t a_bdr = A_bdr(i, j,
f);
154 AT_bdr(j, i,
f) += a_bdr;
166 for (
int i = 0; i < faceDofs; i++)
168 for (
int j = i+1; j < faceDofs; j++)
170 const real_t aij_bdr = A_bdr(i, j,
f);
171 const real_t aji_bdr = A_bdr(j, i,
f);
172 A_bdr(j, i,
f) = aij_bdr;
173 A_bdr(i, j,
f) = aji_bdr;
MFEM_HOST_DEVICE DeviceTensor< sizeof...(Dims), T > Reshape(T *ptr, Dims... dims)
Wrap a pointer as a DeviceTensor with automatically deduced template parameters.