85 int decoup=(int)param->
get_valeur(
"Avec_decoup");
89 double xmin=(double)param->
get_valeur(
"Boite3D_ves_Xmin");
90 double ymin=(double)param->
get_valeur(
"Boite3D_ves_Ymin");
91 double zmin=(double)param->
get_valeur(
"Boite3D_ves_Zmin");
92 double xmax=(double)param->
get_valeur(
"Boite3D_ves_Xmax");
93 double ymax=(double)param->
get_valeur(
"Boite3D_ves_Ymax");
94 double zmax=(double)param->
get_valeur(
"Boite3D_ves_Zmax");
338 std::vector<OT_PARAMETRES*>::iterator it;
339 for(it=vector_params_geometrie.begin();it!=vector_params_geometrie.end();it++)
344 std::string Nom_mgcg_modele = param->
get_nom((
char*)
"Nom_mgcg_modele");
353 double Boite3D_distribution_Xmin = param->
get_valeur((
char*)
"Boite3D_distribution_Xmin");
354 double Boite3D_distribution_Ymin = param->
get_valeur((
char*)
"Boite3D_distribution_Ymin");
355 double Boite3D_distribution_Zmin = param->
get_valeur((
char*)
"Boite3D_distribution_Zmin");
356 double Boite3D_distribution_Xmax = param->
get_valeur((
char*)
"Boite3D_distribution_Xmax");
357 double Boite3D_distribution_Ymax = param->
get_valeur((
char*)
"Boite3D_distribution_Ymax");
358 double Boite3D_distribution_Zmax = param->
get_valeur((
char*)
"Boite3D_distribution_Zmax");
359 BOITE_3D Boite3D_distribution(Boite3D_distribution_Xmin,
360 Boite3D_distribution_Ymin,
361 Boite3D_distribution_Zmin,
362 Boite3D_distribution_Xmax,
363 Boite3D_distribution_Ymax,
364 Boite3D_distribution_Zmax);
365 RSA->change_boite3d_distribution(Boite3D_distribution);
370 int decoup=(int)param->
get_valeur((
char*)
"Avec_decoup");
373 double Boite3D_ves_Xmin = param->
get_valeur((
char*)
"Boite3D_ves_Xmin");
374 double Boite3D_ves_Ymin = param->
get_valeur((
char*)
"Boite3D_ves_Ymin");
375 double Boite3D_ves_Zmin = param->
get_valeur((
char*)
"Boite3D_ves_Zmin");
376 double Boite3D_ves_Xmax = param->
get_valeur((
char*)
"Boite3D_ves_Xmax");
377 double Boite3D_ves_Ymax = param->
get_valeur((
char*)
"Boite3D_ves_Ymax");
378 double Boite3D_ves_Zmax = param->
get_valeur((
char*)
"Boite3D_ves_Zmax");
379 BOITE_3D Boite3D_ves(Boite3D_ves_Xmin,Boite3D_ves_Ymin,Boite3D_ves_Zmin,Boite3D_ves_Xmax,Boite3D_ves_Ymax,Boite3D_ves_Zmax);
380 RSA->change_boite3d_ves(Boite3D_ves);
383 double Nb_pas_X = param->
get_valeur((
char*)
"Nb_pas_X");
384 double Nb_pas_Y = param->
get_valeur((
char*)
"Nb_pas_Y");
385 double Nb_pas_Z = param->
get_valeur((
char*)
"Nb_pas_Z");
386 RSA->change_nb_pas_grille(Nb_pas_X);
387 double Distance_min_inter_volume = param->
get_valeur((
char*)
"Distance_min_inter_volume");
388 RSA->change_distance_inter_volume_min(Distance_min_inter_volume);
389 double Volume_min = param->
get_valeur((
char*)
"Volume_min");
390 RSA->change_volume_min(Volume_min);
391 double Aire_min = param->
get_valeur((
char*)
"Aire_min");
392 RSA->change_aire_min(Aire_min);
393 double Longueur_min = param->
get_valeur((
char*)
"Longueur_min");
394 RSA->change_longueur_min(Longueur_min);
395 double Angle_min = param->
get_valeur((
char*)
"Angle_min");
396 RSA->change_angle_min(Angle_min);
397 double Nb_iteration_max = param->
get_valeur((
char*)
"Nb_iteration_max");
398 RSA->change_nb_iteration_max(Nb_iteration_max);
399 bool Avec_intersections = (bool)param->
get_valeur((
char*)
"Avec_intersections");
400 RSA->change_intersection_bords_ves(Avec_intersections);
401 std::string Nom_groupe_inclusion = param->
get_nom((
char*)
"Nom_groupe_inclusion");
403 sprintf(message,
"Generateur RSA : %s",Nom_groupe_inclusion.c_str());
405 int Type_inclusion = param->
get_valeur((
char*)
"Type_inclusion");
406 double Fraction_volumique_cible = param->
get_valeur((
char*)
"Fraction_volumique_cible");
407 double Eps_fraction_volumique = param->
get_valeur((
char*)
"Eps_fraction_volumique");
408 bool Porosite = (bool)param->
get_valeur((
char*)
"Porosite");
409 std::string multicouche = param->
get_nom((
char*)
"Multicouche");
412 parse.
decode(multicouche.c_str(),
"@,(&)",parse_param);
413 std::vector<double> *vector_epaisseur=NULL;
414 int nb_couche = atoi(parse_param[0].argument[0].c_str());
417 vector_epaisseur=
new std::vector<double>;
418 for(
int i=0;i<nb_couche;i++)
420 double epaisseur=atof(parse_param[1].argument[i].c_str());
421 vector_epaisseur->push_back(epaisseur);
426 double Mu_rayon = param->
get_valeur((
char*)
"Mu_rayon");
427 double Sigma_rayon = param->
get_valeur((
char*)
"Sigma_rayon");
428 double Type_distribution_rayon = param->
get_valeur((
char*)
"Type_distribution_rayon");
429 double fraction_volumique_actuelle=0.0;
430 RSA->tirrage_aleatoire_sphere(Nom_groupe_inclusion,Mu_rayon,Sigma_rayon,Type_distribution_rayon,Fraction_volumique_cible,Eps_fraction_volumique,fraction_volumique_actuelle,vector_epaisseur,Porosite);
434 double Mu_rayon = param->
get_valeur((
char*)
"Mu_rayon");
435 double Sigma_rayon = param->
get_valeur((
char*)
"Sigma_rayon");
436 double Type_distribution_rayon = param->
get_valeur((
char*)
"Type_distribution_rayon");
437 double Mu_longueur = param->
get_valeur((
char*)
"Mu_longueur");
438 double Sigma_longueur = param->
get_valeur((
char*)
"Sigma_longueur");
439 double Type_distribution_longueur = param->
get_valeur((
char*)
"Type_distribution_longueur");
440 double Mu_theta = param->
get_valeur((
char*)
"Mu_theta");
441 double Sigma_theta = param->
get_valeur((
char*)
"Sigma_theta");
442 double Type_distribution_theta = param->
get_valeur((
char*)
"Type_distribution_theta");
443 double Mu_phi = param->
get_valeur((
char*)
"Mu_phi");
444 double Sigma_phi = param->
get_valeur((
char*)
"Sigma_phi");
445 double Type_distribution_phi = param->
get_valeur((
char*)
"Type_distribution_phi");
446 double fraction_volumique_actuelle=0.0;
447 RSA->tirrage_aleatoire_cylindre(Nom_groupe_inclusion,
448 Mu_rayon,Sigma_rayon,Type_distribution_rayon,
449 Mu_longueur,Sigma_longueur,Type_distribution_longueur,
450 Mu_theta,Sigma_theta,Type_distribution_theta,
451 Mu_phi,Sigma_phi,Type_distribution_phi,
452 Fraction_volumique_cible,Eps_fraction_volumique,fraction_volumique_actuelle,
459 double Mu_rayon_cercle = param->
get_valeur((
char*)
"Mu_rayon_cercle");
460 double Sigma_rayon_cercle = param->
get_valeur((
char*)
"Sigma_rayon_cercle");
461 double Type_distribution_rayon_cercle = param->
get_valeur((
char*)
"Type_distribution_rayon_cercle");
463 double Mu_rayon_tore = param->
get_valeur((
char*)
"Mu_rayon_tore");
464 double Sigma_rayon_tore = param->
get_valeur((
char*)
"Sigma_rayon_tore");
465 double Type_distribution_rayon_tore = param->
get_valeur((
char*)
"Type_distribution_rayon_tore");
467 double Mu_theta = param->
get_valeur((
char*)
"Mu_theta");
468 double Sigma_theta = param->
get_valeur((
char*)
"Sigma_theta");
469 double Type_distribution_theta = param->
get_valeur((
char*)
"Type_distribution_theta");
471 double Mu_phi = param->
get_valeur((
char*)
"Mu_phi");
472 double Sigma_phi = param->
get_valeur((
char*)
"Sigma_phi");
473 double Type_distribution_phi = param->
get_valeur((
char*)
"Type_distribution_phi");
478 double Mu_angle_seg = param->
get_valeur((
char*)
"Mu_longueur");
479 double Sigma_angle_seg = param->
get_valeur((
char*)
"Sigma_longueur");
480 double Type_distribution_angle_seg = param->
get_valeur((
char*)
"Type_distribution_longueur");
481 Mu_angle_seg=Mu_angle_seg/Mu_rayon_cercle;
482 Sigma_angle_seg=Sigma_angle_seg/Mu_rayon_cercle;
486 double fraction_volumique_actuelle=0.0;
487 RSA->tirrage_aleatoire_torus(Nom_groupe_inclusion,
488 Mu_rayon_cercle,Sigma_rayon_cercle,Type_distribution_rayon_cercle,
489 Mu_rayon_tore,Sigma_rayon_tore,Type_distribution_rayon_tore,
490 Mu_theta,Sigma_theta,Type_distribution_theta,
491 Mu_phi,Sigma_phi,Type_distribution_phi,
492 Mu_angle_seg, Sigma_angle_seg, Type_distribution_angle_seg,
493 Fraction_volumique_cible,Eps_fraction_volumique,fraction_volumique_actuelle,
500 double Mu_rayon_majeur = param->
get_valeur((
char*)
"Mu_rayon_majeur");
501 double Sigma_rayon_majeur = param->
get_valeur((
char*)
"Sigma_rayon_majeur");
502 double Type_distribution_rayon_majeur = param->
get_valeur((
char*)
"Type_distribution_rayon_majeur");
503 double Mu_rayon_mineur = param->
get_valeur((
char*)
"Mu_rayon_mineur");
504 double Sigma_rayon_mineur = param->
get_valeur((
char*)
"Sigma_rayon_mineur");
505 double Type_distribution_rayon_mineur = param->
get_valeur((
char*)
"Type_distribution_rayon_mineur");
506 double Mu_theta = param->
get_valeur((
char*)
"Mu_theta");
507 double Sigma_theta = param->
get_valeur((
char*)
"Sigma_theta");
508 double Type_distribution_theta = param->
get_valeur((
char*)
"Type_distribution_theta");
509 double Mu_phi = param->
get_valeur((
char*)
"Mu_phi");
510 double Sigma_phi = param->
get_valeur((
char*)
"Sigma_phi");
511 double Type_distribution_phi = param->
get_valeur((
char*)
"Type_distribution_phi");
512 double fraction_volumique_actuelle=0.0;
513 RSA->tirrage_aleatoire_ellipsoide(Nom_groupe_inclusion,
514 Mu_rayon_majeur,Sigma_rayon_majeur,Type_distribution_rayon_majeur,
515 Mu_rayon_mineur,Sigma_rayon_mineur,Type_distribution_rayon_mineur,
516 Mu_theta,Sigma_theta,Type_distribution_theta,
517 Mu_phi,Sigma_phi,Type_distribution_phi,
518 Fraction_volumique_cible,Eps_fraction_volumique,fraction_volumique_actuelle,
522 if(vector_epaisseur!=NULL)
delete vector_epaisseur;
526 #ifdef PROJECT_CHRONO
527 std::string Nom_mgcg_modele = param->
get_nom((
char*)
"Nom_mgcg_modele");
528 MSTRUCT_GENERATEUR_DCR *
DCR;
535 double Boite3D_distribution_Xmin = param->
get_valeur((
char*)
"Boite3D_distribution_Xmin");
536 double Boite3D_distribution_Ymin = param->
get_valeur((
char*)
"Boite3D_distribution_Ymin");
537 double Boite3D_distribution_Zmin = param->
get_valeur((
char*)
"Boite3D_distribution_Zmin");
538 double Boite3D_distribution_Xmax = param->
get_valeur((
char*)
"Boite3D_distribution_Xmax");
539 double Boite3D_distribution_Ymax = param->
get_valeur((
char*)
"Boite3D_distribution_Ymax");
540 double Boite3D_distribution_Zmax = param->
get_valeur((
char*)
"Boite3D_distribution_Zmax");
541 BOITE_3D Boite3D_distribution(Boite3D_distribution_Xmin,
542 Boite3D_distribution_Ymin,
543 Boite3D_distribution_Zmin,
544 Boite3D_distribution_Xmax,
545 Boite3D_distribution_Ymax,
546 Boite3D_distribution_Zmax);
547 DCR->change_boite3d_distribution(Boite3D_distribution);
548 int decoup=(int)param->
get_valeur((
char*)
"Avec_decoup");
551 double Boite3D_ves_Xmin = param->
get_valeur((
char*)
"Boite3D_ves_Xmin");
552 double Boite3D_ves_Ymin = param->
get_valeur((
char*)
"Boite3D_ves_Ymin");
553 double Boite3D_ves_Zmin = param->
get_valeur((
char*)
"Boite3D_ves_Zmin");
554 double Boite3D_ves_Xmax = param->
get_valeur((
char*)
"Boite3D_ves_Xmax");
555 double Boite3D_ves_Ymax = param->
get_valeur((
char*)
"Boite3D_ves_Ymax");
556 double Boite3D_ves_Zmax = param->
get_valeur((
char*)
"Boite3D_ves_Zmax");
557 BOITE_3D Boite3D_ves(Boite3D_ves_Xmin,Boite3D_ves_Ymin,Boite3D_ves_Zmin,Boite3D_ves_Xmax,Boite3D_ves_Ymax,Boite3D_ves_Zmax);
558 DCR->change_boite3d_ves(Boite3D_ves);
560 double Nb_pas_X = param->
get_valeur((
char*)
"Nb_pas_X");
561 double Nb_pas_Y = param->
get_valeur((
char*)
"Nb_pas_Y");
562 double Nb_pas_Z = param->
get_valeur((
char*)
"Nb_pas_Z");
563 DCR->change_nb_pas_grille(Nb_pas_X);
564 double Distance_min_inter_volume = param->
get_valeur((
char*)
"Distance_min_inter_volume");
565 DCR->change_distance_inter_volume_min(Distance_min_inter_volume);
566 double Volume_min = param->
get_valeur((
char*)
"Volume_min");
567 DCR->change_volume_min(Volume_min);
568 double Aire_min = param->
get_valeur((
char*)
"Aire_min");
569 DCR->change_aire_min(Aire_min);
570 double Longueur_min = param->
get_valeur((
char*)
"Longueur_min");
571 DCR->change_longueur_min(Longueur_min);
572 double Angle_min = param->
get_valeur((
char*)
"Angle_min");
573 DCR->change_angle_min(Angle_min);
574 long Nb_iteration_max = (long)param->
get_valeur((
char*)
"Nb_iteration_max");
575 bool Avec_intersections = (bool)param->
get_valeur((
char*)
"Avec_intersections");
576 DCR->change_intersection_bords_ves(Avec_intersections);
577 std::string Nom_groupe_inclusion = param->
get_nom((
char*)
"Nom_groupe_inclusion");
579 sprintf(message,
"Generateur DCR : %s",Nom_groupe_inclusion.c_str());
581 int Type_inclusion = param->
get_valeur((
char*)
"Type_inclusion");
582 double Fraction_volumique_cible = param->
get_valeur((
char*)
"Fraction_volumique_cible");
583 double Eps_fraction_volumique = param->
get_valeur((
char*)
"Eps_fraction_volumique");
584 bool Porosite = (bool)param->
get_valeur((
char*)
"Porosite");
585 std::string multicouche = param->
get_nom((
char*)
"Multicouche");
587 bool Avec_interface_graphique = (bool)param->
get_valeur((
char*)
"Avec_interface_graphique");
588 double Facteur_reduction_vitesse = param->
get_valeur((
char*)
"Facteur_reduction_vitesse");
589 double Friction = param->
get_valeur((
char*)
"Friction");
590 double Pas_temps_sim = param->
get_valeur((
char*)
"Pas_temps_sim");
591 double Temps_max_sim = param->
get_valeur((
char*)
"Temps_max_sim");
592 double Eps_vitesse = param->
get_valeur((
char*)
"Eps_vitesse");
593 DCR->active_interface_graphique(Avec_interface_graphique);
594 DCR->change_facteur_reduction_vitesse(Facteur_reduction_vitesse);
595 DCR->change_eps_vitesse(Eps_vitesse);
596 DCR->change_friction(Friction);
597 DCR->change_pas_temps(Pas_temps_sim);
598 DCR->change_temps_max_sim(Temps_max_sim);
602 double Mu_rayon = param->
get_valeur((
char*)
"Mu_rayon");
603 double Sigma_rayon = param->
get_valeur((
char*)
"Sigma_rayon");
604 double Type_distribution_rayon = param->
get_valeur((
char*)
"Type_distribution_rayon");
605 DCR->ajouter_spheres(Nom_groupe_inclusion,Mu_rayon,Sigma_rayon,Type_distribution_rayon,Fraction_volumique_cible,Eps_fraction_volumique,Porosite);
609 double Mu_rayon = param->
get_valeur((
char*)
"Mu_rayon");
610 double Sigma_rayon = param->
get_valeur((
char*)
"Sigma_rayon");
611 double Type_distribution_rayon = param->
get_valeur((
char*)
"Type_distribution_rayon");
612 double Mu_longueur = param->
get_valeur((
char*)
"Mu_longueur");
613 double Sigma_longueur = param->
get_valeur((
char*)
"Sigma_longueur");
614 double Type_distribution_longueur = param->
get_valeur((
char*)
"Type_distribution_longueur");
615 double Mu_theta = param->
get_valeur((
char*)
"Mu_theta");
616 double Sigma_theta = param->
get_valeur((
char*)
"Sigma_theta");
617 double Type_distribution_theta = param->
get_valeur((
char*)
"Type_distribution_theta");
618 double Mu_phi = param->
get_valeur((
char*)
"Mu_phi");
619 double Sigma_phi = param->
get_valeur((
char*)
"Sigma_phi");
620 double Type_distribution_phi = param->
get_valeur((
char*)
"Type_distribution_phi");
621 DCR->ajouter_cylindres(Nom_groupe_inclusion,
622 Mu_rayon,Sigma_rayon,Type_distribution_rayon,
623 Mu_longueur,Sigma_longueur,Type_distribution_longueur,
624 Mu_theta,Sigma_theta,Type_distribution_theta,
625 Mu_phi,Sigma_phi,Type_distribution_phi,
626 Fraction_volumique_cible,Eps_fraction_volumique,
630 std::cerr <<
"*** ERREUR : MSTRUCT_VES::generer_geometrie : PROJECT_CHRONO absent ***" << std::endl;
636 #ifdef PROJECT_CHRONO
637 MSTRUCT_GENERATEUR_DCR *
DCR= (MSTRUCT_GENERATEUR_DCR*)generateur;
638 if(
DCR->lancer_simulation()==
FAIL)
643 for(it=vector_params_geometrie.begin();it!=vector_params_geometrie.end();it++)
646 int changement = param->
get_valeur((
char*)
"Changement_geometrie");
648 DCR->generer_geometrie();
650 DCR->generer_geometrie_avec_changement();
654 std::cerr <<
"*** ERREUR : MSTRUCT_VES::generer_geometrie : PROJECT_CHRONO absent ***" << std::endl;
658 double temps_generation_geometrie;
659 ot_cpu.
get_etape((
char*)
"generation_geometrie",temps_generation_geometrie);
670 std::vector<OT_PARAMETRES*>::iterator it;
671 for(it=vector_params_materiau.begin();it!=vector_params_materiau.end();it++)
674 std::string Nom_groupe_forme = param->
get_nom((
char*)
"Nom_groupe_forme");
675 bool Etude_mecanique = (bool)param->
get_valeur((
char*)
"Etude_mecanique");
678 double Mu_E = param->
get_valeur((
char*)
"Mu_E");
679 double Sigma_E = param->
get_valeur((
char*)
"Sigma_E");
680 int Type_distribution_E = (int)param->
get_valeur((
char*)
"Type_distribution_E");
681 double Mu_nu = param->
get_valeur((
char*)
"Mu_nu");
682 double Sigma_nu = param->
get_valeur((
char*)
"Sigma_nu");
683 int Type_distribution_nu = (int)param->
get_valeur((
char*)
"Type_distribution_nu");
684 std::random_device seed;
685 std::mt19937_64 generateur(seed());
686 std::uniform_real_distribution<double> uniform_distribution_E(Mu_E-Sigma_E,Mu_E+Sigma_E);
687 std::normal_distribution<double> normal_distribution_E(Mu_E,Sigma_E);
688 std::uniform_real_distribution<double> uniform_distribution_nu(Mu_nu-Sigma_nu,Mu_nu+Sigma_nu);
689 std::normal_distribution<double> normal_distribution_nu(Mu_nu,Sigma_nu);
691 std::map<long,MG_CG_FORME*>::iterator it_forme;
702 if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::VOLUME)
708 if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
711 std::map<long,MG_VOLUME*>::iterator it_volume;
714 volume->ajouter_ccf((
char*)
"Em",E);
715 volume->ajouter_ccf((
char*)
"nu",nu);
720 bool Etude_thermique = (bool)param->
get_valeur((
char*)
"Etude_thermique");
723 double Mu_Lambda = param->
get_valeur((
char*)
"Mu_Lambda");
724 double Sigma_Lambda = param->
get_valeur((
char*)
"Sigma_Lambda");
725 int Type_distribution_Lambda = (int)param->
get_valeur((
char*)
"Type_distribution_Lambda");
726 double Mu_Ro = param->
get_valeur((
char*)
"Mu_Ro");
727 double Sigma_Ro = param->
get_valeur((
char*)
"Sigma_Ro");
728 int Type_distribution_Ro = (int)param->
get_valeur((
char*)
"Type_distribution_Ro");
729 double Mu_Cp = param->
get_valeur((
char*)
"Mu_Cp");
730 double Sigma_Cp = param->
get_valeur((
char*)
"Sigma_Cp");
731 int Type_distribution_Cp = (int)param->
get_valeur((
char*)
"Type_distribution_Cp");
732 std::random_device seed;
733 std::mt19937_64 generateur(seed());
734 std::uniform_real_distribution<double> uniform_distribution_Lambda(Mu_Lambda-Sigma_Lambda,Mu_Lambda+Sigma_Lambda);
735 std::normal_distribution<double> normal_distribution_Lambda(Mu_Lambda,Sigma_Lambda);
736 std::uniform_real_distribution<double> uniform_distribution_Ro(Mu_Ro-Sigma_Ro,Mu_Ro+Sigma_Ro);
737 std::normal_distribution<double> normal_distribution_Ro(Mu_Ro,Sigma_Ro);
738 std::uniform_real_distribution<double> uniform_distribution_Cp(Mu_Cp-Sigma_Cp,Mu_Cp+Sigma_Cp);
739 std::normal_distribution<double> normal_distribution_Cp(Mu_Cp,Sigma_Cp);
741 std::map<long,MG_CG_FORME*>::iterator it_forme;
756 if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::VOLUME)
763 if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
766 std::map<long,MG_VOLUME*>::iterator it_volume;
769 volume->ajouter_ccf((
char*)
"Kx",Lambda);
770 volume->ajouter_ccf((
char*)
"Ro",Ro);
771 volume->ajouter_ccf((
char*)
"Cp",Cp);
778 double temps_generation_materiau;
779 ot_cpu.
get_etape((
char*)
"generation_materiau",temps_generation_materiau);
786 double Ecart_nodal = param->
get_valeur((
char*)
"Ecart_nodal");
787 double Ecart_eps_face_particule = param->
get_valeur((
char*)
"Ecart_eps_face_particule");
788 double Fechantillonnage = param->
get_valeur((
char*)
"Fechantillonnage");
789 double Nb_cellule_direction = param->
get_valeur((
char*)
"Nb_cellule_direction");
790 std::string Nom_fem_solution = param->
get_nom((
char*)
"Nom_fem_solution");
791 std::string Nom_mg_gestionnaire_carte = param->
get_nom((
char*)
"Nom_mg_gestionnaire_carte");
792 std::string Nom_carte = param->
get_nom((
char*)
"Nom_carte");
793 double Nb_couche_min = param->
get_valeur((
char*)
"Nb_couche_min");
794 double Nb_pas = param->
get_valeur((
char*)
"Nb_pas");
795 double Facteur_augmentation = param->
get_valeur((
char*)
"Facteur_augmentation");
804 Ecart_eps_face_particule,
806 Nb_cellule_direction,
807 (
char*)Nom_fem_solution.c_str(),
808 tpl_map_volume_matrice,
811 Facteur_augmentation);
817 double temps_generation_carte;
818 ot_cpu.
get_etape((
char*)
"generation_carte",temps_generation_carte);
820 mggest_carte->
enregistrer(Nom_mg_gestionnaire_carte.c_str());
823 std::sprintf(message,
"Fichier CARTE de sortie : %s",Nom_carte.c_str());
833 int Niveau = (int)param->
get_valeur((
char*)
"Niveau");
834 int Niveau_opt_2d = (int)param->
get_valeur((
char*)
"Niveau_opt_2d");
835 int Niveau_opt_3d = (int)param->
get_valeur((
char*)
"Niveau_opt_3d");
836 double Priorite_metrique = param->
get_valeur((
char*)
"Priorite_metrique");
837 int Analyse = (int)param->
get_valeur((
char*)
"Analyse");
838 int Grille_reguliere = (int)param->
get_valeur((
char*)
"Grille_reguliere");
839 int Gr_nx = param->
get_valeur((
char*)
"Gr_nx");
840 int Gr_ny = param->
get_valeur((
char*)
"Gr_ny");
841 int Gr_nz = param->
get_valeur((
char*)
"Gr_nz");
842 affiche((
char*)
"Maillage du VER :");
843 if(!Grille_reguliere)
848 affiche((
char*)
"Maillage 3D_couche :");
851 LISTE_MG_VOLUME::iterator it_volume;
854 if(volume->est_mince())
857 sprintf(message,
"-> Maillage du volume id %li",volume->get_id());
867 affiche((
char*)
"Maillage 0D :");
868 LISTE_MG_SOMMET::iterator it_sommet;
871 if(sommet->get_lien_maillage()->get_nb()>0)
continue;
873 sprintf(message,
"[%4li/%li] Maillage du sommet id %li",i,nb,sommet->get_id());
884 affiche((
char*)
"Maillage 1D :");
886 LISTE_MG_ARETE::iterator it_arete;
889 if(arete->get_lien_maillage()->get_nb()>0)
continue;
891 sprintf(message,
"[%4li/%li] Maillage de l'arete id %li",i,nb,arete->get_id());
904 affiche((
char*)
"Maillage 2D :");
906 LISTE_MG_FACE::iterator it_face;
909 if(face->get_lien_maillage()->get_nb()>0)
continue;
911 sprintf(message,
"[%4li/%li] Maillage de la face id %li",i,nb,face->get_id());
924 affiche((
char*)
"Maillage 3D :");
928 if(volume->get_lien_maillage()->get_nb()>0)
continue;
929 if(volume->est_mince())
continue;
931 sprintf(message,
"[%4li/%li] Maillage du volume id %li",i,nb,volume->get_id());
940 maill_struct(0.0,1.0,0.0,1.0,0.0,1.0,Gr_nx,Gr_ny,Gr_nz);
943 LISTE_MG_HEXA::iterator it_hexa;
945 tpl_grille_hexa.
initialiser(-0.1,-0.1,-0.1,1.1,1.1,1.1,20,20,20);
949 hexa->change_nouveau_numero(-1);
953 LISTE_MG_VOLUME::iterator it_volume;
957 tpl_grille_hexa.
rechercher(vol->get_boite_3D(),hexa_trouve);
960 if(hexa->get_nouveau_numero()<0)
962 BOITE_3D boite3d=hexa->get_boite_3D();
967 hexa->change_lien_topologie2(vol);
968 vol->get_lien_maillage()->ajouter(hexa);
969 hexa->change_nouveau_numero(vol->get_id());
974 std::cout << i_volume <<
"/" << nb_volume << std::endl;
985 double temps_generation_maillage;
986 ot_cpu.
get_etape((
char*)
"generation_maillage",temps_generation_maillage);
994 affiche((
char*)
"Création d'un maillage MG structuré");
995 double intx, inty, intz;
996 std::vector<double> tabx,taby,tabz;
998 intx=fabs(xmax-xmin)/n;
999 inty=fabs(ymax-ymin)/
m;
1000 intz=fabs(zmax-zmin)/k;
1008 std::vector<MG_NOEUD*> vecnod;
1009 for (
int l=0; l<=k ;l++)
1011 for (
int j=0; j<=
m;j++)
1013 for (
int i=0; i<=n;i++)
1025 vecnod.push_back(nou);
1029 for(
int l=0; l<k;l++)
1031 for(
int j=0; j<
m;j++)
1033 for(
int i=0; i<n;i++)
1035 MG_NOEUD* nod1=vecnod[i+((n+1)*j)+(l*(
m+1)*(n+1))];
1036 MG_NOEUD* nod2=vecnod[(i+1)+((n+1)*j)+(l*(
m+1)*(n+1))];
1037 MG_NOEUD* nod3=vecnod[(i+1)+(n+1)*(j+1)+(l*(
m+1)*(n+1))];
1038 MG_NOEUD* nod4=vecnod[i+(n+1)*(j+1)+(l*(
m+1)*(n+1))];
1039 MG_NOEUD* nod5=vecnod[i+((n+1)*j)+((l+1)*(
m+1)*(n+1))];
1040 MG_NOEUD* nod6=vecnod[(i+1)+((n+1)*j)+((l+1)*(
m+1)*(n+1))];
1041 MG_NOEUD* nod7=vecnod[(i+1)+(n+1)*(j+1)+((l+1)*(
m+1)*(n+1))];
1042 MG_NOEUD* nod8=vecnod[i+(n+1)*(j+1)+((l+1)*(
m+1)*(n+1))];
1059 int Degre = (int)param->
get_valeur((
char*)
"Degre");
1060 int Analyse = (int)param->
get_valeur((
char*)
"Analyse");
1061 int Optimisation_num_noeud = (int)param->
get_valeur((
char*)
"Optimisation_num_noeud");
1062 int decoup=(int)param->
get_valeur((
char*)
"Avec_decoup");
1063 bool courbure_discrete;
1064 if(decoup==0) courbure_discrete=
false;
1065 if(decoup==1) courbure_discrete=
true;
1079 double temps_generation_fem_maillage;
1080 ot_cpu.
get_etape((
char*)
"generation_fem_maillage",temps_generation_fem_maillage);
1091 int Type_etude = (int)param->
get_valeur((
char*)
"Type_etude");
1092 int Type_Chargement = (int)param->
get_valeur((
char*)
"Type_Chargement");
1093 int Type_CL = (int)param->
get_valeur((
char*)
"Type_CL");
1094 double Valeur_CL = param->
get_valeur((
char*)
"Valeur_CL");
1095 int Direction = (int)param->
get_valeur((
char*)
"Direction");
1098 double temps_generation_etude;
1099 ot_cpu.
get_etape((
char*)
"generation_etude",temps_generation_etude);
1106 int Type_etude = (int)param->
get_valeur((
char*)
"Type_etude");
1110 std::string Code_resu = param->
get_nom((
char*)
"Code_resu");
1115 mgaster.
calcule(param_aster,
m_fem_maillage,(
char*)nom_etude.c_str(),Type_calcul,(
char*)Code_resu.c_str());
1117 double temps_calcul;
1118 ot_cpu.
get_etape((
char*)
"calcul",temps_calcul);
1128 std::vector<OT_PARAMETRES*>::iterator it;
1130 for(it=vector_params_post_traitement.begin();it!=vector_params_post_traitement.end();it++)
1133 int Type_post_traitement = (int)param->
get_valeur((
char*)
"Type_post_traitement");
1134 std::string Identifiant = param->
get_nom((
char*)
"Identifiant");
1137 std::cerr <<
"*** Analyse [" << Identifiant <<
"] existante ***" << std::endl;
1140 sprintf(ligne,
"-> %s",Identifiant.c_str());
1144 long Num_solution = (long)param->
get_valeur((
char*)
"Num_solution");
1145 std::string Nom_groupe_forme = param->
get_nom((
char*)
"Nom_groupe_forme");
1146 double Largeur_colonne_distribution = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution");
1148 int Boite_analyse = (int)param->
get_valeur((
char*)
"Boite_analyse");
1151 double Xmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmin");
1152 double Ymin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymin");
1153 double Zmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmin");
1154 double Xmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmax");
1155 double Ymax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymax");
1156 double Zmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmax");
1157 boite_3d_analyse =
new BOITE_3D(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax);
1159 int Analyse_erosion = (int)param->
get_valeur((
char*)
"Analyse_erosion");
1165 long Nb_couche = (long)param->
get_valeur((
char*)
"Nb_couche");
1166 double Epaisseur_couche = (double)param->
get_valeur((
char*)
"Epaisseur_couche");
1176 if(boite_3d_analyse!=NULL)
delete boite_3d_analyse;
1180 std::string Nom_groupe_forme = param->
get_nom((
char*)
"Nom_groupe_forme");
1181 int Avec_fem_maillage = (int)param->
get_valeur((
char*)
"Avec_fem_maillage");
1183 int Boite_analyse = (int)param->
get_valeur((
char*)
"Boite_analyse");
1186 double Xmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmin");
1187 double Ymin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymin");
1188 double Zmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmin");
1189 double Xmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmax");
1190 double Ymax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymax");
1191 double Zmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmax");
1192 boite_3d_analyse =
new BOITE_3D(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax);
1195 int Analyse_erosion = (int)param->
get_valeur((
char*)
"Analyse_erosion");
1198 long Nb_couche = (long)param->
get_valeur((
char*)
"Nb_couche");
1199 double Epaisseur_couche = (double)param->
get_valeur((
char*)
"Epaisseur_couche");
1209 if(boite_3d_analyse!=NULL)
delete boite_3d_analyse;
1213 std::string Nom_groupe_forme = param->
get_nom((
char*)
"Nom_groupe_forme");
1214 double Largeur_colonne_distribution_volume_forme = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_volume_forme");
1221 std::string Nom_groupe_forme = param->
get_nom((
char*)
"Nom_groupe_forme");
1228 std::string Nom_groupe_forme = param->
get_nom((
char*)
"Nom_groupe_forme");
1229 double Largeur_colonne_distribution_qualite_2D = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_qualite_2D");
1230 double Largeur_colonne_distribution_qualite_3D = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_qualite_3D");
1231 double Largeur_colonne_distribution_taille_2D = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_taille_2D");
1232 double Largeur_colonne_distribution_taille_3D = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_taille_3D");
1234 int Boite_analyse = (int)param->
get_valeur((
char*)
"Boite_analyse");
1237 double Xmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmin");
1238 double Ymin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymin");
1239 double Zmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmin");
1240 double Xmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmax");
1241 double Ymax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymax");
1242 double Zmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmax");
1243 boite_3d_analyse =
new BOITE_3D(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax);
1248 Largeur_colonne_distribution_qualite_2D,
1249 Largeur_colonne_distribution_taille_2D,
1250 Largeur_colonne_distribution_qualite_3D,
1251 Largeur_colonne_distribution_taille_3D,
1252 Nom_groupe_forme,boite_3d_analyse);
1253 int Analyse_erosion = (int)param->
get_valeur((
char*)
"Analyse_erosion");
1256 long Nb_couche = (long)param->
get_valeur((
char*)
"Nb_couche");
1257 double Epaisseur_couche = (double)param->
get_valeur((
char*)
"Epaisseur_couche");
1267 if(boite_3d_analyse!=NULL)
delete boite_3d_analyse;
1271 std::string Nom_groupe_forme = param->
get_nom((
char*)
"Nom_groupe_forme");
1272 double Largeur_colonne_distribution_jacobien_2D_min = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_jacobien_2D_min");
1273 double Largeur_colonne_distribution_jacobien_2D_max = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_jacobien_2D_max");
1274 double Largeur_colonne_distribution_jacobien_3D_min = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_jacobien_3D_min");
1275 double Largeur_colonne_distribution_jacobien_3D_max = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_jacobien_3D_max");
1276 double Largeur_colonne_distribution_distortion_2D = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_distortion_2D");
1277 double Largeur_colonne_distribution_distortion_3D = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution_distortion_3D");
1279 int Boite_analyse = (int)param->
get_valeur((
char*)
"Boite_analyse");
1282 double Xmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmin");
1283 double Ymin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymin");
1284 double Zmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmin");
1285 double Xmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmax");
1286 double Ymax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymax");
1287 double Zmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmax");
1288 boite_3d_analyse =
new BOITE_3D(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax);
1293 Largeur_colonne_distribution_jacobien_2D_min,
1294 Largeur_colonne_distribution_jacobien_2D_max,
1295 Largeur_colonne_distribution_jacobien_3D_min,
1296 Largeur_colonne_distribution_jacobien_3D_max,
1297 Largeur_colonne_distribution_distortion_2D,
1298 Largeur_colonne_distribution_distortion_3D,
1301 int Analyse_erosion = (int)param->
get_valeur((
char*)
"Analyse_erosion");
1304 long Nb_couche = (long)param->
get_valeur((
char*)
"Nb_couche");
1305 double Epaisseur_couche = (double)param->
get_valeur((
char*)
"Epaisseur_couche");
1315 if(boite_3d_analyse!=NULL)
delete boite_3d_analyse;
1319 std::string Identifiant_champ = param->
get_nom((
char*)
"Identifiant_champ");
1320 std::string Identifiant_champ_reference = param->
get_nom((
char*)
"Identifiant_champ_reference");
1321 double Largeur_colonne_distribution = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution");
1326 double valeur_ref=0.0;
1328 for(
int i=0;i<nb_champ;i++)
1332 valeur_ref=
sqrt(valeur_ref);
1343 std::vector<MSTRUCT_ANALYSE*>::iterator it_analyse_erosion;
1345 double valeur_ref=0.0;
1350 std::vector<MSTRUCT_ANALYSE*>::iterator it_analyse_erosion_reference;
1354 for(
int i=0;i<nb_champ;i++)
1358 valeur_ref=
sqrt(valeur_ref);
1370 std::string Identifiant_champ = param->
get_nom((
char*)
"Identifiant_champ");
1373 std::cerr <<
"*** Analyse [" << Identifiant <<
"] inexistante ***" << std::endl;
1376 std::string Identifiant_champ_compare = param->
get_nom((
char*)
"Identifiant_champ_compare");
1379 std::cerr <<
"*** Analyse [" << Identifiant <<
"] inexistante ***" << std::endl;
1382 double Largeur_colonne_distribution = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution");
1383 int Type_ecart = (int)param->
get_valeur((
char*)
"Type_ecart");
1397 int Num_couche = (int)param->
get_valeur((
char*)
"Num_couche");
1410 std::vector<MSTRUCT_ANALYSE*>::iterator it_analyse_erosion;
1428 std::vector<MSTRUCT_ANALYSE*>::iterator it_analyse_erosion;
1442 int Num_couche = (int)param->
get_valeur((
char*)
"Num_couche");
1461 std::string Identifiant_champ = param->
get_nom((
char*)
"Identifiant_champ");
1464 std::cerr <<
"*** Analyse [" << Identifiant <<
"] inexistante ***" << std::endl;
1467 double Largeur_colonne_distribution = (double)param->
get_valeur((
char*)
"Largeur_colonne_distribution");
1468 int Type_chargement = (int)param->
get_valeur((
char*)
"Type_chargement");
1469 int Type_ecart = (int)param->
get_valeur((
char*)
"Type_ecart");
1483 std::vector<MSTRUCT_ANALYSE*>::iterator it_analyse_erosion;
1495 std::string Identifiant_orientation = param->
get_nom((
char*)
"Identifiant_orientation");
1498 std::cerr <<
"*** Analyse [" << Identifiant <<
"] inexistante ***" << std::endl;
1501 int Type_ecart = (int)param->
get_valeur((
char*)
"Type_ecart");
1502 double tenseur_compare[6];
1503 tenseur_compare[0] = (double)param->
get_valeur((
char*)
"a_11");
1504 tenseur_compare[1] = (double)param->
get_valeur((
char*)
"a_22");
1505 tenseur_compare[2] = (double)param->
get_valeur((
char*)
"a_33");
1506 tenseur_compare[3] = (double)param->
get_valeur((
char*)
"a_12");
1507 tenseur_compare[4] = (double)param->
get_valeur((
char*)
"a_23");
1508 tenseur_compare[5] = (double)param->
get_valeur((
char*)
"a_13");
1522 std::vector<MSTRUCT_ANALYSE*>::iterator it_analyse_erosion;
1534 long Num_solution_temp=(long)param->
get_valeur((
char*)
"Num_solution_temp");
1535 long Num_solution_flux=(long)param->
get_valeur((
char*)
"Num_solution_flux");
1536 int Direction=(int)param->
get_valeur((
char*)
"Direction");
1538 int Boite_analyse = (int)param->
get_valeur((
char*)
"Boite_analyse");
1541 double Xmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmin");
1542 double Ymin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymin");
1543 double Zmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmin");
1544 double Xmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmax");
1545 double Ymax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymax");
1546 double Zmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmax");
1547 boite_3d_analyse =
new BOITE_3D(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax);
1549 int Analyse_erosion = (int)param->
get_valeur((
char*)
"Analyse_erosion");
1555 long Nb_couche = (long)param->
get_valeur((
char*)
"Nb_couche");
1556 double Epaisseur_couche = (double)param->
get_valeur((
char*)
"Epaisseur_couche");
1566 if(boite_3d_analyse!=NULL)
delete boite_3d_analyse;
1570 long Num_solution_temp=(long)param->
get_valeur((
char*)
"Num_solution_epsilon");
1571 long Num_solution_flux=(long)param->
get_valeur((
char*)
"Num_solution_sigma");
1573 int Boite_analyse = (int)param->
get_valeur((
char*)
"Boite_analyse");
1576 double Xmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmin");
1577 double Ymin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymin");
1578 double Zmin = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmin");
1579 double Xmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Xmax");
1580 double Ymax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Ymax");
1581 double Zmax = (double)param->
get_valeur((
char*)
"Boite3D_analyse_Zmax");
1582 boite_3d_analyse =
new BOITE_3D(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax);
1584 int Analyse_erosion = (int)param->
get_valeur((
char*)
"Analyse_erosion");
1590 long Nb_couche = (long)param->
get_valeur((
char*)
"Nb_couche");
1591 double Epaisseur_couche = (double)param->
get_valeur((
char*)
"Epaisseur_couche");
1601 if(boite_3d_analyse!=NULL)
delete boite_3d_analyse;
1609 sprintf(ligne,
"ERREUR -> %s",Identifiant.c_str());
1614 double temps_analyse;
1615 ot_cpu.
get_etape((
char*)
"analyse",temps_analyse);
1626 std::vector<OT_PARAMETRES*>::iterator it;
1628 for(it=vector_params_post_traitement.begin();it!=vector_params_post_traitement.end();it++)
1631 int Type_post_traitement = (int)param->
get_valeur((
char*)
"Type_post_traitement");
1632 std::string Identifiant = param->
get_nom((
char*)
"Identifiant");
1635 std::cerr <<
"*** Analyse [" << Identifiant <<
"] existante ***" << std::endl;
1638 sprintf(ligne,
"-> %s",Identifiant.c_str());
1642 std::string Identifiant_epsilon = param->
get_nom((
char*)
"Identifiant_epsilon");
1643 std::string Identifiant_sigma = param->
get_nom((
char*)
"Identifiant_sigma");
1651 analyse_modules_elasticite->
executer();
1665 for(
int i=0;i<Nb_couche;i++)
1672 analyse_modules_elasticite->
executer();
1673 analyse_modules_elasticite_erosion->
ajouter_analyse(analyse_modules_elasticite);
1680 sprintf(ligne,
"ERREUR -> %s",Identifiant.c_str());
1685 double temps_analyse;
1686 ot_cpu.
get_etape((
char*)
"analyse",temps_analyse);
1699 std::vector<OT_PARAMETRES*>::iterator it;
1701 for(it=vector_params_post_traitement.begin();it!=vector_params_post_traitement.end();it++)
1704 int Type_post_traitement = (int)param->
get_valeur((
char*)
"Type_post_traitement");
1705 std::string Identifiant = param->
get_nom((
char*)
"Identifiant");
1708 std::cerr <<
"*** Analyse [" << Identifiant <<
"] existante ***" << std::endl;
1711 sprintf(ligne,
"-> %s",Identifiant.c_str());
1715 std::string Identifiant = param->
get_nom((
char*)
"Identifiant");
1723 std::vector<MSTRUCT_ANALYSE*>::iterator it_analyse_x;
1724 std::vector<MSTRUCT_ANALYSE*>::iterator it_analyse_y;
1725 std::vector<MSTRUCT_ANALYSE*>::iterator it_analyse_z;
1733 while(analyse_lambda_x!=NULL && analyse_lambda_y!=NULL && analyse_lambda_z!=NULL)
1758 sprintf(ligne,
"ERREUR -> %s",Identifiant.c_str());
1763 double temps_analyse;
1764 ot_cpu.
get_etape((
char*)
"analyse",temps_analyse);
1777 sprintf(file,
"%s/noeuds",dossier);
1778 f.open(file,std::ios::out);
1780 f.setf(std::ios::showpoint);
1781 f <<
"*NODE"<< std::endl;
1782 LISTE_FEM_NOEUD::iterator it;
1786 noeud->change_numero(index);
1787 double *coord=noeud->get_coord();
1788 f << noeud->get_numero() <<
", " << coord[0] <<
", " << coord[1] <<
", " << coord[2] << std::endl;
1792 sprintf(file,
"%s/elements",dossier);
1793 f.open(file,std::ios::out);
1795 f.setf(std::ios::showpoint);
1797 LISTE_FEM_ELEMENT3::iterator ittele3;
1798 bool tetralin=
false;
1806 f <<
"*ELEMENT,TYPE=C3D4,ELSET=tetralin"<< std::endl;
1809 << ele3->get_fem_noeud(0)->get_numero() <<
", "
1810 << ele3->get_fem_noeud(1)->get_numero() <<
", "
1811 << ele3->get_fem_noeud(2)->get_numero() <<
", "
1812 << ele3->get_fem_noeud(3)->get_numero() << std::endl;
1813 ele3->change_numero(index);
1817 bool pentalin=
false;
1825 f <<
"*ELEMENT,TYPE=C3D6,ELSET=pentalin"<< std::endl;
1828 << ele3->get_fem_noeud(0)->get_numero() <<
", "
1829 << ele3->get_fem_noeud(1)->get_numero() <<
", "
1830 << ele3->get_fem_noeud(2)->get_numero() <<
", "
1831 << ele3->get_fem_noeud(3)->get_numero() <<
", "
1832 << ele3->get_fem_noeud(4)->get_numero() <<
", "
1833 << ele3->get_fem_noeud(5)->get_numero() << std::endl;
1834 ele3->change_numero(index);
1838 bool tetraquad=
false;
1843 if(tetraquad==
false)
1846 f <<
"*ELEMENT,TYPE=C3D10,ELSET=tetraquad"<< std::endl;
1849 << ele3->get_fem_noeud(0)->get_numero() <<
", "
1850 << ele3->get_fem_noeud(2)->get_numero() <<
", "
1851 << ele3->get_fem_noeud(4)->get_numero() <<
", "
1852 << ele3->get_fem_noeud(9)->get_numero() <<
", "
1853 << ele3->get_fem_noeud(1)->get_numero() <<
", "
1854 << ele3->get_fem_noeud(3)->get_numero() <<
", "
1855 << ele3->get_fem_noeud(5)->get_numero() <<
", "
1856 << ele3->get_fem_noeud(6)->get_numero() <<
", "
1857 << ele3->get_fem_noeud(7)->get_numero() <<
", "
1858 << ele3->get_fem_noeud(8)->get_numero() << std::endl;
1859 ele3->change_numero(index);
1863 bool pentaquad=
false;
1864 f <<
"*ELEMENT,TYPE=C3D15,ELSET=pentaquad"<< std::endl;
1869 if(pentaquad==
false)
1872 f <<
"*ELEMENT,TYPE=C3D15,ELSET=pentaquad"<< std::endl;
1875 << ele3->get_fem_noeud(0)->get_numero() <<
", "
1876 << ele3->get_fem_noeud(2)->get_numero() <<
", "
1877 << ele3->get_fem_noeud(4)->get_numero() <<
", "
1878 << ele3->get_fem_noeud(9)->get_numero() <<
", "
1879 << ele3->get_fem_noeud(11)->get_numero() <<
", "
1880 << ele3->get_fem_noeud(13)->get_numero() <<
", "
1881 << ele3->get_fem_noeud(1)->get_numero() <<
", "
1882 << ele3->get_fem_noeud(3)->get_numero() <<
", "
1883 << ele3->get_fem_noeud(5)->get_numero() <<
", "
1884 << ele3->get_fem_noeud(10)->get_numero() <<
", "
1885 << ele3->get_fem_noeud(12)->get_numero() <<
", "
1886 << ele3->get_fem_noeud(14)->get_numero() <<
", "
1887 << ele3->get_fem_noeud(6)->get_numero() <<
", "
1888 << ele3->get_fem_noeud(7)->get_numero() <<
", "
1889 << ele3->get_fem_noeud(8)->get_numero() << std::endl;
1890 ele3->change_numero(index);
1895 sprintf(file,
"%s/BC_nsets",dossier);
1896 f.open(file,std::ios::out);
1898 f.setf(std::ios::showpoint);
1907 std::map<unsigned long,MG_FACE*,std::less<unsigned long>>::iterator it_face;
1912 face->get_xyz_min_max(xyzmin,xyzmax);
1929 std::map<unsigned long,MG_SOMMET*,std::less<unsigned long>>::iterator it_sommet;
1943 f <<
"*NSET,NSET=coin_x0y0z0" << std::endl;
1946 f <<
"*NSET,NSET=coin_x1y0z0" << std::endl;
1949 f <<
"*NSET,NSET=coin_x0y1z0" << std::endl;
1952 f <<
"*NSET,NSET=coin_x1y1z0" << std::endl;
1955 f <<
"*NSET,NSET=coin_x0y0z1" << std::endl;
1958 f <<
"*NSET,NSET=coin_x1y0z1" << std::endl;
1961 f <<
"*NSET,NSET=coin_x0y1z1" << std::endl;
1964 f <<
"*NSET,NSET=coin_x1y1z1" << std::endl;
1968 f <<
"*NSET,NSET=xEQ0" << std::endl;
1972 long nb_ele=lst_ele->
get_nb();
1973 for(
long i=0;i<nb_ele;i++)
1982 f <<
"*NSET,NSET=xEQ1" << std::endl;
1986 long nb_ele=lst_ele->
get_nb();
1987 for(
long i=0;i<nb_ele;i++)
1996 f <<
"*NSET,NSET=yEQ0" << std::endl;
2000 long nb_ele=lst_ele->
get_nb();
2001 for(
long i=0;i<nb_ele;i++)
2010 f <<
"*NSET,NSET=yEQ1" << std::endl;
2014 long nb_ele=lst_ele->
get_nb();
2015 for(
long i=0;i<nb_ele;i++)
2024 f <<
"*NSET,NSET=zEQ0" << std::endl;
2028 long nb_ele=lst_ele->
get_nb();
2029 for(
long i=0;i<nb_ele;i++)
2038 f <<
"*NSET,NSET=zEQ1" << std::endl;
2042 long nb_ele=lst_ele->
get_nb();
2043 for(
long i=0;i<nb_ele;i++)
2055 sprintf(file,
"%s/groupes_surfaces",dossier);
2056 f.open(file,std::ios::out);
2058 f.setf(std::ios::showpoint);
2059 std::map<MG_ELEMENT_MAILLAGE*,FEM_ELEMENT_MAILLAGE*> map_correspondance_mg_fem;
2063 map_correspondance_mg_fem.insert(std::pair<MG_ELEMENT_MAILLAGE*,FEM_ELEMENT_MAILLAGE*>(mg_ele,ele3));
2065 f <<
"*SURFACE,NAME=surf_xEQ0, TYPE=ELEMENT" << std::endl;
2069 long nb_ele=lst_ele->
get_nb();
2070 for(
long i=0;i<nb_ele;i++)
2097 f <<
"*SURFACE,NAME=surf_xEQ1, TYPE=ELEMENT" << std::endl;
2101 long nb_ele=lst_ele->
get_nb();
2102 for(
long i=0;i<nb_ele;i++)
2129 f <<
"*SURFACE,NAME=surf_yEQ0, TYPE=ELEMENT" << std::endl;
2133 long nb_ele=lst_ele->
get_nb();
2134 for(
long i=0;i<nb_ele;i++)
2161 f <<
"*SURFACE,NAME=surf_yEQ1, TYPE=ELEMENT" << std::endl;
2165 long nb_ele=lst_ele->
get_nb();
2166 for(
long i=0;i<nb_ele;i++)
2193 f <<
"*SURFACE,NAME=surf_zEQ0, TYPE=ELEMENT" << std::endl;
2197 long nb_ele=lst_ele->
get_nb();
2198 for(
long i=0;i<nb_ele;i++)
2225 f <<
"*SURFACE,NAME=surf_zEQ1, TYPE=ELEMENT" << std::endl;
2229 long nb_ele=lst_ele->
get_nb();
2230 for(
long i=0;i<nb_ele;i++)
2258 sprintf(file,
"%s/groupes_elements",dossier);
2259 f.open(file,std::ios::out);
2261 f.setf(std::ios::showpoint);
2262 std::map<long,MG_CG_GROUPE_FORME*>::iterator it_groupe_forme;
2265 f <<
"*ELSET,ELSET=" << groupe_forme->get_nom() << std::endl;
2271 long nb_ele=lst_ele->
get_nb();
2272 for(
long i=0;i<nb_ele;i++)
2284 if(groupe_forme_particule!=NULL)
2287 sprintf(file,
"%s/particules",dossier);
2288 f.open(file,std::ios::out);
2290 f.setf(std::ios::showpoint);
2293 sprintf(file2,
"%s/infos_particules",dossier);
2294 f2.open(file2,std::ios::out);
2296 f2.setf(std::ios::showpoint);
2297 std::map<long,MG_CG_FORME*>::iterator it_forme;
2300 f2 <<
"# centre_x centre_y centre_z rayon position_relative" << std::endl;
2304 f2 <<
"# extremite_x extremite_y extremite_z rayon longueur axe_x axe_y axe_z position_relative" << std::endl;
2306 std::ofstream f_bord;
2308 sprintf(file3,
"%s/particules_bord",dossier);
2309 f_bord.open(file3,std::ios::out);
2310 f_bord.precision(16);
2311 f_bord.setf(std::ios::showpoint);
2312 std::ofstream f_interieur;
2314 sprintf(file4,
"%s/particules_interieur",dossier);
2315 f_interieur.open(file4,std::ios::out);
2316 f_interieur.precision(16);
2317 f_interieur.setf(std::ios::showpoint);
2318 std::ofstream f_liste;
2320 sprintf(file5,
"%s/groupes_elements_particules",dossier);
2321 f_liste.open(file5,std::ios::out);
2322 f_liste.precision(16);
2323 f_liste.setf(std::ios::showpoint);
2327 if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::VOLUME)
2329 f <<
"*ELSET,ELSET=P_" << p << std::endl;
2330 if(forme->get_mgcg_info((
char*)
"CENTRE")!=NULL)
2337 << vct_centre.at(0) <<
" "
2338 << vct_centre.at(1) <<
" "
2339 << vct_centre.at(2) <<
" "
2343 if(pos_rel->
get_valeur()==
"AU_BORD") au_bord=
true;
2348 long nb_ele=lst_ele->
get_nb();
2349 if(au_bord) f_bord <<
"*ELSET,ELSET=P_" << p << std::endl;
2350 else f_interieur <<
"*ELSET,ELSET=P_" << p << std::endl;
2351 f_liste <<
"*ELSET,ELSET=P_" << p << std::endl;
2352 for(
long i=0;i<nb_ele;i++)
2356 if(au_bord)f_bord << ele3->
get_numero() << std::endl;
2357 else f_interieur << ele3->
get_numero() << std::endl;
2362 else if(forme->get_mgcg_info((
char*)
"EXTREMITE")!=NULL)
2372 << vct_extremite.at(0) <<
" "
2373 << vct_extremite.at(1) <<
" "
2374 << vct_extremite.at(2) <<
" "
2377 << vct_axe.at(0) <<
" "
2378 << vct_axe.at(1) <<
" "
2379 << vct_axe.at(2) <<
" "
2382 if(pos_rel->
get_valeur()==
"AU_BORD") au_bord=
true;
2387 long nb_ele=lst_ele->
get_nb();
2388 if(au_bord) f_bord <<
"*ELSET,ELSET=P_" << p << std::endl;
2389 else f_interieur <<
"*ELSET,ELSET=P_" << p << std::endl;
2390 f_liste <<
"*ELSET,ELSET=P_" << p << std::endl;
2391 for(
long i=0;i<nb_ele;i++)
2395 if(au_bord)f_bord << ele3->
get_numero() << std::endl;
2396 else f_interieur << ele3->
get_numero() << std::endl;
2402 else if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
2404 f <<
"*ELSET,ELSET=P_" << p << std::endl;
2410 << vct_centre.at(0) <<
" "
2411 << vct_centre.at(1) <<
" "
2412 << vct_centre.at(2) <<
" "
2416 if(pos_rel->
get_valeur()==
"AU_BORD") au_bord=
true;
2419 std::map<long,MG_VOLUME*>::iterator it_volume;
2423 long nb_ele=lst_ele->
get_nb();
2424 if(au_bord) f_bord <<
"*ELSET,ELSET=P_" << p << std::endl;
2425 else f_interieur <<
"*ELSET,ELSET=P_" << p << std::endl;
2426 for(
long i=0;i<nb_ele;i++)
2430 if(au_bord)f_bord << ele3->
get_numero() << std::endl;
2431 else f_interieur << ele3->
get_numero() << std::endl;
2438 f_interieur.close();