ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/microstructure/src/mstruct_ver.cpp
Revision: 993
Committed: Sun Nov 11 17:17:59 2018 UTC (6 years, 9 months ago) by couturad
File size: 42120 byte(s)
Log Message:
MICROSTRUCTURE : 
-> Ajout d'une procedure de suivit des erreurs
-> Mise a jour des CLs
-> (Polycristaux) Correction d'un bug du calcul du tenseur d'orientation

File Contents

# Content
1 #include "mstruct_ver.h"
2 #include "mstruct_ves_file.h"
3 #include "mstruct_analyse_champ.h"
4 #include "mstruct_analyse_orientation.h"
5 #include "mstruct_analyse_cao.h"
6 #include "mstruct_analyse_propriete_massique.h"
7 #include "mstruct_analyse_mg_maillage.h"
8 #include "mstruct_analyse_fem_maillage.h"
9 #include "mstruct_analyse_modules_elasticite.h"
10 #include "mstruct_analyse_erosion.h"
11
12 #include "mstruct_analyse_liste_champ.h"
13 #include "mstruct_analyse_liste_orientation.h"
14 #include "mstruct_analyse_liste_cao.h"
15 #include "mstruct_analyse_liste_propriete_massique.h"
16 #include "mstruct_analyse_liste_mg_maillage.h"
17 #include "mstruct_analyse_liste_fem_maillage.h"
18 #include "mstruct_analyse_liste_modules_elasticite.h"
19 #include "mstruct_analyse_liste_conductivite_thermique.h"
20
21 #include "mg_definition.h"
22 #include "mstruct_definition.h"
23 #include <string.h>
24 #include <limits>
25 #include <math.h>
26 MSTRUCT_VER::MSTRUCT_VER(void)
27 {
28
29 }
30
31 MSTRUCT_VER::~MSTRUCT_VER(void)
32 {
33
34 }
35
36 void MSTRUCT_VER::active_affichage(fonction_affiche* fonc)
37 {
38 fonc_affiche = fonc;
39 affichageactif = 1;
40 }
41
42 void MSTRUCT_VER::affiche(char* message)
43 {
44 if(affichageactif==1) fonc_affiche(message);
45 }
46
47 int MSTRUCT_VER::cumuler_post_traitement(char* fichier_liste_ves,
48 std::vector<OT_PARAMETRES *>& vector_params_analyse,
49 char* dossier_resultat,
50 bool avec_graph)
51 {
52 char message[5000];
53 std::map<long,MSTRUCT_VES_FILE*> map_ves_file;
54 std::ifstream f;
55 f.open(fichier_liste_ves,std::ios::in);
56 char ligne[1000];
57 f.getline(ligne,1000);
58 long i=0;
59 while(!f.eof())
60 {
61 char nom_fichier_ves[1000];
62 sscanf(ligne,"%s",nom_fichier_ves);
63 if(strlen(nom_fichier_ves)==0) continue;
64 MSTRUCT_VES_FILE *ves_file=new MSTRUCT_VES_FILE;
65 if(ves_file->ouvrir(nom_fichier_ves)==FAIL) return FAIL;
66 map_ves_file.insert(std::pair<long,MSTRUCT_VES_FILE*>(i,ves_file));
67 i++;
68 f.getline(ligne,1000);
69 }
70 f.close();
71 long nb_ves = map_ves_file.size();
72 sprintf(message,"NB_VES : %li",nb_ves); affiche(message);
73 std::vector<OT_PARAMETRES*>::iterator it;
74 for(it=vector_params_analyse.begin();it!=vector_params_analyse.end();it++)
75 {
76 OT_PARAMETRES* param = *it;
77 int Type_post_traitement = (int)param->get_valeur((char*)"Type_post_traitement");
78 std::string Identifiant = param->get_nom((char*)"Identifiant");
79 if(Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_CHAMP ||
80 Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_CHAMP_NORMALISE ||
81 Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_CHAMP_ECART ||
82 Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_CHAMP_ECART_CHARGEMENT)
83 {
84 sprintf(ligne,"-> %s",Identifiant.c_str());
85 affiche(ligne);
86 int Analyse_erosion = (int)param->get_valeur((char*)"Analyse_erosion");
87 if(Analyse_erosion)
88 {
89 char nom_fichier_resultat_cumul_erosion[1000];
90 sprintf(nom_fichier_resultat_cumul_erosion,"%s/cumul_erosion_%s.txt",dossier_resultat,Identifiant.c_str());
91 std::ofstream ofstrm_cumul_erosion(nom_fichier_resultat_cumul_erosion,std::ios::out);
92 int Nb_couche = (int)param->get_valeur((char*)"Nb_couche");
93 for(int i=0;i<Nb_couche;i++)
94 {
95 char syscmd_mkdir_erosion_couche[1000];
96 sprintf(syscmd_mkdir_erosion_couche,"mkdir -p %s/c_%i",dossier_resultat,i);
97 system(syscmd_mkdir_erosion_couche);
98 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
99 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
100 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
101 {
102 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
103 MSTRUCT_ANALYSE_EROSION* analyse_erosion = (MSTRUCT_ANALYSE_EROSION*)ves_file->get_analyse(Identifiant);
104 vector_analyse.push_back(analyse_erosion->get_analyse(i));
105 }
106 MSTRUCT_ANALYSE_LISTE_CHAMP analyse_liste_champ(Identifiant,vector_analyse);
107 char nom_fichier_resultat_liste[1000];
108 sprintf(nom_fichier_resultat_liste,"%s/c_%i/liste_%s.txt",dossier_resultat,i,Identifiant.c_str());
109 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
110 ofstrm_liste.precision(16);
111 analyse_liste_champ.exporter_liste(ofstrm_liste,true);
112 ofstrm_liste.close();
113 char nom_fichier_resultat_cumul[1000];
114 sprintf(nom_fichier_resultat_cumul,"%s/c_%i/cumul_%s.txt",dossier_resultat,i,Identifiant.c_str());
115 char prefix_graph[1000];
116 sprintf(prefix_graph,"%s/c_%i",dossier_resultat,i);
117 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
118 ofstrm_cumul.precision(16);
119 analyse_liste_champ.exporter_cumul(ofstrm_cumul,true,avec_graph,prefix_graph);
120 ofstrm_cumul.close();
121 if(i==0) analyse_liste_champ.exporter_cumul_i(ofstrm_cumul_erosion,i,true);
122 else analyse_liste_champ.exporter_cumul_i(ofstrm_cumul_erosion,i,false);
123 }
124 ofstrm_cumul_erosion.close();
125 }
126 else
127 {
128 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
129 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
130 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
131 {
132 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
133 vector_analyse.push_back(ves_file->get_analyse(Identifiant));
134 }
135 MSTRUCT_ANALYSE_LISTE_CHAMP analyse_liste_champ(Identifiant,vector_analyse);
136 char nom_fichier_resultat_liste[1000];
137 sprintf(nom_fichier_resultat_liste,"%s/liste_%s.txt",dossier_resultat,Identifiant.c_str());
138 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
139 ofstrm_liste.precision(16);
140 analyse_liste_champ.exporter_liste(ofstrm_liste,true);
141 ofstrm_liste.close();
142 char nom_fichier_resultat_cumul[1000];
143 sprintf(nom_fichier_resultat_cumul,"%s/cumul_%s.txt",dossier_resultat,Identifiant.c_str());
144 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
145 ofstrm_cumul.precision(16);
146 analyse_liste_champ.exporter_cumul(ofstrm_cumul,true,avec_graph,dossier_resultat);
147 ofstrm_cumul.close();
148 }
149 }
150 else if(Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_ORIENTATION ||
151 Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_ORIENTATION_ECART)
152 {
153 sprintf(ligne,"-> %s",Identifiant.c_str());
154 affiche(ligne);
155 int Analyse_erosion = (int)param->get_valeur((char*)"Analyse_erosion");
156 if(Analyse_erosion)
157 {
158 char nom_fichier_resultat_cumul_erosion[1000];
159 sprintf(nom_fichier_resultat_cumul_erosion,"%s/cumul_erosion_%s.txt",dossier_resultat,Identifiant.c_str());
160 std::ofstream ofstrm_cumul_erosion(nom_fichier_resultat_cumul_erosion,std::ios::out);
161 int Nb_couche = (int)param->get_valeur((char*)"Nb_couche");
162 for(int i=0;i<Nb_couche;i++)
163 {
164 char syscmd_mkdir_erosion_couche[1000];
165 sprintf(syscmd_mkdir_erosion_couche,"mkdir -p %s/c_%i",dossier_resultat,i);
166 system(syscmd_mkdir_erosion_couche);
167 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
168 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
169 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
170 {
171 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
172 MSTRUCT_ANALYSE_EROSION* analyse_erosion = (MSTRUCT_ANALYSE_EROSION*)ves_file->get_analyse(Identifiant);
173 vector_analyse.push_back(analyse_erosion->get_analyse(i));
174 }
175 MSTRUCT_ANALYSE_LISTE_ORIENTATION analyse_liste_orientation(Identifiant,vector_analyse);
176 char nom_fichier_resultat_liste[1000];
177 sprintf(nom_fichier_resultat_liste,"%s/c_%i/liste_%s.txt",dossier_resultat,i,Identifiant.c_str());
178 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
179 ofstrm_liste.precision(16);
180 analyse_liste_orientation.exporter_liste(ofstrm_liste,true);
181 ofstrm_liste.close();
182 char nom_fichier_resultat_cumul[1000];
183 sprintf(nom_fichier_resultat_cumul,"%s/c_%i/cumul_%s.txt",dossier_resultat,i,Identifiant.c_str());
184 char prefix_graph[1000];
185 sprintf(prefix_graph,"%s/c_%i",dossier_resultat,i);
186 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
187 ofstrm_cumul.precision(16);
188 analyse_liste_orientation.exporter_cumul(ofstrm_cumul,true,avec_graph,prefix_graph);
189 ofstrm_cumul.close();
190 if(i==0) analyse_liste_orientation.exporter_cumul_i(ofstrm_cumul_erosion,i,true);
191 else analyse_liste_orientation.exporter_cumul_i(ofstrm_cumul_erosion,i,false);
192 }
193 ofstrm_cumul_erosion.close();
194 }
195 else
196 {
197 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
198 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
199 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
200 {
201 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
202 vector_analyse.push_back(ves_file->get_analyse(Identifiant));
203 }
204 MSTRUCT_ANALYSE_LISTE_ORIENTATION analyse_liste_orientation(Identifiant,vector_analyse);
205 char nom_fichier_resultat_liste[1000];
206 sprintf(nom_fichier_resultat_liste,"%s/liste_%s.txt",dossier_resultat,Identifiant.c_str());
207 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
208 ofstrm_liste.precision(16);
209 analyse_liste_orientation.exporter_liste(ofstrm_liste,true);
210 ofstrm_liste.close();
211 char nom_fichier_resultat_cumul[1000];
212 sprintf(nom_fichier_resultat_cumul,"%s/cumul_%s.txt",dossier_resultat,Identifiant.c_str());
213 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
214 ofstrm_cumul.precision(16);
215 analyse_liste_orientation.exporter_cumul(ofstrm_cumul,true,avec_graph,dossier_resultat);
216 ofstrm_cumul.close();
217 }
218 }
219 else if(Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_TEMPS)
220 {
221 sprintf(ligne,"-> %s",Identifiant.c_str());
222 affiche(ligne);
223 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
224 double moyenne_geometrie=0.0;
225 double ecart_type_geometrie=0.0;
226 double min_geometrie=std::numeric_limits<double>::max();
227 double max_geometrie=std::numeric_limits<double>::min();
228
229 double moyenne_materiau=0.0;
230 double ecart_type_materiau=0.0;
231 double min_materiau=std::numeric_limits<double>::max();
232 double max_materiau=std::numeric_limits<double>::min();
233
234 double moyenne_carte=0.0;
235 double ecart_type_carte=0.0;
236 double min_carte=std::numeric_limits<double>::max();
237 double max_carte=std::numeric_limits<double>::min();
238
239 double moyenne_mg_maillage=0.0;
240 double ecart_type_mg_maillage=0.0;
241 double min_mg_maillage=std::numeric_limits<double>::max();
242 double max_mg_maillage=std::numeric_limits<double>::min();
243
244 double moyenne_fem_maillage=0.0;
245 double ecart_type_fem_maillage=0.0;
246 double min_fem_maillage=std::numeric_limits<double>::max();
247 double max_fem_maillage=std::numeric_limits<double>::min();
248
249 double moyenne_etude=0.0;
250 double ecart_type_etude=0.0;
251 double min_etude=std::numeric_limits<double>::max();
252 double max_etude=std::numeric_limits<double>::min();
253
254 double moyenne_calcul=0.0;
255 double ecart_type_calcul=0.0;
256 double min_calcul=std::numeric_limits<double>::max();
257 double max_calcul=std::numeric_limits<double>::min();
258 char nom_fichier_resultat_liste[1000];
259 sprintf(nom_fichier_resultat_liste,"%s/liste_%s.txt",dossier_resultat,Identifiant.c_str());
260 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
261 ofstrm_liste.precision(16);
262 ofstrm_liste << "#(1) geometrie(2) materiau(3) carte(4) mg_maillage(5) fem_maillage(6) etude(7) calcul(8)" << std::endl;
263 long i=0;
264 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
265 {
266 i++;
267 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
268 moyenne_geometrie+=ves_file->get_temps_geometrie();
269 if(ves_file->get_temps_geometrie()<min_geometrie) min_geometrie=ves_file->get_temps_geometrie();
270 if(ves_file->get_temps_geometrie()>max_geometrie) max_geometrie=ves_file->get_temps_geometrie();
271 moyenne_materiau+=ves_file->get_temps_materiau();
272 if(ves_file->get_temps_materiau()<min_materiau) min_materiau=ves_file->get_temps_materiau();
273 if(ves_file->get_temps_materiau()>max_materiau) max_materiau=ves_file->get_temps_materiau();
274 moyenne_carte+=ves_file->get_temps_carte();
275 if(ves_file->get_temps_carte()<min_carte) min_carte=ves_file->get_temps_carte();
276 if(ves_file->get_temps_carte()>max_carte) max_carte=ves_file->get_temps_carte();
277 moyenne_mg_maillage+=ves_file->get_temps_maillage();
278 if(ves_file->get_temps_maillage()<min_mg_maillage) min_mg_maillage=ves_file->get_temps_maillage();
279 if(ves_file->get_temps_maillage()>max_mg_maillage) max_mg_maillage=ves_file->get_temps_maillage();
280 moyenne_fem_maillage+=ves_file->get_temps_fem_maillage();
281 if(ves_file->get_temps_fem_maillage()<min_fem_maillage) min_fem_maillage=ves_file->get_temps_fem_maillage();
282 if(ves_file->get_temps_fem_maillage()>max_fem_maillage) max_fem_maillage=ves_file->get_temps_fem_maillage();
283 moyenne_etude+=ves_file->get_temps_etude();
284 if(ves_file->get_temps_etude()<min_etude) min_etude=ves_file->get_temps_etude();
285 if(ves_file->get_temps_etude()>max_etude) max_etude=ves_file->get_temps_etude();
286 moyenne_calcul+=ves_file->get_temps_calcul();
287 if(ves_file->get_temps_calcul()<min_calcul) min_calcul=ves_file->get_temps_calcul();
288 if(ves_file->get_temps_calcul()>max_calcul) max_calcul=ves_file->get_temps_calcul();
289 ofstrm_liste << i << " " << ves_file->get_temps_geometrie() << " "
290 << ves_file->get_temps_materiau() << " "
291 << ves_file->get_temps_carte() << " "
292 << ves_file->get_temps_maillage() << " "
293 << ves_file->get_temps_fem_maillage() << " "
294 << ves_file->get_temps_etude() << " "
295 << ves_file->get_temps_calcul() << std::endl;
296 }
297 ofstrm_liste.close();
298 long nb_ves=map_ves_file.size();
299 moyenne_geometrie=moyenne_geometrie/nb_ves;
300 moyenne_materiau=moyenne_materiau/nb_ves;
301 moyenne_carte=moyenne_carte/nb_ves;
302 moyenne_mg_maillage=moyenne_mg_maillage/nb_ves;
303 moyenne_fem_maillage=moyenne_fem_maillage/nb_ves;
304 moyenne_etude=moyenne_etude/nb_ves;
305 moyenne_calcul=moyenne_calcul/nb_ves;
306 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
307 {
308 i++;
309 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
310 ecart_type_geometrie=(ves_file->get_temps_geometrie()-moyenne_geometrie)*(ves_file->get_temps_geometrie()-moyenne_geometrie);
311 ecart_type_materiau=(ves_file->get_temps_materiau()-moyenne_materiau)*(ves_file->get_temps_materiau()-moyenne_materiau);
312 ecart_type_carte=(ves_file->get_temps_carte()-moyenne_carte)*(ves_file->get_temps_carte()-moyenne_carte);
313 ecart_type_mg_maillage=(ves_file->get_temps_maillage()-moyenne_mg_maillage)*(ves_file->get_temps_maillage()-moyenne_mg_maillage);
314 ecart_type_fem_maillage=(ves_file->get_temps_fem_maillage()-moyenne_fem_maillage)*(ves_file->get_temps_fem_maillage()-moyenne_fem_maillage);
315 ecart_type_etude=(ves_file->get_temps_etude()-moyenne_etude)*(ves_file->get_temps_etude()-moyenne_etude);
316 ecart_type_calcul=(ves_file->get_temps_calcul()-moyenne_calcul)*(ves_file->get_temps_calcul()-moyenne_calcul);
317 }
318 ecart_type_geometrie=sqrt(ecart_type_geometrie*(1.0/(nb_ves-1.0)));
319 ecart_type_materiau=sqrt(ecart_type_materiau*(1.0/(nb_ves-1.0)));
320 ecart_type_carte=sqrt(ecart_type_carte*(1.0/(nb_ves-1.0)));
321 ecart_type_mg_maillage=sqrt(ecart_type_mg_maillage*(1.0/(nb_ves-1.0)));
322 ecart_type_fem_maillage=sqrt(ecart_type_fem_maillage*(1.0/(nb_ves-1.0)));
323 ecart_type_etude=sqrt(ecart_type_etude*(1.0/(nb_ves-1.0)));
324 ecart_type_calcul=sqrt(ecart_type_calcul*(1.0/(nb_ves-1.0)));
325
326 char nom_fichier_resultat_cumul[1000];
327 sprintf(nom_fichier_resultat_cumul,"%s/cumul_%s.txt",dossier_resultat,Identifiant.c_str());
328 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
329 ofstrm_cumul.precision(16);
330 ofstrm_cumul << "geometrie(moy ± min max) materiau(moy ± min max) carte(moy ± min max) mg_maillage(moy ± min max) fem_maillage(moy ± min max) etude(moy ± min max) calcul(moy ± min max)" << std::endl;
331 ofstrm_cumul << moyenne_geometrie << " " << ecart_type_geometrie << " " << min_geometrie << " " << max_geometrie << " "
332 << moyenne_materiau << " " << ecart_type_materiau << " " << min_materiau << " " << max_materiau << " "
333 << moyenne_carte << " " << ecart_type_carte << " " << min_carte << " " << max_carte << " "
334 << moyenne_mg_maillage << " " << ecart_type_mg_maillage << " " << min_mg_maillage << " " << max_mg_maillage << " "
335 << moyenne_fem_maillage << " " << ecart_type_fem_maillage << " " << min_fem_maillage << " " << max_fem_maillage << " "
336 << moyenne_etude << " " << ecart_type_etude << " " << min_etude << " " << max_etude << " "
337 << moyenne_calcul << " " << ecart_type_calcul << " " << min_calcul << " " << max_calcul << std::endl;
338 ofstrm_cumul.close();
339 }
340 else if(Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_CAO)
341 {
342 sprintf(ligne,"-> %s",Identifiant.c_str());
343 affiche(ligne);
344 double Largeur_colonne_distribution_nb_volume = param->get_valeur((char*)"Largeur_colonne_distribution_nb_volume");
345 double Largeur_colonne_distribution_nb_forme = param->get_valeur((char*)"Largeur_colonne_distribution_nb_forme");
346 double Largeur_colonne_distribution_volume = param->get_valeur((char*)"Largeur_colonne_distribution_volume");
347 double Largeur_colonne_distribution_fraction_volumique = param->get_valeur((char*)"Largeur_colonne_distribution_fraction_volumique");
348 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
349 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
350 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
351 {
352 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
353 vector_analyse.push_back(ves_file->get_analyse(Identifiant));
354 }
355 MSTRUCT_ANALYSE_LISTE_CAO analyse_liste_cao(Identifiant,
356 vector_analyse,
357 Largeur_colonne_distribution_nb_forme,
358 Largeur_colonne_distribution_nb_volume,
359 Largeur_colonne_distribution_volume,
360 Largeur_colonne_distribution_fraction_volumique);
361 char nom_fichier_resultat_liste[1000];
362 sprintf(nom_fichier_resultat_liste,"%s/liste_%s.txt",dossier_resultat,Identifiant.c_str());
363 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
364 ofstrm_liste.precision(16);
365 analyse_liste_cao.exporter_liste(ofstrm_liste,true);
366 ofstrm_liste.close();
367 char nom_fichier_resultat_cumul[1000];
368 sprintf(nom_fichier_resultat_cumul,"%s/cumul_%s.txt",dossier_resultat,Identifiant.c_str());
369 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
370 ofstrm_cumul.precision(16);
371 analyse_liste_cao.exporter_cumul(ofstrm_cumul,true,avec_graph,dossier_resultat);
372 ofstrm_cumul.close();
373 }
374 else if(Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_PROPRIETE_MASSIQUE)
375 {
376 sprintf(ligne,"-> %s",Identifiant.c_str());
377 affiche(ligne);
378 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
379 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
380 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
381 {
382 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
383 vector_analyse.push_back(ves_file->get_analyse(Identifiant));
384 }
385 MSTRUCT_ANALYSE_LISTE_PROPRIETE_MASSIQUE analyse_liste_prop_mass(Identifiant,vector_analyse);
386 char nom_fichier_resultat_liste[1000];
387 sprintf(nom_fichier_resultat_liste,"%s/liste_%s.txt",dossier_resultat,Identifiant.c_str());
388 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
389 ofstrm_liste.precision(16);
390 analyse_liste_prop_mass.exporter_liste(ofstrm_liste,true);
391 ofstrm_liste.close();
392 char nom_fichier_resultat_cumul[1000];
393 sprintf(nom_fichier_resultat_cumul,"%s/cumul_%s.txt",dossier_resultat,Identifiant.c_str());
394 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
395 ofstrm_cumul.precision(16);
396 analyse_liste_prop_mass.exporter_cumul(ofstrm_cumul,true,avec_graph,dossier_resultat);
397 ofstrm_cumul.close();
398 }
399 else if(Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_MAILLAGE_MG)
400 {
401 sprintf(ligne,"-> %s",Identifiant.c_str());
402 affiche(ligne);
403 double Largeur_colonne_distribution_nb_element_2D = param->get_valeur((char*)"Largeur_colonne_distribution_nb_element_2D");
404 double Largeur_colonne_distribution_nb_element_3D = param->get_valeur((char*)"Largeur_colonne_distribution_nb_element_3D");
405 double Largeur_colonne_distribution_volume = param->get_valeur((char*)"Largeur_colonne_distribution_volume");
406 double Largeur_colonne_distribution_fraction_volumique = param->get_valeur((char*)"Largeur_colonne_distribution_fraction_volumique");
407 int Analyse_erosion = (int)param->get_valeur((char*)"Analyse_erosion");
408 if(Analyse_erosion)
409 {
410 char nom_fichier_resultat_cumul_erosion[1000];
411 sprintf(nom_fichier_resultat_cumul_erosion,"%s/cumul_erosion_%s.txt",dossier_resultat,Identifiant.c_str());
412 std::ofstream ofstrm_cumul_erosion(nom_fichier_resultat_cumul_erosion,std::ios::out);
413 int Nb_couche = (int)param->get_valeur((char*)"Nb_couche");
414 for(int i=0;i<Nb_couche;i++)
415 {
416 char syscmd_mkdir_erosion_couche[1000];
417 sprintf(syscmd_mkdir_erosion_couche,"mkdir -p %s/c_%i",dossier_resultat,i);
418 system(syscmd_mkdir_erosion_couche);
419 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
420 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
421 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
422 {
423 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
424 MSTRUCT_ANALYSE_EROSION* analyse_erosion = (MSTRUCT_ANALYSE_EROSION*)ves_file->get_analyse(Identifiant);
425 vector_analyse.push_back(analyse_erosion->get_analyse(i));
426 }
427 MSTRUCT_ANALYSE_LISTE_MG_MAILLAGE analyse_liste_mg_maillage(Identifiant,
428 vector_analyse,
429 Largeur_colonne_distribution_nb_element_2D,
430 Largeur_colonne_distribution_nb_element_3D,
431 Largeur_colonne_distribution_volume,
432 Largeur_colonne_distribution_fraction_volumique);
433 char nom_fichier_resultat_liste[1000];
434 sprintf(nom_fichier_resultat_liste,"%s/c_%i/liste_%s.txt",dossier_resultat,i,Identifiant.c_str());
435 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
436 ofstrm_liste.precision(16);
437 analyse_liste_mg_maillage.exporter_liste(ofstrm_liste,true);
438 ofstrm_liste.close();
439 char nom_fichier_resultat_cumul[1000];
440 sprintf(nom_fichier_resultat_cumul,"%s/c_%i/cumul_%s.txt",dossier_resultat,i,Identifiant.c_str());
441 char prefix_graph[1000];
442 sprintf(prefix_graph,"%s/c_%i",dossier_resultat,i);
443 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
444 ofstrm_cumul.precision(16);
445 analyse_liste_mg_maillage.exporter_cumul(ofstrm_cumul,true,avec_graph,prefix_graph);
446 ofstrm_cumul.close();
447 if(i==0) analyse_liste_mg_maillage.exporter_cumul_i(ofstrm_cumul_erosion,i,true);
448 else analyse_liste_mg_maillage.exporter_cumul_i(ofstrm_cumul_erosion,i,false);
449 }
450 ofstrm_cumul_erosion.close();
451 }
452 else
453 {
454 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
455 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
456 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
457 {
458 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
459 vector_analyse.push_back(ves_file->get_analyse(Identifiant));
460 }
461 MSTRUCT_ANALYSE_LISTE_MG_MAILLAGE analyse_liste_mg_maillage(Identifiant,
462 vector_analyse,
463 Largeur_colonne_distribution_nb_element_2D,
464 Largeur_colonne_distribution_nb_element_3D,
465 Largeur_colonne_distribution_volume,
466 Largeur_colonne_distribution_fraction_volumique);
467 char nom_fichier_resultat_liste[1000];
468 sprintf(nom_fichier_resultat_liste,"%s/liste_%s.txt",dossier_resultat,Identifiant.c_str());
469 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
470 ofstrm_liste.precision(16);
471 analyse_liste_mg_maillage.exporter_liste(ofstrm_liste,true);
472 ofstrm_liste.close();
473 char nom_fichier_resultat_cumul[1000];
474 sprintf(nom_fichier_resultat_cumul,"%s/cumul_%s.txt",dossier_resultat,Identifiant.c_str());
475 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
476 ofstrm_cumul.precision(16);
477 analyse_liste_mg_maillage.exporter_cumul(ofstrm_cumul,true,avec_graph,dossier_resultat);
478 ofstrm_cumul.close();
479 }
480 }
481 else if(Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_MAILLAGE_FEM)
482 {
483 sprintf(ligne,"-> %s",Identifiant.c_str());
484 affiche(ligne);
485 double Largeur_colonne_distribution_nb_element_2D = param->get_valeur((char*)"Largeur_colonne_distribution_nb_element_2D");
486 double Largeur_colonne_distribution_nb_element_3D = param->get_valeur((char*)"Largeur_colonne_distribution_nb_element_3D");
487 double Largeur_colonne_distribution_volume = param->get_valeur((char*)"Largeur_colonne_distribution_volume");
488 double Largeur_colonne_distribution_fraction_volumique = param->get_valeur((char*)"Largeur_colonne_distribution_fraction_volumique");
489 int Analyse_erosion = (int)param->get_valeur((char*)"Analyse_erosion");
490 if(Analyse_erosion)
491 {
492 char nom_fichier_resultat_cumul_erosion[1000];
493 sprintf(nom_fichier_resultat_cumul_erosion,"%s/cumul_erosion_%s.txt",dossier_resultat,Identifiant.c_str());
494 std::ofstream ofstrm_cumul_erosion(nom_fichier_resultat_cumul_erosion,std::ios::out);
495 int Nb_couche = (int)param->get_valeur((char*)"Nb_couche");
496 for(int i=0;i<Nb_couche;i++)
497 {
498 char syscmd_mkdir_erosion_couche[1000];
499 sprintf(syscmd_mkdir_erosion_couche,"mkdir -p %s/c_%i",dossier_resultat,i);
500 system(syscmd_mkdir_erosion_couche);
501 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
502 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
503 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
504 {
505 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
506 MSTRUCT_ANALYSE_EROSION* analyse_erosion = (MSTRUCT_ANALYSE_EROSION*)ves_file->get_analyse(Identifiant);
507 vector_analyse.push_back(analyse_erosion->get_analyse(i));
508 }
509 MSTRUCT_ANALYSE_LISTE_FEM_MAILLAGE analyse_liste_fem_maillage(Identifiant,
510 vector_analyse,
511 Largeur_colonne_distribution_nb_element_2D,
512 Largeur_colonne_distribution_nb_element_3D,
513 Largeur_colonne_distribution_volume,
514 Largeur_colonne_distribution_fraction_volumique);
515 char nom_fichier_resultat_liste[1000];
516 sprintf(nom_fichier_resultat_liste,"%s/c_%i/liste_%s.txt",dossier_resultat,i,Identifiant.c_str());
517 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
518 ofstrm_liste.precision(16);
519 analyse_liste_fem_maillage.exporter_liste(ofstrm_liste,true);
520 ofstrm_liste.close();
521 char nom_fichier_resultat_cumul[1000];
522 sprintf(nom_fichier_resultat_cumul,"%s/c_%i/cumul_%s.txt",dossier_resultat,i,Identifiant.c_str());
523 char prefix_graph[1000];
524 sprintf(prefix_graph,"%s/c_%i",dossier_resultat,i);
525 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
526 ofstrm_cumul.precision(16);
527 analyse_liste_fem_maillage.exporter_cumul(ofstrm_cumul,true,avec_graph,prefix_graph);
528 ofstrm_cumul.close();
529 if(i==0) analyse_liste_fem_maillage.exporter_cumul_i(ofstrm_cumul_erosion,i,true);
530 else analyse_liste_fem_maillage.exporter_cumul_i(ofstrm_cumul_erosion,i,false);
531 }
532 ofstrm_cumul_erosion.close();
533 }
534 else
535 {
536 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
537 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
538 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
539 {
540 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
541 vector_analyse.push_back(ves_file->get_analyse(Identifiant));
542 }
543 MSTRUCT_ANALYSE_LISTE_FEM_MAILLAGE analyse_liste_fem_maillage(Identifiant,
544 vector_analyse,
545 Largeur_colonne_distribution_nb_element_2D,
546 Largeur_colonne_distribution_nb_element_3D,
547 Largeur_colonne_distribution_volume,
548 Largeur_colonne_distribution_fraction_volumique);
549 char nom_fichier_resultat_liste[1000];
550 sprintf(nom_fichier_resultat_liste,"%s/liste_%s.txt",dossier_resultat,Identifiant.c_str());
551 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
552 ofstrm_liste.precision(16);
553 analyse_liste_fem_maillage.exporter_liste(ofstrm_liste,true);
554 ofstrm_liste.close();
555 char nom_fichier_resultat_cumul[1000];
556 sprintf(nom_fichier_resultat_cumul,"%s/cumul_%s.txt",dossier_resultat,Identifiant.c_str());
557 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
558 ofstrm_cumul.precision(16);
559 analyse_liste_fem_maillage.exporter_cumul(ofstrm_cumul,true,avec_graph,dossier_resultat);
560 ofstrm_cumul.close();
561 }
562 }
563 else if(Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_MODULES_ELASTICITE)
564 {
565 sprintf(ligne,"-> %s",Identifiant.c_str());
566 affiche(ligne);
567 double Largeur_colonne_distribution_module_Kapp = param->get_valeur((char*)"Largeur_colonne_distribution_module_Kapp");
568 double Largeur_colonne_distribution_module_Gapp = param->get_valeur((char*)"Largeur_colonne_distribution_module_Gapp");
569 double Largeur_colonne_distribution_module_Eapp = param->get_valeur((char*)"Largeur_colonne_distribution_module_Eapp");
570 double Largeur_colonne_distribution_module_Nuapp = param->get_valeur((char*)"Largeur_colonne_distribution_module_Nuapp");
571 int Analyse_erosion = (int)param->get_valeur((char*)"Analyse_erosion");
572 if(Analyse_erosion)
573 {
574 char nom_fichier_resultat_cumul_erosion[1000];
575 sprintf(nom_fichier_resultat_cumul_erosion,"%s/cumul_erosion_%s.txt",dossier_resultat,Identifiant.c_str());
576 std::ofstream ofstrm_cumul_erosion(nom_fichier_resultat_cumul_erosion,std::ios::out);
577 int Nb_couche = (int)param->get_valeur((char*)"Nb_couche");
578 for(int i=0;i<Nb_couche;i++)
579 {
580 char syscmd_mkdir_erosion_couche[1000];
581 sprintf(syscmd_mkdir_erosion_couche,"mkdir -p %s/c_%i",dossier_resultat,i);
582 system(syscmd_mkdir_erosion_couche);
583 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
584 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
585 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
586 {
587 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
588 MSTRUCT_ANALYSE_EROSION* analyse_erosion = (MSTRUCT_ANALYSE_EROSION*)ves_file->get_analyse(Identifiant);
589 vector_analyse.push_back(analyse_erosion->get_analyse(i));
590 }
591 MSTRUCT_ANALYSE_LISTE_MODULES_ELASTICITE analyse_liste_modules_elasticite(Identifiant,
592 vector_analyse,
593 Largeur_colonne_distribution_module_Kapp,
594 Largeur_colonne_distribution_module_Gapp,
595 Largeur_colonne_distribution_module_Eapp,
596 Largeur_colonne_distribution_module_Nuapp);
597 char nom_fichier_resultat_liste[1000];
598 sprintf(nom_fichier_resultat_liste,"%s/c_%i/liste_%s.txt",dossier_resultat,i,Identifiant.c_str());
599 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
600 ofstrm_liste.precision(16);
601 analyse_liste_modules_elasticite.exporter_liste(ofstrm_liste,true);
602 ofstrm_liste.close();
603 char nom_fichier_resultat_cumul[1000];
604 sprintf(nom_fichier_resultat_cumul,"%s/c_%i/cumul_%s.txt",dossier_resultat,i,Identifiant.c_str());
605 char prefix_graph[1000];
606 sprintf(prefix_graph,"%s/c_%i",dossier_resultat,i);
607 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
608 ofstrm_cumul.precision(16);
609 analyse_liste_modules_elasticite.exporter_cumul(ofstrm_cumul,true,avec_graph,prefix_graph);
610 ofstrm_cumul.close();
611 if(i==0) analyse_liste_modules_elasticite.exporter_cumul_i(ofstrm_cumul_erosion,i,true);
612 else analyse_liste_modules_elasticite.exporter_cumul_i(ofstrm_cumul_erosion,i,false);
613 }
614 ofstrm_cumul_erosion.close();
615 }
616 else
617 {
618 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
619 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
620 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
621 {
622 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
623 vector_analyse.push_back(ves_file->get_analyse(Identifiant));
624 }
625 MSTRUCT_ANALYSE_LISTE_MODULES_ELASTICITE analyse_liste_modules_elasticite(Identifiant,
626 vector_analyse,
627 Largeur_colonne_distribution_module_Kapp,
628 Largeur_colonne_distribution_module_Gapp,
629 Largeur_colonne_distribution_module_Eapp,
630 Largeur_colonne_distribution_module_Nuapp);
631 char nom_fichier_resultat_liste[1000];
632 sprintf(nom_fichier_resultat_liste,"%s/liste_%s.txt",dossier_resultat,Identifiant.c_str());
633 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
634 ofstrm_liste.precision(16);
635 analyse_liste_modules_elasticite.exporter_liste(ofstrm_liste,true);
636 ofstrm_liste.close();
637 char nom_fichier_resultat_cumul[1000];
638 sprintf(nom_fichier_resultat_cumul,"%s/cumul_%s.txt",dossier_resultat,Identifiant.c_str());
639 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
640 ofstrm_cumul.precision(16);
641 analyse_liste_modules_elasticite.exporter_cumul(ofstrm_cumul,true,avec_graph,dossier_resultat);
642 ofstrm_cumul.close();
643 }
644 }
645 else if(Type_post_traitement==MSTRUCT::TYPE_POST_TRAITEMENT::POST_CONDUCTIVITE_THERMIQUE)
646 {
647 sprintf(ligne,"-> %s",Identifiant.c_str());
648 affiche(ligne);
649 double Largeur_colonne_distribution = param->get_valeur((char*)"Largeur_colonne_distribution");
650 int Analyse_erosion = (int)param->get_valeur((char*)"Analyse_erosion");
651 if(Analyse_erosion)
652 {
653 char nom_fichier_resultat_cumul_erosion[1000];
654 sprintf(nom_fichier_resultat_cumul_erosion,"%s/cumul_erosion_%s.txt",dossier_resultat,Identifiant.c_str());
655 std::ofstream ofstrm_cumul_erosion(nom_fichier_resultat_cumul_erosion,std::ios::out);
656 int Nb_couche = (int)param->get_valeur((char*)"Nb_couche");
657 for(int i=0;i<Nb_couche;i++)
658 {
659 char syscmd_mkdir_erosion_couche[1000];
660 sprintf(syscmd_mkdir_erosion_couche,"mkdir -p %s/c_%i",dossier_resultat,i);
661 system(syscmd_mkdir_erosion_couche);
662 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
663 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
664 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
665 {
666 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
667 MSTRUCT_ANALYSE_EROSION* analyse_erosion = (MSTRUCT_ANALYSE_EROSION*)ves_file->get_analyse(Identifiant);
668 vector_analyse.push_back(analyse_erosion->get_analyse(i));
669 }
670 MSTRUCT_ANALYSE_LISTE_CONDUCTIVITE_THERMIQUE analyse_liste_conductivite_thermique(Identifiant,vector_analyse,Largeur_colonne_distribution);
671 char nom_fichier_resultat_liste[1000];
672 sprintf(nom_fichier_resultat_liste,"%s/c_%i/liste_%s.txt",dossier_resultat,i,Identifiant.c_str());
673 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
674 ofstrm_liste.precision(16);
675 analyse_liste_conductivite_thermique.exporter_liste(ofstrm_liste,true);
676 ofstrm_liste.close();
677 char nom_fichier_resultat_cumul[1000];
678 sprintf(nom_fichier_resultat_cumul,"%s/c_%i/cumul_%s.txt",dossier_resultat,i,Identifiant.c_str());
679 char prefix_graph[1000];
680 sprintf(prefix_graph,"%s/c_%i",dossier_resultat,i);
681 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
682 ofstrm_cumul.precision(16);
683 analyse_liste_conductivite_thermique.exporter_cumul(ofstrm_cumul,true,avec_graph,prefix_graph);
684 ofstrm_cumul.close();
685 if(i==0) analyse_liste_conductivite_thermique.exporter_cumul_i(ofstrm_cumul_erosion,i,true);
686 else analyse_liste_conductivite_thermique.exporter_cumul_i(ofstrm_cumul_erosion,i,false);
687 }
688 ofstrm_cumul_erosion.close();
689 }
690 else
691 {
692 std::vector<MSTRUCT_ANALYSE*> vector_analyse;
693 std::map<long,MSTRUCT_VES_FILE*>::iterator it_ves_file;
694 for(it_ves_file=map_ves_file.begin();it_ves_file!=map_ves_file.end();it_ves_file++)
695 {
696 MSTRUCT_VES_FILE *ves_file=it_ves_file->second;
697 vector_analyse.push_back(ves_file->get_analyse(Identifiant));
698 }
699 MSTRUCT_ANALYSE_LISTE_CONDUCTIVITE_THERMIQUE analyse_liste_conductivite_thermique(Identifiant,vector_analyse,Largeur_colonne_distribution);
700 char nom_fichier_resultat_liste[1000];
701 sprintf(nom_fichier_resultat_liste,"%s/liste_%s.txt",dossier_resultat,Identifiant.c_str());
702 std::ofstream ofstrm_liste(nom_fichier_resultat_liste,std::ios::out);
703 ofstrm_liste.precision(16);
704 analyse_liste_conductivite_thermique.exporter_liste(ofstrm_liste,true);
705 ofstrm_liste.close();
706 char nom_fichier_resultat_cumul[1000];
707 sprintf(nom_fichier_resultat_cumul,"%s/cumul_%s.txt",dossier_resultat,Identifiant.c_str());
708 std::ofstream ofstrm_cumul(nom_fichier_resultat_cumul,std::ios::out);
709 ofstrm_cumul.precision(16);
710 analyse_liste_conductivite_thermique.exporter_cumul(ofstrm_cumul,true,avec_graph,dossier_resultat);
711 ofstrm_cumul.close();
712 }
713 }
714 }
715 }