32 const IntTab& f_e = domaine.face_voisins(), &fcl = ch.
fcl();
33 const DoubleTab& n_f = domaine.face_normales(), &vf_dir = domaine.volumes_entrelaces_dir();
35 const DoubleTab& pvit = ch.
passe(),
48 int e, f, c, d, d2, i, k, l, n, N = ch.
valeurs().
line_size(), Np = press.line_size(), D =
dimension, Nk = (k_turb) ? (*k_turb).dimension(1) : 1 ,
49 cR = (rho.dimension_tot(0) == 1), cM = (mu.dimension_tot(0) == 1), nf_tot = domaine.nb_faces_tot();
50 DoubleTrav vr_l(N,D), scal_ur(N), scal_u(N), pvit_l(N, D), vort_l( D==2 ? 1 :D), grad_l(D,D), scal_grad(D);
51 double fac_e, fac_f, vl_norm;
60 const int ne_tot = domaine.nb_elem_tot(), nb_max_sat = N * (N-1) /2;
61 DoubleTrav Sigma_tab(ne_tot,nb_max_sat);
64 for (k = 0; k < N; k++)
65 for (l = k + 1; l < N; l++)
70 const int ind_trav = (k*(N-1)-(k-1)*(k)/2) + (l-k-1);
74 for (
int ii = 0; ii < ne_tot; ii++) Sigma_tab(ii, ind_trav) = sig(ii);
79 const int ind_trav = (k*(N-1)-(k-1)*(k)/2) + (l-k-1);
80 for (i = 0 ; i<ne_tot ; i++) Sigma_tab(i,ind_trav) = sat.
sigma(temp(i,k),press(i,k * (Np > 1))) ;
86 for (e = 0; e < ne_tot; e++)
91 in.
alpha[n] = alpha(e, n);
92 in.
p[n] = press(e, n * (Np > 1));
94 in.
rho[n] = rho(!cR * e, n);
95 in.
mu[n] = mu(!cM * e, n);
96 in.
d_bulles[n] = (d_bulles) ? (*d_bulles)(e,n) : 0 ;
97 for (k = n+1; k < N; k++)
100 const int ind_trav = (n*(N-1)-(n-1)*(n)/2) + (k-n-1);
101 in.
sigma[ind_trav] = Sigma_tab(e, ind_trav);
103 for (k = 0; k < N; k++)
104 in.
nv(k, n) = ch.
v_norm(pvit, pvit, e, -1, k, n,
nullptr,
nullptr);
106 for (n = 0; n <Nk; n++) in.
k_turb[n] = (k_turb) ? (*k_turb)(e,0) : 0;
110 fac_e =
beta_*pe(e) * ve(e);
116 for (d = 0 ; d < D ; d++) vl_norm += pvit(i+d,
n_l)*pvit(i+d,
n_l);
117 vl_norm = std::sqrt(vl_norm);
120 for (k = 0; k < N; k++)
121 for (d = 0 ; d < D ; d++) scal_ur(k) += pvit(i+d,
n_l)/vl_norm * (pvit(i+d, k) -pvit(i+d,
n_l));
122 for (k = 0; k < N; k++)
123 for (d = 0 ; d < D ; d++) vr_l(k, d) = pvit(i+d,
n_l)/vl_norm * scal_ur(k) ;
125 else for (k=0 ; k<N ; k++)
126 for (d=0 ; d<D ; d++) vr_l(k, d) = pvit(i+d, k) -pvit(i+d,
n_l) ;
131 for (k = 0; k < N; k++)
134 secmem(i,
n_l) += fac_e * out.
Cl(
n_l, k) * vr_l(k, 1) * vort(e, 0) ;
135 secmem(i, k ) -= fac_e * out.
Cl(
n_l, k) * vr_l(k, 1) * vort(e, 0) ;
136 secmem(i+1,
n_l)-= fac_e * out.
Cl(
n_l, k) * vr_l(k, 0) * vort(e, 0) ;
137 secmem(i+1, k )+= fac_e * out.
Cl(
n_l, k) * vr_l(k, 0) * vort(e, 0) ;
143 for (k = 0; k < N; k++)
146 secmem(i,
n_l) += fac_e * out.
Cl(
n_l, k) * (vr_l(k, 1) * vort(e, 2*N+
n_l) - vr_l(k, 2) * vort(e, 1*N+
n_l)) ;
147 secmem(i, k ) -= fac_e * out.
Cl(
n_l, k) * (vr_l(k, 1) * vort(e, 2*N+
n_l) - vr_l(k, 2) * vort(e, 1*N+
n_l)) ;
148 secmem(i+1,
n_l)+= fac_e * out.
Cl(
n_l, k) * (vr_l(k, 2) * vort(e, 0*N+
n_l) - vr_l(k, 0) * vort(e, 2*N+
n_l)) ;
149 secmem(i+1, k )-= fac_e * out.
Cl(
n_l, k) * (vr_l(k, 2) * vort(e, 0*N+
n_l) - vr_l(k, 0) * vort(e, 2*N+
n_l)) ;
150 secmem(i+2,
n_l)+= fac_e * out.
Cl(
n_l, k) * (vr_l(k, 0) * vort(e, 1*N+
n_l) - vr_l(k, 1) * vort(e, 0*N+
n_l)) ;
151 secmem(i+2, k )-= fac_e * out.
Cl(
n_l, k) * (vr_l(k, 0) * vort(e, 1*N+
n_l) - vr_l(k, 1) * vort(e, 0*N+
n_l)) ;
158 for (f = 0 ; f<domaine.nb_faces() ; f++)
162 for ( c = 0; c < 2 && (e = f_e(f, c)) >= 0; c++)
164 for (n = 0; n < N; n++)
166 in.
alpha[n] += vf_dir(f, c)/vf(f) * alpha(e, n);
167 in.
p[n] += vf_dir(f, c)/vf(f) * press(e, n * (Np > 1));
168 in.
T[n] += vf_dir(f, c)/vf(f) * temp(e, n);
169 in.
rho[n] += vf_dir(f, c)/vf(f) * rho(!cR * e, n);
170 in.
mu[n] += vf_dir(f, c)/vf(f) * mu(!cM * e, n);
171 in.
d_bulles[n] += (d_bulles) ? vf_dir(f, c)/vf(f) *(*d_bulles)(e,n) : 0 ;
172 for (k = n+1; k < N; k++)
175 const int ind_trav = (n*(N-1)-(n-1)*(n)/2) + (k-n-1);
176 in.
sigma[ind_trav] += vf_dir(f, c) / vf(f) * Sigma_tab(e, ind_trav);
178 for (k = 0; k < N; k++)
179 in.
nv(k, n) += vf_dir(f, c)/vf(f) * ch.
v_norm(pvit, pvit, e, f, k, n,
nullptr,
nullptr);
181 for (n = 0; n <Nk; n++) in.
k_turb[n] += (k_turb) ? vf_dir(f, c)/vf(f) * (*k_turb)(e,0) : 0;
187 for (d = 0 ; d<D ; d++)
188 for (d2 = 0 ; d2<D ; d2++)
189 for (c=0 ; c<2 && (e = f_e(f, c)) >= 0; c++)
190 grad_l(d, d2) += vf_dir(f, c)/vf(f)*grad_v(nf_tot + D*e + d2 ,
n_l * D + d) ;
193 for (d = 0 ; d<D ; d++)
194 for (d2 = 0 ; d2<D ; d2++)
195 scal_grad(d) += grad_l(d, d2)*n_f(f, d2)/fs(f);
196 for (d = 0 ; d<D ; d++)
197 for (d2 = 0 ; d2<D ; d2++)
198 grad_l(d, d2) += (grad_v(f ,
n_l*D+d) - scal_grad(d)) * n_f(f, d2)/fs(f);
202 vort_l(0) = grad_l(1, 0) - grad_l(0, 1);
206 vort_l(0) = grad_l(2, 1) - grad_l(1, 2);
207 vort_l(1) = grad_l(0, 2) - grad_l(2, 0);
208 vort_l(2) = grad_l(1, 0) - grad_l(0, 1);
212 for (d = 0 ; d<D ; d++)
213 for (k = 0 ; k<N ; k++)
214 for (c=0 ; c<2 && (e = f_e(f, c)) >= 0; c++)
215 pvit_l(k, d) += vf_dir(f, c)/vf(f)*pvit(nf_tot+D*e+d, k) ;
217 for (k = 0 ; k<N ; k++)
218 for (d = 0 ; d<D ; d++)
219 scal_u(k) += pvit_l(k, d)*n_f(f, d)/fs(f);
220 for (k = 0 ; k<N ; k++)
221 for (d = 0 ; d<D ; d++)
222 pvit_l(k, d) += (pvit(f, k) - scal_u(k)) * n_f(f, d)/fs(f) ;
227 for (d = 0 ; d < D ; d++) vl_norm += pvit_l(
n_l, d)*pvit_l(
n_l, d);
228 vl_norm = std::sqrt(vl_norm);
231 for (k = 0; k < N; k++)
232 for (d = 0 ; d < D ; d++) scal_ur(k) += pvit_l(
n_l, d)/vl_norm * (pvit_l(k, d) -pvit_l(
n_l, d));
233 for (k = 0; k < N; k++)
234 for (d = 0 ; d < D ; d++) vr_l(k, d) = pvit_l(
n_l, d)/vl_norm * scal_ur(k) ;
236 else for (k=0 ; k<N ; k++)
237 for (d=0 ; d<D ; d++) vr_l(k, d) = pvit_l(k, d)-pvit_l(
n_l, d) ;
241 fac_f =
beta_*pf(f) * vf(f);
242 for (k = 0; k < N; k++)
247 secmem(f,
n_l) += fac_f * n_f(f, 0)/fs(f) * out.
Cl(
n_l, k) * vr_l(k, 1) * vort_l(0) ;
248 secmem(f, k ) -= fac_f * n_f(f, 0)/fs(f) * out.
Cl(
n_l, k) * vr_l(k, 1) * vort_l(0) ;
249 secmem(f,
n_l) -= fac_f * n_f(f, 1)/fs(f) * out.
Cl(
n_l, k) * vr_l(k, 0) * vort_l(0) ;
250 secmem(f, k ) += fac_f * n_f(f, 1)/fs(f) * out.
Cl(
n_l, k) * vr_l(k, 0) * vort_l(0) ;
254 secmem(f,
n_l) += fac_f * n_f(f, 0)/fs(f) * out.
Cl(
n_l, k) * (vr_l(k, 1) * vort_l(2) - vr_l(k, 2) * vort_l(1)) ;
255 secmem(f, k ) -= fac_f * n_f(f, 0)/fs(f) * out.
Cl(
n_l, k) * (vr_l(k, 1) * vort_l(2) - vr_l(k, 2) * vort_l(1)) ;
256 secmem(f,
n_l) += fac_f * n_f(f, 1)/fs(f) * out.
Cl(
n_l, k) * (vr_l(k, 2) * vort_l(0) - vr_l(k, 0) * vort_l(2)) ;
257 secmem(f, k ) -= fac_f * n_f(f, 1)/fs(f) * out.
Cl(
n_l, k) * (vr_l(k, 2) * vort_l(0) - vr_l(k, 0) * vort_l(2)) ;
258 secmem(f,
n_l) += fac_f * n_f(f, 2)/fs(f) * out.
Cl(
n_l, k) * (vr_l(k, 0) * vort_l(1) - vr_l(k, 1) * vort_l(0)) ;
259 secmem(f, k ) -= fac_f * n_f(f, 2)/fs(f) * out.
Cl(
n_l, k) * (vr_l(k, 0) * vort_l(1) - vr_l(k, 1) * vort_l(0)) ;