56 if (est_egal(
mod_const_, 0., 1.e-15)) nu_t = 0.;
63 const DoubleTab& grad_u__ = pb_->get_champ(
"gradient_vitesse").valeurs();
67 const bool is_poly = pb_->discretisation().is_poly_family();
68 const int nb_faces_tot = is_poly ? domaine_VF.
nb_faces_tot() : 0;
71 DoubleTrav num_sur_denom(nb_elem_tot, nu_t.
dimension(1));
74 DoubleTrav grad_u(nb_elem_tot, dim, dim, N), gij_bar2(dim, dim, N), Sij_d(dim, dim, N);
75 grad_u = 0., gij_bar2 = 0., Sij_d = 0.;
79 for (
int elem = 0; elem < nb_elem_tot; elem++)
80 for (
int i = 0; i < dim; i++)
81 for (
int j = 0; j < dim; j++)
82 for (
int n = 0; n < N; n++)
83 grad_u(elem, i, j, n) = is_poly ? grad_u__(nb_faces_tot + elem * dim + j, n * dim + i) : grad_u__(nb_faces_tot + elem, N * (dim * i + j) + n);
86 ArrOfDouble gkk_bar2(N), Sij_d2(N), Sij_bar(N), Sij_bar2(N);;
88 for (
int elem = 0; elem < nb_elem_tot; elem++)
91 for (
int i = 0; i < dim; i++)
92 for (
int j = 0; j < dim; j++)
93 for (
int n = 0; n < N; n++)
95 gij_bar2(i, j, n) = 0.;
96 for (
int k = 0; k < dim; k++)
97 gij_bar2(i, j, n) += grad_u(elem, i, k, n) * grad_u(elem, k, j, n);
101 for (
int k = 0; k < dim; k++)
102 for (
int n = 0; n < N; n++)
103 gkk_bar2(n) += gij_bar2(k, k, n);
105 for (
int i = 0; i < dim; i++)
106 for (
int j = 0; j < dim; j++)
107 for (
int n = 0; n < N; n++)
109 Sij_d(i, j, n) = 0.5 * (gij_bar2(i, j, n) + gij_bar2(j, i, n));
111 Sij_d(i, j, n) -= gkk_bar2(n) / 3.;
115 Sij_d2 = 0., Sij_bar = 0., Sij_bar2 = 0.;
117 for (
int i = 0; i < dim; i++)
118 for (
int j = 0; j < dim; j++)
119 for (
int n = 0; n < N; n++)
121 Sij_d2(n) += Sij_d(i, j, n) * Sij_d(i, j, n);
124 Sij_bar(n) = 0.5 * (grad_u(elem, i, j, n) + grad_u(elem, j, i, n));
127 const int face1 = elem_faces(elem, i), face2 = elem_faces(elem, i + dim), elem1 = face_voisins(face1, 0), elem2 = face_voisins(face2, 1);
129 if (elem1 >= 0 && elem2 >= 0)
130 Sij_bar(n) = ((grad_u(elem1, i, i, 0) + grad_u(elem, i, i, 0) + grad_u(elem2, i, i, 0))) / 3.;
132 Sij_bar2(n) += Sij_bar(n) * Sij_bar(n);
135 for (
int n = 0; n < N; n++)
137 const double num = pow(Sij_d2(n), 1.5), denom = pow(Sij_bar2(n), 2.5) + pow(Sij_d2(n), 1.25);
138 num_sur_denom(elem, n) = num != 0. ? (num / denom) : 0.;
142 for (
int i = 0; i < nu_t.
dimension(0); i++)
143 for (
int n = 0; n < nu_t.
dimension(1); n++)
int nb_faces_tot() const
renvoie le nombre total de faces.
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.