102 const int nb_elem = domaine_VEF.
nb_elem();
103 const IntTab& elem_faces = domaine_VEF.
elem_faces();
104 const IntTab& face_voisins = domaine_VEF.
face_voisins();
108 DoubleTab& vorticite = la_vorticite_->valeurs();
109 const DoubleTab& xp = domaine_VEF.
xp();
111 la_vorticite_->mettre_a_jour(vitesse.
temps());
115 double norme, norme_moyen, prod, angle;
116 DoubleVect vorti_moyen(3);
118 IntVect elem_autour(4);
120 int nb_elem_nn, compteur, elem, k, num_elem;
129 static double ki = 2.5;
132 for (num_elem = 0; num_elem < nb_elem; num_elem++)
135 kc = M_PI /
l_[num_elem];
139 Sin2Angl = sin(angle);
140 Sin2Angl *= Sin2Angl;
142 elem_autour[0] = face_voisins(elem_faces(num_elem, 0), 0);
143 if (elem_autour[0] == num_elem)
144 elem_autour[0] = face_voisins(elem_faces(num_elem, 0), 1);
145 elem_autour[1] = face_voisins(elem_faces(num_elem, 1), 0);
146 if (elem_autour[1] == num_elem)
147 elem_autour[1] = face_voisins(elem_faces(num_elem, 1), 1);
148 elem_autour[2] = face_voisins(elem_faces(num_elem, 2), 0);
149 if (elem_autour[2] == num_elem)
150 elem_autour[2] = face_voisins(elem_faces(num_elem, 2), 1);
151 elem_autour[3] = face_voisins(elem_faces(num_elem, 3), 0);
152 if (elem_autour[3] == num_elem)
153 elem_autour[3] = face_voisins(elem_faces(num_elem, 3), 1);
168 if (elem_autour[compteur] != -1)
170 elem_nn[nb_elem_nn] = elem_autour[compteur];
176 for (elem = 0; elem < nb_elem_nn; elem++)
178 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));
179 dist[elem] = 1. / sqrt(dist[elem]);
184 for (elem = 0; elem < nb_elem_nn; elem++)
186 for (k = 0; k < 3; k++)
187 vorti_moyen(k) += dist[elem] * vorticite(elem_nn[elem], k) / d;
193 for (k = 0; k < 3; k++)
202 for (kk = 0; kk < 3; kk++)
203 norme += carre(vorticite(num_elem, kk));
206 for (kk = 0; kk < 3; kk++)
207 norme_moyen += carre(vorti_moyen(kk));
209 if ((norme > 1.e-10) && (norme_moyen > 1.e-10))
211 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))
212 + carre(vorti_moyen(0) * vorticite(num_elem, 1) - vorti_moyen(1) * vorticite(num_elem, 0));
213 prod /= (norme * norme_moyen);
215 if (prod <= Sin2Angl)
223 F2_.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.