ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 1135
Committed: Mon Feb 19 16:56:05 2024 UTC (18 months, 1 week ago) by francois
File size: 50442 byte(s)
Log Message:
oublie du commit precedent

File Contents

# Content
1 //------------------------------------------------------------
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 #include "mstruct_ves.h"
30 #include "mstruct_ves_decoup.h"
31 #include "mstruct_ver.h"
32 #include "mstruct_parametres.h"
33 #include "mg_gestionnaire.h"
34 #include "mg_file.h"
35 #include "fct_taille_fem_solution.h"
36 #include "mstruct_ves_file.h"
37 #include "mstruct_generateur_polycristaux.h"
38 #include "mstruct_analyse_polycristaux.h"
39 #ifdef ALL_OCC
40 #include "occ_import.h"
41 #endif
42 //---------------------------------------------------------------------------
43
44
45
46 int main(int argc,char **argv)
47 {
48 std::vector<MAGIC_PARAMETRE_APPLICATION> lst;
49 // p_in(1) -in
50 // p_out(2) -out
51 MAGIC_PARAMETRE_APPLICATION p3(3,(char*)"-ves_in",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES d'entree");
52 MAGIC_PARAMETRE_APPLICATION p4(4,(char*)"-ves_out",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES de sortie");
53 MAGIC_PARAMETRE_APPLICATION p5(5,(char*)"-carte",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Carte de taille FEM solution");
54 MAGIC_PARAMETRE_APPLICATION p6(6,(char*)"-dossier",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Dossier de resultat");
55 MAGIC_PARAMETRE_APPLICATION p7(7,(char*)"-param",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier de parametres");
56 MAGIC_PARAMETRE_APPLICATION p8(8,(char*)"-lstparam",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier listant plusieurs fichiers de parametres");
57 MAGIC_PARAMETRE_APPLICATION p9(9,(char*)"-paramaster",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier de parametre aster");
58 MAGIC_PARAMETRE_APPLICATION p10(10,(char*)"-type_generateur",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type de generateur : [0] RSA, [1] DCR");
59 MAGIC_PARAMETRE_APPLICATION p11(11,(char*)"-type_inclusion",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type d'inclusion : Sphere [0], Cylindre [1], Ellipsoid [2], Torus [3]");
60 MAGIC_PARAMETRE_APPLICATION p12(12,(char*)"-type_maillage",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type de maillage : [0] lineaire, [1] quadratique, [2] lineaire et quadratique");
61 MAGIC_PARAMETRE_APPLICATION p13(13,(char*)"-type_etude",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Type d'etude : [0] mecanique, [1] thermique, [2] mecanique et thermique");
62 MAGIC_PARAMETRE_APPLICATION p14(14,(char*)"-nb_couche_erosion",MAGIC_PARAMETRE_APPLICATION::INTEGER,(char*)"Nombre de couche d'erosion (defaut = 0)");
63 MAGIC_PARAMETRE_APPLICATION p15(15,(char*)"-epaisseur_couche_erosion",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Epaisseur d'une couche d'erosion (defaut = 0.02)");
64 MAGIC_PARAMETRE_APPLICATION p16(16,(char*)"-ves_sph",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES chargement spherique");
65 MAGIC_PARAMETRE_APPLICATION p17(17,(char*)"-ves_dev",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES chargement deviatorique");
66 //---------------------------------added--------------------------------------------------
67 //=========================================================================================
68 /*
69 MAGIC_PARAMETRE_APPLICATION p18(18,(char*)"-ves_fx",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES chargement fix");
70 MAGIC_PARAMETRE_APPLICATION p19(19,(char*)"-lstves",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Liste de VES");
71 MAGIC_PARAMETRE_APPLICATION p20(20,(char*)"-eps",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Distance max entre la triangulation et la géométrie");
72 MAGIC_PARAMETRE_APPLICATION p21(21,(char*)"-creeparam",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Creer une structure de parametres");
73 MAGIC_PARAMETRE_APPLICATION p22(22,(char*)"-gen_geo",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la geometrie");
74 MAGIC_PARAMETRE_APPLICATION p23(23,(char*)"-gen_mat",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer les materiaux");
75 MAGIC_PARAMETRE_APPLICATION p24(24,(char*)"-gen_carte",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la carte de taille");
76 MAGIC_PARAMETRE_APPLICATION p25(25,(char*)"-gen_mg_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le MG maillage");
77 MAGIC_PARAMETRE_APPLICATION p26(26,(char*)"-gen_fem_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le FEM maillage");
78 MAGIC_PARAMETRE_APPLICATION p27(27,(char*)"-gen_etude",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer l'etude");
79 MAGIC_PARAMETRE_APPLICATION p28(28,(char*)"-gen_calcul",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Lancer la resolution numerique");
80 MAGIC_PARAMETRE_APPLICATION p29(29,(char*)"-gen_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le post-traitement des resultats");
81 MAGIC_PARAMETRE_APPLICATION p30(30,(char*)"-cumuler_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Cumuler les post-traitement d'une liste de VES");
82 MAGIC_PARAMETRE_APPLICATION p31(31,(char*)"-affiche_contenu",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Affiche le contenu d'un fichier VES");
83 MAGIC_PARAMETRE_APPLICATION p32(32,(char*)"-export_tristl",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation de la triangulation STL de la microstructure");
84 MAGIC_PARAMETRE_APPLICATION p33(33,(char*)"-export_maill_abaqus",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation du maillage au format ABAQUS");
85 MAGIC_PARAMETRE_APPLICATION p34(34,(char*)"-creeparampoly",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Création d'un fichier de paramétres");
86 MAGIC_PARAMETRE_APPLICATION p35(35,(char*)"-polycristaux",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"génération d'un polycristal");
87 MAGIC_PARAMETRE_APPLICATION p36(36,(char*)"-ves_lambda_x",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda x");
88 MAGIC_PARAMETRE_APPLICATION p37(37,(char*)"-ves_lambda_y",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda y");
89 MAGIC_PARAMETRE_APPLICATION p38(38,(char*)"-ves_lambda_z",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda z");
90 MAGIC_PARAMETRE_APPLICATION p39(39,(char*)"-compress_histo",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Compresser un fichier histogramme (.txt) selon une largeur de colonne");
91 MAGIC_PARAMETRE_APPLICATION p40(40,(char*)"-largeur",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Largeur de colonne");
92 MAGIC_PARAMETRE_APPLICATION p41(41,(char*)"-exportpoint",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Exportation des points qui ont généré les cristaux");
93 MAGIC_PARAMETRE_APPLICATION p42(42,(char*)"-analysepoly",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Analyse des fichiers résultats des calculs de polycristaux");
94
95 //-------------------------------------------------------------------------------------------
96 //===========================================================================================
97 //==========================================================================================
98 p21.ajouter_dependance(10);p21.ajouter_dependance(11);p21.ajouter_dependance(12);p21.ajouter_dependance(13);p21.ajouter_dependance(14);p21.ajouter_dependance(15);
99 p22.ajouter_dependance(4);p22.ajouter_dependance(7);p22.ajouter_dependance(8);
100 p23.ajouter_dependance(3);p23.ajouter_dependance(4);p23.ajouter_dependance(7);p23.ajouter_dependance(8);
101 p24.ajouter_dependance(3);p24.ajouter_dependance(4);p24.ajouter_dependance(7);
102 p25.ajouter_dependance(3);p25.ajouter_dependance(4);p25.ajouter_dependance(7);p25.ajouter_dependance(5);
103 p26.ajouter_dependance(3);p26.ajouter_dependance(4);p26.ajouter_dependance(7);
104 p27.ajouter_dependance(3);p27.ajouter_dependance(4);p27.ajouter_dependance(7);
105 p28.ajouter_dependance(3);p28.ajouter_dependance(4);p28.ajouter_dependance(7);p28.ajouter_dependance(9);
106 p29.ajouter_dependance(3);p29.ajouter_dependance(4);p29.ajouter_dependance(7);p29.ajouter_dependance(8);p29.ajouter_dependance(16);p29.ajouter_dependance(17);p29.ajouter_dependance(18);p29.ajouter_dependance(36);p29.ajouter_dependance(37);p29.ajouter_dependance(38);
107 p30.ajouter_dependance(7);p30.ajouter_dependance(8);p30.ajouter_dependance(6);
108 p31.ajouter_dependance(3);
109 p32.ajouter_dependance(3);p32.ajouter_dependance(2);p32.ajouter_dependance(20);
110 p33.ajouter_dependance(3);p33.ajouter_dependance(6);
111 p35.ajouter_dependance(1);p35.ajouter_dependance(2);p35.ajouter_dependance(7);p35.ajouter_dependance(34);p35.ajouter_dependance(41);p35.ajouter_dependance(42);
112 p39.ajouter_dependance(1);p39.ajouter_dependance(2);p39.ajouter_dependance(40);
113 */
114 //=======================================================================================
115 //----------------------------------------before---------------------------------------------
116
117 MAGIC_PARAMETRE_APPLICATION p18(18,(char*)"-lstves",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Liste de VES");
118 MAGIC_PARAMETRE_APPLICATION p19(19,(char*)"-eps",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Distance max entre la triangulation et la géométrie");
119 MAGIC_PARAMETRE_APPLICATION p20(20,(char*)"-creeparam",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Creer une structure de parametres");
120 MAGIC_PARAMETRE_APPLICATION p21(21,(char*)"-gen_geo",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la geometrie");
121 MAGIC_PARAMETRE_APPLICATION p22(22,(char*)"-gen_mat",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer les materiaux");
122 MAGIC_PARAMETRE_APPLICATION p23(23,(char*)"-gen_carte",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer la carte de taille");
123 MAGIC_PARAMETRE_APPLICATION p24(24,(char*)"-gen_mg_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le MG maillage");
124 MAGIC_PARAMETRE_APPLICATION p25(25,(char*)"-gen_fem_maill",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le FEM maillage");
125 MAGIC_PARAMETRE_APPLICATION p26(26,(char*)"-gen_etude",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer l'etude");
126 MAGIC_PARAMETRE_APPLICATION p27(27,(char*)"-gen_calcul",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Lancer la resolution numerique");
127 MAGIC_PARAMETRE_APPLICATION p28(28,(char*)"-gen_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Generer le post-traitement des resultats");
128 MAGIC_PARAMETRE_APPLICATION p29(29,(char*)"-cumuler_post_traitement",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Cumuler les post-traitement d'une liste de VES");
129 MAGIC_PARAMETRE_APPLICATION p30(30,(char*)"-affiche_contenu",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Affiche le contenu d'un fichier VES");
130 MAGIC_PARAMETRE_APPLICATION p31(31,(char*)"-export_tristl",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation de la triangulation STL de la microstructure");
131 MAGIC_PARAMETRE_APPLICATION p32(32,(char*)"-export_maill_abaqus",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Exportation du maillage au format ABAQUS");
132 MAGIC_PARAMETRE_APPLICATION p33(33,(char*)"-creeparampoly",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Création d'un fichier de paramétres");
133 MAGIC_PARAMETRE_APPLICATION p34(34,(char*)"-polycristaux",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"génération d'un polycristal");
134 MAGIC_PARAMETRE_APPLICATION p35(35,(char*)"-ves_lambda_x",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda x");
135 MAGIC_PARAMETRE_APPLICATION p36(36,(char*)"-ves_lambda_y",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda y");
136 MAGIC_PARAMETRE_APPLICATION p37(37,(char*)"-ves_lambda_z",MAGIC_PARAMETRE_APPLICATION::STRING,(char*)"Fichier VES lambda z");
137 MAGIC_PARAMETRE_APPLICATION p38(38,(char*)"-compress_histo",MAGIC_PARAMETRE_APPLICATION::ACTION,(char*)"Compresser un fichier histogramme (.txt) selon une largeur de colonne");
138 MAGIC_PARAMETRE_APPLICATION p39(39,(char*)"-largeur",MAGIC_PARAMETRE_APPLICATION::DOUBLE,(char*)"Largeur de colonne");
139 MAGIC_PARAMETRE_APPLICATION p40(40,(char*)"-exportpoint",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Exportation des points qui ont généré les cristaux");
140 MAGIC_PARAMETRE_APPLICATION p41(41,(char*)"-analysepoly",MAGIC_PARAMETRE_APPLICATION::BOOL,(char*)"Analyse des fichiers résultats des calculs de polycristaux");
141
142 p20.ajouter_dependance(10);p20.ajouter_dependance(11);p20.ajouter_dependance(12);p20.ajouter_dependance(13);p20.ajouter_dependance(14);p20.ajouter_dependance(15);
143 p21.ajouter_dependance(4);p21.ajouter_dependance(7);p21.ajouter_dependance(8);
144 p22.ajouter_dependance(3);p22.ajouter_dependance(4);p22.ajouter_dependance(7);p22.ajouter_dependance(8);
145 p23.ajouter_dependance(3);p23.ajouter_dependance(4);p23.ajouter_dependance(7);
146 p24.ajouter_dependance(3);p24.ajouter_dependance(4);p24.ajouter_dependance(7);p24.ajouter_dependance(5);
147 p25.ajouter_dependance(3);p25.ajouter_dependance(4);p25.ajouter_dependance(7);
148 p26.ajouter_dependance(3);p26.ajouter_dependance(4);p26.ajouter_dependance(7);
149 p27.ajouter_dependance(3);p27.ajouter_dependance(4);p27.ajouter_dependance(7);p27.ajouter_dependance(9);
150 p28.ajouter_dependance(3);p28.ajouter_dependance(4);p28.ajouter_dependance(7);p28.ajouter_dependance(8);p28.ajouter_dependance(16);p28.ajouter_dependance(17);p28.ajouter_dependance(35);p28.ajouter_dependance(36);p28.ajouter_dependance(37);
151 p29.ajouter_dependance(7);p29.ajouter_dependance(8);p29.ajouter_dependance(6);
152 p30.ajouter_dependance(3);
153 p31.ajouter_dependance(3);p31.ajouter_dependance(2);p31.ajouter_dependance(19);
154 p32.ajouter_dependance(3);p32.ajouter_dependance(6);
155 p34.ajouter_dependance(1);p34.ajouter_dependance(2);p34.ajouter_dependance(7);p34.ajouter_dependance(33);p34.ajouter_dependance(40);p34.ajouter_dependance(41);
156 p38.ajouter_dependance(1);p38.ajouter_dependance(2);p38.ajouter_dependance(39);
157
158
159
160 lst.push_back(p3);
161 lst.push_back(p4);
162 lst.push_back(p5);
163 lst.push_back(p6);
164 lst.push_back(p7);
165 lst.push_back(p8);
166 lst.push_back(p9);
167 lst.push_back(p10);
168 lst.push_back(p11);
169 lst.push_back(p12);
170 lst.push_back(p13);
171 lst.push_back(p14);
172 lst.push_back(p15);
173 lst.push_back(p16);
174 lst.push_back(p17);
175 lst.push_back(p18);
176 lst.push_back(p19);
177 lst.push_back(p20);
178 lst.push_back(p21);
179 lst.push_back(p22);
180 lst.push_back(p23);
181 lst.push_back(p24);
182 lst.push_back(p25);
183 lst.push_back(p26);
184 lst.push_back(p27);
185 lst.push_back(p28);
186 lst.push_back(p29);
187 lst.push_back(p30);
188 lst.push_back(p31);
189 lst.push_back(p32);
190 lst.push_back(p33);
191 lst.push_back(p34);
192 lst.push_back(p35);
193 lst.push_back(p36);
194 lst.push_back(p37);
195 lst.push_back(p38);
196 lst.push_back(p39);
197 lst.push_back(p40);
198 lst.push_back(p41);
199 //=================================added=========================================
200 //lst.push_back(p42);
201
202 MAGIC_APPLICATION app((char*)"Homogeneisation d'une microstructure ",argc,argv,lst,true,true);
203 if(app.get_erreur()==true) return 0;
204
205 if(app.get_action()==20)
206 {
207 app.affiche((char*)"***********************************************");
208 app.affiche((char*)"*** Creation des fichiers de parametres ***");
209 app.affiche((char*)"***********************************************");
210 int type_generateur;
211 int type_inclusion;
212 int type_maillage;
213 int type_etude;
214 int nb_couche;
215 double epaisseur_couche;
216 app.recupere_parametre_int(10,type_generateur,(char*)"Type de generateur manquant");
217 app.recupere_parametre_int(11,type_inclusion,(char*)"Type d'inclusion manquant");
218 app.recupere_parametre_int(12,type_maillage,(char*)"Type de maillage manquant");
219 app.recupere_parametre_int(13,type_etude,(char*)"Type d'etude manquant");
220 app.recupere_parametre_double_avec_defaut(15,epaisseur_couche,0.02);
221 app.recupere_parametre_int_avec_defaut(14,nb_couche,0);
222 if (app.get_erreur()==true) return 0;
223 bool maillage_lin=false;
224 bool maillage_quad=false;
225 if(type_maillage==0) maillage_lin=true;
226 else if(type_maillage==1) maillage_quad=true;
227 else {maillage_lin=true;maillage_quad=true;}
228 bool etude_mecanique=false;
229 bool etude_thermique=false;
230 if(type_etude==0) etude_mecanique=true;
231 else if(type_etude==1) etude_thermique=true;
232 else if(type_etude==2){etude_mecanique=true;etude_thermique=true;}
233
234
235 PARAMETRES::generer_fichier_parametres(etude_mecanique,etude_thermique,type_generateur,type_inclusion,maillage_lin,maillage_quad,nb_couche,epaisseur_couche,app.affiche);
236 PARAMETRES::generer_script_ves(etude_mecanique,etude_thermique,type_inclusion,maillage_lin,maillage_quad,app.affiche);
237 PARAMETRES::generer_script_post_traitement(etude_mecanique,etude_thermique,type_inclusion,maillage_lin,maillage_quad,epaisseur_couche,app.affiche);
238 }
239
240
241 if(app.get_action()==21)
242 {
243 app.affiche((char*)"**************************************");
244 app.affiche((char*)"*** Generation de la geometrie ***");
245 app.affiche((char*)"**************************************");
246 char fichier_ves_out[500];
247 char fichier_param[500];
248 char fichier_lstparam[500];
249 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
250 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
251 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
252 if (app.get_erreur()==true) return 0;
253 std::string str_fichier_ves_out = fichier_ves_out;
254 size_t found = str_fichier_ves_out.rfind((char*)".");
255 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
256 str_fichier_magic_out.append((char*)".magic");
257 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
258 {
259 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
260 return 0;
261 }
262 if(strlen(fichier_param)>0)
263 {
264 std::vector<OT_PARAMETRES*> vector_param_geometrie;
265 OT_PARAMETRES* param_geometrie = new OT_PARAMETRES;
266 char message[5000];
267 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_geometrie)==FAIL)
268 {
269 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
270 app.affiche(message);
271 return 1;
272 }
273 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
274 app.affiche(message);
275 vector_param_geometrie.push_back(param_geometrie);
276 MSTRUCT_VES ves(param_geometrie);
277 ves.active_affichage(app.affiche);
278 if(ves.generer_geometrie(vector_param_geometrie)==FAIL)
279 {
280 delete param_geometrie;
281 return 1;
282 }
283 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
284 delete param_geometrie;
285 }
286 else if(strlen(fichier_lstparam)>0)
287 {
288 std::vector<OT_PARAMETRES*> vector_param_geometrie;
289 char message[5000];
290 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_geometrie)==FAIL)
291 {
292 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
293 app.affiche(message);
294 return 1;
295 }
296 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
297 app.affiche(message);
298 MSTRUCT_VES ves(vector_param_geometrie[0]);
299 ves.active_affichage(app.affiche);
300 if(ves.generer_geometrie(vector_param_geometrie)==FAIL)
301 {
302 std::vector<OT_PARAMETRES*>::iterator it_vector;
303 for(it_vector=vector_param_geometrie.begin();it_vector!=vector_param_geometrie.end();it_vector++)
304 {
305 delete *it_vector;
306 }
307 return 1;
308 }
309 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
310 std::vector<OT_PARAMETRES*>::iterator it_vector;
311 for(it_vector=vector_param_geometrie.begin();it_vector!=vector_param_geometrie.end();it_vector++)
312 {
313 delete *it_vector;
314 }
315 }
316 char message[5000];
317 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
318 app.affiche(message);
319 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
320 app.affiche(message);
321 }
322
323 if(app.get_action()==22)
324 {
325 app.affiche((char*)"************************************");
326 app.affiche((char*)"*** Generation des materiaux ***");
327 app.affiche((char*)"************************************");
328 char fichier_ves_in[500];
329 char fichier_ves_out[500];
330 char fichier_param[500];
331 char fichier_lstparam[500];
332 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
333 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
334 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
335 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
336 if (app.get_erreur()==true) return 0;
337 char message[5000];
338 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
339 app.affiche(message);
340 std::string str_fichier_ves_out = fichier_ves_out;
341 size_t found = str_fichier_ves_out.rfind((char*)".");
342 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
343 str_fichier_magic_out.append((char*)".magic");
344 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
345 {
346 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
347 return 0;
348 }
349 if(strlen(fichier_param)>0)
350 {
351 std::vector<OT_PARAMETRES*> vector_param_materiau;
352 OT_PARAMETRES* param_materiau = new OT_PARAMETRES;
353 char message[5000];
354 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_materiau)==FAIL)
355 {
356 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
357 app.affiche(message);
358 return 1;
359 }
360 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
361 app.affiche(message);
362 vector_param_materiau.push_back(param_materiau);
363 MSTRUCT_VES ves(fichier_ves_in);
364 ves.active_affichage(app.affiche);
365 ves.generer_materiau(vector_param_materiau);
366 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
367 delete param_materiau;
368 }
369 else if(strlen(fichier_lstparam)>0)
370 {
371 std::vector<OT_PARAMETRES*> vector_param_materiau;
372 char message[5000];
373 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_materiau)==FAIL)
374 {
375 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
376 app.affiche(message);
377 return 1;
378 }
379 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
380 app.affiche(message);
381 MSTRUCT_VES ves(fichier_ves_in);
382 ves.active_affichage(app.affiche);
383 ves.generer_materiau(vector_param_materiau);
384 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
385 std::vector<OT_PARAMETRES*>::iterator it_vector;
386 for(it_vector=vector_param_materiau.begin();it_vector!=vector_param_materiau.end();it_vector++)
387 {
388 delete *it_vector;
389 }
390 }
391 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
392 app.affiche(message);
393 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
394 app.affiche(message);
395 }
396
397 if(app.get_action()==23)
398 {
399 app.affiche((char*)"********************************************");
400 app.affiche((char*)"*** Generation de la carte de taille ***");
401 app.affiche((char*)"********************************************");
402 char fichier_ves_in[500];
403 char fichier_param[500];
404 char fichier_ves_out[500];
405 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
406 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
407 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
408 if (app.get_erreur()==true) return 0;
409 char message[5000];
410 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
411 app.affiche(message);
412 OT_PARAMETRES* param_carte = new OT_PARAMETRES;
413 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_carte)==FAIL)
414 {
415 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
416 app.affiche(message);
417 return 1;
418 }
419 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
420 app.affiche(message);
421 MSTRUCT_VES ves(fichier_ves_in);
422 ves.active_affichage(app.affiche);
423 ves.generer_carte(param_carte);
424 ves.enregistrer(fichier_ves_out);
425 delete param_carte;
426 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
427 app.affiche(message);
428 }
429
430 if(app.get_action()==24)
431 {
432 app.affiche((char*)"**********************************");
433 app.affiche((char*)"*** Generation du maillage ***");
434 app.affiche((char*)"**********************************");
435 char fichier_ves_in[500];
436 char fichier_ves_out[500];
437 char fichier_param[500];
438 char fichier_carte[500];
439 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
440 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
441 app.recupere_parametre_string(5,fichier_carte,(char*)"Fichier de carte de taille manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
442 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
443 if (app.get_erreur()==true) return 0;
444 char message[5000];
445 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
446 app.affiche(message);
447 std::sprintf(message,"Fichier CARTE d'entree : \033[38;5;46m%s\033[1;33m",fichier_carte);
448 app.affiche(message);
449 std::string str_fichier_ves_out = fichier_ves_out;
450 size_t found = str_fichier_ves_out.rfind((char*)".");
451 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
452 str_fichier_magic_out.append((char*)".magic");
453 OT_PARAMETRES* param_maillage = new OT_PARAMETRES;
454 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_maillage)==FAIL)
455 {
456 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
457 app.affiche(message);
458 delete param_maillage;
459 return 1;
460 }
461 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
462 app.affiche(message);
463 int decoup=(int)param_maillage->get_valeur("Avec_decoup");
464 MSTRUCT_VES *ves;
465 if (decoup==0) ves=new MSTRUCT_VES(fichier_ves_in);
466 if (decoup==1) ves=new MSTRUCT_VES_DECOUP(fichier_ves_in);
467 ves->active_affichage(app.affiche);
468 FCT_TAILLE_FEM_SOLUTION *carte=new FCT_TAILLE_FEM_SOLUTION(fichier_carte);
469 if(ves->generer_maillage(param_maillage,carte)==FAIL)
470 {
471 std::sprintf(message,"ERREUR generation du maillage : \033[38;5;46m%s\033[1;33m",fichier_param);
472 app.affiche(message);
473 delete param_maillage;
474 return 1;
475 }
476 ves->enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
477 delete param_maillage;
478 delete carte;
479 delete ves;
480 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
481 app.affiche(message);
482 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
483 app.affiche(message);
484 }
485
486 if(app.get_action()==25)
487 {
488 app.affiche((char*)"**************************************");
489 app.affiche((char*)"*** Generation du FEM maillage ***");
490 app.affiche((char*)"**************************************");
491 char fichier_ves_in[500];
492 char fichier_ves_out[500];
493 char fichier_param[500];
494 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
495 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
496 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
497 if (app.get_erreur()==true) return 0;
498 char message[5000];
499 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
500 app.affiche(message);
501 std::string str_fichier_ves_out = fichier_ves_out;
502 size_t found = str_fichier_ves_out.rfind((char*)".");
503 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
504 str_fichier_magic_out.append((char*)".magic");
505 OT_PARAMETRES* param_maillage = new OT_PARAMETRES;
506 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_maillage)==FAIL)
507 {
508 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
509 app.affiche(message);
510 delete param_maillage;
511 return 1;
512 }
513 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
514 app.affiche(message);
515 MSTRUCT_VES ves(fichier_ves_in);
516 ves.active_affichage(app.affiche);
517 if(ves.generer_fem_maillage(param_maillage)==FAIL)
518 {
519 std::sprintf(message,"ERREUR generation fem maillage : \033[38;5;46m%s\033[1;33m",fichier_param);
520 app.affiche(message);
521 delete param_maillage;
522 return 1;
523 }
524 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
525 delete param_maillage;
526 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
527 app.affiche(message);
528 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
529 app.affiche(message);
530 }
531
532 if(app.get_action()==26)
533 {
534 app.affiche((char*)"*********************************");
535 app.affiche((char*)"*** Generation de l'etude ***");
536 app.affiche((char*)"*********************************");
537 char fichier_ves_in[500];
538 char fichier_ves_out[500];
539 char fichier_param[500];
540 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
541 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
542 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
543 if (app.get_erreur()==true) return 0;
544 char message[5000];
545 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
546 app.affiche(message);
547 std::string str_fichier_ves_out = fichier_ves_out;
548 size_t found = str_fichier_ves_out.rfind((char*)".");
549 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
550 str_fichier_magic_out.append((char*)".magic");
551 OT_PARAMETRES* param_etude = new OT_PARAMETRES;
552 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_etude)==FAIL)
553 {
554 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
555 app.affiche(message);
556 return 1;
557 }
558 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
559 app.affiche(message);
560 MSTRUCT_VES ves(fichier_ves_in);
561 ves.active_affichage(app.affiche);
562 ves.generer_etude(param_etude);
563 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
564 delete param_etude;
565 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
566 app.affiche(message);
567 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
568 app.affiche(message);
569 }
570
571 if(app.get_action()==27)
572 {
573 app.affiche((char*)"********************************");
574 app.affiche((char*)"*** Generation du Calcul ***");
575 app.affiche((char*)"********************************");
576 char fichier_ves_in[500];
577 char fichier_ves_out[500];
578 char fichier_param[500];
579 char fichier_param_aster[500];
580 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
581 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
582 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
583 app.recupere_parametre_string(9,fichier_param_aster,(char*)"Fichier de parametre aster manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
584 if (app.get_erreur()==true) return 0;
585 char message[5000];
586 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
587 app.affiche(message);
588 std::string str_fichier_ves_out = fichier_ves_out;
589 size_t found = str_fichier_ves_out.rfind((char*)".");
590 std::string str_fichier_magic_out = str_fichier_ves_out.substr(0,found);
591 std::string nom_etude = "aster_" + str_fichier_magic_out;
592 str_fichier_magic_out.append((char*)".magic");
593 OT_PARAMETRES* param_etude = new OT_PARAMETRES;
594 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_etude)==FAIL)
595 {
596 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
597 app.affiche(message);
598 return 1;
599 }
600 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
601 app.affiche(message);
602 MSTRUCT_VES ves(fichier_ves_in);
603 ves.active_affichage(app.affiche);
604 ves.generer_calcul(param_etude,fichier_param_aster,nom_etude);
605 ves.enregistrer(fichier_ves_out,(char*)str_fichier_magic_out.c_str());
606 delete param_etude;
607 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
608 app.affiche(message);
609 std::sprintf(message,"Fichier MAGIC de sortie : \033[38;5;46m%s\033[1;33m",str_fichier_magic_out.c_str());
610 app.affiche(message);
611 }
612
613 if(app.get_action()==28)
614 {
615 app.affiche((char*)"*******************************************************");
616 app.affiche((char*)"*** Generation du post-traitement des resultats ***");
617 app.affiche((char*)"*******************************************************");
618 char fichier_ves_in[500];
619 char fichier_ves_out[500];
620 char fichier_param[500];
621 char fichier_lstparam[500];
622 char fichier_ves_sph[500];
623 char fichier_ves_dev[500];
624
625 //=======================================changed====================================
626 //==================================================================================
627 // char fichier_ves_fx[500];
628 char fichier_ves_lambda_x[500];
629 char fichier_ves_lambda_y[500];
630 char fichier_ves_lambda_z[500];
631 app.recupere_parametre_string_avec_defaut(3,fichier_ves_in,(char*)"");
632 app.recupere_parametre_string(4,fichier_ves_out,(char*)"Fichier VES de sortie manquant");
633 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
634 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
635 app.recupere_parametre_string_avec_defaut(16,fichier_ves_sph,(char*)"");
636 app.recupere_parametre_string_avec_defaut(17,fichier_ves_dev,(char*)"");
637 // app.recupere_parametre_string_avec_defaut(18,fichier_ves_fx,(char*)"");
638 app.recupere_parametre_string_avec_defaut(35,fichier_ves_lambda_x,(char*)"");
639 app.recupere_parametre_string_avec_defaut(36,fichier_ves_lambda_y,(char*)"");
640 app.recupere_parametre_string_avec_defaut(37,fichier_ves_lambda_z,(char*)"");
641 if (app.get_erreur()==true) return 0;
642 char message[5000];
643 std::sprintf(message,"Fichier VES d'entree : \033[38;5;46m%s\033[1;33m",fichier_ves_in);
644 app.affiche(message);
645 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
646 {
647 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
648 return 0;
649 }
650
651
652 if((strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)==0) || (strlen(fichier_ves_sph)==0 && strlen(fichier_ves_dev)>0))
653
654 /* if((strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)==0 && strlen(fichier_ves_fx)==0) || (strlen(fichier_ves_sph)==0 && strlen(fichier_ves_dev)>0 && strlen(fichier_ves_fx)==0) ||(strlen(fichier_ves_sph)==0 && strlen(fichier_ves_dev)==0 && strlen(fichier_ves_fx)>0))*/
655
656 {
657 //app.affiche_erreur((char*)"-ves_sph ET -ves_dev ET -ves_fx, OU rien");
658 app.affiche_erreur((char*)"-ves_sph ET -ves_dev, OU rien");
659 return 0;
660 }
661
662
663
664 if(strlen(fichier_param)>0)
665 {
666 std::vector<OT_PARAMETRES*> vector_param_analyse;
667 OT_PARAMETRES* param_analyse = new OT_PARAMETRES;
668 char message[5000];
669 if(PARAMETRES::importer_fichier_parametres(fichier_param,param_analyse)==FAIL)
670 {
671 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
672 app.affiche(message);
673 return 1;
674 }
675 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
676 app.affiche(message);
677 vector_param_analyse.push_back(param_analyse);
678
679
680 if(strlen(fichier_ves_lambda_x)>0 && strlen(fichier_ves_lambda_y)>0 && strlen(fichier_ves_lambda_z)>0)
681 {
682
683 MSTRUCT_VES_FILE ves_lambda_x;
684 ves_lambda_x.ouvrir(fichier_ves_lambda_x);
685 MSTRUCT_VES_FILE ves_lambda_y;
686 ves_lambda_y.ouvrir(fichier_ves_lambda_y);
687 MSTRUCT_VES_FILE ves_lambda_z;
688 ves_lambda_z.ouvrir(fichier_ves_lambda_z);
689 MSTRUCT_VES ves(param_analyse);
690 ves.active_affichage(app.affiche);
691 ves.generer_post_traitement(vector_param_analyse,&ves_lambda_x,&ves_lambda_y,&ves_lambda_z);
692 ves.enregistrer(fichier_ves_out);
693 }
694 else if(strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)>0 )
695 {
696 MSTRUCT_VES_FILE ves_sph;
697 ves_sph.ouvrir(fichier_ves_sph);
698 MSTRUCT_VES_FILE ves_dev;
699 ves_dev.ouvrir(fichier_ves_dev);
700 // MSTRUCT_VES_FILE ves_fx;
701 // ves_fx.ouvrir(fichier_ves_fx);
702
703 MSTRUCT_VES ves(vector_param_analyse[0]);
704 ves.active_affichage(app.affiche);
705 // ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev,&ves_fx);
706
707 ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev);
708 ves.enregistrer(fichier_ves_out);
709 }
710 else
711 {
712 MSTRUCT_VES ves(fichier_ves_in);
713 ves.active_affichage(app.affiche);
714 ves.generer_post_traitement(vector_param_analyse);
715 ves.enregistrer(fichier_ves_out);
716 }
717 delete param_analyse;
718 }
719 else if(strlen(fichier_lstparam)>0)
720 {
721 std::vector<OT_PARAMETRES*> vector_param_analyse;
722 char message[5000];
723 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param_analyse)==FAIL)
724 {
725 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
726 app.affiche(message);
727 return 1;
728 }
729 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
730 app.affiche(message);
731 if(strlen(fichier_ves_lambda_x)>0 && strlen(fichier_ves_lambda_y)>0 && strlen(fichier_ves_lambda_z)>0)
732 {
733 MSTRUCT_VES_FILE ves_lambda_x;
734 ves_lambda_x.ouvrir(fichier_ves_lambda_x);
735 MSTRUCT_VES_FILE ves_lambda_y;
736 ves_lambda_y.ouvrir(fichier_ves_lambda_y);
737 MSTRUCT_VES_FILE ves_lambda_z;
738 ves_lambda_z.ouvrir(fichier_ves_lambda_z);
739 MSTRUCT_VES ves(vector_param_analyse[0]);
740 ves.active_affichage(app.affiche);
741 ves.generer_post_traitement(vector_param_analyse,&ves_lambda_x,&ves_lambda_y,&ves_lambda_z);
742 ves.enregistrer(fichier_ves_out);
743 }
744
745 else if(strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)>0)
746 {
747 MSTRUCT_VES_FILE ves_sph;
748 ves_sph.ouvrir(fichier_ves_sph);
749 MSTRUCT_VES_FILE ves_dev;
750 ves_dev.ouvrir(fichier_ves_dev);
751
752
753 MSTRUCT_VES ves(vector_param_analyse[0]);
754 ves.active_affichage(app.affiche);
755 ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev);
756 ves.enregistrer(fichier_ves_out);
757 }
758 /*else if(strlen(fichier_ves_sph)>0 && strlen(fichier_ves_dev)>0 && strlen(fichier_ves_fx)>0)
759 {
760 MSTRUCT_VES_FILE ves_sph;
761 ves_sph.ouvrir(fichier_ves_sph);
762 MSTRUCT_VES_FILE ves_dev;
763 ves_dev.ouvrir(fichier_ves_dev);
764 MSTRUCT_VES_FILE ves_fx;
765 ves_fx.ouvrir(fichier_ves_fx);
766
767 MSTRUCT_VES ves;
768 ves.active_affichage(app.affiche);
769 ves.generer_post_traitement(vector_param_analyse,&ves_sph,&ves_dev,&ves_fx);
770 ves.enregistrer(fichier_ves_out);
771 }*/
772 else
773 {
774 MSTRUCT_VES ves(fichier_ves_in);
775 ves.active_affichage(app.affiche);
776 ves.generer_post_traitement(vector_param_analyse);
777 ves.enregistrer(fichier_ves_out);
778 }
779 std::vector<OT_PARAMETRES*>::iterator it_vector;
780 for(it_vector=vector_param_analyse.begin();it_vector!=vector_param_analyse.end();it_vector++)
781 {
782 delete *it_vector;
783 }
784 }
785 std::sprintf(message,"Fichier VES de sortie : \033[38;5;46m%s\033[1;33m",fichier_ves_out);
786 app.affiche(message);
787 }
788
789 if(app.get_action()==29)
790 {
791 app.affiche((char*)"**************************************");
792 app.affiche((char*)"*** Cumule des post-traitement ***");
793 app.affiche((char*)"**************************************");
794 char fichier_param[500];
795 char fichier_lstparam[500];
796 char fichier_lst_ves[500];
797 char dossier_resultat[500];
798 app.recupere_parametre_string_avec_defaut(7,fichier_param,(char*)"");
799 app.recupere_parametre_string_avec_defaut(8,fichier_lstparam,(char*)"");
800 app.recupere_parametre_string(18,fichier_lst_ves,(char*)"Liste de VES");
801 app.recupere_parametre_string_avec_defaut(6,dossier_resultat,(char*)"");
802 if (app.get_erreur()==true) return 0;
803 char message[5000];
804 std::sprintf(message,"Liste de fichier VES : \033[38;5;46m%s\033[1;33m",fichier_lst_ves);
805 app.affiche(message);
806 std::sprintf(message,"Dossier de resultat : \033[38;5;46m%s\033[1;33m",dossier_resultat);
807 app.affiche(message);
808 if(strlen(fichier_param)>0 && strlen(fichier_lstparam)>0)
809 {
810 app.affiche_erreur((char*)"Une seule valeur pour -param OU -lstparam doit etre fournie");
811 return 0;
812 }
813 if(strlen(fichier_param)>0)
814 {
815 std::vector<OT_PARAMETRES*> vector_param;
816 OT_PARAMETRES* param = new OT_PARAMETRES;
817 char message[5000];
818 if(PARAMETRES::importer_fichier_parametres(fichier_param,param)==FAIL)
819 {
820 std::sprintf(message,"ERREUR lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
821 app.affiche(message);
822 return 1;
823 }
824 std::sprintf(message,"Lecture du fichier de parametre : \033[38;5;46m%s\033[1;33m",fichier_param);
825 app.affiche(message);
826 vector_param.push_back(param);
827 MSTRUCT_VER ver;
828 ver.active_affichage(app.affiche);
829 ver.cumuler_post_traitement(fichier_lst_ves,vector_param,dossier_resultat,true);
830 delete param;
831 }
832 else if(strlen(fichier_lstparam)>0)
833 {
834 std::vector<OT_PARAMETRES*> vector_param;
835 char message[5000];
836 if(PARAMETRES::importer_fichier_liste_parametres(fichier_lstparam,vector_param)==FAIL)
837 {
838 std::sprintf(message,"ERREUR lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
839 app.affiche(message);
840 return 1;
841 }
842 std::sprintf(message,"Lecture du fichier de liste de parametres : \033[38;5;46m%s\033[1;33m",fichier_lstparam);
843 app.affiche(message);
844 MSTRUCT_VER ver;
845 ver.active_affichage(app.affiche);
846 ver.cumuler_post_traitement(fichier_lst_ves,vector_param,dossier_resultat,true);
847 std::vector<OT_PARAMETRES*>::iterator it_vector;
848 for(it_vector=vector_param.begin();it_vector!=vector_param.end();it_vector++)
849 {
850 delete *it_vector;
851 }
852 }
853 }
854
855 if(app.get_action()==30)
856 {
857 app.affiche((char*)"***************************");
858 app.affiche((char*)"*** AFFICHE CONTENU ***");
859 app.affiche((char*)"***************************");
860 char fichier_ves_in[500];
861 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
862 if (app.get_erreur()==true) return 0;
863 MSTRUCT_VES_FILE ves_file;
864 ves_file.ouvrir(fichier_ves_in);
865 ves_file.affiche_contenu(app.affiche);
866 }
867
868 if(app.get_action()==31)
869 {
870 #ifdef ALL_OCC
871 app.affiche((char*)"********************************************************************");
872 app.affiche((char*)"*** Exportation de la triangulation STL de la microstructure ***");
873 app.affiche((char*)"********************************************************************");
874 char fichier_ves_in[500];
875 char fichier_magic_out[500];
876 double eps;
877 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
878 app.recupere_parametre_string(2,fichier_magic_out,(char*)"Fichier MAGIC de sortie manquant");
879 app.recupere_parametre_double_avec_defaut(19,eps,0.001);
880 if (app.get_erreur()==true) return 0;
881 MSTRUCT_VES ves(fichier_ves_in);
882 MG_GESTIONNAIRE* gest = ves.get_mg_gestionnaire();
883 MG_GEOMETRIE* mggeo = ves.get_mg_geometrie();
884 OCC_IMPORT occ_import;
885 MG_MAILLAGE* tristl = occ_import.importer_triangulation_V2017(*gest,mggeo,eps);
886 gest->enregistrer(fichier_magic_out);
887 #endif
888 }
889
890 if(app.get_action()==32)
891 {
892 app.affiche((char*)"***********************************************");
893 app.affiche((char*)"*** EXPORT DU MAILLAGE AU FORMAT ABAQUS ***");
894 app.affiche((char*)"***********************************************");
895 char fichier_ves_in[500];
896 char dossier[500];
897 app.recupere_parametre_string(3,fichier_ves_in,(char*)"Fichier VES de entrant manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
898 app.recupere_parametre_string(6,dossier,(char*)"Dossier de resultats");
899 if (app.get_erreur()==true) return 0;
900 MSTRUCT_VES ves(fichier_ves_in);
901 ves.exporter_maillage_abaqus(dossier);
902 }
903
904 if(app.get_action()==34)
905 {
906 app.affiche((char*)"***********************************************");
907 app.affiche((char*)"*** GENERATION D'UN POLYCRISTAL ***");
908 app.affiche((char*)"***********************************************");
909 char fichier_magic[1000];
910 char fichier_param[1000];
911 bool creeparam;
912 app.recupere_parametre_bool_avec_defaut(33,creeparam,false);
913 bool exportpoint;
914 app.recupere_parametre_bool_avec_defaut(40,exportpoint,false);
915 bool analyse;
916 app.recupere_parametre_bool_avec_defaut(41,analyse,false);
917 if (app.get_erreur()==true) return 0;
918 if (creeparam)
919 {
920 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant");
921 if (app.get_erreur()==true) return 0;
922 MSTRUCT_GENERATEUR_POLYCRISTAUX gen;
923 gen.active_affichage(app.affiche);
924 gen.cree_param(fichier_param,argv[0]);
925 }
926 else if (exportpoint)
927 {
928 app.affiche((char*)"\nExportation des points de germe des cristaux");
929 char fichier_export[1000];
930 app.recupere_parametre_string(1,fichier_magic,(char*)"Fichier d'entrée manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
931 app.recupere_parametre_string(2,fichier_export,(char*)"Fichier de sortie manquant");
932 if (app.get_erreur()==true) return 0;
933 MSTRUCT_GENERATEUR_POLYCRISTAUX gen(fichier_magic,fichier_export);
934
935 }
936 else if (analyse)
937 {
938 app.affiche((char*)"\nAnalyse des résultats de calculs des polycristaux ");
939 char fichier_param[1000];
940 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
941 if (app.get_erreur()==true) return 0;
942 MSTRUCT_POLY_ANALYSE_RESULTAT ana(fichier_param);
943 int nblu=ana.lire();
944 char mess[2000];
945 sprintf(mess," Nombre de résultats lus = %d",nblu);
946 app.affiche(mess);
947 int nbessai=ana.ident();
948 sprintf(mess," Nombre d'essai différents dans le fichier résultat = %d",nbessai);
949 app.affiche(mess);
950 for (int i=0;i<nbessai;i++)
951 {
952 sprintf(mess," Essai %d = %d echantillons avec %d cristaux et avec un calcul de degre %d",i+1,ana.get_nbechantillon(i),ana.get_nbcristauxechantillon(i),ana.get_degreechantillon(i));
953 app.affiche(mess);
954 if (ana.get_nbechantillon(i)>1)
955 {
956 app.affiche((char*)" Génération des graphiques");
957 ana.execute(i);
958 }
959 }
960
961 }
962 else
963 {
964 app.recupere_parametre_string(7,fichier_param,(char*)"Fichier de parametre manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
965 app.recupere_parametre_string(2,fichier_magic,(char*)"Fichier de sortie manquant");
966 if (app.get_erreur()==true) return 0;
967 MSTRUCT_GENERATEUR_POLYCRISTAUX gen(fichier_param);
968 gen.active_affichage(app.affiche);
969 gen.genere(fichier_magic);
970 }
971 }
972
973
974 if(app.get_action()==38)
975 {
976 app.affiche((char*)"**********************************");
977 app.affiche((char*)"*** COMPRESSER HISTOGRAMME ***");
978 app.affiche((char*)"**********************************");
979 char fichier_in[1000];
980 char fichier_out[1000];
981 double largeur;
982 app.recupere_parametre_string(1,fichier_in,(char*)"Fichier (.txt) in manquant",MAGIC_APPLICATION::VERIFFICHIEREXISTE);
983 app.recupere_parametre_string(2,fichier_out,(char*)"Fichier (.txt) out manquant");
984 app.recupere_parametre_double(39,largeur,(char*)"Largeur de colonne manquante");
985 if (app.get_erreur()==true) return 0;
986 std::ifstream ifs;
987 OT_HISTOGRAMME histo_in;
988 char message[5000];
989 std::sprintf(message,"Lecture du fichier in : \033[38;5;46m%s\033[1;33m",fichier_in);
990 app.affiche(message);
991 histo_in.ouvrir_txt(fichier_in);
992 std::sprintf(message,"Histogramme in : largeur colonne = %lf, %li colonnes",histo_in.get_largeur_colonne(),histo_in.get_nb_colonne());
993 app.affiche(message);
994 OT_HISTOGRAMME histo_out(largeur,histo_in);
995 std::sprintf(message,"Histogramme out : largeur colonne = %lf, %li colonnes",histo_out.get_largeur_colonne(),histo_out.get_nb_colonne());
996 app.affiche(message);
997 std::sprintf(message,"Ecriture du fichier out : \033[38;5;46m%s\033[1;33m",fichier_out);
998 app.affiche(message);
999 std::ofstream of_histo(fichier_out,std::ios::out|std::ios::trunc);
1000 histo_out.exporter(of_histo);
1001 }
1002
1003
1004 app.affiche((char*)"Fin");
1005 return 0;
1006
1007 }
1008
1009
1010 #pragma package(smart_init)