217 if (
domaine.type_elem()->que_suis_je() ==
"Hexaedre" ||
domaine.type_elem()->que_suis_je() ==
"Hexaedre_VEF")
219 IntTab& les_elems =
domaine.les_elems();
221 IntTab elem_traite(oldsz);
222 int oldnbsom =
domaine.nb_som();
223 IntTab new_elems(40 * oldsz, 4);
225 IntTab new_soms_old_elems(oldsz, 19);
236 DoubleTab& sommets_dom =
domaine.les_sommets();
238 int dim_som_max = 27 * oldsz;
239 int dim_som_old = sommets_dom.
dimension(0);
240 sommets_dom.
resize(dim_som_max, 3);
243 DoubleTab new_soms(19, 3);
245 for (i = 0; i < oldsz; i++)
247 int i0 = les_elems(i, 0);
248 int i1 = les_elems(i, 1);
249 int i2 = les_elems(i, 2);
250 int i3 = les_elems(i, 3);
251 int i4 = les_elems(i, 4);
252 int i5 = les_elems(i, 5);
253 int i6 = les_elems(i, 6);
254 int i7 = les_elems(i, 7);
269 indice(0) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 8, sommets, compteur, oldnbsom, nbnewsoms);
274 indice(1) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 4, sommets, compteur, oldnbsom, nbnewsoms);
281 indice(2) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 4, sommets, compteur, oldnbsom, nbnewsoms);
288 indice(3) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 4, sommets, compteur, oldnbsom, nbnewsoms);
295 indice(4) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 4, sommets, compteur, oldnbsom, nbnewsoms);
302 indice(5) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 4, sommets, compteur, oldnbsom, nbnewsoms);
309 indice(6) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 4, sommets, compteur, oldnbsom, nbnewsoms);
316 indice(7) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
321 indice(8) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
326 indice(9) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
331 indice(10) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
336 indice(11) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
341 indice(12) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
346 indice(13) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
351 indice(14) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
356 indice(15) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
361 indice(16) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
366 indice(17) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
371 indice(18) = creer_sommet(
domaine, new_soms, elem_traite, new_soms_old_elems, 2, sommets, compteur, oldnbsom, nbnewsoms);
375 for (
int t = 0; t < 19; t++)
377 new_soms_old_elems(i, t) = indice(t);
380 Cerr <<
"Error negative index" << finl;
383 for (
int s = 0; s < t; s++)
384 if (indice(s) == indice(t))
386 Cerr <<
"Error repeated index" << finl;
392 for (
int j = 0; j < compteur; j++)
393 for (
int k = 0; k < 3; k++)
394 sommets_dom(dim_som_old + j, k) = new_soms(j, k);
395 dim_som_old += compteur;
401 new_elems(i, 0) = les_elems(i, 0);
402 new_elems(i, 1) = indice(7);
403 new_elems(i, 2) = indice(3);
404 new_elems(i, 3) = indice(1);
406 new_elems(i + oldsz, 0) = les_elems(i, 0);
407 new_elems(i + oldsz, 1) = indice(9);
408 new_elems(i + oldsz, 2) = indice(3);
409 new_elems(i + oldsz, 3) = indice(2);
412 new_elems(i + 2 * oldsz, 0) = les_elems(i, 0);
413 new_elems(i + 2 * oldsz, 1) = indice(8);
414 new_elems(i + 2 * oldsz, 2) = indice(1);
415 new_elems(i + 2 * oldsz, 3) = indice(2);
418 new_elems(i + 3 * oldsz, 0) = indice(3);
419 new_elems(i + 3 * oldsz, 1) = indice(0);
420 new_elems(i + 3 * oldsz, 2) = indice(1);
421 new_elems(i + 3 * oldsz, 3) = indice(2);
424 new_elems(i + 4 * oldsz, 0) = les_elems(i, 0);
425 new_elems(i + 4 * oldsz, 1) = indice(3);
426 new_elems(i + 4 * oldsz, 2) = indice(1);
427 new_elems(i + 4 * oldsz, 3) = indice(2);
431 new_elems(i + 5 * oldsz, 0) = les_elems(i, 1);
432 new_elems(i + 5 * oldsz, 1) = indice(7);
433 new_elems(i + 5 * oldsz, 2) = indice(3);
434 new_elems(i + 5 * oldsz, 3) = indice(1);
437 new_elems(i + 6 * oldsz, 0) = les_elems(i, 1);
438 new_elems(i + 6 * oldsz, 1) = indice(11);
439 new_elems(i + 6 * oldsz, 2) = indice(3);
440 new_elems(i + 6 * oldsz, 3) = indice(5);
443 new_elems(i + 7 * oldsz, 0) = les_elems(i, 1);
444 new_elems(i + 7 * oldsz, 1) = indice(1);
445 new_elems(i + 7 * oldsz, 2) = indice(10);
446 new_elems(i + 7 * oldsz, 3) = indice(5);
449 new_elems(i + 8 * oldsz, 0) = indice(1);
450 new_elems(i + 8 * oldsz, 1) = indice(3);
451 new_elems(i + 8 * oldsz, 2) = indice(0);
452 new_elems(i + 8 * oldsz, 3) = indice(5);
455 new_elems(i + 9 * oldsz, 0) = les_elems(i, 1);
456 new_elems(i + 9 * oldsz, 1) = indice(1);
457 new_elems(i + 9 * oldsz, 2) = indice(3);
458 new_elems(i + 9 * oldsz, 3) = indice(5);
462 new_elems(i + 10 * oldsz, 0) = les_elems(i, 2);
463 new_elems(i + 10 * oldsz, 1) = indice(1);
464 new_elems(i + 10 * oldsz, 2) = indice(6);
465 new_elems(i + 10 * oldsz, 3) = indice(12);
468 new_elems(i + 11 * oldsz, 0) = les_elems(i, 2);
469 new_elems(i + 11 * oldsz, 1) = indice(2);
470 new_elems(i + 11 * oldsz, 2) = indice(8);
471 new_elems(i + 11 * oldsz, 3) = indice(1);
474 new_elems(i + 12 * oldsz, 0) = les_elems(i, 2);
475 new_elems(i + 12 * oldsz, 1) = indice(2);
476 new_elems(i + 12 * oldsz, 2) = indice(6);
477 new_elems(i + 12 * oldsz, 3) = indice(13);
480 new_elems(i + 13 * oldsz, 0) = indice(2);
481 new_elems(i + 13 * oldsz, 1) = indice(0);
482 new_elems(i + 13 * oldsz, 2) = indice(6);
483 new_elems(i + 13 * oldsz, 3) = indice(1);
486 new_elems(i + 14 * oldsz, 0) = les_elems(i, 2);
487 new_elems(i + 14 * oldsz, 1) = indice(2);
488 new_elems(i + 14 * oldsz, 2) = indice(6);
489 new_elems(i + 14 * oldsz, 3) = indice(1);
493 new_elems(i + 15 * oldsz, 0) = les_elems(i, 3);
494 new_elems(i + 15 * oldsz, 1) = indice(1);
495 new_elems(i + 15 * oldsz, 2) = indice(10);
496 new_elems(i + 15 * oldsz, 3) = indice(5);
499 new_elems(i + 16 * oldsz, 0) = les_elems(i, 3);
500 new_elems(i + 16 * oldsz, 1) = indice(14);
501 new_elems(i + 16 * oldsz, 2) = indice(6);
502 new_elems(i + 16 * oldsz, 3) = indice(5);
505 new_elems(i + 17 * oldsz, 0) = les_elems(i, 3);
506 new_elems(i + 17 * oldsz, 1) = indice(12);
507 new_elems(i + 17 * oldsz, 2) = indice(6);
508 new_elems(i + 17 * oldsz, 3) = indice(1);
511 new_elems(i + 18 * oldsz, 0) = indice(0);
512 new_elems(i + 18 * oldsz, 1) = indice(5);
513 new_elems(i + 18 * oldsz, 2) = indice(6);
514 new_elems(i + 18 * oldsz, 3) = indice(1);
517 new_elems(i + 19 * oldsz, 0) = les_elems(i, 3);
518 new_elems(i + 19 * oldsz, 1) = indice(5);
519 new_elems(i + 19 * oldsz, 2) = indice(6);
520 new_elems(i + 19 * oldsz, 3) = indice(1);
524 new_elems(i + 20 * oldsz, 0) = les_elems(i, 4);
525 new_elems(i + 20 * oldsz, 1) = indice(9);
526 new_elems(i + 20 * oldsz, 2) = indice(3);
527 new_elems(i + 20 * oldsz, 3) = indice(2);
530 new_elems(i + 21 * oldsz, 0) = les_elems(i, 4);
531 new_elems(i + 21 * oldsz, 1) = indice(4);
532 new_elems(i + 21 * oldsz, 2) = indice(3);
533 new_elems(i + 21 * oldsz, 3) = indice(15);
536 new_elems(i + 22 * oldsz, 0) = les_elems(i, 4);
537 new_elems(i + 22 * oldsz, 1) = indice(4);
538 new_elems(i + 22 * oldsz, 2) = indice(2);
539 new_elems(i + 22 * oldsz, 3) = indice(16);
542 new_elems(i + 23 * oldsz, 0) = indice(0);
543 new_elems(i + 23 * oldsz, 1) = indice(4);
544 new_elems(i + 23 * oldsz, 2) = indice(2);
545 new_elems(i + 23 * oldsz, 3) = indice(3);
548 new_elems(i + 24 * oldsz, 0) = les_elems(i, 4);
549 new_elems(i + 24 * oldsz, 1) = indice(4);
550 new_elems(i + 24 * oldsz, 2) = indice(2);
551 new_elems(i + 24 * oldsz, 3) = indice(3);
555 new_elems(i + 25 * oldsz, 0) = les_elems(i, 5);
556 new_elems(i + 25 * oldsz, 1) = indice(3);
557 new_elems(i + 25 * oldsz, 2) = indice(11);
558 new_elems(i + 25 * oldsz, 3) = indice(5);
561 new_elems(i + 26 * oldsz, 0) = les_elems(i, 5);
562 new_elems(i + 26 * oldsz, 1) = indice(3);
563 new_elems(i + 26 * oldsz, 2) = indice(15);
564 new_elems(i + 26 * oldsz, 3) = indice(4);
567 new_elems(i + 27 * oldsz, 0) = les_elems(i, 5);
568 new_elems(i + 27 * oldsz, 1) = indice(5);
569 new_elems(i + 27 * oldsz, 2) = indice(17);
570 new_elems(i + 27 * oldsz, 3) = indice(4);
573 new_elems(i + 28 * oldsz, 0) = indice(0);
574 new_elems(i + 28 * oldsz, 1) = indice(3);
575 new_elems(i + 28 * oldsz, 2) = indice(5);
576 new_elems(i + 28 * oldsz, 3) = indice(4);
579 new_elems(i + 29 * oldsz, 0) = les_elems(i, 5);
580 new_elems(i + 29 * oldsz, 1) = indice(5);
581 new_elems(i + 29 * oldsz, 2) = indice(3);
582 new_elems(i + 29 * oldsz, 3) = indice(4);
586 new_elems(i + 30 * oldsz, 0) = les_elems(i, 6);
587 new_elems(i + 30 * oldsz, 1) = indice(2);
588 new_elems(i + 30 * oldsz, 2) = indice(4);
589 new_elems(i + 30 * oldsz, 3) = indice(16);
592 new_elems(i + 31 * oldsz, 0) = les_elems(i, 6);
593 new_elems(i + 31 * oldsz, 1) = indice(6);
594 new_elems(i + 31 * oldsz, 2) = indice(4);
595 new_elems(i + 31 * oldsz, 3) = indice(18);
598 new_elems(i + 32 * oldsz, 0) = les_elems(i, 6);
599 new_elems(i + 32 * oldsz, 1) = indice(6);
600 new_elems(i + 32 * oldsz, 2) = indice(2);
601 new_elems(i + 32 * oldsz, 3) = indice(13);
604 new_elems(i + 33 * oldsz, 0) = indice(0);
605 new_elems(i + 33 * oldsz, 1) = indice(6);
606 new_elems(i + 33 * oldsz, 2) = indice(2);
607 new_elems(i + 33 * oldsz, 3) = indice(4);
610 new_elems(i + 34 * oldsz, 0) = les_elems(i, 6);
611 new_elems(i + 34 * oldsz, 1) = indice(6);
612 new_elems(i + 34 * oldsz, 2) = indice(2);
613 new_elems(i + 34 * oldsz, 3) = indice(4);
617 new_elems(i + 35 * oldsz, 0) = les_elems(i, 7);
618 new_elems(i + 35 * oldsz, 1) = indice(4);
619 new_elems(i + 35 * oldsz, 2) = indice(5);
620 new_elems(i + 35 * oldsz, 3) = indice(17);
623 new_elems(i + 36 * oldsz, 0) = les_elems(i, 7);
624 new_elems(i + 36 * oldsz, 1) = indice(6);
625 new_elems(i + 36 * oldsz, 2) = indice(5);
626 new_elems(i + 36 * oldsz, 3) = indice(14);
629 new_elems(i + 37 * oldsz, 0) = les_elems(i, 7);
630 new_elems(i + 37 * oldsz, 1) = indice(4);
631 new_elems(i + 37 * oldsz, 2) = indice(6);
632 new_elems(i + 37 * oldsz, 3) = indice(18);
635 new_elems(i + 38 * oldsz, 0) = indice(0);
636 new_elems(i + 38 * oldsz, 1) = indice(4);
637 new_elems(i + 38 * oldsz, 2) = indice(6);
638 new_elems(i + 38 * oldsz, 3) = indice(5);
641 new_elems(i + 39 * oldsz, 0) = les_elems(i, 7);
642 new_elems(i + 39 * oldsz, 1) = indice(4);
643 new_elems(i + 39 * oldsz, 2) = indice(6);
644 new_elems(i + 39 * oldsz, 3) = indice(5);
648 sommets_dom.
resize(dim_som_old, 3);
649 les_elems.
ref(new_elems);
652 Cerr <<
"We have split the cubes..." << finl;
657 Cerr <<
"Splitting of the boundaries" << finl;
658 for (
auto &itr :
domaine.faces_bord())
660 Faces& les_faces = itr.faces();
661 les_faces.
typer(Type_Face::triangle_3D);
662 decoupe(
domaine, les_faces, new_soms_old_elems);
665 Cerr <<
"Splitting of the connectors" << finl;
666 for (
auto &itr :
domaine.faces_raccord())
668 Faces& les_faces = itr->faces();
669 les_faces.
typer(Type_Face::triangle_3D);
670 decoupe(
domaine, les_faces, new_soms_old_elems);
673 Cerr <<
"Splitting of the internal boundary faces" << finl;
674 for (
auto &itr :
domaine.bords_int())
676 Faces& les_faces = itr.faces();
677 les_faces.
typer(Type_Face::triangle_3D);
678 decoupe(
domaine, les_faces, new_soms_old_elems);
681 Cerr <<
"Splitting of the groupe faces" << finl;
682 for (
auto &itr :
domaine.groupes_faces())
684 Faces& les_faces = itr.faces();
685 les_faces.
typer(Type_Face::triangle_3D);
686 decoupe(
domaine, les_faces, new_soms_old_elems);
688 Cerr <<
"END of Tetraedriser_homogene..." << finl;
689 Cerr <<
" 1 NbElem=" <<
domaine.les_elems().dimension(0) <<
" NbNod=" <<
domaine.nb_som() << finl;
692 Cerr <<
"We do not yet know how to Tetraedriser_homogene the " <<
domaine.type_elem()->que_suis_je() <<
"s" << finl;