102 const IntTab& face_voisins = domaine_VDF.
face_voisins();
103 const IntTab& elem_faces = domaine_VDF.
elem_faces();
105 DoubleTab& vorticite = la_vorticite_->valeurs();
107 la_vorticite_->mettre_a_jour(vitesse.
temps());
110 int elx0, elx1, ely0, ely1, elz0, elz1, i;
111 double norme, norme_moyen, prod;
112 DoubleVect vorti_moyen(3);
114 for (
int num_elem = 0; num_elem < nb_poly; num_elem++)
116 elx0 = face_voisins(elem_faces(num_elem, 0), 0);
117 elx1 = face_voisins(elem_faces(num_elem, 3), 1);
118 ely0 = face_voisins(elem_faces(num_elem, 1), 0);
119 ely1 = face_voisins(elem_faces(num_elem, 4), 1);
120 elz0 = face_voisins(elem_faces(num_elem, 2), 0);
121 elz1 = face_voisins(elem_faces(num_elem, 5), 1);
123 double dx0 = 0., dx1 = 0., dy0 = 0., dy1 = 0., dz0 = 0., dz1 = 0.;
124 for (i = 0; i < 3; i++)
140 if (std::fabs(dx0) > DMINFLOAT)
141 dx0 = 1. / sqrt(dx0);
142 if (std::fabs(dx1) > DMINFLOAT)
143 dx1 = 1. / sqrt(dx1);
144 if (std::fabs(dy0) > DMINFLOAT)
145 dy0 = 1. / sqrt(dy0);
146 if (std::fabs(dy1) > DMINFLOAT)
147 dy1 = 1. / sqrt(dy1);
148 if (std::fabs(dz0) > DMINFLOAT)
149 dz0 = 1. / sqrt(dz0);
150 if (std::fabs(dz1) > DMINFLOAT)
151 dz1 = 1. / sqrt(dz1);
153 if ((elx0 != -1) && (elx1 != -1) && (ely0 != -1) && (ely1 != -1) && (elz0 != -1) && (elz1 != -1))
156 for (
int k = 0; k < 3; k++)
157 vorti_moyen(k) = (dx0 * vorticite(elx0, k) + dx1 * vorticite(elx1, k) + dy0 * vorticite(ely0, k) + dy1 * vorticite(ely1, k) + dz0 * vorticite(elz0, k) + dz1 * vorticite(elz1, k))
158 / (dx0 + dx1 + dy0 + dy1 + dz0 + dz1);
160 else if ((elx0 != -1) && (elx1 != -1) && (ely0 != -1) && (ely1 != -1))
162 for (
int k = 0; k < 3; k++)
163 vorti_moyen(k) = (dx0 * vorticite(elx0, k) + dx1 * vorticite(elx1, k) + dy0 * vorticite(ely0, k) + dy1 * vorticite(ely1, k)) / (dx0 + dx1 + dy0 + dy1);
165 else if ((elx0 != -1) && (elx1 != -1) && (elz0 != -1) && (elz1 != -1))
167 for (
int k = 0; k < 3; k++)
168 vorti_moyen(k) = (dx0 * vorticite(elx0, k) + dx1 * vorticite(elx1, k) + dz0 * vorticite(elz0, k) + dz1 * vorticite(elz1, k)) / (dx0 + dx1 + dz0 + dz1);
170 else if ((ely0 != -1) && (ely1 != -1) && (elz0 != -1) && (elz1 != -1))
172 for (
int k = 0; k < 3; k++)
173 vorti_moyen(k) = (dy0 * vorticite(ely0, k) + dy1 * vorticite(ely1, k) + dz0 * vorticite(elz0, k) + dz1 * vorticite(elz1, k)) / (dy0 + dy1 + dz0 + dz1);
175 else if ((elx0 != -1) && (elx1 != -1))
177 for (
int k = 0; k < 3; k++)
178 vorti_moyen(k) = (dx0 * vorticite(elx0, k) + dx1 * vorticite(elx1, k)) / (dx0 + dx1);
180 else if ((ely0 != -1) && (ely1 != -1))
182 for (
int k = 0; k < 3; k++)
183 vorti_moyen(k) = (dy0 * vorticite(ely0, k) + dy1 * vorticite(ely1, k)) / (dy0 + dy1);
185 else if ((elz0 != -1) && (elz1 != -1))
187 for (
int k = 0; k < 3; k++)
188 vorti_moyen(k) = (dz0 * vorticite(elz0, k) + dz1 * vorticite(elz1, k)) / (dz0 + dz1);
193 for (
int k = 0; k < 3; k++)
202 for (k = 0; k < 3; k++)
203 norme += carre(vorticite(num_elem, k));
206 for (k = 0; k < 3; k++)
207 norme_moyen += carre(vorti_moyen(k));
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)
225 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
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.