114 const int Nk = (tab_k) ? (*tab_k).line_size() : -1;
118 std::string Type_diss =
"other";
124 DoubleTrav epsilon(alpha);
127 visc_turb.
eps(epsilon);
128 double limiter = visc_turb.
limiteur();
131 Matrice_Morse *Ma = matrices.count(
"alpha") ? matrices.at(
"alpha") :
nullptr;
132 Matrice_Morse *Mk = matrices.count(
"k") ? matrices.at(
"k") :
nullptr;
133 Matrice_Morse *Mtau = matrices.count(
"tau") ? matrices.at(
"tau") :
nullptr;
134 Matrice_Morse *Momega = matrices.count(
"omega") ? matrices.at(
"omega") :
nullptr;
135 Matrice_Morse *Mai = matrices.count(
"interfacial_area") ? matrices.at(
"interfacial_area") :
nullptr;
139 DoubleTrav a_l(N), p_l(N), T_l(N), rho_l(N), nu_l(N), sigma_l(N,N), dv(N, N), d_bulles_l(N), eps_l(Nk), k_l(Nk), coeff(N, N);
143 DoubleTab pvit_elem(0, N * D);
144 domaine.domaine().creer_tableau_elements(pvit_elem);
148 const double fac_sec = 1.e4 ;
149 const double alpha_min = 1.e-3 ;
152 for (
int e = 0; e < domaine.nb_elem(); e++)
154 for (
int n = 0; n < N; n++)
156 a_l(n) = alpha(e, n);
157 p_l(n) = press_p(e, n * (Np > 1));
158 T_l(n) = temp_p(e, n);
159 rho_l(n) = rho_p(!cR * e, n);
160 nu_l(n) = nu_p(!cM * e, n);
162 for (
int k = 0; k < N; k++)
166 sigma_l(n, k) = sat.
sigma(temp_p(e, n), press_p(e, n * (Np > 1)));
168 d_bulles_l(n) = d_bulles_p(e, n);
171 for (
int n = 0; n < Nk; n++)
173 eps_l(n) = epsilon(e, n) ;
174 k_l(n) = (tab_k_p) ? (*tab_k_p)(e, n) : 0;
178 for (
int d = 0; d < D; d++)
179 for (
int n = 0; n < N; n++)
180 for (
int k = 0 ; k < N ; k++)
181 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 (
int n = 0; n < N; n++)
184 for (
int k = 0 ; k < N ; k++)
185 dv(n, k) = sqrt(dv(n, k));
188 correlation_coal.
coefficient(a_l, p_l, T_l, rho_l, nu_l, sigma_l, dh, dv, d_bulles_l, eps_l, k_l, coeff);
190 for (
int k = 0 ; k < N ; k++)
192 double eps_valeurs {0};
193 if (Type_diss ==
"tau")
194 eps_valeurs =
beta_k_ * ((*tab_k)(e,
n_l)>1.e-8
195 ? (*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);
196 else if (Type_diss ==
"omega")
197 eps_valeurs =
beta_k_ * ((*tab_k)(e,
n_l)*(*omega)(e,
n_l)) ;
199 eps_valeurs = epsilon(e,
n_l);
203 const double cbrt_6 = std::cbrt(6.);
204 const double factor_tmp = M_PI/(3*cbrt_6*cbrt_6*cbrt_6*cbrt_6*cbrt_6);
205 const double fac = (alpha(e, k)>alpha_min) ? pe(e) * ve(e) * factor_tmp * coeff(k,
n_l) : 0. ;
206 const double dalpha_fac = (alpha(e, k)>alpha_min) ? pe(e) * ve(e) * factor_tmp * coeff(
n_l, k) : 0. ;
208 const double ai = std::max(inco(e, k), 0.) ;
209 const double cbrt_ai = std::cbrt(ai);
210 const double ai_5_over3 = cbrt_ai*cbrt_ai*cbrt_ai*cbrt_ai*cbrt_ai ;
212 const double alpha_1_over3 = std::cbrt(alpha(e, k)) ;
213 const double eps_1_over3 = std::cbrt(eps_valeurs) ;
216 secmem(e , k) += (fac > 0. ) ? fac * alpha_1_over3 * ai_5_over3 * eps_1_over3 : 0. ;
219 (*Ma)(N * e + k , N * e + k) -= (fac > 0. )
220 ? fac * 1./3. / std::min(alpha_1_over3 * alpha_1_over3,fac_sec) * ai_5_over3 * eps_1_over3 + dalpha_fac * alpha_1_over3 * ai_5_over3 * eps_1_over3
224 (*Mai)(N * e + k , N * e + k) -= (fac > 0. )
225 ? fac * alpha_1_over3 * 5./3. * std::cbrt(ai) * std::cbrt(ai) * eps_1_over3
228 if (Type_diss ==
"tau")
230 if ((*tab_k)(e,
n_l) * (*tau)(e,
n_l) > limiter * nu_p(e,
n_l))
233 (*Mk)(N * e + k, Nk * e +
n_l) -= (fac > 0. )
234 ? fac * alpha_1_over3 * ai_5_over3 * 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)
238 (*Mtau)(N * e + k, Nk * e +
n_l) -= (fac > 0. )
239 ? fac * alpha_1_over3 * ai_5_over3 *-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)
245 (*Mk)(N * e + k, Nk * e +
n_l) -= (fac > 0. )
246 ? fac * alpha_1_over3 * ai_5_over3 * 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)
251 if (Type_diss ==
"omega")
254 (*Momega)(N * e + k , Nk * e +
n_l) -= (fac > 0. )
255 ? fac * alpha_1_over3 * ai_5_over3 * 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)
259 (*Mk)(N * e + k , Nk * e +
n_l) -= (fac > 0. )
260 ? fac * alpha_1_over3 * ai_5_over3 * 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))