ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 1071
Committed: Thu Jul 8 20:15:44 2021 UTC (4 years, 1 month ago) by francois
File size: 42928 byte(s)
Log Message:
centralisation automatique resultat pour les polycristaux en parralelle ou non

File Contents

# Content
1 //------------------------------------------------------------
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 #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 #include "mstruct_ves_file.h"
36 #include "mstruct_generateur_polycristaux.h"
37 #include "mstruct_analyse_polycristaux.h"
38 #ifdef ALL_OCC
39 #include "occ_import.h"
40 #endif
41 //---------------------------------------------------------------------------
42
43
44
45 int main(int argc,char **argv)
46 {
47 std::vector<MAGIC_PARAMETRE_APPLICATION> lst;
48 // p_in(1) -in
49 // p_out(2) -out
50 MAGIC_PARAMETRE_APPLICATION p3(3,(char*)"-ves_in",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES d'entree");
51 MAGIC_PARAMETRE_APPLICATION p4(4,(char*)"-ves_out",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES de sortie");
52 MAGIC_PARAMETRE_APPLICATION p5(5,(char*)"-carte",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Carte de taille FEM solution");
53 MAGIC_PARAMETRE_APPLICATION p6(6,(char*)"-dossier",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Dossier de resultat");
54 MAGIC_PARAMETRE_APPLICATION p7(7,(char*)"-param",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier de parametres");
55 MAGIC_PARAMETRE_APPLICATION p8(8,(char*)"-lstparam",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier listant plusieurs fichiers de parametres");
56 MAGIC_PARAMETRE_APPLICATION p9(9,(char*)"-paramaster",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier de parametre aster");
57 MAGIC_PARAMETRE_APPLICATION p10(10,(char*)"-type_generateur",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type de generateur : [0] RSA, [1] DCR");
58 MAGIC_PARAMETRE_APPLICATION p11(11,(char*)"-type_inclusion",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type d'inclusion : [0] Sphere, [1] Cylindre");
59 MAGIC_PARAMETRE_APPLICATION p12(12,(char*)"-type_maillage",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type de maillage : [0] lineaire, [1] quadratique, [2] lineaire et quadratique");
60 MAGIC_PARAMETRE_APPLICATION p13(13,(char*)"-type_etude",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type d'etude : [0] mecanique, [1] thermique, [2] mecanique et thermique");
61 MAGIC_PARAMETRE_APPLICATION p14(14,(char*)"-nb_couche_erosion",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Nombre de couche d'erosion (defaut = 0)");
62 MAGIC_PARAMETRE_APPLICATION p15(15,(char*)"-epaisseur_couche_erosion",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Epaisseur d'une couche d'erosion (defaut = 0.02)");
63 MAGIC_PARAMETRE_APPLICATION p16(16,(char*)"-ves_sph",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES chargement spherique");
64 MAGIC_PARAMETRE_APPLICATION p17(17,(char*)"-ves_dev",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES chargement deviatorique");
65 MAGIC_PARAMETRE_APPLICATION p18(18,(char*)"-lstves",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Liste de VES");
66 MAGIC_PARAMETRE_APPLICATION p19(19,(char*)"-eps",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Distance max entre la triangulation et la géométrie");
67 MAGIC_PARAMETRE_APPLICATION p20(20,(char*)"-creeparam",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Creer une structure de parametres");
68 MAGIC_PARAMETRE_APPLICATION p21(21,(char*)"-gen_geo",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la geometrie");
69 MAGIC_PARAMETRE_APPLICATION p22(22,(char*)"-gen_mat",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer les materiaux");
70 MAGIC_PARAMETRE_APPLICATION p23(23,(char*)"-gen_carte",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la carte de taille");
71 MAGIC_PARAMETRE_APPLICATION p24(24,(char*)"-gen_mg_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le MG maillage");
72 MAGIC_PARAMETRE_APPLICATION p25(25,(char*)"-gen_fem_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le FEM maillage");
73 MAGIC_PARAMETRE_APPLICATION p26(26,(char*)"-gen_etude",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer l'etude");
74 MAGIC_PARAMETRE_APPLICATION p27(27,(char*)"-gen_calcul",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Lancer la resolution numerique");
75 MAGIC_PARAMETRE_APPLICATION p28(28,(char*)"-gen_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le post-traitement des resultats");
76 MAGIC_PARAMETRE_APPLICATION p29(29,(char*)"-cumuler_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Cumuler les post-traitement d'une liste de VES");
77 MAGIC_PARAMETRE_APPLICATION p30(30,(char*)"-affiche_contenu",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Affiche le contenu d'un fichier VES");
78 MAGIC_PARAMETRE_APPLICATION p31(31,(char*)"-export_tristl",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation de la triangulation STL de la microstructure");
79 MAGIC_PARAMETRE_APPLICATION p32(32,(char*)"-export_maill_abaqus",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation du maillage au format ABAQUS");
80 MAGIC_PARAMETRE_APPLICATION p33(33,(char*)"-creeparampoly",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Création d'un fichier de paramétres");
81 MAGIC_PARAMETRE_APPLICATION p34(34,(char*)"-polycristaux",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"génération d'un polycristal");
82 MAGIC_PARAMETRE_APPLICATION p35(35,(char*)"-ves_lambda_x",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda x");
83 MAGIC_PARAMETRE_APPLICATION p36(36,(char*)"-ves_lambda_y",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda y");
84 MAGIC_PARAMETRE_APPLICATION p37(37,(char*)"-ves_lambda_z",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda z");
85 MAGIC_PARAMETRE_APPLICATION p38(38,(char*)"-compress_histo",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Compresser un fichier histogramme (.txt) selon une largeur de colonne");
86 MAGIC_PARAMETRE_APPLICATION p39(39,(char*)"-largeur",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Largeur de colonne");
87 MAGIC_PARAMETRE_APPLICATION p40(40,(char*)"-exportpoint",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Exportation des points qui ont généré les cristaux");
88 MAGIC_PARAMETRE_APPLICATION p41(41,(char*)"-analysepoly",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Analyse des fichiers résultats des calculs de polycristaux");
89
90 p20.ajouter_dependance(10);p20.ajouter_dependance(11);p20.ajouter_dependance(12);p20.ajouter_dependance(13);p20.ajouter_dependance(14);p20.ajouter_dependance(15);
91 p21.ajouter_dependance(4);p21.ajouter_dependance(7);p21.ajouter_dependance(8);
92 p22.ajouter_dependance(3);p22.ajouter_dependance(4);p22.ajouter_dependance(7);p22.ajouter_dependance(8);
93 p23.ajouter_dependance(3);p23.ajouter_dependance(4);p23.ajouter_dependance(7);
94 p24.ajouter_dependance(3);p24.ajouter_dependance(4);p24.ajouter_dependance(7);p24.ajouter_dependance(5);
95 p25.ajouter_dependance(3);p25.ajouter_dependance(4);p25.ajouter_dependance(7);
96 p26.ajouter_dependance(3);p26.ajouter_dependance(4);p26.ajouter_dependance(7);
97 p27.ajouter_dependance(3);p27.ajouter_dependance(4);p27.ajouter_dependance(7);p27.ajouter_dependance(9);
98 p28.ajouter_dependance(3);p28.ajouter_dependance(4);p28.ajouter_dependance(7);p28.ajouter_dependance(8);p28.ajouter_dependance(16);p28.ajouter_dependance(17);p28.ajouter_dependance(35);p28.ajouter_dependance(36);p28.ajouter_dependance(37);
99 p29.ajouter_dependance(7);p29.ajouter_dependance(8);p29.ajouter_dependance(6);
100 p30.ajouter_dependance(3);
101 p31.ajouter_dependance(3);p31.ajouter_dependance(2);p31.ajouter_dependance(19);
102 p32.ajouter_dependance(3);p32.ajouter_dependance(6);
103 p34.ajouter_dependance(1);p34.ajouter_dependance(2);p34.ajouter_dependance(7);p34.ajouter_dependance(33);p34.ajouter_dependance(40);p34.ajouter_dependance(41);
104 p38.ajouter_dependance(1);p38.ajouter_dependance(2);p38.ajouter_dependance(39);
105
106 lst.push_back(p3);
107 lst.push_back(p4);
108 lst.push_back(p5);
109 lst.push_back(p6);
110 lst.push_back(p7);
111 lst.push_back(p8);
112 lst.push_back(p9);
113 lst.push_back(p10);
114 lst.push_back(p11);
115 lst.push_back(p12);
116 lst.push_back(p13);
117 lst.push_back(p14);
118 lst.push_back(p15);
119 lst.push_back(p16);
120 lst.push_back(p17);
121 lst.push_back(p18);
122 lst.push_back(p19);
123 lst.push_back(p20);
124 lst.push_back(p21);
125 lst.push_back(p22);
126 lst.push_back(p23);
127 lst.push_back(p24);
128 lst.push_back(p25);
129 lst.push_back(p26);
130 lst.push_back(p27);
131 lst.push_back(p28);
132 lst.push_back(p29);
133 lst.push_back(p30);
134 lst.push_back(p31);
135 lst.push_back(p32);
136 lst.push_back(p33);
137 lst.push_back(p34);
138 lst.push_back(p35);
139 lst.push_back(p36);
140 lst.push_back(p37);
141 lst.push_back(p38);
142 lst.push_back(p39);
143 lst.push_back(p40);
144 lst.push_back(p41);
145
146 MAGIC_APPLICATION app((char*)"Homogeneisation d'une microstructure",argc,argv,lst,true,true);
147 if(app.get_erreur()==true) return 0;
148
149 if(app.get_action()==20)
150 {
151 app.affiche((char*)"***********************************************");
152 app.affiche((char*)"*** Creation des fichiers de parametres ***");
153 app.affiche((char*)"***********************************************");
154 int type_generateur;
155 int type_inclusion;
156 int type_maillage;
157 int type_etude;
158 int nb_couche;
159 double epaisseur_couche;
160 app.recupere_parametre_int(10,type_generateur,(char*)"Type de generateur manquant");
161 app.recupere_parametre_int(11,type_inclusion,(char*)"Type d'inclusion manquant");
162 app.recupere_parametre_int(12,type_maillage,(char*)"Type de maillage manquant");
163 app.recupere_parametre_int(13,type_etude,(char*)"Type d'etude manquant");
164 app.recupere_parametre_double_avec_defaut(15,epaisseur_couche,0.02);
165 app.recupere_parametre_int_avec_defaut(14,nb_couche,0);
166 if (app.get_erreur()==true) return 0;
167 bool maillage_lin=false;
168 bool maillage_quad=false;
169 if(type_maillage==0) maillage_lin=true;
170 else if(type_maillage==1) maillage_quad=true;
171 else {maillage_lin=true;maillage_quad=true;}
172 bool etude_mecanique=false;
173 bool etude_thermique=false;
174 if(type_etude==0) etude_mecanique=true;
175 else if(type_etude==1) etude_thermique=true;
176 else if(type_etude==2){etude_mecanique=true;etude_thermique=true;}
177 PARAMETRES::generer_fichier_parametres(etude_mecanique,etude_thermique,type_generateur,type_inclusion,maillage_lin,maillage_quad,nb_couche,epaisseur_couche,app.affiche);
178 PARAMETRES::generer_script_ves(etude_mecanique,etude_thermique,type_inclusion,maillage_lin,maillage_quad,app.affiche);
179 PARAMETRES::generer_script_post_traitement(etude_mecanique,etude_thermique,type_inclusion,maillage_lin,maillage_quad,epaisseur_couche,app.affiche);
180 }
181
182
183 if(app.get_action()==21)
184 {
185 app.affiche((char*)"**************************************");
186 app.affiche((char*)"*** Generation de la geometrie ***");
187 app.affiche((char*)"**************************************");
188 char fichier_ves_out[500];
189 char fichier_param[500];
190 char fichier_lstparam[500];
191 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
192 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
193 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
194 if (app.get_erreur()==true) return 0;
195 std::string str_fichier_ves_out = fichier_ves_out;
196 size_t found = str_fichier_ves_out.rfind((char*)".");
197 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
198 str_fichier_magic_out.append((char*)".magic");
199 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
200 {
201 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
202 return 0;
203 }
204 if(strlen(fichier_param)>0)
205 {
206 std::vector<OT_PARAMETRES*> vector_param_geometrie;
207 OT_PARAMETRES* param_geometrie = new OT_PARAMETRES;
208 char message[5000];
209 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_geometrie)==FAIL)
210 {
211 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
212 app.affiche(message);
213 return 1;
214 }
215 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
216 app.affiche(message);
217 vector_param_geometrie.push_back(param_geometrie);
218 MSTRUCT_VES ves;
219 ves.active_affichage(app.affiche);
220 if(ves.generer_geometrie(vector_param_geometrie)==FAIL)
221 {
222 delete param_geometrie;
223 return 1;
224 }
225 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
226 delete param_geometrie;
227 }
228 else if(strlen(fichier_lstparam)>0)
229 {
230 std::vector<OT_PARAMETRES*> vector_param_geometrie;
231 char message[5000];
232 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_geometrie)==FAIL)
233 {
234 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
235 app.affiche(message);
236 return 1;
237 }
238 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
239 app.affiche(message);
240 MSTRUCT_VES ves;
241 ves.active_affichage(app.affiche);
242 if(ves.generer_geometrie(vector_param_geometrie)==FAIL)
243 {
244 std::vector<OT_PARAMETRES*>::iterator it_vector;
245 for(it_vector=vector_param_geometrie.begin();it_vector!=vector_param_geometrie.end();it_vector++)
246 {
247 delete *it_vector;
248 }
249 return 1;
250 }
251 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
252 std::vector<OT_PARAMETRES*>::iterator it_vector;
253 for(it_vector=vector_param_geometrie.begin();it_vector!=vector_param_geometrie.end();it_vector++)
254 {
255 delete *it_vector;
256 }
257 }
258 char message[5000];
259 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
260 app.affiche(message);
261 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
262 app.affiche(message);
263 }
264
265 if(app.get_action()==22)
266 {
267 app.affiche((char*)"************************************");
268 app.affiche((char*)"*** Generation des materiaux ***");
269 app.affiche((char*)"************************************");
270 char fichier_ves_in[500];
271 char fichier_ves_out[500];
272 char fichier_param[500];
273 char fichier_lstparam[500];
274 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
275 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
276 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
277 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
278 if (app.get_erreur()==true) return 0;
279 char message[5000];
280 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
281 app.affiche(message);
282 std::string str_fichier_ves_out = fichier_ves_out;
283 size_t found = str_fichier_ves_out.rfind((char*)".");
284 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
285 str_fichier_magic_out.append((char*)".magic");
286 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
287 {
288 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
289 return 0;
290 }
291 if(strlen(fichier_param)>0)
292 {
293 std::vector<OT_PARAMETRES*> vector_param_materiau;
294 OT_PARAMETRES* param_materiau = new OT_PARAMETRES;
295 char message[5000];
296 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_materiau)==FAIL)
297 {
298 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
299 app.affiche(message);
300 return 1;
301 }
302 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
303 app.affiche(message);
304 vector_param_materiau.push_back(param_materiau);
305 MSTRUCT_VES ves(fichier_ves_in);
306 ves.active_affichage(app.affiche);
307 ves.generer_materiau(vector_param_materiau);
308 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
309 delete param_materiau;
310 }
311 else if(strlen(fichier_lstparam)>0)
312 {
313 std::vector<OT_PARAMETRES*> vector_param_materiau;
314 char message[5000];
315 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_materiau)==FAIL)
316 {
317 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
318 app.affiche(message);
319 return 1;
320 }
321 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
322 app.affiche(message);
323 MSTRUCT_VES ves(fichier_ves_in);
324 ves.active_affichage(app.affiche);
325 ves.generer_materiau(vector_param_materiau);
326 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
327 std::vector<OT_PARAMETRES*>::iterator it_vector;
328 for(it_vector=vector_param_materiau.begin();it_vector!=vector_param_materiau.end();it_vector++)
329 {
330 delete *it_vector;
331 }
332 }
333 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
334 app.affiche(message);
335 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
336 app.affiche(message);
337 }
338
339 if(app.get_action()==23)
340 {
341 app.affiche((char*)"********************************************");
342 app.affiche((char*)"*** Generation de la carte de taille ***");
343 app.affiche((char*)"********************************************");
344 char fichier_ves_in[500];
345 char fichier_param[500];
346 char fichier_ves_out[500];
347 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
348 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
349 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
350 if (app.get_erreur()==true) return 0;
351 char message[5000];
352 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
353 app.affiche(message);
354 OT_PARAMETRES* param_carte = new OT_PARAMETRES;
355 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_carte)==FAIL)
356 {
357 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
358 app.affiche(message);
359 return 1;
360 }
361 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
362 app.affiche(message);
363 MSTRUCT_VES ves(fichier_ves_in);
364 ves.active_affichage(app.affiche);
365 ves.generer_carte(param_carte);
366 ves.enregistrer(fichier_ves_out);
367 delete param_carte;
368 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
369 app.affiche(message);
370 }
371
372 if(app.get_action()==24)
373 {
374 app.affiche((char*)"**********************************");
375 app.affiche((char*)"*** Generation du maillage ***");
376 app.affiche((char*)"**********************************");
377 char fichier_ves_in[500];
378 char fichier_ves_out[500];
379 char fichier_param[500];
380 char fichier_carte[500];
381 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
382 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
383 app.recupere_parametre_string(5,fichier_carte,(char*)"Fichier de carte de taille manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
384 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
385 if (app.get_erreur()==true) return 0;
386 char message[5000];
387 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
388 app.affiche(message);
389 std::sprintf(message,"Fichier CARTE d'entree : \033[38;5;46m%s\033[1;33m",fichier_carte);
390 app.affiche(message);
391 std::string str_fichier_ves_out = fichier_ves_out;
392 size_t found = str_fichier_ves_out.rfind((char*)".");
393 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
394 str_fichier_magic_out.append((char*)".magic");
395 OT_PARAMETRES* param_maillage = new OT_PARAMETRES;
396 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_maillage)==FAIL)
397 {
398 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
399 app.affiche(message);
400 delete param_maillage;
401 return 1;
402 }
403 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
404 app.affiche(message);
405 MSTRUCT_VES ves(fichier_ves_in);
406 ves.active_affichage(app.affiche);
407 FCT_TAILLE_FEM_SOLUTION *carte=new FCT_TAILLE_FEM_SOLUTION(fichier_carte);
408 if(ves.generer_maillage(param_maillage,carte)==FAIL)
409 {
410 std::sprintf(message,"ERREUR generation du maillage : \033[38;5;46m%s\033[1;33m",fichier_param);
411 app.affiche(message);
412 delete param_maillage;
413 return 1;
414 }
415 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
416 delete param_maillage;
417 delete carte;
418 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
419 app.affiche(message);
420 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
421 app.affiche(message);
422 }
423
424 if(app.get_action()==25)
425 {
426 app.affiche((char*)"**************************************");
427 app.affiche((char*)"*** Generation du FEM maillage ***");
428 app.affiche((char*)"**************************************");
429 char fichier_ves_in[500];
430 char fichier_ves_out[500];
431 char fichier_param[500];
432 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
433 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
434 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
435 if (app.get_erreur()==true) return 0;
436 char message[5000];
437 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
438 app.affiche(message);
439 std::string str_fichier_ves_out = fichier_ves_out;
440 size_t found = str_fichier_ves_out.rfind((char*)".");
441 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
442 str_fichier_magic_out.append((char*)".magic");
443 OT_PARAMETRES* param_maillage = new OT_PARAMETRES;
444 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_maillage)==FAIL)
445 {
446 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
447 app.affiche(message);
448 delete param_maillage;
449 return 1;
450 }
451 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
452 app.affiche(message);
453 MSTRUCT_VES ves(fichier_ves_in);
454 ves.active_affichage(app.affiche);
455 if(ves.generer_fem_maillage(param_maillage)==FAIL)
456 {
457 std::sprintf(message,"ERREUR generation fem maillage : \033[38;5;46m%s\033[1;33m",fichier_param);
458 app.affiche(message);
459 delete param_maillage;
460 return 1;
461 }
462 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
463 delete param_maillage;
464 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
465 app.affiche(message);
466 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
467 app.affiche(message);
468 }
469
470 if(app.get_action()==26)
471 {
472 app.affiche((char*)"*********************************");
473 app.affiche((char*)"*** Generation de l'etude ***");
474 app.affiche((char*)"*********************************");
475 char fichier_ves_in[500];
476 char fichier_ves_out[500];
477 char fichier_param[500];
478 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
479 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
480 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
481 if (app.get_erreur()==true) return 0;
482 char message[5000];
483 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
484 app.affiche(message);
485 std::string str_fichier_ves_out = fichier_ves_out;
486 size_t found = str_fichier_ves_out.rfind((char*)".");
487 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
488 str_fichier_magic_out.append((char*)".magic");
489 OT_PARAMETRES* param_etude = new OT_PARAMETRES;
490 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_etude)==FAIL)
491 {
492 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
493 app.affiche(message);
494 return 1;
495 }
496 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
497 app.affiche(message);
498 MSTRUCT_VES ves(fichier_ves_in);
499 ves.active_affichage(app.affiche);
500 ves.generer_etude(param_etude);
501 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
502 delete param_etude;
503 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
504 app.affiche(message);
505 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
506 app.affiche(message);
507 }
508
509 if(app.get_action()==27)
510 {
511 app.affiche((char*)"********************************");
512 app.affiche((char*)"*** Generation du Calcul ***");
513 app.affiche((char*)"********************************");
514 char fichier_ves_in[500];
515 char fichier_ves_out[500];
516 char fichier_param[500];
517 char fichier_param_aster[500];
518 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
519 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
520 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
521 app.recupere_parametre_string(9,fichier_param_aster,(char*)"Fichier de parametre aster manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
522 if (app.get_erreur()==true) return 0;
523 char message[5000];
524 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
525 app.affiche(message);
526 std::string str_fichier_ves_out = fichier_ves_out;
527 size_t found = str_fichier_ves_out.rfind((char*)".");
528 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
529 std::string nom_etude = "aster_" + str_fichier_magic_out;
530 str_fichier_magic_out.append((char*)".magic");
531 OT_PARAMETRES* param_etude = new OT_PARAMETRES;
532 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_etude)==FAIL)
533 {
534 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
535 app.affiche(message);
536 return 1;
537 }
538 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
539 app.affiche(message);
540 MSTRUCT_VES ves(fichier_ves_in);
541 ves.active_affichage(app.affiche);
542 ves.generer_calcul(param_etude,fichier_param_aster,nom_etude);
543 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
544 delete param_etude;
545 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
546 app.affiche(message);
547 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
548 app.affiche(message);
549 }
550
551 if(app.get_action()==28)
552 {
553 app.affiche((char*)"*******************************************************");
554 app.affiche((char*)"*** Generation du port-traitement des resultats ***");
555 app.affiche((char*)"*******************************************************");
556 char fichier_ves_in[500];
557 char fichier_ves_out[500];
558 char fichier_param[500];
559 char fichier_lstparam[500];
560 char fichier_ves_sph[500];
561 char fichier_ves_dev[500];
562 char fichier_ves_lambda_x[500];
563 char fichier_ves_lambda_y[500];
564 char fichier_ves_lambda_z[500];
565 app.recupere_parametre_string_avec_defaut(3,fichier_ves_in,(char*)"");
566 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
567 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
568 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
569 app.recupere_parametre_string_avec_defaut(16,fichier_ves_sph,(char*)"");
570 app.recupere_parametre_string_avec_defaut(17,fichier_ves_dev,(char*)"");
571 app.recupere_parametre_string_avec_defaut(35,fichier_ves_lambda_x,(char*)"");
572 app.recupere_parametre_string_avec_defaut(36,fichier_ves_lambda_y,(char*)"");
573 app.recupere_parametre_string_avec_defaut(37,fichier_ves_lambda_z,(char*)"");
574 if (app.get_erreur()==true) return 0;
575 char message[5000];
576 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
577 app.affiche(message);
578 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
579 {
580 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
581 return 0;
582 }
583 if((strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)==0) || (strlen(fichier_ves_sph)==0 && strlen(fichier_ves_dev)>0))
584 {
585 app.affiche_erreur((char*)"-ves_sph ET -ves_dev, OU rien");
586 return 0;
587 }
588 if(strlen(fichier_param)>0)
589 {
590 std::vector<OT_PARAMETRES*> vector_param_analyse;
591 OT_PARAMETRES* param_analyse = new OT_PARAMETRES;
592 char message[5000];
593 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_analyse)==FAIL)
594 {
595 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
596 app.affiche(message);
597 return 1;
598 }
599 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
600 app.affiche(message);
601 vector_param_analyse.push_back(param_analyse);
602 if(strlen(fichier_ves_lambda_x)>0 && strlen(fichier_ves_lambda_y)>0 && strlen(fichier_ves_lambda_z)>0)
603 {
604 MSTRUCT_VES_FILE ves_lambda_x;
605 ves_lambda_x.ouvrir(fichier_ves_lambda_x);
606 MSTRUCT_VES_FILE ves_lambda_y;
607 ves_lambda_y.ouvrir(fichier_ves_lambda_y);
608 MSTRUCT_VES_FILE ves_lambda_z;
609 ves_lambda_z.ouvrir(fichier_ves_lambda_z);
610 MSTRUCT_VES ves;
611 ves.active_affichage(app.affiche);
612 ves.generer_post_traitement(vector_param_analyse,&ves_lambda_x,&ves_lambda_y,&ves_lambda_z);
613 ves.enregistrer(fichier_ves_out);
614 }
615 else if(strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)>0)
616 {
617 MSTRUCT_VES_FILE ves_sph;
618 ves_sph.ouvrir(fichier_ves_sph);
619 MSTRUCT_VES_FILE ves_dev;
620 ves_dev.ouvrir(fichier_ves_dev);
621 MSTRUCT_VES ves;
622 ves.active_affichage(app.affiche);
623 ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev);
624 ves.enregistrer(fichier_ves_out);
625 }
626 else
627 {
628 MSTRUCT_VES ves(fichier_ves_in);
629 ves.active_affichage(app.affiche);
630 ves.generer_post_traitement(vector_param_analyse);
631 ves.enregistrer(fichier_ves_out);
632 }
633 delete param_analyse;
634 }
635 else if(strlen(fichier_lstparam)>0)
636 {
637 std::vector<OT_PARAMETRES*> vector_param_analyse;
638 char message[5000];
639 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_analyse)==FAIL)
640 {
641 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
642 app.affiche(message);
643 return 1;
644 }
645 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
646 app.affiche(message);
647 if(strlen(fichier_ves_lambda_x)>0 && strlen(fichier_ves_lambda_y)>0 && strlen(fichier_ves_lambda_z)>0)
648 {
649 MSTRUCT_VES_FILE ves_lambda_x;
650 ves_lambda_x.ouvrir(fichier_ves_lambda_x);
651 MSTRUCT_VES_FILE ves_lambda_y;
652 ves_lambda_y.ouvrir(fichier_ves_lambda_y);
653 MSTRUCT_VES_FILE ves_lambda_z;
654 ves_lambda_z.ouvrir(fichier_ves_lambda_z);
655 MSTRUCT_VES ves;
656 ves.active_affichage(app.affiche);
657 ves.generer_post_traitement(vector_param_analyse,&ves_lambda_x,&ves_lambda_y,&ves_lambda_z);
658 ves.enregistrer(fichier_ves_out);
659 }
660 else if(strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)>0)
661 {
662 MSTRUCT_VES_FILE ves_sph;
663 ves_sph.ouvrir(fichier_ves_sph);
664 MSTRUCT_VES_FILE ves_dev;
665 ves_dev.ouvrir(fichier_ves_dev);
666 MSTRUCT_VES ves;
667 ves.active_affichage(app.affiche);
668 ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev);
669 ves.enregistrer(fichier_ves_out);
670 }
671 else
672 {
673 MSTRUCT_VES ves(fichier_ves_in);
674 ves.active_affichage(app.affiche);
675 ves.generer_post_traitement(vector_param_analyse);
676 ves.enregistrer(fichier_ves_out);
677 }
678 std::vector<OT_PARAMETRES*>::iterator it_vector;
679 for(it_vector=vector_param_analyse.begin();it_vector!=vector_param_analyse.end();it_vector++)
680 {
681 delete *it_vector;
682 }
683 }
684 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
685 app.affiche(message);
686 }
687
688 if(app.get_action()==29)
689 {
690 app.affiche((char*)"**************************************");
691 app.affiche((char*)"*** Cumule des post-traitement ***");
692 app.affiche((char*)"**************************************");
693 char fichier_param[500];
694 char fichier_lstparam[500];
695 char fichier_lst_ves[500];
696 char dossier_resultat[500];
697 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
698 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
699 app.recupere_parametre_string(18,fichier_lst_ves,(char*)"Liste de VES");
700 app.recupere_parametre_string_avec_defaut(6,dossier_resultat,(char*)"");
701 if (app.get_erreur()==true) return 0;
702 char message[5000];
703 std::sprintf(message,"Liste de fichier VES : \033[38;5;46m%s\033[1;33m",fichier_lst_ves);
704 app.affiche(message);
705 std::sprintf(message,"Dossier de resultat : \033[38;5;46m%s\033[1;33m",dossier_resultat);
706 app.affiche(message);
707 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
708 {
709 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
710 return 0;
711 }
712 if(strlen(fichier_param)>0)
713 {
714 std::vector<OT_PARAMETRES*> vector_param;
715 OT_PARAMETRES* param = new OT_PARAMETRES;
716 char message[5000];
717 if(PARAMETRES::importer_fichier_parametres(fichier_param,param)==FAIL)
718 {
719 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
720 app.affiche(message);
721 return 1;
722 }
723 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
724 app.affiche(message);
725 vector_param.push_back(param);
726 MSTRUCT_VER ver;
727 ver.active_affichage(app.affiche);
728 ver.cumuler_post_traitement(fichier_lst_ves,vector_param,dossier_resultat,true);
729 delete param;
730 }
731 else if(strlen(fichier_lstparam)>0)
732 {
733 std::vector<OT_PARAMETRES*> vector_param;
734 char message[5000];
735 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param)==FAIL)
736 {
737 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
738 app.affiche(message);
739 return 1;
740 }
741 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
742 app.affiche(message);
743 MSTRUCT_VER ver;
744 ver.active_affichage(app.affiche);
745 ver.cumuler_post_traitement(fichier_lst_ves,vector_param,dossier_resultat,true);
746 std::vector<OT_PARAMETRES*>::iterator it_vector;
747 for(it_vector=vector_param.begin();it_vector!=vector_param.end();it_vector++)
748 {
749 delete *it_vector;
750 }
751 }
752 }
753
754 if(app.get_action()==30)
755 {
756 app.affiche((char*)"***************************");
757 app.affiche((char*)"*** AFFICHE CONTENU ***");
758 app.affiche((char*)"***************************");
759 char fichier_ves_in[500];
760 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
761 if (app.get_erreur()==true) return 0;
762 MSTRUCT_VES_FILE ves_file;
763 ves_file.ouvrir(fichier_ves_in);
764 ves_file.affiche_contenu(app.affiche);
765 }
766
767 if(app.get_action()==31)
768 {
769 #ifdef ALL_OCC
770 app.affiche((char*)"********************************************************************");
771 app.affiche((char*)"*** Exportation de la triangulation STL de la microstructure ***");
772 app.affiche((char*)"********************************************************************");
773 char fichier_ves_in[500];
774 char fichier_magic_out[500];
775 double eps;
776 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
777 app.recupere_parametre_string(2,fichier_magic_out,(char*)"Fichier MAGIC de sortie manquant");
778 app.recupere_parametre_double_avec_defaut(19,eps,0.001);
779 if (app.get_erreur()==true) return 0;
780 MSTRUCT_VES ves(fichier_ves_in);
781 MG_GESTIONNAIRE* gest = ves.get_mg_gestionnaire();
782 MG_GEOMETRIE* mggeo = ves.get_mg_geometrie();
783 OCC_IMPORT occ_import;
784 MG_MAILLAGE* tristl = occ_import.importer_triangulation_V2017(*gest,mggeo,eps);
785 gest->enregistrer(fichier_magic_out);
786 #endif
787 }
788
789 if(app.get_action()==32)
790 {
791 app.affiche((char*)"***********************************************");
792 app.affiche((char*)"*** EXPORT DU MAILLAGE AU FORMAT ABAQUS ***");
793 app.affiche((char*)"***********************************************");
794 char fichier_ves_in[500];
795 char dossier[500];
796 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
797 app.recupere_parametre_string(6,dossier,(char*)"Dossier de resultats");
798 if (app.get_erreur()==true) return 0;
799 MSTRUCT_VES ves(fichier_ves_in);
800 ves.exporter_maillage_abaqus(dossier);
801 }
802
803 if(app.get_action()==34)
804 {
805 app.affiche((char*)"***********************************************");
806 app.affiche((char*)"*** GENERATION D'UN POLYCRISTAL ***");
807 app.affiche((char*)"***********************************************");
808 char fichier_magic[1000];
809 char fichier_param[1000];
810 bool creeparam;
811 app.recupere_parametre_bool_avec_defaut(33,creeparam,false);
812 bool exportpoint;
813 app.recupere_parametre_bool_avec_defaut(40,exportpoint,false);
814 bool analyse;
815 app.recupere_parametre_bool_avec_defaut(41,analyse,false);
816 if (app.get_erreur()==true) return 0;
817 if (creeparam)
818 {
819 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
820 if (app.get_erreur()==true) return 0;
821 MSTRUCT_GENERATEUR_POLYCRISTAUX gen;
822 gen.active_affichage(app.affiche);
823 gen.cree_param(fichier_param,argv[0]);
824 }
825 else if (exportpoint)
826 {
827 app.affiche((char*)"\nExportation des points de germe des cristaux");
828 char fichier_export[1000];
829 app.recupere_parametre_string(1,fichier_magic,(char*)"Fichier d'entrée manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
830 app.recupere_parametre_string(2,fichier_export,(char*)"Fichier de sortie manquant");
831 if (app.get_erreur()==true) return 0;
832 MSTRUCT_GENERATEUR_POLYCRISTAUX gen(fichier_magic,fichier_export);
833
834 }
835 else if (analyse)
836 {
837 app.affiche((char*)"\nAnalyse des résultats de calculs des polycristaux ");
838 char fichier_param[1000];
839 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
840 if (app.get_erreur()==true) return 0;
841 MSTRUCT_POLY_ANALYSE_RESULTAT ana(fichier_param);
842 int nblu=ana.lire();
843 char mess[2000];
844 sprintf(mess," Nombre de résultats lus = %d",nblu);
845 app.affiche(mess);
846 int nbessai=ana.ident();
847 sprintf(mess," Nombre d'essai différents dans le fichier résultat = %d",nbessai);
848 app.affiche(mess);
849 for (int i=0;i<nbessai;i++)
850 {
851 sprintf(mess," Essai %d = %d echantillons avec %d cristaux et avec un calcul de degre %d",i+1,ana.get_nbechantillon(i),ana.get_nbcristauxechantillon(i),ana.get_degreechantillon(i));
852 app.affiche(mess);
853 if (ana.get_nbechantillon(i)>1)
854 {
855 app.affiche((char*)" Génération des graphiques");
856 ana.execute(i);
857 }
858 }
859
860 }
861 else
862 {
863 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
864 app.recupere_parametre_string(2,fichier_magic,(char*)"Fichier de sortie manquant");
865 if (app.get_erreur()==true) return 0;
866 MSTRUCT_GENERATEUR_POLYCRISTAUX gen(fichier_param);
867 gen.active_affichage(app.affiche);
868 gen.genere(fichier_magic);
869 }
870 }
871
872
873 if(app.get_action()==38)
874 {
875 app.affiche((char*)"**********************************");
876 app.affiche((char*)"*** COMPRESSER HISTOGRAMME ***");
877 app.affiche((char*)"**********************************");
878 char fichier_in[1000];
879 char fichier_out[1000];
880 double largeur;
881 app.recupere_parametre_string(1,fichier_in,(char*)"Fichier (.txt) in manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
882 app.recupere_parametre_string(2,fichier_out,(char*)"Fichier (.txt) out manquant");
883 app.recupere_parametre_double(39,largeur,(char*)"Largeur de colonne manquante");
884 if (app.get_erreur()==true) return 0;
885 std::ifstream ifs;
886 OT_HISTOGRAMME histo_in;
887 char message[5000];
888 std::sprintf(message,"Lecture du fichier in : \033[38;5;46m%s\033[1;33m",fichier_in);
889 app.affiche(message);
890 histo_in.ouvrir_txt(fichier_in);
891 std::sprintf(message,"Histogramme in : largeur colonne = %lf, %li colonnes",histo_in.get_largeur_colonne(),histo_in.get_nb_colonne());
892 app.affiche(message);
893 OT_HISTOGRAMME histo_out(largeur,histo_in);
894 std::sprintf(message,"Histogramme out : largeur colonne = %lf, %li colonnes",histo_out.get_largeur_colonne(),histo_out.get_nb_colonne());
895 app.affiche(message);
896 std::sprintf(message,"Ecriture du fichier out : \033[38;5;46m%s\033[1;33m",fichier_out);
897 app.affiche(message);
898 std::ofstream of_histo(fichier_out,std::ios::out|std::ios::trunc);
899 histo_out.exporter(of_histo);
900 }
901
902
903 app.affiche((char*)"Fin");
904 return 0;
905 }
906
907
908
909 #pragma package(smart_init)