50 Stencil stencil(0, 2);
54 if ((f =
num_faces(i)) < domaine.nb_faces() && fcl(f, 0) < 2)
55 for (j = 0; j < 2 && (e = f_e(f, j)) >= 0; j++)
56 if (e < domaine.nb_elem())
57 for (d = 0; d < D; d++)
58 for (n = 0; n < N; n++) stencil.
append_line(N * (nf_tot + D * e + d) + n, N * f + n);
59 tableau_trier_retirer_doublons(stencil);
70 const DoubleTab& vit = la_vitesse->valeurs(), &nf = domaine.face_normales(), &vfd = domaine.volumes_entrelaces_dir(), &xv = domaine.xv(), &xp = domaine.xp(),
74 Matrice_Morse *mat = matrices.count(nom_inco) ? matrices.at(nom_inco) :
nullptr;
76 int poly_v2 = sub_type(
Domaine_PolyMAC_MPFA, domaine), semi = (int)semi_impl.count(nom_inco), d, D =
dimension, nf_tot = domaine.nb_faces_tot();
79 if ((f =
num_faces(i)) < domaine.nb_faces())
83 for (aar_f = 0, j = 0; j < 2 && (e = f_e(f, j)) >= 0; j++)
84 for (n = 0; n < N; n++) aar_f(n) += vfd(f, j) / vf(f) * (*a_r)(e, n) * (*alpha)(e, n);
87 if (!poly_v2 || fcl(f, 0) < 2)
89 for (n = 0; n < N; n++) secmem(f, n) -= 0.5 * fac * aar_f(n) * vit(f, n) * std::fabs(vit(f, n));
91 for (n = 0; n < N; n++) (*mat)(N * f + n, N * f + n) += fac * aar_f(n) * std::fabs(vit(f, n));
94 for (j = 0; j < 2 && (e = f_e(f, j)) >= 0; j++)
95 if (e < domaine.nb_elem())
97 for (d = 0; d < D; d++)
98 for (n = 0; n < N; n++)
99 secmem(nf_tot + D * e + d, n) += (j ? -1 : 1) * fs(f) * (xv(f, d) - xp(e, d)) * 0.5 * fac * aar_f(n) * vit(f, n) * std::fabs(vit(f, n));
100 if (mat && !semi && fcl(f, 0) < 2)
101 for (d = 0; d < D; d++)
102 for (n = 0; n < N; n++)
103 (*mat)(N * (nf_tot + D * e + d) + n, N * f + n) -= (j ? -1 : 1) * fs(f) * (xv(f, d) - xp(e, d)) * fac * aar_f(n) * std::fabs(vit(f, n));