63 for (
int n_bord = 0; n_bord < domaine_VEF.
nb_front_Cl(); n_bord++)
65 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter apres nb_compo= 1 nbords, resu", resu);
69 int nb_faces_bord = le_bord.
nb_faces();
71 int num2 = nb_faces_bord;
77 for (
int ind_face = num1; ind_face < num2; ind_face++)
79 const int num_face = le_bord.
num_face(ind_face), elem1 = face_voisins(num_face, 0);
81 double d_mu = mu + mu_turb(elem1);
82 for (
int i = 0; i < nb_faces_elem; i++)
84 const int j = elem_faces(elem1, i);
85 if ((j > num_face) && (j != fac_asso))
87 const double valA = viscA_Q1(domaine_VEF, num_face, j,
dimension, elem1, d_mu);
88 resu(num_face, 0) += valA * inconnue(j, 0) * porosite_face(num_face);
89 resu(num_face, 0) -= valA * inconnue(num_face, 0) * porosite_face(num_face);
90 resu(j, 0) += 0.5 * valA * inconnue(num_face, 0) * porosite_face(j);
91 resu(j, 0) -= 0.5 * valA * inconnue(j, 0) * porosite_face(j);
94 const int elem2 = face_voisins(num_face, 1);
95 d_mu = mu + mu_turb(elem2);
96 for (
int i = 0; i < nb_faces_elem; i++)
98 const int j = elem_faces(elem2, i);
99 if ((j > num_face) && (j != fac_asso))
101 const double valA = viscA_Q1(domaine_VEF, num_face, j,
dimension, elem2, d_mu);
102 resu(num_face, 0) += valA * inconnue(j, 0) * porosite_face(num_face);
103 resu(num_face, 0) -= valA * inconnue(num_face, 0) * porosite_face(num_face);
104 resu(j, 0) += 0.5 * valA * inconnue(num_face, 0) * porosite_face(j);
105 resu(j, 0) -= 0.5 * valA * inconnue(j, 0) * porosite_face(j);
111 for (
int ind_face = num1; ind_face < num2; ind_face++)
113 const int num_face = le_bord.
num_face(ind_face), elem1 = face_voisins(num_face, 0);
114 const double d_mu = mu + mu_turb(elem1);
115 for (
int i = 0; i < nb_faces_elem; i++)
117 const int j = elem_faces(elem1, i);
120 const double valA = viscA_Q1(domaine_VEF, num_face, j,
dimension, elem1, d_mu);
121 resu(num_face, 0) += valA * inconnue(j, 0) * porosite_face(num_face);
122 resu(num_face, 0) -= valA * inconnue(num_face, 0) * porosite_face(num_face);
123 resu(j, 0) += valA * inconnue(num_face, 0) * porosite_face(j);
124 resu(j, 0) -= valA * inconnue(j, 0) * porosite_face(j);
130 for (
int n_bord = 0; n_bord < domaine_VEF.
nb_front_Cl(); n_bord++)
132 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter apres nb_compo> 1 nbords, resu", resu);
138 int nb_faces_bord = le_bord.
nb_faces();
140 int num2 = nb_faces_bord;
146 for (
int ind_face = num1; ind_face < num2; ind_face++)
148 const int num_face = le_bord.
num_face(ind_face), elem1 = face_voisins(num_face, 0);
150 double d_mu = mu + mu_turb(elem1);
151 for (
int i = 0; i < nb_faces_elem; i++)
153 const int j = elem_faces(elem1, i);
154 if ((j > num_face) && (j != fac_asso))
156 const double valA = viscA_Q1(domaine_VEF, num_face, j,
dimension, elem1, d_mu);
157 for (
int nc = 0; nc < nb_comp; nc++)
159 resu(num_face, nc) += valA * inconnue(j, nc) * porosite_face(num_face);
160 resu(num_face, nc) -= valA * inconnue(num_face, nc) * porosite_face(num_face);
161 resu(j, nc) += 0.5 * valA * inconnue(num_face, nc) * porosite_face(j);
162 resu(j, nc) -= 0.5 * valA * inconnue(j, nc) * porosite_face(j);
166 const int elem2 = face_voisins(num_face, 1);
167 d_mu = mu + mu_turb(elem2);
168 for (
int i = 0; i < nb_faces_elem; i++)
170 const int j = elem_faces(elem2, i);
171 if ((j > num_face) && (j != fac_asso))
173 const double valA = viscA_Q1(domaine_VEF, num_face, j,
dimension, elem2, d_mu);
174 for (
int nc = 0; nc < nb_comp; nc++)
176 resu(num_face, nc) += valA * inconnue(j, nc) * porosite_face(num_face);
177 resu(num_face, nc) -= valA * inconnue(num_face, nc) * porosite_face(num_face);
178 resu(j, nc) += 0.5 * valA * inconnue(num_face, nc) * porosite_face(j);
179 resu(j, nc) -= 0.5 * valA * inconnue(j, nc) * porosite_face(j);
184 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter apres periodique , resu", resu);
189 if (le_modele_turbulence->utiliser_loi_paroi())
193 for (
int ind_face = num1; ind_face < num2; ind_face++)
195 const int num_face = le_bord.
num_face(ind_face);
196 int elem = face_voisins(num_face, 0);
199 n[0] = face_normale(num_face, 0);
200 n[1] = face_normale(num_face, 1);
203 Tgrad(0, 0) =
tau_tan_(num_face, 0) * n[1] * n[0];
204 Tgrad(0, 1) =
tau_tan_(num_face, 0) * n[1] * n[1];
205 Tgrad(1, 0) = -
tau_tan_(num_face, 0) * n[0] * n[0];
206 Tgrad(1, 1) = -
tau_tan_(num_face, 0) * n[0] * n[1];
209 for (
int i = 0; i < nb_faces_elem; i++)
211 const int j = elem_faces(elem, i);
213 signe += (inconnue(j, 1) - inconnue(num_face, 1)) * face_normale(num_face, 0) - (inconnue(j, 0) - inconnue(num_face, 0)) * face_normale(num_face, 1);
220 for (
int i = 0; i < nb_faces_elem; i++)
222 const int j = elem_faces(elem, i);
227 for (
int nc = 0; nc < nb_comp; nc++)
228 resu(j, nc) -= ori * signe * (Tgrad(nc, 0) * face_normale(j, 0) + Tgrad(nc, 1) * face_normale(j, 1)) * porosite_face(j);
231 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter apres dirichlet dim2, resu", resu);
235 for (
int ind_face = num1; ind_face < num2; ind_face++)
237 const int num_face = le_bord.
num_face(ind_face);
238 int elem = face_voisins(num_face, 0);
241 n[0] = face_normale(num_face, 0);
242 n[1] = face_normale(num_face, 1);
243 n[2] = face_normale(num_face, 2);
247 Tgrad(0, 0) =
tau_tan_(num_face, 0) * n[0];
248 Tgrad(0, 1) =
tau_tan_(num_face, 0) * n[1];
249 Tgrad(0, 2) =
tau_tan_(num_face, 0) * n[2];
250 Tgrad(1, 0) =
tau_tan_(num_face, 1) * n[0];
251 Tgrad(1, 1) =
tau_tan_(num_face, 1) * n[1];
252 Tgrad(1, 2) =
tau_tan_(num_face, 1) * n[2];
253 Tgrad(2, 0) =
tau_tan_(num_face, 2) * n[0];
254 Tgrad(2, 1) =
tau_tan_(num_face, 2) * n[1];
255 Tgrad(2, 2) =
tau_tan_(num_face, 2) * n[2];
257 for (
int i = 0; i < nb_faces_elem; i++)
259 const int j = elem_faces(elem, i);
264 for (
int nc = 0; nc < nb_comp; nc++)
265 resu(j, nc) -= ori * (Tgrad(nc, 0) * face_normale(j, 0) + Tgrad(nc, 1) * face_normale(j, 1) + Tgrad(nc, 2) * face_normale(j, 2)) * porosite_face(j);
268 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter apres dirichlet dim3, resu", resu);
271 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter apres dirichlet (je crois), resu", resu);
275 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter avant else des bords, resu", resu);
277 num2 = nb_faces_bord_tot;
278 for (
int ind_face = num1; ind_face < num2; ind_face++)
280 const int num_face = le_bord.
num_face(ind_face);
281 int elem = face_voisins(num_face, 0);
282 const double d_mu = mu + mu_turb(elem);
284 for (
int ii = 0; ii < nb_faces_elem; ii++)
286 const int j = elem_faces(elem, ii);
287 if (((j > num_face) && (ind_face < nb_faces_bord)) || ((j != num_face) && (ind_face >= nb_faces_bord)))
289 const double valA = viscA_Q1(domaine_VEF, num_face, j,
dimension, elem, d_mu);
290 for (
int nc = 0; nc < nb_comp; nc++)
292 resu(num_face, nc) += valA * inconnue(j, nc) * porosite_face(num_face);
293 resu(num_face, nc) -= valA * inconnue(num_face, nc) * porosite_face(num_face);
294 resu(j, nc) += valA * inconnue(num_face, nc) * porosite_face(j);
295 resu(j, nc) -= valA * inconnue(j, nc) * porosite_face(j);
300 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter apres else des bords, resu", resu);
304 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter apres bords, resu", resu);
309 for (
int kk = 0; kk < 2; kk++)
311 const int elem0 = face_voisins(num_face, kk);
312 const double d_mu = mu + mu_turb(elem0);
314 int rang = rang_elem_non_std(elem0);
317 for (
int i = 0; i < nb_faces_elem; i++)
319 const int j = elem_faces(elem0, i);
322 const double valA = viscA_Q1(domaine_VEF, num_face, j,
dimension, elem0, d_mu);
323 for (
int nc = 0; nc < nb_comp; nc++)
325 resu(num_face, nc) += valA * inconnue(j, nc) * porosite_face(num_face);
326 resu(num_face, nc) -= valA * inconnue(num_face, nc) * porosite_face(num_face);
327 resu(j, nc) += valA * inconnue(num_face, nc) * porosite_face(j);
328 resu(j, nc) -= valA * inconnue(j, nc) * porosite_face(j);
335 Debog::verifier(
"Op_Dift_VEF_Face_Q1::ajouter apres interne, resu", resu);
337 for (
int n_bord = 0; n_bord < domaine_VEF.
nb_front_Cl(); n_bord++)
345 int nfin = ndeb + le_bord.
nb_faces();
346 for (
int face = ndeb; face < nfin; face++)
347 for (
int comp = 0; comp < nb_comp; comp++)
348 resu(face, comp) += la_cl_paroi.
flux_impose(face - ndeb, comp) * domaine_VEF.
surface(face) * porosite_face(face);
355 int nfin = ndeb + le_bord.
nb_faces();
356 for (
int face = ndeb; face < nfin; face++)
357 for (
int comp = 0; comp < nb_comp; comp++)
358 resu(face, comp) += la_cl_paroi.
h_imp(face - ndeb, comp) * (la_cl_paroi.
T_ext(face - ndeb) - inconnue(face, comp)) * domaine_VEF.
surface(face) * porosite_face(face);
385 for (
int n_bord = 0; n_bord < domaine_VEF.
nb_front_Cl(); n_bord++)
394 for (
int num_face0 = num1; num_face0 < num2; num_face0++)
396 const int fac_asso = la_cl_perio.
face_associee(num_face0 - num1) + num1, elem1 = face_voisins(num_face0, 0);
397 double d_mu = mu + mu_turb(elem1);
398 for (
int i = 0; i < nb_faces_elem; i++)
400 const int j = elem_faces(elem1, i);
401 if ((j > num_face0) && (j != fac_asso))
403 const double valA = viscA_Q1(domaine_VEF, num_face0, j,
dimension, elem1, d_mu);
404 for (
int nc = 0; nc < nb_comp; nc++)
406 for (
auto kk = tab1[num_face0 * nb_comp + nc] - 1; kk < tab1[num_face0 * nb_comp + nc + 1] - 1; kk++)
408 if (tab2[kk] - 1 == num_face0 * nb_comp + nc)
409 coeff(kk) += valA * porosite_face(num_face0 * nb_comp + nc);
410 if (tab2[kk] - 1 == j * nb_comp + nc)
411 coeff(kk) -= 0.5 * valA * porosite_face(j * nb_comp + nc);
413 for (
auto kk = tab1[j * nb_comp + nc] - 1; kk < tab1[j * nb_comp + nc + 1] - 1; kk++)
415 if (tab2[kk] - 1 == num_face0 * nb_comp + nc)
416 coeff(kk) -= valA * porosite_face(num_face0 * nb_comp + nc);
417 if (tab2[kk] - 1 == j * nb_comp + nc)
418 coeff(kk) += 0.5 * valA * porosite_face(j * nb_comp + nc);
423 const int elem2 = face_voisins(num_face0, 1);
424 d_mu = mu + mu_turb(elem2);
425 for (
int i = 0; i < nb_faces_elem; i++)
427 const int j = elem_faces(elem2, i);
428 if ((j > num_face0) && (j != fac_asso))
430 const double valA = viscA_Q1(domaine_VEF, num_face0, j,
dimension, elem2, d_mu);
431 for (
int nc = 0; nc < nb_comp; nc++)
434 for (
auto kk = tab1[num_face0 * nb_comp + nc] - 1; kk < tab1[num_face0 * nb_comp + nc + 1] - 1; kk++)
436 if (tab2[kk] - 1 == num_face0 * nb_comp + nc)
437 coeff(kk) += valA * porosite_face(num_face0 * nb_comp + nc);
438 if (tab2[kk] - 1 == j * nb_comp + nc)
439 coeff(kk) -= 0.5 * valA * porosite_face(j * nb_comp + nc);
441 for (
auto kk = tab1[j * nb_comp + nc] - 1; kk < tab1[j * nb_comp + nc + 1] - 1; kk++)
443 if (tab2[kk] - 1 == num_face0 * nb_comp + nc)
444 coeff(kk) -= valA * porosite_face(num_face0 * nb_comp + nc);
445 if (tab2[kk] - 1 == j * nb_comp + nc)
446 coeff(kk) += 0.5 * valA * porosite_face(j * nb_comp + nc);
454 for (
int num_face = num1; num_face < num2; num_face++)
456 int elembis = face_voisins(num_face, 0);
457 const double d_mu = mu + mu_turb(elembis);
459 for (
int ii = 0; ii < nb_faces_elem; ii++)
461 const int j = elem_faces(elembis, ii);
464 const double valA = viscA_Q1(domaine_VEF, num_face, j,
dimension, elembis, d_mu);
465 for (
int nc = 0; nc < nb_comp; nc++)
467 for (
auto kk = tab1[num_face * nb_comp + nc] - 1; kk < tab1[num_face * nb_comp + nc + 1] - 1; kk++)
469 if (tab2[kk] - 1 == num_face * nb_comp + nc)
470 coeff(kk) += valA * porosite_face(num_face * nb_comp + nc);
471 if (tab2[kk] - 1 == j * nb_comp + nc)
472 coeff(kk) -= valA * porosite_face(j * nb_comp + nc);
474 for (
auto kk = tab1[j * nb_comp + nc] - 1; kk < tab1[j * nb_comp + nc + 1] - 1; kk++)
476 if (tab2[kk] - 1 == num_face * nb_comp + nc)
477 coeff(kk) -= valA * porosite_face(num_face * nb_comp + nc);
478 if (tab2[kk] - 1 == j * nb_comp + nc)
479 coeff(kk) += valA * porosite_face(j * nb_comp + nc);
488 for (
int num_face0 = domaine_VEF.
premiere_face_int(); num_face0 < n1; num_face0++)
489 for (
int ll = 0; ll < 2; ll++)
491 const int elem = face_voisins(num_face0, ll);
492 const double d_mu = mu + mu_turb(elem);
494 int rang = rang_elem_non_std(elem);
497 for (
int i = 0; i < nb_faces_elem; i++)
499 const int j = elem_faces(elem, i);
502 const double valA = viscA_Q1(domaine_VEF, num_face0, j,
dimension, elem, d_mu);
503 for (
int nc = 0; nc < nb_comp; nc++)
505 for (
auto kk = tab1[num_face0 * nb_comp + nc] - 1; kk < tab1[num_face0 * nb_comp + nc + 1] - 1; kk++)
507 if (tab2[kk] - 1 == num_face0 * nb_comp + nc)
508 coeff(kk) += valA * porosite_face(num_face0 * nb_comp + nc);
509 if (tab2[kk] - 1 == j * nb_comp + nc)
510 coeff(kk) -= valA * porosite_face(j * nb_comp + nc);
512 for (
auto kk = tab1[j * nb_comp + nc] - 1; kk < tab1[j * nb_comp + nc + 1] - 1; kk++)
514 if (tab2[kk] - 1 == num_face0 * nb_comp + nc)
515 coeff(kk) -= valA * porosite_face(num_face0 * nb_comp + nc);
516 if (tab2[kk] - 1 == j * nb_comp + nc)
517 coeff(kk) += valA * porosite_face(j * nb_comp + nc);