49 const IntTab& fcl = ch.
fcl();
50 const IntTab& fcla = cha.
fcl();
51 const IntTab& f_e = domaine.face_voisins();
52 const IntTab& e_f = domaine.elem_faces();
54 const DoubleVect& vf = domaine.volumes_entrelaces();
55 const DoubleVect& fs = domaine.face_surfaces();
57 const DoubleTab& vf_dir = domaine.volumes_entrelaces_dir();
58 const DoubleTab& vit = ch.
valeurs();
60 const DoubleTab& alpha = cha.
passe();
69 const int nf_tot = domaine.nb_faces_tot();
70 const int nf = domaine.nb_faces();
71 const int ne_tot = domaine.nb_elem_tot();
74 for (
int f = 0; f < nf_tot; f ++)
77 const int e = f_e(f, 0);
80 DoubleTrav f_a_masse(N, N) ;
82 for (
int n = 0; n < N; n++)
84 f_a_masse(n, n) = ref_cast(
Neumann_paroi, clsa[fcla(f, 1)].valeur()).flux_impose(fcla(f, 2), n) * rho(e, n) ;
85 f_a(0, n) = ref_cast(
Neumann_paroi, clsa[fcla(f, 1)].valeur()).flux_impose(fcla(f, 2), n) ;
87 corr->
ajouter_inj(&f_a(0,0), &alpha(e, 0), &rho(e, 0), f_a_masse);
89 for (
int d = 0; d < D ; d++)
90 for (
int n = 0 ; n < N ; n++)
91 for (
int m = 0 ; m < N ; m++)
93 secmem(nf_tot + D * e + d, n) -= fs(f) * f_a_masse(n, m) * vit( nf_tot + D * e + d, m) *
beta_;
95 (*mat)( N * (nf_tot + D*e + d) + n , N * (nf_tot + D*e + d) + m ) += fs(f) * f_a_masse(n, m) *
beta_ ;
100 const int f2 = e_f(e, i);
101 if ((f2 >= 0) && (f2 < nf) && (fcl(f2, 0) < 2))
103 const int c = (e == f_e(f2, 0) ) ? 0 : 1;
104 for (
int n = 0; n < N; n++)
105 for (
int m = 0; m < N; m++)
107 secmem(f2, n) -= fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) * vit( f2, m) *
beta_;
109 (*mat)( N * f2 + n , N * f2 + m ) += fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) *
beta_;
123 const int nb_max_sat = N*(N - 1)/2;
128 DoubleTrav Lvap_tab(ne_tot, nb_max_sat);
129 DoubleTrav f_a_masse(N, N);
130 DoubleTrav f_a(1, N);
132 for (
int k = 0; k < N; k++)
133 for (
int l = k + 1; l < N; l++)
137 const int ind_trav = sigma_pair_index(k, l, N);
140 z_sat.
Lvap(press.
get_span_tot(), Lvap_tab.get_span_tot(), nb_max_sat, ind_trav);
143 for (
int f = 0 ; f< nf_tot ; f ++)
146 const int e = f_e(f, 0) ;
151 for (
int k = 0; k < N; k++)
152 for (
int l = k + 1; l < N; l++)
155 const int i_sat = sigma_pair_index(k, l, N);
157 G = qpi(e, k, l) / Lvap_tab(e, i_sat) ;
159 f_a(0, k) -= G/(fs(f)*rho(e, k)) ;
160 f_a_masse(k, k) -= G/fs(f) ;
161 f_a(0, l) += G/(fs(f)*rho(e, l)) ;
162 f_a_masse(l, l) += G/fs(f) ;
164 corr->
ajouter_inj(&f_a(0,0), &alpha(e, 0), &rho(e, 0), f_a_masse);
166 for (
int d = 0; d < D ; d++)
167 for (
int n = 0 ; n < N ; n++)
168 for (
int m = 0 ; m < N ; m++)
170 secmem(nf_tot + D * e + d, n) -= fs(f) * f_a_masse(n, m) * vit( nf_tot + D * e + d, m) *
beta_ ;
172 (*mat)( N * (nf_tot + D*e + d) + n , N * (nf_tot + D*e + d) + m ) += fs(f) * f_a_masse(n, m) *
beta_ ;
175 for (
int i = 0; i < e_f.
line_size(); i++)
177 const int f2 = e_f(e, i);
178 if ((f2 >= 0) && (f2 < nf) && (fcl(f2, 0) < 2))
180 const int c = (e == f_e(f2, 0)) ? 0 : 1;
181 for (
int n = 0 ; n < N ; n++)
182 for (
int m = 0 ; m < N ; m++)
184 secmem(f2, n) -= fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) * vit( f2, m) *
beta_ ;
186 (*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.