65 kernels::idx3 idx_FLR(basisSize, basisSize, numberOfVariables);
67 T FLn, FLm, FLl, FRn, FRm, FRl;
68 T FLx, FLy, FLz, FRx, FRy, FRz;
69 T FL_n, FL_m, FL_l, FR_n, FR_m, FR_l;
70 T FL_x, FL_y, FL_z, FR_x, FR_y, FR_z;
72 for (
int i = 0; i < basisSize; i++) {
74 for (
int j = 0; j < basisSize; j++) {
76 const T* Q_p = QR + idx_QLR(i, j, 0);
77 const T* Q_m = QL + idx_QLR(i, j, 0);
79 T* F_m = FL + idx_FLR(i, j, 0);
80 T* F_p = FR + idx_FLR(i, j, 0);
81 T rho_m, cp_m, cs_m, mu_m, lam_m;
82 T rho_p, cp_p, cs_p, mu_p, lam_p;
87 T n_m[3], m_m[3], l_m[3];
88 T n_p[3], m_p[3], l_p[3];
120 T zs_m = rho_m * cs_m;
121 T zs_p = rho_p * cs_p;
123 T zp_m = rho_m * cp_m;
124 T zp_p = rho_p * cp_p;
127 assertion3(!(zp_p <= 0.0 || zp_m <= 0.0),
"Impedance must be greater than zero !", zp_p, zp_m);
131 T vn_hat_p, vm_hat_p, vl_hat_p;
132 T Tn_hat_p, Tm_hat_p, Tl_hat_p;
133 T vn_hat_m, vm_hat_m, vl_hat_m;
134 T Tn_hat_m, Tm_hat_m, Tl_hat_m;
136 if (isBoundaryFace) {
138 T r = faceIndex == surface ? 1 : 0;
177 riemannSolverNodal(vn_p, vn_m, Tn_p, Tn_m, zp_p, zp_m, vn_hat_p, vn_hat_m, Tn_hat_p, Tn_hat_m);
178 riemannSolverNodal(vm_p, vm_m, Tm_p, Tm_m, zs_p, zs_m, vm_hat_p, vm_hat_m, Tm_hat_p, Tm_hat_m);
179 riemannSolverNodal(vl_p, vl_m, Tl_p, Tl_m, zs_p, zs_m, vl_hat_p, vl_hat_m, Tl_hat_p, Tl_hat_m);
219 F_p[Shortcuts::v + 0] = norm_p / rho_p * FRx;
220 F_m[Shortcuts::v + 0] = norm_m / rho_m * FLx;
222 F_p[Shortcuts::v + 1] = norm_p / rho_p * FRy;
223 F_m[Shortcuts::v + 1] = norm_m / rho_m * FLy;
225 F_p[Shortcuts::v + 2] = norm_p / rho_p * FRz;
226 F_m[Shortcuts::v + 2] = norm_m / rho_m * FLz;
228 F_m[Shortcuts::sigma + 0] = norm_m * ((2 * mu_m + lam_m) * n_m[0] * FL_x + lam_m * n_m[1] * FL_y + lam_m * n_m[2] * FL_z);
229 F_m[Shortcuts::sigma + 1] = norm_m * ((2 * mu_m + lam_m) * n_m[1] * FL_y + lam_m * n_m[0] * FL_x + lam_m * n_m[2] * FL_z);
230 F_m[Shortcuts::sigma + 2] = norm_m * ((2 * mu_m + lam_m) * n_m[2] * FL_z + lam_m * n_m[0] * FL_x + lam_m * n_m[1] * FL_y);
232 F_p[Shortcuts::sigma + 0] = -norm_p
233 * ((2 * mu_p + lam_p) * n_p[0] * FR_x + lam_p * n_p[1] * FR_y + lam_p * n_p[2] * FR_z);
234 F_p[Shortcuts::sigma + 1] = -norm_p
235 * ((2 * mu_p + lam_p) * n_p[1] * FR_y + lam_p * n_p[0] * FR_x + lam_p * n_p[2] * FR_z);
236 F_p[Shortcuts::sigma + 2] = -norm_p
237 * ((2 * mu_p + lam_p) * n_p[2] * FR_z + lam_p * n_p[0] * FR_x + lam_p * n_p[1] * FR_y);
239 F_m[Shortcuts::sigma + 3] = norm_m * mu_m * (n_m[1] * FL_x + n_m[0] * FL_y);
240 F_m[Shortcuts::sigma + 4] = norm_m * mu_m * (n_m[2] * FL_x + n_m[0] * FL_z);
241 F_m[Shortcuts::sigma + 5] = norm_m * mu_m * (n_m[2] * FL_y + n_m[1] * FL_z);
243 F_p[Shortcuts::sigma + 3] = -norm_p * mu_p * (n_p[1] * FR_x + n_p[0] * FR_y);
244 F_p[Shortcuts::sigma + 4] = -norm_p * mu_p * (n_p[2] * FR_x + n_p[0] * FR_z);
245 F_p[Shortcuts::sigma + 5] = -norm_p * mu_p * (n_p[2] * FR_y + n_p[1] * FR_z);