ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 951
Committed: Fri Aug 10 15:17:17 2018 UTC (6 years, 9 months ago) by couturad
File size: 32965 byte(s)
Log Message:
-> Ajout de Project Chrono (voir CMakeLists.txt).
-> Ajout d'un générateur de microstructure basé sur la dynamique des corps rigides (MSTRUCT_GENERATEUR_DCR).
-> Ajout d'un opérateur de décallage de la topologie (MG_CG_OP_TRANSF_DECALLAGE).
-> Retrait de «using namespace std»  (conflit avec namespace chrono) et modification des fichiers affectés.
-> Modification de mailleur2d.cpp afin d'enregistrer un fichier MAGiC (void.magic) lorsque le nombre d'itération dépasse la valeur maximale.

File Contents

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