119 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = flux.size_array();
120 const double d0 = le_dom->dist_face_elem0_period(face,i,la_cl.
distance()), d1 = le_dom->dist_face_elem1_period(face,j,la_cl.
distance());
122 for (
int k = 0; k < ncomp; k++)
124 if (DERIVED_T::IS_MULTI_SCALAR_DIFF)
127 if (DERIVED_T::IS_ANISO)
throw;
130 for (
int l = 0; l < ncomp; l++)
132 const int comp_diff = ncomp * k + l;
135 if (nu_1(i,comp_diff) == 0.0 || nu_1(j,comp_diff) == 0.0) heq = 0.;
138 assert(nu_1(i,comp_diff) != 0.0 && nu_1(j,comp_diff) != 0.0);
139 heq = compute_heq(d0, i, d1, j, comp_diff);
141 flux[k] += DERIVED_T::IS_QUASI ? heq*(inco(j,l)/dv_mvol(j) - inco(i,l)/dv_mvol(i))*
surface(face)*
porosite(face) : heq*(inco(j,l) - inco(i,l))*
surface(face)*
porosite(face);
148 const int ori = DERIVED_T::IS_ANISO ?
orientation(face) : k;
149 if (nu_1(i,ori) == 0.0 || nu_1(j,ori) == 0.0) heq = 0.;
152 assert(nu_1(i,ori) != 0.0 && nu_1(j,ori) != 0.0);
153 heq = compute_heq(d0,i, d1,j,ori);
155 flux[k] = DERIVED_T::IS_QUASI ? heq*(inco(j,k)/dv_mvol(j) - inco(i,k)/dv_mvol(i))*
surface(face)*
porosite(face) : heq*(inco(j,k) - inco(i,k))*
surface(face)*
porosite(face);
163 if (DERIVED_T::IS_MULTI_SCALAR_DIFF)
throw;
165 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = flux.size_array();
166 const double dist = Dist_norm_bord(face);
168 if (DERIVED_T::IS_QUASI)
169 for (
int k = 0; k < ncomp; k++) flux[k] = (i != -1) ? -inco(i,k)*
surface(face)*
porosite(face)*nu_1(i,k)/dv_mvol(i)/dist : inco(j,k)*
surface(face)*
porosite(face)*nu_1(j,k)/dv_mvol(j)/dist;
171 for (
int k = 0; k < ncomp; k++) flux[k] = (i != -1) ? -inco(i,k)*
surface(face)*
porosite(face)*nu_1(i,k)/dist : inco(j,k)*
surface(face)*
porosite(face)*nu_1(j,k)/dist;
177 if (DERIVED_T::IS_MULTI_SCALAR_DIFF)
throw;
178 if (DERIVED_T::IS_QUASI) not_implemented_k_eps(__func__);
180 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = flux.size_array();
182 for (
int k = 0; k < ncomp; k++)
184 const double h = la_cl.
h_imp(face-num1,k), T_ext = la_cl.
T_ext(face-num1,k);
186 flux[k] = (i != -1) ? (phi_ext+h*(T_ext-inco(i,k)))*
surface(face) : (-phi_ext+h*(inco(j,k)-T_ext))*
surface(face);
275 if (DERIVED_T::IS_QUASI) not_implemented_k_eps(__func__);
277 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = flux.size_array();
279 if (DERIVED_T::IS_MODIF_DEQ) e = ind_Fluctu_Term()==1 ? Dist_norm_bord_externe_(face) : equivalent_distance(boundary_index,local_face);
280 else e = DERIVED_T::IS_DEQUIV ? equivalent_distance(boundary_index,local_face) : Dist_norm_bord_externe_(face);
289 const IntVect& fmap = Text.
face_map();
290 int opp_face = fmap[face-num1]+num1;
291 int elem1 = le_dom->face_voisins(opp_face, 0);
292 elem_opp = (elem1 != -1) ? elem1 : le_dom->face_voisins(opp_face, 1);
301 for (
int k = 0; k < ncomp; k++)
304 for (
int l = (DERIVED_T::IS_MULTI_SCALAR_DIFF ? 0 : k); l < (DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp : k + 1); l++)
306 const int ori = DERIVED_T::IS_MULTI_SCALAR_DIFF ? (ncomp * k + l) : (DERIVED_T::IS_ANISO ?
orientation(face) : k);
307 const double h_imp = la_cl.
h_imp(face - num1, DERIVED_T::IS_MULTI_SCALAR_DIFF ? ori : k), T_ext = (elem_opp == -1) ? la_cl.
T_ext(face - num1, l) : inco(elem_opp, l);
311 const double eps = la_cl.
emissivite(face - num1, DERIVED_T::IS_MULTI_SCALAR_DIFF ? ori : k);
312 const double Tb = newton_T_paroi_VDF(eps, h_imp, T_ext, nu_2(i, ori), e, inco(i, l));
313 flux[k] += (COEFF_STEFAN_BOLTZMANN * eps * (T_ext * T_ext * T_ext * T_ext - Tb * Tb * Tb * Tb) + h_imp * (T_ext - Tb)) *
surface(face);
317 const double heq = (nu_2(i, ori) == 0.0 || h_imp == 0.0) ? 0.0 : 1.0 / (1.0 / h_imp + e / nu_2(i, ori));
318 flux[k] += heq * (T_ext - inco(i, l)) *
surface(face);
325 for (
int k = 0; k < ncomp; k++)
328 for (
int l = (DERIVED_T::IS_MULTI_SCALAR_DIFF ? 0 : k); l < (DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp : k + 1); l++)
330 const int ori = DERIVED_T::IS_MULTI_SCALAR_DIFF ? (ncomp * k + l) : (DERIVED_T::IS_ANISO ?
orientation(face) : k);
331 const double h_imp = la_cl.
h_imp(face - num1, DERIVED_T::IS_MULTI_SCALAR_DIFF ? ori : k), T_ext = (elem_opp == -1) ? la_cl.
T_ext(face - num1, l) : inco(elem_opp, l);
335 const double eps = la_cl.
emissivite(face - num1, DERIVED_T::IS_MULTI_SCALAR_DIFF ? ori : k);
336 const double Tb = newton_T_paroi_VDF(eps, h_imp, T_ext, nu_2(j, ori), e, inco(j, l));
337 flux[k] += (COEFF_STEFAN_BOLTZMANN * eps * (Tb * Tb * Tb * Tb - T_ext * T_ext * T_ext * T_ext) + h_imp * (Tb - T_ext)) *
surface(face);
341 const double heq = (nu_2(j, ori) == 0.0 || h_imp == 0.0) ? 0.0 : 1.0 / (1.0 / h_imp + e / nu_2(j, ori));
342 flux[k] += heq * (inco(j, l) - T_ext) *
surface(face);
352 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = flux.size_array();
353 double heq, d0 = Dist_face_elem0(face,i), d1 = Dist_face_elem1(face,j);
354 for (
int k = 0; k < ncomp; k++)
356 const int ori = DERIVED_T::IS_ANISO ?
orientation(face) : k;
357 if (DERIVED_T::IS_RANS)
359 heq = compute_heq(d0,i, d1,j,ori);
360 flux[k] = DERIVED_T::IS_QUASI ? heq*(inco(j,k)/dv_mvol(j) - inco(i,k)/dv_mvol(i))*
surface(face)*
porosite(face) :
363 else if (DERIVED_T::IS_MULTI_SCALAR_DIFF)
366 for (
int l = 0; l < ncomp; l++)
368 const int comp_diff = ncomp * k + l;
369 if (nu_1(i,comp_diff) == 0.0 || nu_1(j,comp_diff) == 0.0) heq = 0.;
372 assert(nu_1(i,comp_diff) != 0.0 && nu_1(j,comp_diff) != 0.0);
373 heq = compute_heq(d0, i, d1, j, comp_diff);
375 flux[k] += heq * (inco(j, l) - inco(i, l)) *
surface(face) *
porosite(face);
380 if (nu_1(i,ori) == 0.0 || nu_1(j,ori) == 0.0) heq = 0.;
383 assert(nu_1(i,ori) != 0.0 && nu_1(j,ori) != 0.0);
384 heq = compute_heq(d0,i, d1,j,ori);
398 assert (aii.size_array() == ajj.size_array());
399 const int i =
elem_(face,0), j =
elem_(face,1),
400 ncomp = DERIVED_T::IS_MULTI_SCALAR_DIFF ?
static_cast<int>(std::sqrt(aii.size_array())) : aii.size_array();
402 const double dist = Dist_norm_bord(face);
404 for (
int k = 0; k < ncomp; k++)
405 if (DERIVED_T::IS_MULTI_SCALAR_DIFF)
407 for (
int l = 0; l < ncomp; l++)
409 const int ori = ncomp * k + l;
410 aii[ori] = (i != -1) ?
porosite(face) * nu_1(i, ori) *
surface(face) / dist : 0.;
411 ajj[ori] = (i != -1) ? 0. :
porosite(face) * nu_1(j, ori) *
surface(face) / dist;
416 const int ori = DERIVED_T::IS_ANISO ?
orientation(face) : k;
417 aii[k] = (i != -1) ?
porosite(face) * nu_1(i, ori) *
surface(face) / dist : 0.;
418 ajj[k] = (i != -1) ? 0. :
porosite(face) * nu_1(j, ori) *
surface(face) / dist;
425 assert (aii.size_array() == ajj.size_array());
426 const int i =
elem_(face,0), j =
elem_(face,1),
427 ncomp = DERIVED_T::IS_MULTI_SCALAR_DIFF ?
static_cast<int>(std::sqrt(aii.size_array())) : aii.size_array();
429 const double dist = Dist_norm_bord(face);
431 for (
int k = 0; k < ncomp; k++)
432 if (DERIVED_T::IS_MULTI_SCALAR_DIFF)
434 for (
int l = 0; l < ncomp; l++)
436 const int ori = ncomp * k + l;
437 aii[ori] = (i != -1) ?
porosite(face) * nu_1(i, ori) *
surface(face) / dist : 0.;
438 ajj[ori] = (i != -1) ? 0. :
porosite(face) * nu_1(j, ori) *
surface(face) / dist;
443 const int ori = DERIVED_T::IS_ANISO ?
orientation(face) : k;
444 aii[k] = (i != -1) ?
porosite(face) * nu_1(i, ori) *
surface(face) / dist : 0.;
445 ajj[k] = (i != -1) ? 0. :
porosite(face) * nu_1(j, ori) *
surface(face) / dist;
452 assert (aii.size_array() == ajj.size_array());
453 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = aii.size_array();
454 const double dist = Dist_norm_bord(face);
455 for (
int k = 0; k < ncomp; k++)
457 const int ori = DERIVED_T::IS_ANISO ?
orientation(face) : k;
458 aii[k] = (i != -1) ?
porosite(face)*nu_1(i,ori)*
surface(face) / dist : 0.;
459 ajj[k] = (i != -1) ? 0. :
porosite(face)*nu_1(j,ori)*
surface(face) / dist;
466 assert (aii.size_array() == ajj.size_array());
467 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = DERIVED_T::IS_MULTI_SCALAR_DIFF ? int(sqrt(aii.size_array())) : aii.size_array();
468 const double d0 = le_dom->dist_face_elem0_period(face,i,la_cl.
distance()), d1 = le_dom->dist_face_elem1_period(face,j,la_cl.
distance());
469 for (
int k = 0; k < ncomp; k++)
471 if (DERIVED_T::IS_MULTI_SCALAR_DIFF)
473 for (
int l = 0; l < ncomp; l++)
475 const int ori = ncomp * k + l;
477 if (nu_1(i,ori) == 0.0 || nu_1(j,ori) == 0.0) heq = 0.;
480 assert(nu_1(i,ori) != 0.0 && nu_1(j,ori) != 0.0);
481 heq = compute_heq(d0, i, d1, j, ori);
489 const int ori = DERIVED_T::IS_ANISO ?
orientation(face) : k;
491 if (nu_1(i,ori) == 0.0 || nu_1(j,ori) == 0.0) heq = 0.;
494 assert(nu_1(i,ori) != 0.0 && nu_1(j,ori) != 0.0);
495 heq = compute_heq(d0, i, d1, j, ori);
505 assert (aii.size_array() == ajj.size_array());
506 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = aii.size_array();
507 const double dist = Dist_norm_bord(face);
508 if (DERIVED_T::IS_QUASI)
510 for (
int k = 0; k < ncomp; k++)
512 aii[k] = (i != -1) ?
surface(face)*
porosite(face)*nu_1(i,k)/dv_mvol(i)/dist : 0.;
513 ajj[k] = (i != -1) ? 0. :
surface(face)*
porosite(face)*nu_1(j,k)/dv_mvol(j)/dist;
517 for (
int k = 0; k < ncomp; k++)
542 assert (aii.size_array() == ajj.size_array());
543 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = DERIVED_T::IS_MULTI_SCALAR_DIFF ? int(sqrt(aii.size_array())) : aii.size_array();
544 double e, heq, h_total_inv;
546 if (DERIVED_T::IS_MODIF_DEQ) e = ind_Fluctu_Term() == 1 ? Dist_norm_bord_externe_(face) : equivalent_distance(boundary_index,local_face);
547 else e = DERIVED_T::IS_DEQUIV ? equivalent_distance(boundary_index,local_face) : Dist_norm_bord_externe_(face);
552 for (
int k = 0; k < ncomp; k++)
553 for (
int l = (DERIVED_T::IS_MULTI_SCALAR_DIFF ? 0 : k); l < (DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp : k + 1); l++)
555 const int ori = DERIVED_T::IS_MULTI_SCALAR_DIFF ? (ncomp * k + l) : (DERIVED_T::IS_ANISO ?
orientation(face) : k);
556 const double h_imp = la_cl.
h_imp(face - num1, DERIVED_T::IS_MULTI_SCALAR_DIFF ? ori : k);
557 if (nu_2(i, ori) == 0.0 || h_imp == 0.0)
561 h_total_inv = 1.0 / h_imp + e / nu_2(i, ori);
562 heq = 1.0 / h_total_inv;
564 aii[DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp * k + l : k] = heq *
surface(face);
565 ajj[DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp * k + l : k] = is_internal ? heq *
surface(face) : 0.;
569 const double eps = la_cl.
emissivite(face - num1, DERIVED_T::IS_MULTI_SCALAR_DIFF ? ori : k);
570 const double T = inco(i, l);
571 aii[DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp * k + l : k] += 4 * COEFF_STEFAN_BOLTZMANN * eps * T * T * T *
surface(face);
575 for (
int k = 0; k < ncomp; k++)
576 for (
int l = (DERIVED_T::IS_MULTI_SCALAR_DIFF ? 0 : k); l < (DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp : k + 1); l++)
578 const int ori = DERIVED_T::IS_MULTI_SCALAR_DIFF ? (ncomp * k + l) : (DERIVED_T::IS_ANISO ?
orientation(face) : k);
579 const double h_imp = la_cl.
h_imp(face - num1, DERIVED_T::IS_MULTI_SCALAR_DIFF ? ori : k);
580 if (nu_2(j, ori) == 0.0 || h_imp == 0.0)
584 h_total_inv = 1.0 / h_imp + e / nu_2(j, ori);
585 heq = 1.0 / h_total_inv;
587 ajj[DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp * k + l : k] = heq *
surface(face);
588 aii[DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp * k + l : k] = is_internal ? heq *
surface(face) : 0.;
592 const double eps = la_cl.
emissivite(face-num1, DERIVED_T::IS_MULTI_SCALAR_DIFF ? ori : k);
593 const double T = inco(j, l);
594 ajj[DERIVED_T::IS_MULTI_SCALAR_DIFF ? ncomp * k + l : k] += 4 * COEFF_STEFAN_BOLTZMANN * eps * T * T * T *
surface(face);
602 assert (aii.size_array() == ajj.size_array());
603 const int i =
elem_(face,0), j =
elem_(face,1), ncomp = DERIVED_T::IS_MULTI_SCALAR_DIFF ? int(sqrt(aii.size_array())) : aii.size_array();
604 double heq, d0 = Dist_face_elem0(face,i), d1 = Dist_face_elem1(face,j);
605 for (
int k = 0; k < ncomp; k++)
607 const int ori = DERIVED_T::IS_ANISO ?
orientation(face) : k;
608 if (DERIVED_T::IS_RANS)
610 heq = compute_heq(d0,i,d1,j,ori);
613 else if (DERIVED_T::IS_MULTI_SCALAR_DIFF)
615 for (
int l = 0; l < ncomp; l++)
617 const int comp_diff = ncomp * k + l;
618 if (nu_1(i,comp_diff) == 0.0 || nu_1(j,comp_diff) == 0.0) heq = 0.;
621 assert(nu_1(i,comp_diff) != 0.0 && nu_1(j,comp_diff) != 0.0);
622 heq = compute_heq(d0,i,d1,j,comp_diff);
630 if (nu_1(i,ori) == 0.0 || nu_1(j,ori) == 0.0) heq = 0.;
633 assert(nu_1(i,ori) != 0.0 && nu_1(j,ori) != 0.0);
634 heq = compute_heq(d0,i,d1,j,ori);