ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 934
Committed: Mon May 28 19:32:31 2018 UTC (6 years, 11 months ago) by couturad
File size: 29470 byte(s)
Log Message:
Correction bugs dans MICROSTRUCTURE
Ajout d'une fonction de vérification du decalage entre deux faces pour la detection des couches minces

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