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