61 const DoubleTab& pvit = ch.
passe(),
66 const IntTab& f_e = domaine.face_voisins(),
70 &ve = domaine.volumes(),
71 &vf = domaine.volumes_entrelaces(),
72 &fs = domaine.face_surfaces();
73 const DoubleTab& vf_dir = domaine.volumes_entrelaces_dir(),
74 &n_f = domaine.face_normales(),
75 &y_elem = domaine.y_elem(),
76 &y_faces = domaine.y_faces(),
77 &n_y_elem = domaine.normale_paroi_elem(),
78 &n_y_faces = domaine.normale_paroi_faces();
81 nf_tot = domaine.nb_faces_tot(),
82 nf = domaine.nb_faces(),
83 ne_tot = domaine.nb_elem_tot();
85 DoubleTrav dv(N, N), pvit_l(N,D), scal_u(N), sigma_l(N,ne_tot) ;
88 double fac, a_l, rho_l, rho_k, db_l, secmem_l, Eo, Cw, dist, correction, sig_face;
91 for (k = 0; k < N; k++)
97 for (
int ii = 0; ii < ne_tot; ii++) sigma_l(k,ii) = sig(ii);
103 for (
int ii = 0; ii < ne_tot; ii++) sigma_l(k,ii) = sig(ii);
107 for (f = 0; f < nf; f++)
112 for (d = 0 ; d<D ; d++)
113 for (k = 0 ; k<N ; k++)
114 for (c=0 ; c<2 && (e = f_e(f, c)) >= 0; c++)
115 pvit_l(k, d) += vf_dir(f, c)/vf(f)*pvit(nf_tot+D*e+d, k) ;
117 for (k = 0 ; k<N ; k++)
118 for (d = 0 ; d<D ; d++)
119 scal_u(k) += pvit_l(k, d)*n_f(f, d)/fs(f);
120 for (k = 0 ; k<N ; k++)
121 for (d = 0 ; d<D ; d++)
122 pvit_l(k, d) += (pvit(f, k) - scal_u(k)) * n_f(f, d)/fs(f) ;
126 for (k = 0 ; k<N ; k++)
127 for (d = 0 ; d<D ; d++)
128 scal_u(k) += pvit_l(k, d)*n_y_faces(f, d);
129 for (k = 0 ; k<N ; k++)
130 for (d = 0 ; d<D ; d++)
131 pvit_l(k, d) -= scal_u(k)*n_y_faces(f, d) ;
135 for ( k = 0; k < N; k++)
138 for (d = 0 ; d<D ; d++) dv(k,
n_l) += (pvit_l(k, d)-pvit_l(
n_l, d)) * (pvit_l(k, d)-pvit_l(
n_l, d));
139 dv(k,
n_l) = std::sqrt(dv(k,
n_l));
142 for (k = 0; k < N; k++)
146 for (d = 0 ; d<D ; d++) fac += n_y_faces(f, d) * n_f(f, d)/fs(f);
148 fac *= pf(f) * vf(f) ;
149 a_l = ( alpha(f_e(f, 0), k)*vf_dir(f,0) + ((e = f_e(f, 1))>0 ? alpha(e, k)*vf_dir(f,1) : 0) ) / vf(f);
150 rho_l=( rho(f_e(f, 0),
n_l)*vf_dir(f,0) + ((e = f_e(f, 1))>0 ? rho(e,
n_l)*vf_dir(f,1) : 0) ) / vf(f);
151 rho_k=( rho(f_e(f, 0), k)*vf_dir(f,0) + ((e = f_e(f, 1))>0 ? rho(e, k)*vf_dir(f,1) : 0) ) / vf(f);
152 db_l= ( d_bulles(f_e(f, 0), k)*vf_dir(f,0) + ((e = f_e(f, 1))>0 ? d_bulles(e, k)*vf_dir(f,1):0) ) / vf(f);
153 sig_face = (sigma_l(k,f_e(f, 0)) * vf_dir(f,0) + ((e = f_e(f, 1))>0 ? sigma_l(k,e)*vf_dir(f,1) : 0) ) / vf(f) ;
155 Eo = ( rho_l - rho_k ) *
g_ * 2. * db_l / sig_face ;
157 dist = std::max(y_faces(f),
secu_diam_ * db_l);
158 correction = std::max(1.- y_faces(f)/db_l, 0.) ;
160 if (Eo < 1.) {Cw = 0.74 ;}
161 else if (Eo < 5.) {Cw = exp(-0.933 * Eo + 0.179) ;}
162 else if (Eo < 33.) {Cw = 0.00599 * Eo -0.187 ;}
165 secmem_l = fac * a_l * rho_l * dv(k,
n_l) * dv(k,
n_l) * db_l / 2. * Cw / dist / dist * correction ;
167 secmem(f, k) += secmem_l;
168 secmem(f,
n_l) -= secmem_l;
173 for ( e = 0; e < ne_tot; e++)
177 for (d = 0 ; d<D ; d++)
178 for (k = 0 ; k<N ; k++)
179 pvit_l(k, d) += pvit(nf_tot+D*e+d, k) ;
183 for (k = 0 ; k<N ; k++)
184 for (d = 0 ; d<D ; d++)
185 scal_u(k) += pvit_l(k, d)*n_y_elem(e, d);
186 for (k = 0 ; k<N ; k++)
187 for (d = 0 ; d<D ; d++)
188 pvit_l(k, d) -= scal_u(k)*n_y_elem(e, d) ;
192 for ( k = 0; k < N; k++)
195 for (d = 0 ; d<D ; d++) dv(k,
n_l) += (pvit_l(k, d)-pvit_l(
n_l, d)) * (pvit_l(k, d)-pvit_l(
n_l, d));
196 dv(k,
n_l) = std::sqrt(dv(k,
n_l));
199 for (k = 0; k < N; k++)
202 fac = pe(e) * ve(e) ;
203 Eo = ( rho(e,
n_l) - rho(e, k) ) *
g_ * 2. * d_bulles(e, k) / sigma_l(k,e) ;
206 dist = std::max(y_elem(e),
secu_diam_ * d_bulles(e, k));
207 correction = std::max(1.- y_elem(e)/d_bulles(e, k), 0.) ;
209 if (Eo < 1.) {Cw = 0.74 ;}
210 else if (Eo < 5.) {Cw = exp(-0.933 * Eo + 0.179) ;}
211 else if (Eo < 33.) {Cw = 0.00599 * Eo -0.187 ;}
214 secmem_l = fac * alpha(e,k) * rho(e,
n_l) * dv(k,
n_l) * dv(k,
n_l) * d_bulles(e, k) / 2. * Cw / dist / dist * correction ;
216 for ( d = 0, i = nf_tot + D * e; d < D; d++, i++)
218 secmem(i , k) += secmem_l * n_y_elem(e, d);
219 secmem(i ,
n_l) -= secmem_l * n_y_elem(e, d);