ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 961
Committed: Thu Aug 16 15:47:40 2018 UTC (6 years, 8 months ago) by couturad
File size: 33264 byte(s)
Log Message:
Correction bugs MICROSTRUCTURE

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