39 const DoubleVect& fs = domaine.face_surfaces();
40 const IntTab& f_e = domaine.face_voisins();
43 const int N = domaine.nb_faces();
49 for (
int f = 0; f < N; f++)
50 for (
int i = 0; i < 2; i++)
52 const int e = f_e(f, i);
53 if (e >= 0 && e < domaine.nb_elem())
55 double val = (i ? num_flux_right(f, 0) : num_flux_left(f, 0)) * fs(f);
58 val = (i ? num_flux_right(f, 1) : num_flux_left(f, 1)) * fs(f);
68 const IntTab& f_e = domaine.face_voisins();
81 const int m = interface.id_phase_pression_inter();
87 for (
int f = 0; f < domaine.nb_faces(); f++)
89 const int el = f_e(f, 0), er = f_e(f, 1);
92 double Sm = 0., Sp = 0., un_l = 0.;
93 compute_non_conservative_hll_left_bounds(vit_n, c, f, el, er, m, n, nb_phase, Sm, Sp, un_l);
96 double n_d = domaine.face_normales(f, d) / domaine.face_surfaces(f);
97 num_flux_left(f, d) = (Sp * alpha(el, 0) - Sm * alpha(er, 0)) * p(el, m) * n_d;
98 num_flux_left(f, d) /= -(Sp - Sm);
101 compute_non_conservative_hll_right_bounds(vit_n, c, f, el, er, m, n, nb_phase, Sm, Sp, un_l);
105 double n_d = -domaine.face_normales(f, d) / domaine.face_surfaces(f);
106 num_flux_right(f, d) = (Sp * alpha(er, 0) - Sm * alpha(el, 0)) * p(er, m) * n_d;
107 num_flux_right(f, d) /= -(Sp - Sm);
120 assert(er < 0 && el >= 0 && vit_n(f, 0) != -123.123);
126 std::array<double, 3> normal { 0., 0., 0. };
128 normal[d] = domaine.face_normales(f, d) / domaine.face_surfaces(f);
132 const double alpha_bord = alpha(e, 0);
135 num_flux_left(f, d) = -alpha_bord * p(e, m) * normal[d];
136 flux_bords_(f, d) = num_flux_left(f, d) * domaine.face_surfaces(f);
139 else if (sub_type(
Dirichlet, cls_qdm[fcl(f, 1)].valeur()))
141 const double alpha_bord = ref_cast(
Dirichlet, cls_alpha[fcl(f, 1)].valeur()).val_imp(fcl(f, 2), 0);
144 num_flux_left(f, d) = -alpha_bord * p(e, m) * normal[d];
145 flux_bords_(f, d) = num_flux_left(f, d) * domaine.face_surfaces(f);
151 const double alpha_bord = alpha(e, 0);
154 num_flux_left(f, d) = -alpha_bord * p(e, m) * normal[d];
155 flux_bords_(f, d) = num_flux_left(f, d) * domaine.face_surfaces(f);
160 Cerr <<
" La CL de type " << fcl(f, 0) <<
" pour l'equation " << eq.
que_suis_je() <<
" n'est pas diponible .....\n";
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.