ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/main.cpp
Revision: 1157
Committed: Thu Jun 13 22:18:27 2024 UTC (12 months ago) by francois
File size: 49639 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

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