ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 947
Committed: Thu Jun 21 15:12:13 2018 UTC (6 years, 10 months ago) by francois
File size: 30863 byte(s)
Log Message:
Début de la création d'un polycristal

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