60 double temps = mon_equation_->inconnue().
temps();
61 DoubleTab& visco_turb = la_viscosite_turbulente_->valeurs();
62 int nb_elem = ref_cast(
Domaine_VDF, le_dom_VF_.valeur()).nb_elem();
63 int nb_elem_tot = ref_cast(
Domaine_VDF, le_dom_VF_.valeur()).nb_elem_tot();
67 DoubleTrav cell_cent_vel(nb_elem_tot,
dimension);
68 DoubleTrav filt_vel(nb_elem_tot,
dimension);
84 if (visco_turb.
size() != nb_elem)
86 Cerr <<
"erreur dans la taille du DoubleTab valeurs de la viscosite" << finl;
90 Debog::verifier(
"Modele_turbulence_hyd_LES_DSGS_VDF::calculer_viscosite_turbulente visco_turb 0", visco_turb);
92 for (
int elem = 0; elem < nb_elem; elem++)
95 Debog::verifier(
"Modele_turbulence_hyd_LES_DSGS_VDF::calculer_viscosite_turbulente visco_turb 1", visco_turb);
97 coeff_field->changer_temps(temps);
99 la_viscosite_turbulente_->changer_temps(temps);
100 return la_viscosite_turbulente_;
105 const DoubleTab& vitesse = mon_equation_->inconnue().valeurs();
108 const IntTab& elem_faces = domaine_VDF.
elem_faces();
110 int num0, num1, num2, num3, num4 = -1, num5 = -1;
114 for (element_number = 0; element_number < nb_elem_tot; element_number++)
116 num0 = elem_faces(element_number, 0);
117 num1 = elem_faces(element_number, 1);
118 num2 = elem_faces(element_number, 2);
119 num3 = elem_faces(element_number, 3);
122 num4 = elem_faces(element_number, 4);
123 num5 = elem_faces(element_number, 5);
128 cell_cent_vel(element_number, 0) = 0.5 * (vitesse[num0] + vitesse[num2]);
129 cell_cent_vel(element_number, 1) = 0.5 * (vitesse[num1] + vitesse[num3]);
133 cell_cent_vel(element_number, 0) = 0.5 * (vitesse[num0] + vitesse[num3]);
134 cell_cent_vel(element_number, 1) = 0.5 * (vitesse[num1] + vitesse[num4]);
135 cell_cent_vel(element_number, 2) = 0.5 * (vitesse[num2] + vitesse[num5]);
143 const IntTab& face_voisins = domaine_VDF.
face_voisins();
145 const IntTab& elem_faces = domaine_VDF.
elem_faces();
147 int num0, num1, num2, num3, num4, num5;
148 int f0, f1, f2, f3, f4, f5;
151 DoubleTrav temp1(nb_elem_tot,
dimension);
152 DoubleTrav temp2(nb_elem_tot,
dimension);
158 for (element_number = 0; element_number < nb_elem_tot; element_number++)
160 f0 = elem_faces(element_number, 0);
161 num0 = face_voisins(f0, 0);
162 f2 = elem_faces(element_number, 2);
163 num2 = face_voisins(f2, 1);
164 if ((num0 == -1) || (num2 == -1))
166 temp1(element_number, i) = in_vel(element_number, i);
171 temp1(element_number, i) = 0.25 * (in_vel(num0, i) + 2.0 * in_vel(element_number, i) + in_vel(num2, i));
176 for (element_number = 0; element_number < nb_elem_tot; element_number++)
178 f1 = elem_faces(element_number, 1);
179 num1 = face_voisins(f1, 0);
180 f3 = elem_faces(element_number, 3);
181 num3 = face_voisins(f3, 1);
182 if ((num1 == -1) || (num3 == -1))
184 out_vel(element_number, i) = temp1(element_number, i);
189 out_vel(element_number, i) = 0.25 * (temp1(num1, i) + 2.0 * temp1(element_number, i) + temp1(num3, i));
196 for (element_number = 0; element_number < nb_elem_tot; element_number++)
198 f0 = elem_faces(element_number, 0);
199 num0 = face_voisins(f0, 0);
200 f3 = elem_faces(element_number, 3);
201 num3 = face_voisins(f3, 1);
202 if ((num0 == -1) || (num3 == -1))
204 temp1(element_number, i) = in_vel(element_number, i);
209 temp1(element_number, i) = 0.25 * (in_vel(num0, i) + 2.0 * in_vel(element_number, i) + in_vel(num3, i));
214 for (element_number = 0; element_number < nb_elem_tot; element_number++)
216 f1 = elem_faces(element_number, 1);
217 num1 = face_voisins(f1, 0);
218 f4 = elem_faces(element_number, 4);
219 num4 = face_voisins(f4, 1);
220 if ((num1 == -1) || (num4 == -1))
222 temp2(element_number, i) = temp1(element_number, i);
227 temp2(element_number, i) = 0.25 * (temp1(num1, i) + 2.0 * temp1(element_number, i) + temp1(num4, i));
232 for (element_number = 0; element_number < nb_elem_tot; element_number++)
234 f2 = elem_faces(element_number, 2);
235 num2 = face_voisins(f2, 0);
236 f5 = elem_faces(element_number, 5);
237 num5 = face_voisins(f5, 1);
238 if ((num2 == -1) || (num5 == -1))
240 out_vel(element_number, i) = temp2(element_number, i);
245 out_vel(element_number, i) = 0.25 * (temp2(num2, i) + 2.0 * temp2(element_number, i) + temp2(num5, i));
255 const IntTab& face_voisins = domaine_VDF.
face_voisins();
257 const IntTab& elem_faces = domaine_VDF.
elem_faces();
259 int num0, num1, num2, num3, num4, num5;
260 int f0, f1, f2, f3, f4, f5;
270 for (element_number = 0; element_number < nb_elem_tot; element_number++)
272 f0 = elem_faces(element_number, 0);
273 num0 = face_voisins(f0, 0);
274 f2 = elem_faces(element_number, 2);
275 num2 = face_voisins(f2, 1);
276 if ((num0 == -1) || (num2 == -1))
279 temp1(element_number, i, j) = in_vel(element_number, i, j);
285 temp1(element_number, i, j) = 0.25 * (in_vel(num0, i, j) + 2.0 * in_vel(element_number, i, j) + in_vel(num2, i, j));
290 for (element_number = 0; element_number < nb_elem_tot; element_number++)
292 f1 = elem_faces(element_number, 1);
293 num1 = face_voisins(f1, 0);
294 f3 = elem_faces(element_number, 3);
295 num3 = face_voisins(f3, 1);
296 if ((num1 == -1) || (num3 == -1))
299 in_vel(element_number, i, j) = temp1(element_number, i, j);
305 in_vel(element_number, i, j) = 0.25 * (temp1(num1, i, j) + 2.0 * temp1(element_number, i, j) + temp1(num3, i, j));
312 for (element_number = 0; element_number < nb_elem_tot; element_number++)
314 f0 = elem_faces(element_number, 0);
315 num0 = face_voisins(f0, 0);
316 f3 = elem_faces(element_number, 3);
317 num3 = face_voisins(f3, 1);
318 if ((num0 == -1) || (num3 == -1))
321 temp1(element_number, i, j) = in_vel(element_number, i, j);
327 temp1(element_number, i, j) = 0.25 * (in_vel(num0, i, j) + 2.0 * in_vel(element_number, i, j) + in_vel(num3, i, j));
332 for (element_number = 0; element_number < nb_elem_tot; element_number++)
334 f1 = elem_faces(element_number, 1);
335 num1 = face_voisins(f1, 0);
336 f4 = elem_faces(element_number, 4);
337 num4 = face_voisins(f4, 1);
338 if ((num1 == -1) || (num4 == -1))
341 temp2(element_number, i, j) = temp1(element_number, i, j);
347 temp2(element_number, i, j) = 0.25 * (temp1(num1, i, j) + 2.0 * temp1(element_number, i, j) + temp1(num4, i, j));
352 for (element_number = 0; element_number < nb_elem_tot; element_number++)
354 f2 = elem_faces(element_number, 2);
355 num2 = face_voisins(f2, 0);
356 f5 = elem_faces(element_number, 5);
357 num5 = face_voisins(f5, 1);
358 if ((num2 == -1) || (num5 == -1))
361 in_vel(element_number, i, j) = temp2(element_number, i, j);
367 in_vel(element_number, i, j) = 0.25 * (temp2(num2, i, j) + 2.0 * temp2(element_number, i, j) + temp2(num5, i, j));
377 const IntTab& face_voisins = domaine_VDF.
face_voisins();
379 const IntTab& elem_faces = domaine_VDF.
elem_faces();
381 int num0, num1, num2, num3, num4, num5;
382 int f0, f1, f2, f3, f4, f5;
384 DoubleTrav temp1(nb_elem_tot);
385 DoubleTrav temp2(nb_elem_tot);
391 for (element_number = 0; element_number < nb_elem_tot; element_number++)
393 f0 = elem_faces(element_number, 0);
394 num0 = face_voisins(f0, 0);
395 f2 = elem_faces(element_number, 2);
396 num2 = face_voisins(f2, 1);
397 if ((num0 == -1) || (num2 == -1))
398 temp1(element_number) = 3.0 * in_vel(element_number);
401 temp1(element_number) = in_vel(num0) + in_vel(element_number) + in_vel(num2);
405 for (element_number = 0; element_number < nb_elem_tot; element_number++)
407 f1 = elem_faces(element_number, 1);
408 num1 = face_voisins(f1, 0);
409 f3 = elem_faces(element_number, 3);
410 num3 = face_voisins(f3, 1);
411 if ((num1 == -1) || (num3 == -1))
412 in_vel(element_number) = temp1(element_number) / 3.0;
415 in_vel(element_number) = (temp1(num1) + temp1(element_number) + temp1(num3)) / 9.0;
421 for (element_number = 0; element_number < nb_elem_tot; element_number++)
423 f0 = elem_faces(element_number, 0);
424 num0 = face_voisins(f0, 0);
425 f3 = elem_faces(element_number, 3);
426 num3 = face_voisins(f3, 1);
427 if ((num0 == -1) || (num3 == -1))
428 temp1(element_number) = 3.0 * in_vel(element_number);
431 temp1(element_number) = in_vel(num0) + in_vel(element_number) + in_vel(num3);
435 for (element_number = 0; element_number < nb_elem_tot; element_number++)
437 f1 = elem_faces(element_number, 1);
438 num1 = face_voisins(f1, 0);
439 f4 = elem_faces(element_number, 4);
440 num4 = face_voisins(f4, 1);
441 if ((num1 == -1) || (num4 == -1))
442 temp2(element_number) = 3.0 * temp1(element_number);
445 temp2(element_number) = temp1(num1) + temp1(element_number) + temp1(num4);
449 for (element_number = 0; element_number < nb_elem_tot; element_number++)
451 f2 = elem_faces(element_number, 2);
452 num2 = face_voisins(f2, 0);
453 f5 = elem_faces(element_number, 5);
454 num5 = face_voisins(f5, 1);
455 if ((num2 == -1) || (num5 == -1))
456 in_vel(element_number) = temp2(element_number) / 9.0;
459 in_vel(element_number) = (temp2(num2) + temp2(element_number) + temp2(num5)) / 27.0;
499 double temp, coeff = 0;
500 const double alpha = sqrt(6.0);
503 sij_filt = Sij_grid_scale;
507 for (element_number = 0; element_number < nb_elem_tot; element_number++)
512 temp += Sij_grid_scale(element_number, i, j) * Sij_grid_scale(element_number, i, j);
514 coeff = sqrt(2.0 * temp);
517 Cerr <<
"dans " <<
que_suis_je() <<
" le calcul de coeff est debile!!!!" << finl;
518 Cerr <<
" On fait planter pour corriger plus tard " << finl;
527 for (element_number = 0; element_number < nb_elem_tot; element_number++)
532 temp += Sij_test_scale(element_number, i, j) * Sij_test_scale(element_number, i, j);
534 coeff = sqrt(2.0 * temp);
537 Mij(element_number, i, j) =
l_[element_number] *
l_[element_number] * (alpha * alpha * coeff * Sij_test_scale(element_number, i, j) - sij_filt(element_number, i, j));
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
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.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.