48 const IntTab& fcl = ch.
fcl(),
50 &f_e = domaine.face_voisins(),
51 &e_f = domaine.elem_faces();
52 const DoubleVect& vf = domaine.volumes_entrelaces(),
53 &fs = domaine.face_surfaces();
54 const DoubleTab& vf_dir = domaine.volumes_entrelaces_dir();
56 const DoubleTab& vit = ch.
valeurs(),
65 int N = vit.
line_size(), nf_tot = domaine.nb_faces_tot(), nf = domaine.nb_faces(), ne_tot = domaine.nb_elem_tot();
68 for (
int f = 0 ; f< nf_tot ; f ++)
71 int e = f_e(f, 0)>-1 ? f_e(f, 0) : f_e(f, 1) ;
74 DoubleTrav f_a_masse(N, N) ;
76 for (
int n = 0 ; n<N ; n++)
78 f_a_masse(n, n) = ref_cast(
Neumann_paroi, clsa[fcla(f, 1)].valeur()).flux_impose(fcla(f, 2), n) * rho(e, n) ;
79 f_a(0, n) = ref_cast(
Neumann_paroi, clsa[fcla(f, 1)].valeur()).flux_impose(fcla(f, 2), n) ;
81 corr->
ajouter_inj( &f_a(0,0) , &alpha(e, 0), &rho(e, 0) , f_a_masse );
83 for (
int i=0 ; i < e_f.line_size() ; i++)
86 if ( (f2 >= 0) && (f2<nf) && (fcl(f2, 0) < 2) )
88 int c = ( e == f_e(f2, 0) ) ? 0 : 1 ;
89 for (
int n = 0 ; n<N ; n++)
90 for (
int m = 0 ; m<N ; m++)
92 secmem(f2, n) -= fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) * vit( f2, m) *
beta_;
94 (*mat)( N * f2 + n , N * f2 + m ) += fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) *
beta_;
106 int nb_max_sat = N*(N-1)/2;
111 DoubleTrav Lvap_tab(ne_tot,nb_max_sat);
112 DoubleTrav f_a_masse(N, N) ;
113 DoubleTrav f_a(1, N);
115 for (
int k = 0; k < N; k++)
116 for (
int l = k + 1; l < N; l++)
120 const int ind_trav = (k*(N-1)-(k-1)*(k)/2) + (l-k-1);
121 assert (press.line_size() == 1);
123 z_sat.
Lvap(press.get_span_tot(), Lvap_tab.get_span_tot(), nb_max_sat, ind_trav);
126 for (
int f = 0 ; f< nf_tot ; f ++)
127 if ( (f_e(f, 0)<= 0) || (f_e(f, 1)<= 0))
128 if ( fs(f) > DBL_MIN )
130 int e = f_e(f, 0)>-1 ? f_e(f, 0) : f_e(f, 1) ;
135 for (
int k = 0; k < N; k++)
136 for (
int l = k + 1; l < N; l++)
139 const int i_sat = (k*(N-1)-(k-1)*(k)/2) + (l-k-1);
141 G = qpi(e, k, l) / Lvap_tab(e, i_sat) ;
143 f_a(0, k) -= G/(fs(f)*rho(e, k)) ;
144 f_a_masse(k, k) -= G/fs(f) ;
145 f_a(0, l) += G/(fs(f)*rho(e, l)) ;
146 f_a_masse(l, l) += G/fs(f) ;
150 corr->
ajouter_inj( &f_a(0,0) , &alpha(e, 0), &rho(e, 0) , f_a_masse );
152 for (
int i=0 ; i < e_f.line_size() ; i++)
155 if ( (f2 >= 0) && (f2<nf) && (fcl(f2, 0) < 2) )
157 int c = ( e == f_e(f2, 0) ) ? 0 : 1 ;
158 for (
int n = 0 ; n<N ; n++)
159 for (
int m = 0 ; m<N ; m++)
161 secmem(f2, n) -= fs(f) * f_a_masse(n, m) * vf_dir(f2, c) / vf(f2) * vit( f2, m) *
beta_ ;
163 (*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.