126 const DoubleTab& vitesse = mon_equation_->inconnue().valeurs();
130 const IntTab& face_voisins = domaine_VDF.
face_voisins();
131 const IntTab& elem_faces = domaine_VDF.
elem_faces();
132 const IntTab& Qdm = domaine_VDF.
Qdm();
133 const IntVect& orientation = domaine_VDF.
orientation();
135 DoubleTrav F_Elem(nb_poly_tot,
dimension);
136 int num0, num1, num2, num3;
138 double diff1, diff2, aux;
163 for (num_elem = 0; num_elem < nb_poly; num_elem++)
166 diff = vitesse[elem_faces(num_elem, 0)] - vitesse[elem_faces(num_elem, 3)];
167 F_Elem(num_elem, 0) = diff * diff;
168 diff = vitesse[elem_faces(num_elem, 1)] - vitesse[elem_faces(num_elem, 4)];
169 F_Elem(num_elem, 1) = diff * diff;
170 diff = vitesse[elem_faces(num_elem, 2)] - vitesse[elem_faces(num_elem, 5)];
171 F_Elem(num_elem, 2) = diff * diff;
181 for (num_arete = ndeb; num_arete < nfin; num_arete++)
183 num0 = Qdm(num_arete, 0);
184 num1 = Qdm(num_arete, 1);
185 num2 = Qdm(num_arete, 2);
186 num3 = Qdm(num_arete, 3);
188 aux = vitesse[num1] - vitesse[num0];
189 diff1 = 0.25 * aux * aux;
190 aux = vitesse[num3] - vitesse[num2];
191 diff2 = 0.25 * aux * aux;
192 k1 = orientation(num0);
193 k2 = orientation(num2);
195 F_Elem(face_voisins(num0, 0), k2) += diff1;
196 F_Elem(face_voisins(num0, 1), k2) += diff1;
197 F_Elem(face_voisins(num1, 0), k2) += diff1;
198 F_Elem(face_voisins(num1, 1), k2) += diff1;
199 F_Elem(face_voisins(num2, 0), k1) += diff2;
200 F_Elem(face_voisins(num2, 1), k1) += diff2;
201 F_Elem(face_voisins(num3, 0), k1) += diff2;
202 F_Elem(face_voisins(num3, 1), k1) += diff2;
212 for (num_arete = ndeb; num_arete < nfin; num_arete++)
214 num0 = Qdm(num_arete, 0);
215 num1 = Qdm(num_arete, 1);
216 num2 = Qdm(num_arete, 2);
217 num3 = Qdm(num_arete, 3);
219 aux = vitesse[num1] - vitesse[num0];
220 diff1 = 0.25 * aux * aux;
221 aux = vitesse[num3] - vitesse[num2];
222 diff2 = 0.25 * aux * aux;
223 k1 = orientation(num0);
224 k2 = orientation(num2);
227 num_elem = face_voisins(num0, 0);
229 F_Elem(num_elem, k2) += diff1;
230 num_elem = face_voisins(num0, 1);
232 F_Elem(num_elem, k2) += diff1;
233 num_elem = face_voisins(num1, 0);
235 F_Elem(num_elem, k2) += diff1;
236 num_elem = face_voisins(num1, 1);
238 F_Elem(num_elem, k2) += diff1;
239 num_elem = face_voisins(num2, 0);
241 F_Elem(num_elem, k1) += diff2;
242 num_elem = face_voisins(num2, 1);
244 F_Elem(num_elem, k1) += diff2;
245 num_elem = face_voisins(num3, 0);
247 F_Elem(num_elem, k1) += diff2;
248 num_elem = face_voisins(num3, 1);
250 F_Elem(num_elem, k1) += diff2;
268 for (num_arete = ndeb; num_arete < nfin; num_arete++)
279 num0 = Qdm(num_arete, 0);
280 num1 = Qdm(num_arete, 1);
281 num2 = Qdm(num_arete, 2);
282 num3 = Qdm(num_arete, 3);
284 aux = vitesse[num1] - vitesse[num0];
285 diff1 = 0.5 * 0.25 * aux * aux;
286 aux = vitesse[num3] - vitesse[num2];
287 diff2 = 0.5 * 0.25 * aux * aux;
288 k1 = orientation(num0);
289 k2 = orientation(num2);
294 F_Elem(face_voisins(num0, 0), k2) += diff1;
295 F_Elem(face_voisins(num0, 1), k2) += diff1;
296 F_Elem(face_voisins(num1, 0), k2) += diff1;
297 F_Elem(face_voisins(num1, 1), k2) += diff1;
298 F_Elem(face_voisins(num2, 0), k1) += diff2;
299 F_Elem(face_voisins(num2, 1), k1) += diff2;
300 F_Elem(face_voisins(num3, 0), k1) += diff2;
301 F_Elem(face_voisins(num3, 1), k1) += diff2;
311 num0 = Qdm(num_arete, 0);
312 num1 = Qdm(num_arete, 1);
313 num2 = Qdm(num_arete, 2);
315 aux = vitesse[num1] - vitesse[num0];
316 diff1 = 0.25 * aux * aux;
319 k1 = orientation(num0);
320 k2 = orientation(num2);
322 num_elem = face_voisins(num0, 0);
324 num_elem = face_voisins(num0, 1);
325 F_Elem(num_elem, k2) += diff1;
327 num_elem = face_voisins(num1, 0);
329 num_elem = face_voisins(num1, 1);
330 F_Elem(num_elem, k2) += diff1;
341 for (num_arete = ndeb; num_arete < nfin; num_arete++)
351 num0 = Qdm(num_arete, 0);
352 num1 = Qdm(num_arete, 1);
353 num2 = Qdm(num_arete, 2);
354 num3 = Qdm(num_arete, 3);
356 aux = vitesse[num1] - vitesse[num0];
357 diff1 = 0.25 * 0.25 * aux * aux;
358 aux = vitesse[num3] - vitesse[num2];
359 diff2 = 0.25 * 0.25 * aux * aux;
360 k1 = orientation(num0);
361 k2 = orientation(num2);
366 F_Elem(face_voisins(num0, 0), k2) += diff1;
367 F_Elem(face_voisins(num0, 1), k2) += diff1;
368 F_Elem(face_voisins(num1, 0), k2) += diff1;
369 F_Elem(face_voisins(num1, 1), k2) += diff1;
370 F_Elem(face_voisins(num2, 0), k1) += diff2;
371 F_Elem(face_voisins(num2, 1), k1) += diff2;
372 F_Elem(face_voisins(num3, 0), k1) += diff2;
373 F_Elem(face_voisins(num3, 1), k1) += diff2;
381 num0 = Qdm(num_arete, 0);
382 num1 = Qdm(num_arete, 1);
383 num2 = Qdm(num_arete, 2);
388 aux = vitesse[num1] - vitesse[num0];
389 diff1 = 0.5 * 0.25 * aux * aux;
392 k1 = orientation(num0);
393 k2 = orientation(num2);
395 num_elem = face_voisins(num0, 0);
397 num_elem = face_voisins(num0, 1);
398 F_Elem(num_elem, k2) += diff1;
400 num_elem = face_voisins(num1, 0);
402 num_elem = face_voisins(num1, 1);
403 F_Elem(num_elem, k2) += diff1;
410 double un_tiers = 1. / 3.;
411 double deux_tiers = 2. / 3.;
413 double un_demi = 1. / 2.;
418 for (num_elem = 0; num_elem < nb_poly; num_elem++)
420 delta_C =
l_(num_elem);
421 F2_[num_elem] = un_tiers
422 * (F_Elem(num_elem, 0) * pow(delta_C / domaine_VDF.
dim_elem(num_elem, 0), deux_tiers) + F_Elem(num_elem, 1) * pow(delta_C / domaine_VDF.
dim_elem(num_elem, 1), deux_tiers)
423 + F_Elem(num_elem, 2) * pow(delta_C / domaine_VDF.
dim_elem(num_elem, 2), deux_tiers));
431 for (num_elem = 0; num_elem < nb_poly; num_elem++)
433 delta_C =
l_(num_elem);
434 F2_[num_elem] = un_demi
435 * (F_Elem(num_elem,
dir1_) * pow(delta_C / domaine_VDF.
dim_elem(num_elem,
dir1_), deux_tiers)
436 + F_Elem(num_elem,
dir2_) * pow(delta_C / domaine_VDF.
dim_elem(num_elem,
dir2_), deux_tiers));
446 for (
int n_bord = 0; n_bord < domaine_VDF.
nb_front_Cl(); n_bord++)
457 for (num_face = ndeb; num_face < nfin; num_face++)
458 if ((n0 = face_voisins(num_face, 0)) != -1)
465 n1 = face_voisins(num_face, 1);
475 for (num_face = ndeb; num_face < nfin; num_face++)
476 if ((n0 = face_voisins(num_face, 0)) != -1)
483 n1 = face_voisins(num_face, 1);
488 else if ((sub_type(
Symetrie, la_cl.valeur())) || (sub_type(
Periodique, la_cl.valeur())))
501 for (num_face = ndeb; num_face < nfin; num_face++)
502 if ((n0 = face_voisins(num_face, 0)) != -1)
506 n1 = face_voisins(num_face, 1);
514 Cerr <<
"The structure fonction subgrid model can be used" << finl;
515 Cerr <<
"only for dimesnion 3." << finl;