104 const int nb_elem = domaine_VEF.
nb_elem();
105 const IntTab& elem_faces = domaine_VEF.
elem_faces();
106 const IntTab& face_voisins = domaine_VEF.
face_voisins();
110 DoubleTab& vorticite = la_vorticite_->valeurs();
111 const DoubleTab& xp = domaine_VEF.
xp();
113 la_vorticite_->mettre_a_jour(vitesse.
temps());
117 double norme, norme_moyen, prod, angle, delta;
118 DoubleVect vorti_moyen(3);
120 IntVect elem_autour(4);
122 int nb_elem_nn, compteur, elem;
125 for (
int num_elem = 0; num_elem < nb_elem; num_elem++)
127 delta =
l_[num_elem];
128 angle = 0.494 * pow(delta, 0.4075);
129 Sin2Angl = sin(angle);
130 Sin2Angl *= Sin2Angl;
132 elem_autour[0] = face_voisins(elem_faces(num_elem, 0), 0);
133 if (elem_autour[0] == num_elem)
134 elem_autour[0] = face_voisins(elem_faces(num_elem, 0), 1);
135 elem_autour[1] = face_voisins(elem_faces(num_elem, 1), 0);
136 if (elem_autour[1] == num_elem)
137 elem_autour[1] = face_voisins(elem_faces(num_elem, 1), 1);
138 elem_autour[2] = face_voisins(elem_faces(num_elem, 2), 0);
139 if (elem_autour[2] == num_elem)
140 elem_autour[2] = face_voisins(elem_faces(num_elem, 2), 1);
141 elem_autour[3] = face_voisins(elem_faces(num_elem, 3), 0);
142 if (elem_autour[3] == num_elem)
143 elem_autour[3] = face_voisins(elem_faces(num_elem, 3), 1);
158 if (elem_autour[compteur] != -1)
161 elem_nn[nb_elem_nn] = elem_autour[compteur];
166 for (elem = 0; elem < nb_elem_nn; elem++)
168 dist[elem] = (x - xp(elem_nn[elem], 0)) * (x - xp(elem_nn[elem], 0)) + (y - xp(elem_nn[elem], 1)) * (y - xp(elem_nn[elem], 1)) + (z - xp(elem_nn[elem], 2)) * (z - xp(elem_nn[elem], 2));
169 dist[elem] = 1. / dist[elem];
174 for (elem = 0; elem < nb_elem_nn; elem++)
176 for (
int k = 0; k < 3; k++)
177 vorti_moyen(k) += dist[elem] * vorticite(elem_nn[elem], k) / d;
181 if (nb_elem_nn == -1)
183 for (
int k = 0; k < 3; k++)
192 for (k = 0; k < 3; k++)
193 norme += carre(vorticite(num_elem, k));
196 for (k = 0; k < 3; k++)
197 norme_moyen += carre(vorti_moyen(k));
199 if ((norme > 1.e-10) && (norme_moyen > 1.e-10))
201 prod = carre(vorti_moyen(1) * vorticite(num_elem, 2) - vorti_moyen(2) * vorticite(num_elem, 1)) + carre(vorti_moyen(2) * vorticite(num_elem, 0) - vorti_moyen(0) * vorticite(num_elem, 2))
202 + carre(vorti_moyen(0) * vorticite(num_elem, 1) - vorti_moyen(1) * vorticite(num_elem, 0));
203 prod /= (norme * norme_moyen);
205 if (prod <= Sin2Angl)
211 Racine_.echange_espace_virtuel();
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
double xp(int num_elem, int k) const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.