115 std::string Type_diss =
"other";
116 if (tau) Type_diss =
"tau";
117 else if (omega) Type_diss =
"omega";
119 DoubleTrav epsilon(alpha);
122 visc_turb.
eps(epsilon);
123 double limiter = visc_turb.
limiteur();
126 Matrice_Morse *Ma = matrices.count(
"alpha") ? matrices.at(
"alpha") :
nullptr,
127 *Mk = matrices.count(
"k") ? matrices.at(
"k") :
nullptr,
128 *Mtau = matrices.count(
"tau") ? matrices.at(
"tau") :
nullptr,
129 *Momega = matrices.count(
"omega") ? matrices.at(
"omega") :
nullptr,
130 *Mai = matrices.count(
"interfacial_area") ? matrices.at(
"interfacial_area") :
nullptr;
132 int cR = (rho_p.dimension_tot(0) == 1), cM = (nu_p.dimension_tot(0) == 1), n, k, e,d, D =
dimension;
133 DoubleTrav alp_(N), p_l(N), T_l(N), rho_l(N), nu_l(N), sigma_l(N,N), dv(N, N), d_bulles(N), eps_l(Nk), k_l(Nk), coeff_TI(N, N),coeff_SI(N, N),coeff_SO(N, N);
137 DoubleTab pvit_elem(0, N * D);
138 domaine.domaine().creer_tableau_elements(pvit_elem);
143 const double fac_sec = 1.e4 ;
144 const double alpha_min = 1.e-3 ;
147 for (e = 0; e < domaine.nb_elem(); e++)
150 for (n = 0; n < N; n++)
152 alp_(n) = alpha_p(e, n);
153 p_l(n) = press_p(e, n * (Np > 1));
154 T_l(n) = temp_p(e, n);
155 rho_l(n) = rho_p(!cR * e, n);
156 nu_l(n) = nu_p(!cM * e, n);
157 for (k = 0; k < N; k++)
161 sigma_l(n,k) = sat.
sigma(temp_p(e,n), press_p(e,n * (Np > 1)));
168 sigma_l(n,k) = sig(e);
171 d_bulles(n) = d_b(e,n);
174 for (n = 0; n < Nk; n++)
176 eps_l(n) =epsilon(e, n) ;
177 k_l(n) = (tab_k_p) ? (*tab_k_p)(e,n) : 0;
180 for (dv =0, d = 0; d < D; d++)
181 for ( n = 0; n < N; n++)
182 for (k = 0 ; k<N ; k++) dv(n, k) += (pvit_elem(e, N * d + n) - ((n!=k) ? pvit_elem(e, N * d + k) : 0)) * (pvit_elem(e, N * d + n) - ((n!=k) ? pvit_elem(e, N * d + k) : 0));
183 for (n = 0; n < N; n++)
184 for ( k = 0 ; k<N ; k++) dv(n, k) = sqrt(dv(n, k)) ;
187 correlation_rupt.
coefficient_TI(alp_, p_l, T_l, rho_l, nu_l, sigma_l, dh, dv, d_bulles, eps_l, k_l,
n_l,
n_g1,
n_g2, coeff_TI);
188 correlation_rupt.
coefficient_SI(alp_, p_l, T_l, rho_l, nu_l, sigma_l, dh, dv, d_bulles, eps_l, k_l,
n_l,
n_g1,
n_g2, coeff_SI);
189 correlation_rupt.
coefficient_SO(alp_, p_l, T_l, rho_l, nu_l, sigma_l, dh, dv, d_bulles, eps_l, k_l,
n_l,
n_g1,
n_g2, coeff_SO);
192 double eps_valeurs= epsilon(e,
n_l) ;
194 if (Type_diss ==
"tau") eps_valeurs =
beta_k_ * ((*tab_k)(e,
n_l)>1.e-8 ? (*tab_k)(e,
n_l)*(*tab_k)(e,
n_l)/ std::max((*tab_k)(e,
n_l) * (*tau)(e,
n_l), limiter * nu_p(e,
n_l)) : 0 );
195 else if (Type_diss ==
"omega") eps_valeurs =
beta_k_ * ((*tab_k)(e,
n_l)*(*omega)(e,
n_l)) ;
196 else eps_valeurs = epsilon(e,
n_l);
201 const double fac_TI1 = (alpha(e,
n_g1)>alpha_min) ? pe(e) * ve(e) * coeff_TI(
n_g1,
n_l): 0.;
202 const double fac_TI2 = (alpha(e,
n_g2)>alpha_min) ? pe(e) * ve(e) * coeff_TI(
n_g2,
n_l): 0.;
203 const double fac_TI21 = (alpha(e,
n_g2)>alpha_min) ? pe(e) * ve(e) * coeff_TI(
n_g1,
n_g2): 0.;
204 const double fac_SI = (alpha(e,
n_g2)>alpha_min) ? pe(e) * ve(e) * coeff_SI(
n_g2,
n_l): 0.;
205 const double fac_SO1 = (alpha(e,
n_g2)>alpha_min) ? pe(e) * ve(e) * coeff_SO(
n_g1,
n_l): 0.;
206 const double fac_SO2 = (alpha(e,
n_g2)>alpha_min) ? pe(e) * ve(e) * coeff_SO(
n_g2,
n_l): 0.;
208 const double ai1 = std::max(inco(e,
n_g1), 0.) ;
209 const double ai2_p = std::max(inco_p(e,
n_g2), 0.) ;
210 const double ai2 = std::max(inco(e,
n_g2), 0.) ;
211 const double eps_1_over3 = std::cbrt(eps_valeurs) ;
213 const double alphag1_1_over3 = std::cbrt(alpha(e,
n_g1)) ;
214 const double ai1_5_over3 = std::cbrt(ai1) * std::cbrt(ai1) * std::cbrt(ai1) * std::cbrt(ai1) * std::cbrt(ai1) ;
215 const double alphag2_1_over3 = std::cbrt(alpha(e,
n_g2)) ;
216 const double alphag2p_1_over3 = std::cbrt(alpha_p(e,
n_g2)) ;
217 const double ai2_5_over3 = std::cbrt(ai2) * std::cbrt(ai2) * std::cbrt(ai2) * std::cbrt(ai2) * std::cbrt(ai2) ;
218 const double ai2p_5_over3 = std::cbrt(ai2) * std::cbrt(ai2) * std::cbrt(ai2) * std::cbrt(ai2) * std::cbrt(ai2) ;
224 secmem(e ,
n_g1) += (fac_TI1 > 0. ) ? fac_TI1 / std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * alpha_p(e,
n_l) * ai1_5_over3 * eps_1_over3 : 0. ;
228 secmem(e ,
n_g2) += (fac_TI2 > 0. ) ? fac_TI2 / std::min(alphag2_1_over3 * alphag2_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2_5_over3 * eps_1_over3 : 0. ;
232 secmem(e ,
n_g1) += (fac_TI21 > 0. ) ? fac_TI21 / std::min(alphag2p_1_over3 * alphag2p_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2p_5_over3 * eps_1_over3: 0. ;
236 secmem(e ,
n_g2) += (fac_SI > 0. ) ? fac_SI * alpha(e,
n_g2) * alpha(e,
n_g2) : 0.;
240 secmem(e ,
n_g1) += (fac_SO1 > 0. ) ? fac_SO1 * ai2_p * ai2_p / std::min(alpha_p(e,
n_g2),fac_sec): 0.;
244 secmem(e ,
n_g2) += (fac_SO2 > 0. ) ? fac_SO2 * ai2 * ai2 * ai2 / std::min(alpha(e,
n_g2) * alpha(e,
n_g2) ,fac_sec): 0.;
250 (*Ma)(N * e +
n_g1 , N * e +
n_g1) -= (fac_TI1 > 0. ) ? fac_TI1 * -2./3. / std::min(alphag1_1_over3 * alphag1_1_over3 * alphag1_1_over3 * alphag1_1_over3 * alphag1_1_over3,fac_sec) * alpha_p(e,
n_l) * std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * eps_1_over3 : 0.;
254 (*Ma)(N * e +
n_g2 , N * e +
n_g2) -= (fac_TI2 > 0. ) ? fac_TI2 * -2./3. / std::min(alphag2_1_over3 * alphag2_1_over3 * alphag2_1_over3 * alphag2_1_over3 * alphag2_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2_5_over3 * eps_1_over3 : 0.;
258 (*Ma)(N * e +
n_g2 , N * e +
n_g2) -= (fac_SI > 0. ) ? fac_SI * 2. * alpha(e,
n_g2) : 0. ;
261 (*Ma)(N * e +
n_g2 , N * e +
n_g2) -= (fac_SO2 > 0. ) ? - 2. * fac_SO2 * ai2 * ai2 * ai2 / std::min(alpha(e,
n_g2) * alpha(e,
n_g2) * alpha(e,
n_g2),fac_sec): 0.;
269 (*Mai)(N * e +
n_g1 , N * e +
n_g1) -= (fac_TI1 > 0. ) ? fac_TI1 / std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * alpha_p(e,
n_l) * 5./3. * (std::cbrt(ai1) * std::cbrt(ai1)) * eps_1_over3 : 0.;
273 (*Mai)(N * e +
n_g2 , N * e +
n_g2) -= (fac_TI2 > 0. ) ? fac_TI2 / std::min(alphag2_1_over3 * alphag2_1_over3 ,fac_sec) * alpha_p(e,
n_l) * 5./3. * (std::cbrt(ai2) * std::cbrt(ai2)) * eps_1_over3 : 0.;
277 (*Mai)(N * e +
n_g2 , N * e +
n_g2) -= (fac_SO2 > 0. ) ? 3. * fac_SO2 * (std::cbrt(ai2) * std::cbrt(ai2)) / std::min(alpha(e,
n_g2) * alpha(e,
n_g2),fac_sec): 0.;
280 if (Type_diss ==
"tau")
282 if ((*tab_k)(e,
n_l) * (*tau)(e,
n_l) > limiter * nu_p(e,
n_l))
286 const double deps = 1./3. * std::cbrt(
beta_k_) / std::min(std::cbrt((*tab_k)(e,
n_l)) * std::cbrt((*tab_k)(e,
n_l)),fac_sec) / std::min(std::cbrt((*tau)(e,
n_l)),fac_sec) ;
290 (*Mk)(N * e +
n_g1, Nk * e +
n_l) -= (fac_TI1 > 0. ) ? fac_TI1 / std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * alpha_p(e,
n_l) * std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * deps : 0.;
294 (*Mk)(N * e +
n_g2, Nk * e +
n_l) -= (fac_TI2 > 0. ) ? fac_TI2 / std::min(alphag2_1_over3 * alphag2_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2_5_over3 * deps : 0.;
298 (*Mk)(N * e +
n_g1, Nk * e +
n_l) -= (fac_TI21 > 0. ) ? fac_TI21 / std::min(alphag2p_1_over3 * alphag2p_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2p_5_over3 * deps : 0.;
303 const double deps = -1./3. * std::cbrt(
beta_k_) * std::cbrt((*tab_k)(e,
n_l)) / std::min(std::cbrt((*tau)(e,
n_l)) * std::cbrt((*tau)(e,
n_l)) * std::cbrt((*tau)(e,
n_l)) * std::cbrt((*tau)(e,
n_l)),fac_sec) ;
307 (*Mtau)(N * e +
n_g1, Nk * e +
n_l)-= (fac_TI1 > 0. ) ? fac_TI1 / std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * alpha_p(e,
n_l) * std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * deps : 0.;
311 (*Mtau)(N * e +
n_g2, Nk * e +
n_l)-= (fac_TI2 > 0. ) ? fac_TI2 / std::min(alphag2_1_over3 * alphag2_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2_5_over3 * deps : 0.;
315 (*Mtau)(N * e +
n_g1, Nk * e +
n_l)-= (fac_TI21 > 0. ) ? fac_TI21 / std::min(alphag2p_1_over3 * alphag2p_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2p_5_over3 * deps : 0.;
321 const double deps = 1./3. * std::cbrt(
beta_k_) / std::min(std::cbrt((*tab_k)(e,
n_l)),fac_sec) / std::min(std::cbrt(limiter * nu_p(e,
n_l)),fac_sec) ;
325 (*Mk)(N * e +
n_g1, Nk * e +
n_l) -= (fac_TI1 > 0. ) ? fac_TI1 / std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * alpha_p(e,
n_l) * std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * deps : 0.;
329 (*Mk)(N * e +
n_g2, Nk * e +
n_l) -= (fac_TI2 > 0. ) ? fac_TI2 / std::min(alphag2_1_over3 * alphag2_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2_5_over3 * deps : 0.;
333 (*Mk)(N * e +
n_g1, Nk * e +
n_l) -= (fac_TI21 > 0. ) ? fac_TI21 / std::min(alphag2p_1_over3 * alphag2p_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2p_5_over3 * deps : 0.;
337 if (Type_diss ==
"omega")
341 const double deps = 1./3. * std::cbrt(
beta_k_) * std::cbrt((*tab_k)(e,
n_l)) / std::min(std::cbrt((*omega)(e,
n_l)) * std::cbrt((*omega)(e,
n_l)),fac_sec) ;
345 (*Momega)(N * e +
n_g1 , Nk * e +
n_l) -= (fac_TI1 > 0. ) ? fac_TI1 / std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * alpha_p(e,
n_l) * std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * deps : 0.;
349 (*Momega)(N * e +
n_g2 , Nk * e +
n_l) -= (fac_TI2 > 0. ) ? fac_TI2 / std::min(alphag2_1_over3 * alphag2_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2_5_over3 * deps : 0.;
353 (*Momega)(N * e +
n_g1 , Nk * e +
n_l) -= (fac_TI21 > 0. ) ? fac_TI21 / std::min(alphag2p_1_over3 * alphag2p_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2p_5_over3 * deps : 0.;
358 const double deps = 1./3. * std::cbrt(
beta_k_) / std::min(std::cbrt((*tab_k)(e,
n_l)) * std::cbrt((*tab_k)(e,
n_l)) ,fac_sec) * std::cbrt((*omega)(e,
n_l)) ;
362 (*Mk)(N * e +
n_g1 , Nk * e +
n_l) -= (fac_TI1 > 0. ) ? fac_TI1 / std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * alpha_p(e,
n_l) * std::min(alphag1_1_over3 * alphag1_1_over3,fac_sec) * deps : 0.;
366 (*Mk)(N * e +
n_g2 , Nk * e +
n_l) -= (fac_TI2 > 0. ) ? fac_TI2 / std::min(alphag2_1_over3 * alphag2_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2_5_over3 * deps : 0.;
370 (*Mk)(N * e +
n_g1 , Nk * e +
n_l) -= (fac_TI21 > 0. ) ? fac_TI21 / std::min(alphag2_1_over3 * alphag2_1_over3 ,fac_sec) * alpha_p(e,
n_l) * ai2p_5_over3 * deps : 0.;