ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 993
Committed: Sun Nov 11 17:17:59 2018 UTC (6 years, 9 months ago) by couturad
File size: 38122 byte(s)
Log Message:
MICROSTRUCTURE : 
-> Ajout d'une procedure de suivit des erreurs
-> Mise a jour des CLs
-> (Polycristaux) Correction d'un bug du calcul du tenseur d'orientation

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