48 const IntTab& fcl = ch.
fcl();
49 const IntTab& fcla = cha.
fcl();
50 const IntTab& f_e = domaine.face_voisins();
51 const IntTab& e_f = domaine.elem_faces();
53 const DoubleVect& vf = domaine.volumes_entrelaces();
54 const DoubleVect& fs = domaine.face_surfaces();
56 const DoubleTab& vf_dir = domaine.volumes_entrelaces_dir();
57 const DoubleTab& vit = ch.
valeurs();
59 const DoubleTab& alpha = cha.
passe();
68 const int nf_tot = domaine.nb_faces_tot();
69 const int nf = domaine.nb_faces();
70 const int ne_tot = domaine.nb_elem_tot();
73 for (
int f = 0; f < nf_tot; f ++)
76 const int e = f_e(f, 0);
79 DoubleTrav f_a_masse(N, N) ;
81 for (
int n = 0; n < N; n++)
83 f_a_masse(n, n) = ref_cast(
Neumann_paroi, clsa[fcla(f, 1)].valeur()).flux_impose(fcla(f, 2), n) * rho(e, n) ;
84 f_a(0, n) = ref_cast(
Neumann_paroi, clsa[fcla(f, 1)].valeur()).flux_impose(fcla(f, 2), n) ;
86 corr->
ajouter_inj(&f_a(0,0), &alpha(e, 0), &rho(e, 0), f_a_masse);
88 for (
int d = 0; d < D ; d++)
89 for (
int n = 0 ; n < N ; n++)
90 for (
int m = 0 ; m < N ; m++)
92 secmem(nf_tot + D * e + d, n) -= fs(f) * f_a_masse(n, m) * vit( nf_tot + D * e + d, m) *
beta_;
94 (*mat)( N * (nf_tot + D*e + d) + n , N * (nf_tot + D*e + d) + m ) += fs(f) * f_a_masse(n, m) *
beta_ ;
99 const int f2 = e_f(e, i);
100 if ((f2 >= 0) && (f2 < nf) && (fcl(f2, 0) < 2))
102 const int c = (e == f_e(f2, 0) ) ? 0 : 1;
103 for (
int n = 0; n < N; n++)
104 for (
int m = 0; m < N; m++)
106 secmem(f2, n) -= fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) * vit( f2, m) *
beta_;
108 (*mat)( N * f2 + n , N * f2 + m ) += fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) *
beta_;
122 const int nb_max_sat = N*(N - 1)/2;
127 DoubleTrav Lvap_tab(ne_tot, nb_max_sat);
128 DoubleTrav f_a_masse(N, N);
129 DoubleTrav f_a(1, N);
131 for (
int k = 0; k < N; k++)
132 for (
int l = k + 1; l < N; l++)
136 const int ind_trav = sigma_pair_index(k, l, N);
139 z_sat.
Lvap(press.
get_span_tot(), Lvap_tab.get_span_tot(), nb_max_sat, ind_trav);
142 for (
int f = 0 ; f< nf_tot ; f ++)
145 const int e = f_e(f, 0) ;
150 for (
int k = 0; k < N; k++)
151 for (
int l = k + 1; l < N; l++)
154 const int i_sat = sigma_pair_index(k, l, N);
156 G = qpi(e, k, l) / Lvap_tab(e, i_sat) ;
158 f_a(0, k) -= G/(fs(f)*rho(e, k)) ;
159 f_a_masse(k, k) -= G/fs(f) ;
160 f_a(0, l) += G/(fs(f)*rho(e, l)) ;
161 f_a_masse(l, l) += G/fs(f) ;
163 corr->
ajouter_inj(&f_a(0,0), &alpha(e, 0), &rho(e, 0), f_a_masse);
165 for (
int d = 0; d < D ; d++)
166 for (
int n = 0 ; n < N ; n++)
167 for (
int m = 0 ; m < N ; m++)
169 secmem(nf_tot + D * e + d, n) -= fs(f) * f_a_masse(n, m) * vit( nf_tot + D * e + d, m) *
beta_ ;
171 (*mat)( N * (nf_tot + D*e + d) + n , N * (nf_tot + D*e + d) + m ) += fs(f) * f_a_masse(n, m) *
beta_ ;
174 for (
int i = 0; i < e_f.
line_size(); i++)
176 const int f2 = e_f(e, i);
177 if ((f2 >= 0) && (f2 < nf) && (fcl(f2, 0) < 2))
179 const int c = (e == f_e(f2, 0)) ? 0 : 1;
180 for (
int n = 0 ; n < N ; n++)
181 for (
int m = 0 ; m < N ; m++)
183 secmem(f2, n) -= fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) * vit( f2, m) *
beta_ ;
185 (*mat)( N * f2 + n , N * f2 + m ) += fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) *
beta_ ;
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.