49 const IntTab& fcl = ch.
fcl(),
51 &f_e = domaine.face_voisins(),
52 &e_f = domaine.elem_faces();
53 const DoubleVect& vf = domaine.volumes_entrelaces(),
54 &fs = domaine.face_surfaces();
55 const DoubleTab& vf_dir = domaine.volumes_entrelaces_dir();
57 const DoubleTab& vit = ch.
valeurs(),
66 int N = vit.
line_size(), nf_tot = domaine.nb_faces_tot(), nf = domaine.nb_faces(), ne_tot = domaine.nb_elem_tot();
69 for (
int f = 0 ; f< nf_tot ; f ++)
72 int e = f_e(f, 0)>-1 ? f_e(f, 0) : f_e(f, 1) ;
75 DoubleTrav f_a_masse(N, N) ;
77 for (
int n = 0 ; n<N ; n++)
79 f_a_masse(n, n) = ref_cast(
Neumann_paroi, clsa[fcla(f, 1)].valeur()).flux_impose(fcla(f, 2), n) * rho(e, n) ;
80 f_a(0, n) = ref_cast(
Neumann_paroi, clsa[fcla(f, 1)].valeur()).flux_impose(fcla(f, 2), n) ;
82 corr->
ajouter_inj( &f_a(0,0) , &alpha(e, 0), &rho(e, 0) , f_a_masse );
84 for (
int i=0 ; i < e_f.line_size() ; i++)
87 if ( (f2 >= 0) && (f2<nf) && (fcl(f2, 0) < 2) )
89 int c = ( e == f_e(f2, 0) ) ? 0 : 1 ;
90 for (
int n = 0 ; n<N ; n++)
91 for (
int m = 0 ; m<N ; m++)
93 secmem(f2, n) -= fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) * vit( f2, m) *
beta_;
95 (*mat)( N * f2 + n , N * f2 + m ) += fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) *
beta_;
107 int nb_max_sat = N*(N-1)/2;
112 DoubleTrav Lvap_tab(ne_tot,nb_max_sat);
113 DoubleTrav f_a_masse(N, N) ;
114 DoubleTrav f_a(1, N);
116 for (
int k = 0; k < N; k++)
117 for (
int l = k + 1; l < N; l++)
121 const int ind_trav = (k*(N-1)-(k-1)*(k)/2) + (l-k-1);
122 assert (press.line_size() == 1);
124 z_sat.
Lvap(press.get_span_tot(), Lvap_tab.get_span_tot(), nb_max_sat, ind_trav);
127 for (
int f = 0 ; f< nf_tot ; f ++)
128 if ( (f_e(f, 0)<= 0) || (f_e(f, 1)<= 0))
129 if ( fs(f) > DBL_MIN )
131 int e = f_e(f, 0)>-1 ? f_e(f, 0) : f_e(f, 1) ;
136 for (
int k = 0; k < N; k++)
137 for (
int l = k + 1; l < N; l++)
140 const int i_sat = (k*(N-1)-(k-1)*(k)/2) + (l-k-1);
142 G = qpi(e, k, l) / Lvap_tab(e, i_sat) ;
144 f_a(0, k) -= G/(fs(f)*rho(e, k)) ;
145 f_a_masse(k, k) -= G/fs(f) ;
146 f_a(0, l) += G/(fs(f)*rho(e, l)) ;
147 f_a_masse(l, l) += G/fs(f) ;
151 corr->
ajouter_inj( &f_a(0,0) , &alpha(e, 0), &rho(e, 0) , f_a_masse );
153 for (
int i=0 ; i < e_f.line_size() ; i++)
156 if ( (f2 >= 0) && (f2<nf) && (fcl(f2, 0) < 2) )
158 int c = ( e == f_e(f2, 0) ) ? 0 : 1 ;
159 for (
int n = 0 ; n<N ; n++)
160 for (
int m = 0 ; m<N ; m++)
162 secmem(f2, n) -= fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) * vit( f2, m) *
beta_ ;
164 (*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.