ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 968
Committed: Sun Sep 16 15:27:49 2018 UTC (6 years, 7 months ago) by couturad
File size: 35715 byte(s)
Log Message:
Ajout d'une condition de sortie et d'un renvoi d'erreur pour le mailleur FEM.
Subdivision des fichiers mstruct_analyse.h/.cpp en sous fichiers pour une meilleure lisibilite.
Ajout d'une analyse des modules d'elasticite.
Ajout d'une analyse de l'energie.
Reconfiguration du main de microstructure.exe (suppression d'actions obsolètes).
Reconfiguration des fichiers generer_nb_ves, post_process.

File Contents

# User Rev Content
1 francois 756 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4     // Jean Christophe Cuilli�re et Vincent FRANCOIS
5     // D�partement de G�nie M�canique - UQTR
6     //------------------------------------------------------------
7     // Le projet MAGIC est un projet de recherche du d�partement
8     // de g�nie m�canique de l'Universit� du Qu�bec �
9     // Trois Rivi�res
10     // Les librairies ne peuvent �tre utilis�es sans l'accord
11     // des auteurs (contact : francois@uqtr.ca)
12     //------------------------------------------------------------
13     //------------------------------------------------------------
14     //
15     // main.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H25
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25    
26    
27     #include "gestionversion.h"
28     #include "magic_application.h"
29 couturad 919 #include "mstruct_ves.h"
30     #include "mstruct_ver.h"
31     #include "mstruct_parametres.h"
32     #include "mg_gestionnaire.h"
33     #include "mg_file.h"
34     #include "fct_taille_fem_solution.h"
35 couturad 926 #include "mstruct_ves_file.h"
36 francois 947 #include "mstruct_generateur_polycristaux.h"
37 couturad 919 #ifdef ALL_OCC
38     #include "occ_import.h"
39     #endif
40 francois 756 //---------------------------------------------------------------------------
41    
42    
43    
44     int main(int argc,char **argv)
45     {
46     std::vector<MAGIC_PARAMETRE_APPLICATION> lst;
47 couturad 919 // p_in(1) -in
48     // p_out(2) -out
49 couturad 968 MAGIC_PARAMETRE_APPLICATION p3(3,(char*)"-ves_in",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES d'entree");
50     MAGIC_PARAMETRE_APPLICATION p4(4,(char*)"-ves_out",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES de sortie");
51     MAGIC_PARAMETRE_APPLICATION p5(5,(char*)"-carte",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Carte de taille FEM solution");
52     MAGIC_PARAMETRE_APPLICATION p6(6,(char*)"-dossier",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Dossier de resultat");
53     MAGIC_PARAMETRE_APPLICATION p7(7,(char*)"-param",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier de parametres");
54     MAGIC_PARAMETRE_APPLICATION p8(8,(char*)"-lstparam",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier listant plusieurs fichiers de parametres");
55     MAGIC_PARAMETRE_APPLICATION p9(9,(char*)"-paramaster",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier de parametre aster");
56     MAGIC_PARAMETRE_APPLICATION p10(10,(char*)"-type_generateur",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type de generateur : [0] RSA, [1] DCR");
57     MAGIC_PARAMETRE_APPLICATION p11(11,(char*)"-type_inclusion",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type d'inclusion : [0] Sphere, [1] Cylindre, [2] Ellipsoide, [3] Boite");
58     MAGIC_PARAMETRE_APPLICATION p12(12,(char*)"-type_maillage",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type de maillage : [0] lineaire, [1] quadratique, [2] lineaire et quadratique");
59     MAGIC_PARAMETRE_APPLICATION p13(13,(char*)"-type_etude",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type d'etude : [0] mecanique, [1] thermique");
60     MAGIC_PARAMETRE_APPLICATION p14(14,(char*)"-nb_couche",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Nombre de couche d'erosion (defaut = 0)");
61     MAGIC_PARAMETRE_APPLICATION p15(15,(char*)"-epaisseur_couche",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Epaisseur d'une couche d'erosion (defaut = 0.02)");
62     MAGIC_PARAMETRE_APPLICATION p16(16,(char*)"-ves_sph",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES chargement spherique");
63     MAGIC_PARAMETRE_APPLICATION p17(17,(char*)"-ves_dev",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES chargement deviatorique");
64     MAGIC_PARAMETRE_APPLICATION p18(18,(char*)"-lstves",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Liste de VES");
65     MAGIC_PARAMETRE_APPLICATION p19(19,(char*)"-eps",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Distance max entre la triangulation et la géométrie");
66     MAGIC_PARAMETRE_APPLICATION p20(20,(char*)"-creeparam",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Creer une structure de parametres");
67     MAGIC_PARAMETRE_APPLICATION p21(21,(char*)"-gen_geo",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la geometrie");
68     MAGIC_PARAMETRE_APPLICATION p22(22,(char*)"-gen_mat",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer les materiaux");
69     MAGIC_PARAMETRE_APPLICATION p23(23,(char*)"-gen_carte",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la carte de taille");
70     MAGIC_PARAMETRE_APPLICATION p24(24,(char*)"-gen_mg_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le MG maillage");
71     MAGIC_PARAMETRE_APPLICATION p25(25,(char*)"-gen_fem_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le FEM maillage");
72     MAGIC_PARAMETRE_APPLICATION p26(26,(char*)"-gen_etude",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer l'etude");
73     MAGIC_PARAMETRE_APPLICATION p27(27,(char*)"-gen_calcul",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Lancer la resolution numerique");
74     MAGIC_PARAMETRE_APPLICATION p28(28,(char*)"-gen_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le post-traitement des resultats");
75     MAGIC_PARAMETRE_APPLICATION p29(29,(char*)"-cumuler_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Cumuler les post-traitement d'une liste de VES");
76     MAGIC_PARAMETRE_APPLICATION p30(30,(char*)"-affiche_contenu",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Affiche le contenu d'un fichier VES");
77     MAGIC_PARAMETRE_APPLICATION p31(31,(char*)"-export_tristl",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation de la triangulation STL de la microstructure");
78     MAGIC_PARAMETRE_APPLICATION p32(32,(char*)"-export_maill_abaqus",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation du maillage au format ABAQUS");
79     MAGIC_PARAMETRE_APPLICATION p33(33,(char*)"-creeparampoly",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Création d'un fichier de paramétres");
80     MAGIC_PARAMETRE_APPLICATION p34(34,(char*)"-polycristaux",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"génération d'un polycristal");
81 couturad 951
82 couturad 968 p20.ajouter_dependance(10);p20.ajouter_dependance(11);p20.ajouter_dependance(12);p20.ajouter_dependance(13);p20.ajouter_dependance(14);p20.ajouter_dependance(15);
83     p21.ajouter_dependance(4);p21.ajouter_dependance(7);p21.ajouter_dependance(8);
84     p22.ajouter_dependance(3);p22.ajouter_dependance(4);p22.ajouter_dependance(7);p22.ajouter_dependance(8);
85     p23.ajouter_dependance(3);p23.ajouter_dependance(4);p23.ajouter_dependance(7);
86     p24.ajouter_dependance(3);p24.ajouter_dependance(4);p24.ajouter_dependance(7);p24.ajouter_dependance(5);
87     p25.ajouter_dependance(3);p25.ajouter_dependance(4);p25.ajouter_dependance(7);
88     p26.ajouter_dependance(3);p26.ajouter_dependance(4);p26.ajouter_dependance(7);
89     p27.ajouter_dependance(3);p27.ajouter_dependance(4);p27.ajouter_dependance(7);p27.ajouter_dependance(9);
90     p28.ajouter_dependance(3);p28.ajouter_dependance(4);p28.ajouter_dependance(7);p28.ajouter_dependance(8);p28.ajouter_dependance(16);p28.ajouter_dependance(17);
91     p29.ajouter_dependance(7);p29.ajouter_dependance(8);p29.ajouter_dependance(6);
92     p30.ajouter_dependance(3);
93     p31.ajouter_dependance(3);p31.ajouter_dependance(2);p31.ajouter_dependance(19);
94     p32.ajouter_dependance(3);p32.ajouter_dependance(6);
95    
96 couturad 772 lst.push_back(p3);
97 couturad 919 lst.push_back(p4);
98     lst.push_back(p5);
99     lst.push_back(p6);
100     lst.push_back(p7);
101     lst.push_back(p8);
102     lst.push_back(p9);
103     lst.push_back(p10);
104     lst.push_back(p11);
105     lst.push_back(p12);
106     lst.push_back(p13);
107     lst.push_back(p14);
108     lst.push_back(p15);
109     lst.push_back(p16);
110     lst.push_back(p17);
111     lst.push_back(p18);
112     lst.push_back(p19);
113     lst.push_back(p20);
114     lst.push_back(p21);
115 couturad 926 lst.push_back(p22);
116     lst.push_back(p23);
117 couturad 927 lst.push_back(p24);
118     lst.push_back(p25);
119     lst.push_back(p26);
120 couturad 929 lst.push_back(p27);
121 couturad 933 lst.push_back(p28);
122 couturad 934 lst.push_back(p29);
123 francois 947 lst.push_back(p30);
124     lst.push_back(p31);
125 couturad 951 lst.push_back(p32);
126     lst.push_back(p33);
127     lst.push_back(p34);
128 francois 756
129 couturad 919 MAGIC_APPLICATION app((char*)"Homogéinisation d'une microstructure",argc,argv,lst,true,true);
130     if(app.get_erreur()==true) return 0;
131 couturad 968
132     if(app.get_action()==20)
133 couturad 772 {
134 couturad 968 app.affiche((char*)"***********************************************");
135     app.affiche((char*)"*** Creation des fichiers de parametres ***");
136     app.affiche((char*)"***********************************************");
137     int type_generateur;
138     int type_inclusion;
139     int type_maillage;
140     int type_etude;
141     int nb_couche;
142     double epaisseur_couche;
143     app.recupere_parametre_int(10,type_generateur,(char*)"Type de generateur manquant");
144     app.recupere_parametre_int(11,type_inclusion,(char*)"Type d'inclusion manquant");
145     app.recupere_parametre_int(12,type_maillage,(char*)"Type de maillage manquant");
146     app.recupere_parametre_int(13,type_etude,(char*)"Type d'etude manquant");
147     app.recupere_parametre_int_avec_defaut(14,nb_couche,0);
148     app.recupere_parametre_double_avec_defaut(15,epaisseur_couche,0.02);
149     if (app.get_erreur()==true) return 0;
150     bool maillage_lin=false;
151     bool maillage_quad=false;
152     if(type_maillage==0) maillage_lin=true;
153     else if(type_maillage==1) maillage_quad=true;
154     else {maillage_lin=true;maillage_quad=true;}
155     PARAMETRES::generer_fichier_parametres(type_etude,type_generateur,type_inclusion,maillage_lin,maillage_quad,nb_couche,epaisseur_couche,app.affiche);
156     PARAMETRES::generer_script_ves(type_etude,type_inclusion,maillage_lin,maillage_quad,app.affiche);
157     PARAMETRES::generer_script_post_traitement(type_etude,type_inclusion,maillage_lin,maillage_quad,epaisseur_couche,app.affiche);
158     }
159    
160    
161     if(app.get_action()==21)
162     {
163 couturad 919 app.affiche((char*)"**************************************");
164     app.affiche((char*)"*** Generation de la geometrie ***");
165     app.affiche((char*)"**************************************");
166     char fichier_ves_out[500];
167     char fichier_param[500];
168     char fichier_lstparam[500];
169     app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
170 couturad 968 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
171     app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
172 couturad 919 if (app.get_erreur()==true) return 0;
173     std::string str_fichier_ves_out = fichier_ves_out;
174     size_t found = str_fichier_ves_out.rfind((char*)".");
175     std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
176     str_fichier_magic_out.append((char*)".magic");
177     if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
178     {
179     app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
180     return 0;
181     }
182     if(strlen(fichier_param)>0)
183     {
184     std::vector<OT_PARAMETRES*> vector_param_geometrie;
185 couturad 964 OT_PARAMETRES* param_geometrie = new OT_PARAMETRES;
186     char message[5000];
187     if(PARAMETRES::importer_fichier_parametres(fichier_param,param_geometrie)==FAIL)
188     {
189     std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
190     app.affiche(message);
191     return 1;
192     }
193     std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
194     app.affiche(message);
195 couturad 919 vector_param_geometrie.push_back(param_geometrie);
196 couturad 926 MSTRUCT_VES ves;
197 couturad 919 ves.active_affichage(app.affiche);
198 couturad 961 if(ves.generer_geometrie(vector_param_geometrie)==FAIL)
199     {
200     delete param_geometrie;
201     return 1;
202     }
203 couturad 919 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
204     delete param_geometrie;
205     }
206     else if(strlen(fichier_lstparam)>0)
207     {
208     std::vector<OT_PARAMETRES*> vector_param_geometrie;
209 couturad 964 char message[5000];
210     if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_geometrie)==FAIL)
211     {
212     std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
213     app.affiche(message);
214     return 1;
215     }
216     std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
217     app.affiche(message);
218 couturad 926 MSTRUCT_VES ves;
219 couturad 919 ves.active_affichage(app.affiche);
220 couturad 961 if(ves.generer_geometrie(vector_param_geometrie)==FAIL)
221     {
222     std::vector<OT_PARAMETRES*>::iterator it_vector;
223     for(it_vector=vector_param_geometrie.begin();it_vector!=vector_param_geometrie.end();it_vector++)
224     {
225     delete *it_vector;
226     }
227     return 1;
228     }
229 couturad 919 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
230     std::vector<OT_PARAMETRES*>::iterator it_vector;
231     for(it_vector=vector_param_geometrie.begin();it_vector!=vector_param_geometrie.end();it_vector++)
232     {
233     delete *it_vector;
234     }
235     }
236 couturad 964 char message[5000];
237     std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
238     app.affiche(message);
239     std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
240     app.affiche(message);
241 couturad 772 }
242 francois 756
243 couturad 968 if(app.get_action()==22)
244 couturad 772 {
245 couturad 919 app.affiche((char*)"************************************");
246     app.affiche((char*)"*** Generation des materiaux ***");
247     app.affiche((char*)"************************************");
248     char fichier_ves_in[500];
249     char fichier_ves_out[500];
250     char fichier_param[500];
251     char fichier_lstparam[500];
252     app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
253     app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
254 couturad 968 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
255     app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
256 couturad 919 if (app.get_erreur()==true) return 0;
257 couturad 964 char message[5000];
258     std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
259     app.affiche(message);
260 couturad 919 std::string str_fichier_ves_out = fichier_ves_out;
261     size_t found = str_fichier_ves_out.rfind((char*)".");
262     std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
263     str_fichier_magic_out.append((char*)".magic");
264     if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
265     {
266     app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
267     return 0;
268     }
269     if(strlen(fichier_param)>0)
270     {
271     std::vector<OT_PARAMETRES*> vector_param_materiau;
272     OT_PARAMETRES* param_materiau = new OT_PARAMETRES;
273 couturad 964 char message[5000];
274     if(PARAMETRES::importer_fichier_parametres(fichier_param,param_materiau)==FAIL)
275     {
276     std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
277     app.affiche(message);
278     return 1;
279     }
280     std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
281     app.affiche(message);
282 couturad 919 vector_param_materiau.push_back(param_materiau);
283 couturad 926 MSTRUCT_VES ves(fichier_ves_in);
284 couturad 919 ves.active_affichage(app.affiche);
285     ves.generer_materiau(vector_param_materiau);
286     ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
287     delete param_materiau;
288     }
289     else if(strlen(fichier_lstparam)>0)
290     {
291     std::vector<OT_PARAMETRES*> vector_param_materiau;
292 couturad 964 char message[5000];
293     if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_materiau)==FAIL)
294     {
295     std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
296     app.affiche(message);
297     return 1;
298     }
299     std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
300     app.affiche(message);
301 couturad 926 MSTRUCT_VES ves(fichier_ves_in);
302 couturad 919 ves.active_affichage(app.affiche);
303     ves.generer_materiau(vector_param_materiau);
304     ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
305     std::vector<OT_PARAMETRES*>::iterator it_vector;
306     for(it_vector=vector_param_materiau.begin();it_vector!=vector_param_materiau.end();it_vector++)
307     {
308     delete *it_vector;
309     }
310     }
311 couturad 964 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
312     app.affiche(message);
313     std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
314     app.affiche(message);
315 couturad 772 }
316 couturad 919
317 couturad 968 if(app.get_action()==23)
318 couturad 919 {
319     app.affiche((char*)"********************************************");
320     app.affiche((char*)"*** Generation de la carte de taille ***");
321     app.affiche((char*)"********************************************");
322     char fichier_ves_in[500];
323     char fichier_param[500];
324 couturad 926 char fichier_ves_out[500];
325 couturad 919 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
326 couturad 926 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
327 couturad 968 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
328 couturad 919 if (app.get_erreur()==true) return 0;
329 couturad 964 char message[5000];
330     std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
331     app.affiche(message);
332 couturad 919 OT_PARAMETRES* param_carte = new OT_PARAMETRES;
333 couturad 964 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_carte)==FAIL)
334     {
335     std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
336     app.affiche(message);
337     return 1;
338     }
339     std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
340     app.affiche(message);
341 couturad 926 MSTRUCT_VES ves(fichier_ves_in);
342 couturad 919 ves.active_affichage(app.affiche);
343     ves.generer_carte(param_carte);
344 couturad 926 ves.enregistrer(fichier_ves_out);
345 couturad 919 delete param_carte;
346 couturad 964 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
347     app.affiche(message);
348 couturad 919 }
349    
350 couturad 968 if(app.get_action()==24)
351 couturad 919 {
352     app.affiche((char*)"**********************************");
353     app.affiche((char*)"*** Generation du maillage ***");
354     app.affiche((char*)"**********************************");
355     char fichier_ves_in[500];
356     char fichier_ves_out[500];
357     char fichier_param[500];
358     char fichier_carte[500];
359     app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
360     app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
361 couturad 968 app.recupere_parametre_string(5,fichier_carte,(char*)"Fichier de carte de taille manquant");
362     app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
363 couturad 919 if (app.get_erreur()==true) return 0;
364 couturad 964 char message[5000];
365     std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
366     app.affiche(message);
367     std::sprintf(message,"Fichier CARTE d'entree : \033[38;5;46m%s\033[1;33m",fichier_carte);
368     app.affiche(message);
369 couturad 919 std::string str_fichier_ves_out = fichier_ves_out;
370     size_t found = str_fichier_ves_out.rfind((char*)".");
371     std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
372     str_fichier_magic_out.append((char*)".magic");
373     OT_PARAMETRES* param_maillage = new OT_PARAMETRES;
374 couturad 964 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_maillage)==FAIL)
375     {
376     std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
377     app.affiche(message);
378 couturad 966 delete param_maillage;
379 couturad 964 return 1;
380     }
381     std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
382     app.affiche(message);
383 couturad 926 MSTRUCT_VES ves(fichier_ves_in);
384 couturad 919 ves.active_affichage(app.affiche);
385     FCT_TAILLE_FEM_SOLUTION *carte=new FCT_TAILLE_FEM_SOLUTION(fichier_carte);
386 couturad 966 if(ves.generer_maillage(param_maillage,carte)==FAIL)
387     {
388     std::sprintf(message,"ERREUR generation du maillage : \033[38;5;46m%s\033[1;33m",fichier_param);
389     app.affiche(message);
390     delete param_maillage;
391     return 1;
392     }
393 couturad 919 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
394     delete param_maillage;
395     delete carte;
396 couturad 964 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
397     app.affiche(message);
398     std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
399     app.affiche(message);
400 couturad 919 }
401    
402 couturad 968 if(app.get_action()==25)
403 couturad 919 {
404     app.affiche((char*)"**************************************");
405     app.affiche((char*)"*** Generation du FEM maillage ***");
406     app.affiche((char*)"**************************************");
407     char fichier_ves_in[500];
408     char fichier_ves_out[500];
409     char fichier_param[500];
410     app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
411     app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
412 couturad 968 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
413 couturad 919 if (app.get_erreur()==true) return 0;
414 couturad 964 char message[5000];
415     std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
416     app.affiche(message);
417 couturad 919 std::string str_fichier_ves_out = fichier_ves_out;
418     size_t found = str_fichier_ves_out.rfind((char*)".");
419     std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
420     str_fichier_magic_out.append((char*)".magic");
421     OT_PARAMETRES* param_maillage = new OT_PARAMETRES;
422 couturad 964 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_maillage)==FAIL)
423     {
424     std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
425     app.affiche(message);
426 couturad 966 delete param_maillage;
427 couturad 964 return 1;
428     }
429     std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
430     app.affiche(message);
431 couturad 926 MSTRUCT_VES ves(fichier_ves_in);
432 couturad 919 ves.active_affichage(app.affiche);
433 couturad 966 if(ves.generer_fem_maillage(param_maillage)==FAIL)
434     {
435     std::sprintf(message,"ERREUR generation fem maillage : \033[38;5;46m%s\033[1;33m",fichier_param);
436     app.affiche(message);
437     delete param_maillage;
438     return 1;
439     }
440 couturad 919 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
441 couturad 964 delete param_maillage;
442     std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
443     app.affiche(message);
444     std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
445     app.affiche(message);
446 couturad 919 }
447    
448 couturad 968 if(app.get_action()==26)
449 couturad 919 {
450     app.affiche((char*)"*********************************");
451     app.affiche((char*)"*** Generation de l'etude ***");
452     app.affiche((char*)"*********************************");
453     char fichier_ves_in[500];
454     char fichier_ves_out[500];
455     char fichier_param[500];
456     app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
457     app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
458 couturad 968 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
459 couturad 919 if (app.get_erreur()==true) return 0;
460 couturad 964 char message[5000];
461     std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
462     app.affiche(message);
463 couturad 919 std::string str_fichier_ves_out = fichier_ves_out;
464     size_t found = str_fichier_ves_out.rfind((char*)".");
465     std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
466     str_fichier_magic_out.append((char*)".magic");
467     OT_PARAMETRES* param_etude = new OT_PARAMETRES;
468 couturad 964 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_etude)==FAIL)
469     {
470     std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
471     app.affiche(message);
472     return 1;
473     }
474     std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
475     app.affiche(message);
476 couturad 926 MSTRUCT_VES ves(fichier_ves_in);
477 couturad 919 ves.active_affichage(app.affiche);
478     ves.generer_etude(param_etude);
479     ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
480     delete param_etude;
481 couturad 964 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
482     app.affiche(message);
483     std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
484     app.affiche(message);
485 couturad 919 }
486    
487 couturad 968 if(app.get_action()==27)
488 couturad 919 {
489 couturad 968 app.affiche((char*)"********************************");
490     app.affiche((char*)"*** Generation du Calcul ***");
491     app.affiche((char*)"********************************");
492 couturad 919 char fichier_ves_in[500];
493 couturad 926 char fichier_ves_out[500];
494 couturad 919 char fichier_param[500];
495     char fichier_param_aster[500];
496     app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
497     app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
498 couturad 968 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
499     app.recupere_parametre_string(9,fichier_param_aster,(char*)"Fichier de parametre aster manquant");
500 couturad 919 if (app.get_erreur()==true) return 0;
501 couturad 964 char message[5000];
502     std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
503     app.affiche(message);
504 couturad 919 std::string str_fichier_ves_out = fichier_ves_out;
505     size_t found = str_fichier_ves_out.rfind((char*)".");
506     std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
507 couturad 968 std::string nom_etude = "aster_" + str_fichier_magic_out;
508 couturad 919 str_fichier_magic_out.append((char*)".magic");
509     OT_PARAMETRES* param_etude = new OT_PARAMETRES;
510 couturad 964 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_etude)==FAIL)
511     {
512     std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
513     app.affiche(message);
514     return 1;
515     }
516     std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
517     app.affiche(message);
518 couturad 926 MSTRUCT_VES ves(fichier_ves_in);
519 couturad 919 ves.active_affichage(app.affiche);
520 couturad 968 ves.generer_calcul(param_etude,fichier_param_aster,nom_etude);
521 couturad 919 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
522     delete param_etude;
523 couturad 964 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
524     app.affiche(message);
525     std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
526     app.affiche(message);
527 couturad 919 }
528    
529 couturad 968 if(app.get_action()==28)
530 couturad 919 {
531 couturad 968 app.affiche((char*)"*******************************************************");
532     app.affiche((char*)"*** Generation du port-traitement des resultats ***");
533     app.affiche((char*)"*******************************************************");
534 couturad 919 char fichier_ves_in[500];
535     char fichier_ves_out[500];
536     char fichier_param[500];
537     char fichier_lstparam[500];
538 couturad 968 char fichier_ves_sph[500];
539     char fichier_ves_dev[500];
540     app.recupere_parametre_string_avec_defaut(3,fichier_ves_in,(char*)"");
541     app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
542     app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
543     app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
544     app.recupere_parametre_string_avec_defaut(16,fichier_ves_sph,(char*)"");
545     app.recupere_parametre_string_avec_defaut(17,fichier_ves_dev,(char*)"");
546 couturad 919 if (app.get_erreur()==true) return 0;
547 couturad 964 char message[5000];
548 couturad 968 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
549 couturad 964 app.affiche(message);
550 couturad 919 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
551     {
552     app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
553     return 0;
554     }
555 couturad 968 if((strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)==0) || (strlen(fichier_ves_sph)==0 && strlen(fichier_ves_dev)>0))
556     {
557     app.affiche_erreur((char*)"-ves_sph ET -ves_dev, OU rien");
558     return 0;
559     }
560 couturad 919 if(strlen(fichier_param)>0)
561     {
562 couturad 968 std::vector<OT_PARAMETRES*> vector_param_analyse;
563     OT_PARAMETRES* param_analyse = new OT_PARAMETRES;
564 couturad 964 char message[5000];
565 couturad 968 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_analyse)==FAIL)
566 couturad 964 {
567     std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
568     app.affiche(message);
569     return 1;
570     }
571     std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
572     app.affiche(message);
573 couturad 968 vector_param_analyse.push_back(param_analyse);
574     if(strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)>0)
575     {
576     MSTRUCT_VES_FILE ves_sph;
577     ves_sph.ouvrir(fichier_ves_sph);
578     MSTRUCT_VES_FILE ves_dev;
579     ves_dev.ouvrir(fichier_ves_dev);
580     MSTRUCT_VES ves;
581     ves.active_affichage(app.affiche);
582     ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev);
583     ves.enregistrer(fichier_ves_out);
584     }
585     else
586     {
587     MSTRUCT_VES ves(fichier_ves_in);
588     ves.active_affichage(app.affiche);
589     ves.generer_post_traitement(vector_param_analyse);
590     ves.enregistrer(fichier_ves_out);
591     }
592     delete param_analyse;
593 couturad 919 }
594     else if(strlen(fichier_lstparam)>0)
595     {
596 couturad 968 std::vector<OT_PARAMETRES*> vector_param_analyse;
597 couturad 964 char message[5000];
598 couturad 968 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_analyse)==FAIL)
599 couturad 964 {
600     std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
601     app.affiche(message);
602     return 1;
603     }
604     std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
605     app.affiche(message);
606 couturad 968 if(strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)>0)
607     {
608     MSTRUCT_VES_FILE ves_sph;
609     ves_sph.ouvrir(fichier_ves_sph);
610     MSTRUCT_VES_FILE ves_dev;
611     ves_dev.ouvrir(fichier_ves_dev);
612     MSTRUCT_VES ves;
613     ves.active_affichage(app.affiche);
614     ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev);
615     ves.enregistrer(fichier_ves_out);
616     }
617     else
618     {
619     MSTRUCT_VES ves(fichier_ves_in);
620     ves.active_affichage(app.affiche);
621     ves.generer_post_traitement(vector_param_analyse);
622     ves.enregistrer(fichier_ves_out);
623     }
624 couturad 919 std::vector<OT_PARAMETRES*>::iterator it_vector;
625 couturad 968 for(it_vector=vector_param_analyse.begin();it_vector!=vector_param_analyse.end();it_vector++)
626 couturad 919 {
627     delete *it_vector;
628     }
629     }
630 couturad 968 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
631     app.affiche(message);
632 couturad 919 }
633    
634 couturad 968 if(app.get_action()==29)
635 couturad 919 {
636 couturad 968 app.affiche((char*)"**************************************");
637     app.affiche((char*)"*** Cumule des post-traitement ***");
638     app.affiche((char*)"**************************************");
639 couturad 927 char fichier_param[500];
640     char fichier_lstparam[500];
641 couturad 968 char fichier_lst_ves[500];
642 couturad 927 char dossier_resultat[500];
643 couturad 968 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
644     app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
645     app.recupere_parametre_string(18,fichier_lst_ves,(char*)"Liste de VES");
646     app.recupere_parametre_string_avec_defaut(6,dossier_resultat,(char*)"");
647 couturad 927 if (app.get_erreur()==true) return 0;
648 couturad 964 char message[5000];
649 couturad 968 std::sprintf(message,"Liste de fichier VES : \033[38;5;46m%s\033[1;33m",fichier_lst_ves);
650 couturad 964 app.affiche(message);
651     std::sprintf(message,"Dossier de resultat : \033[38;5;46m%s\033[1;33m",dossier_resultat);
652     app.affiche(message);
653 couturad 927 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
654     {
655     app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
656     return 0;
657     }
658     if(strlen(fichier_param)>0)
659     {
660     std::vector<OT_PARAMETRES*> vector_param;
661     OT_PARAMETRES* param = new OT_PARAMETRES;
662 couturad 964 char message[5000];
663     if(PARAMETRES::importer_fichier_parametres(fichier_param,param)==FAIL)
664     {
665     std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
666     app.affiche(message);
667     return 1;
668     }
669     std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
670     app.affiche(message);
671 couturad 927 vector_param.push_back(param);
672     MSTRUCT_VER ver;
673     ver.active_affichage(app.affiche);
674 couturad 968 ver.cumuler_post_traitement(fichier_lst_ves,vector_param,dossier_resultat,true);
675 couturad 927 delete param;
676     }
677     else if(strlen(fichier_lstparam)>0)
678     {
679     std::vector<OT_PARAMETRES*> vector_param;
680 couturad 964 char message[5000];
681     if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param)==FAIL)
682     {
683     std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
684     app.affiche(message);
685     return 1;
686     }
687     std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
688     app.affiche(message);
689 couturad 927 MSTRUCT_VER ver;
690     ver.active_affichage(app.affiche);
691 couturad 968 ver.cumuler_post_traitement(fichier_lst_ves,vector_param,dossier_resultat,true);
692 couturad 927 std::vector<OT_PARAMETRES*>::iterator it_vector;
693     for(it_vector=vector_param.begin();it_vector!=vector_param.end();it_vector++)
694     {
695     delete *it_vector;
696     }
697     }
698     }
699    
700 couturad 933 if(app.get_action()==30)
701     {
702 couturad 968 app.affiche((char*)"***************************");
703     app.affiche((char*)"*** AFFICHE CONTENU ***");
704     app.affiche((char*)"***************************");
705 couturad 933 char fichier_ves_in[500];
706     app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
707     if (app.get_erreur()==true) return 0;
708 couturad 968 MSTRUCT_VES_FILE ves_file;
709     ves_file.ouvrir(fichier_ves_in);
710     ves_file.affiche_contenu(app.affiche);
711 couturad 933 }
712 couturad 934
713     if(app.get_action()==31)
714     {
715 couturad 968 #ifdef ALL_OCC
716     app.affiche((char*)"********************************************************************");
717     app.affiche((char*)"*** Exportation de la triangulation STL de la microstructure ***");
718     app.affiche((char*)"********************************************************************");
719     char fichier_ves_in[500];
720     char fichier_magic_out[500];
721     double eps;
722     app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
723     app.recupere_parametre_string(2,fichier_magic_out,(char*)"Fichier MAGIC de sortie manquant");
724     app.recupere_parametre_double_avec_defaut(19,eps,0.001);
725 couturad 934 if (app.get_erreur()==true) return 0;
726 couturad 968 MSTRUCT_VES ves(fichier_ves_in);
727     MG_GESTIONNAIRE* gest = ves.get_mg_gestionnaire();
728     MG_GEOMETRIE* mggeo = ves.get_mg_geometrie();
729     OCC_IMPORT occ_import;
730     MG_MAILLAGE* tristl = occ_import.importer_triangulation_V2017(*gest,mggeo,eps);
731     gest->enregistrer(fichier_magic_out);
732     #endif
733     }
734 francois 947
735     if(app.get_action()==32)
736     {
737     app.affiche((char*)"***********************************************");
738 couturad 968 app.affiche((char*)"*** EXPORT DU MAILLAGE AU FORMAT ABAQUS ***");
739     app.affiche((char*)"***********************************************");
740     char fichier_ves_in[500];
741     char dossier[500];
742     app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant");
743     app.recupere_parametre_string(6,dossier,(char*)"Dossier de resultats");
744     if (app.get_erreur()==true) return 0;
745     MSTRUCT_VES ves(fichier_ves_in);
746     ves.exporter_maillage_abaqus(dossier);
747     }
748    
749     if(app.get_action()==33)
750     {
751     app.affiche((char*)"***********************************************");
752 francois 947 app.affiche((char*)"*** GENERATION D'UN POLYCRISTAL ***");
753     app.affiche((char*)"***********************************************");
754     char fichier_magic[1000];
755     char fichier_param[1000];
756 couturad 968 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
757 francois 947 bool creeparam;
758 couturad 968 app.recupere_parametre_bool_avec_defaut(20,creeparam,false);
759 francois 947 if (app.get_erreur()==true) return 0;
760     if (creeparam)
761 couturad 968 {
762     MSTRUCT_GENERATEUR_POLYCRISTAUX gen;
763     gen.active_affichage(app.affiche);
764     gen.cree_param(fichier_param);
765     }
766 francois 947 else
767 couturad 968 {
768 francois 947 app.recupere_parametre_string(2,fichier_magic,(char*)"Fichier de sortie manquant");
769     if (app.get_erreur()==true) return 0;
770     MSTRUCT_GENERATEUR_POLYCRISTAUX gen(fichier_param);
771     gen.active_affichage(app.affiche);
772     gen.genere(fichier_magic);
773 couturad 968 }
774 francois 947 }
775 couturad 934
776 francois 756 app.affiche((char*)"Fin");
777     return 0;
778     }
779    
780    
781    
782     #pragma package(smart_init)