39 Pb_Multiphase *pbm = sub_type(Pb_Multiphase, pb_.valeur()) ? &ref_cast(Pb_Multiphase, pb_.valeur()) : nullptr;
68 const DoubleTab& tab_u = pb_->get_champ(
"vitesse").passe();
69 const DoubleTab& d_bulles = pb_->get_champ(
"diametre_bulles").passe();
70 const DoubleTab& alpha = pb_->get_champ(
"alpha").passe();
71 const DoubleTab& tab_grad = pbm->
get_champ(
"gradient_vitesse").
passe();
74 const int nf_tot = domaine.nb_faces_tot();
78 ConstDoubleTab_parts p_u(tab_u);
81 for (
int i = 0; i < p_u.
size(); i++)
82 if (p_u[i].get_md_vector() == R_ij.get_md_vector())
86 Process::exit(
"Viscosite_turbulente_sato : inconsistency between velocity and Rij!");
88 const DoubleTab& u = p_u[i_part];
91 DoubleTrav u_r(R_ij.dimension(0), 1);
94 for (
int e = 0 ; e < R_ij.dimension(0); e++)
95 for (
int i = 0; i < D; i++)
96 for (
int j = 0; j < D; j++)
97 for (
int k = 0; k < N; k++)
101 double u_r_carre = 0.;
102 for (
int d = 0; d < D; d++)
103 u_r_carre += (u(e, d, k) - u(e, d, n_l_))*(u(e, d, k) - u(e, d, n_l_));
104 u_r(e, 0) = std::sqrt(u_r_carre);
107 const double nu_sato = coef_sato_ * alpha(e, k) * d_bulles(e, k) * u_r(e,0);
110 const double S_ij = tab_grad(nf_tot + i + e * D , D * n_l_ + j) + tab_grad(nf_tot + j + e * D , D * n_l_ + i);
113 R_ij(e, k, i, j) = 0 ;
114 R_ij(e, 0, i, j) -= nu_sato * S_ij;