ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/microstructure/src/mstruct_ver.cpp
Revision: 919
Committed: Tue Mar 6 17:51:54 2018 UTC (7 years, 2 months ago) by couturad
File size: 19516 byte(s)
Log Message:
Correction des bugs lors de l'execution en mode RELWITHDEBINFO.
Ajouts de fichiers pour la librairie MICROSTRUCTURE

File Contents

# User Rev Content
1 couturad 919 #include "mstruct_ver.h"
2     #include "fem_solution.h"
3     #include "mstruct_ves.h"
4     #include "mg_gestionnaire.h"
5     #include "mstruct_outils.h"
6     #include "mstruct_groupe_forme.h"
7     #include <vector>
8     #include <unistd.h>
9     using namespace MICROSTRUCTURE;
10    
11     VER::VER(void)
12     {
13    
14     }
15    
16     VER::~VER(void)
17     {
18    
19     }
20    
21     void VER::active_affichage(MICROSTRUCTURE::fonction_affiche* fonc)
22     {
23     fonc_affiche = fonc;
24     affichageactif = 1;
25     }
26    
27     void VER::affiche(char* message)
28     {
29     if(affichageactif==1) fonc_affiche(message);
30     }
31    
32     void VER::get_nom_fichier_dossier(string chemin_complet, string& nom_fichier, string& dossier)
33     {
34     std::size_t found = chemin_complet.rfind((char*)"/");
35     if (found!=std::string::npos)
36     {
37     dossier=chemin_complet.substr(0,found+1);
38     nom_fichier=chemin_complet.substr(found+1);
39     }
40     else
41     {
42     dossier ="";
43     nom_fichier=chemin_complet;
44     }
45     }
46    
47     int VER::homogeneisation(char* fichier_liste_ves, std::vector< OT_PARAMETRES* >& vector_params, char* fichier_resultats)
48     {
49     std::vector<std::string> vector_nom_fichier_ves;
50     std::ifstream f;
51     f.open(fichier_liste_ves,ios::in);
52     char ligne[1000];
53     f.getline(ligne,1000);
54     while(!f.eof())
55     {
56     char fichier_ves[1000];
57     sscanf(ligne,"%s",fichier_ves);
58     if(strlen(fichier_ves)==0) continue;
59     std::ifstream test(fichier_ves);
60     if(!test.good())
61     {
62     std::cerr << "*** VER::homogeneisation : Erreur lors de l'ouverture du fichier " << fichier_ves << " ***" << std::endl;
63     return FAIL;
64     }
65     test.close();
66     vector_nom_fichier_ves.push_back(std::string(fichier_ves));
67     f.getline(ligne,1000);
68     }
69     f.close();
70     std::ofstream o(fichier_resultats,std::ios::out);
71     o.precision(16);
72     o << "NB_VES = " << vector_nom_fichier_ves.size() << std::endl;
73     std::vector<OT_PARAMETRES*>::iterator it_param;
74     for(it_param=vector_params.begin();it_param!=vector_params.end();it_param++)
75     {
76     OT_PARAMETRES *param=*it_param;
77     int Moyenne_volumique_champ=(int)param->get_valeur("Moyenne_volumique_champ");
78     int Fraction_volumique_CAD = (int)param->get_valeur("Fraction_volumique_CAD");
79     int Fraction_volumique_mg_maillage = (int)param->get_valeur("Fraction_volumique_mg_maillage");
80     int Fraction_volumique_fem_maillage = (int)param->get_valeur("Fraction_volumique_fem_maillage");
81     int Tenseur_orientation = (int)param->get_valeur("Tenseur_orientation");
82     int Comparer_champ_theorie = (int)param->get_valeur("Comparer_champ_theorie");
83     int Critere_comparaison = (int)param->get_valeur("Critere_comparaison");
84     int Num_solution=(int)param->get_valeur("Num_solution");
85     std::string Nom_groupe_forme = param->get_nom("Nom_groupe_forme");
86     std::string Nom_champ = param->get_nom("Nom_champ");
87     int Boite_analyse=(int)param->get_valeur("Boite_analyse");
88     double Boite3D_analyse_Xmin = param->get_valeur("Boite3D_analyse_Xmin");
89     double Boite3D_analyse_Ymin = param->get_valeur("Boite3D_analyse_Ymin");
90     double Boite3D_analyse_Zmin = param->get_valeur("Boite3D_analyse_Zmin");
91     double Boite3D_analyse_Xmax = param->get_valeur("Boite3D_analyse_Xmax");
92     double Boite3D_analyse_Ymax = param->get_valeur("Boite3D_analyse_Ymax");
93     double Boite3D_analyse_Zmax = param->get_valeur("Boite3D_analyse_Zmax");
94     int Exporter_liste_resultat = (int)param->get_valeur("Exporter_liste_resultat");
95     std::string Fichier_liste_resultat = param->get_nom("Fichier_liste_resultat");
96     double Val_champ_theorique[6];
97     Val_champ_theorique[0] = param->get_valeur("Val_champ_theorique_XX");
98     Val_champ_theorique[1] = param->get_valeur("Val_champ_theorique_YY");
99     Val_champ_theorique[2] = param->get_valeur("Val_champ_theorique_ZZ");
100     Val_champ_theorique[3] = param->get_valeur("Val_champ_theorique_XY");
101     Val_champ_theorique[4] = param->get_valeur("Val_champ_theorique_XZ");
102     Val_champ_theorique[5] = param->get_valeur("Val_champ_theorique_YZ");
103     if(Moyenne_volumique_champ==1)
104     {
105     BOITE_3D* boite_analyse = NULL;
106     if(Boite_analyse==1) boite_analyse=new BOITE_3D(Boite3D_analyse_Xmin,Boite3D_analyse_Ymin,Boite3D_analyse_Zmin,Boite3D_analyse_Xmax,Boite3D_analyse_Ymax,Boite3D_analyse_Zmax);
107     export_moyenne_volumique_champ(Nom_champ,Num_solution,vector_nom_fichier_ves,o,Nom_groupe_forme,boite_analyse,Exporter_liste_resultat,(char*)Fichier_liste_resultat.c_str());
108     }
109     if(Fraction_volumique_CAD==1)
110     {
111     export_fraction_volumique_CAD(vector_nom_fichier_ves,o,Nom_groupe_forme,Exporter_liste_resultat,(char*)Fichier_liste_resultat.c_str());
112     }
113     if(Fraction_volumique_mg_maillage==1)
114     {
115     export_fraction_volumique_mg_maillage(vector_nom_fichier_ves,o,Nom_groupe_forme,Exporter_liste_resultat,(char*)Fichier_liste_resultat.c_str());
116     }
117     if(Fraction_volumique_fem_maillage==1)
118     {
119     BOITE_3D* boite_analyse = NULL;
120     if(Boite_analyse==1) boite_analyse=new BOITE_3D(Boite3D_analyse_Xmin,Boite3D_analyse_Ymin,Boite3D_analyse_Zmin,Boite3D_analyse_Xmax,Boite3D_analyse_Ymax,Boite3D_analyse_Zmax);
121     export_fraction_volumique_fem_maillage(vector_nom_fichier_ves,o,Nom_groupe_forme,boite_analyse,Exporter_liste_resultat,(char*)Fichier_liste_resultat.c_str());
122     }
123     if(Tenseur_orientation==1)
124     {
125     export_tenseur_orientation(vector_nom_fichier_ves,o,Nom_groupe_forme,Exporter_liste_resultat,(char*)Fichier_liste_resultat.c_str());
126     }
127     }
128     o.close();
129     }
130    
131    
132     int VER::export_moyenne_volumique_champ(std::string nom_champ,
133     int num_solution,
134     std::vector<std::string> &vector_nom_fichier_ves,
135     std::ostream& o,
136     std::string nom_groupe_forme,
137     BOITE_3D* boite_analyse,
138     int liste_resultat,
139     char* fichier_liste_resultat)
140     {
141     char message[1000];
142     sprintf(message,"MOYENNE VOLUMIQUE CHAMP : CHAMP = %s",nom_champ.c_str());
143     affiche(message);
144     if(nom_groupe_forme!="NULL")
145     {
146     sprintf(message,"Groupe forme : %s",nom_groupe_forme.c_str());
147     affiche(message);
148     }
149     if(boite_analyse!=NULL)
150     {
151     sprintf(message,"Boite_3D analyse : [%lf,%lf,%lf,%lf,%lf,%lf]",boite_analyse->get_xmin(),
152     boite_analyse->get_ymin(),
153     boite_analyse->get_zmin(),
154     boite_analyse->get_xmax(),
155     boite_analyse->get_ymax(),
156     boite_analyse->get_zmax());
157     affiche(message);
158     }
159     FEM_SOLUTION *sol=NULL;
160     GROUPE_FORME* groupe_forme=NULL;
161     int dim_champ=0;
162     long nb_ves=0;
163     std::vector<double*> vector_champ_ves;
164     std::vector<std::string>::iterator it_fichier_ves;
165     for(it_fichier_ves=vector_nom_fichier_ves.begin();it_fichier_ves!=vector_nom_fichier_ves.end();it_fichier_ves++)
166     {
167     std::string chemin_complet_fichier_ves=*it_fichier_ves;
168     char chr_pwd[2000];
169     getcwd(chr_pwd,2000);
170     std::string pwd = chr_pwd;
171     std::string fichier_ves;
172     std::string dossier;
173     get_nom_fichier_dossier(chemin_complet_fichier_ves,fichier_ves,dossier);
174     chdir(dossier.c_str());
175     VES ves((char*)fichier_ves.c_str());
176     nb_ves++;
177     sprintf(message," -> VES #%li : dossier[%s] fichier[%s]",nb_ves,dossier.c_str(),fichier_ves.c_str());
178     affiche(message);
179     if(nom_groupe_forme!="NULL")groupe_forme=ves.get_groupe_forme(nom_groupe_forme);
180     sol=ves.get_mg_gestionnaire()->get_fem_solution(num_solution);
181     dim_champ=sol->get_nb_champ();
182     double* champ=new double[dim_champ];
183     MICROSTRUCTURE::OUTILS::moyenne_volumique_champ(sol,champ,groupe_forme,boite_analyse);
184     vector_champ_ves.push_back(champ);
185     chdir(pwd.c_str());
186     }
187     affiche((char*)" -> FIN");
188     if(liste_resultat) export_liste_resultat(fichier_liste_resultat,dim_champ,vector_champ_ves,std::string("// " + nom_champ));
189     double moyenne[dim_champ];
190     double ecart_type[dim_champ];
191     double min[dim_champ];
192     double max[dim_champ];
193     MICROSTRUCTURE::OUTILS::moyenne_ecart_type(dim_champ,vector_champ_ves,moyenne,ecart_type,min,max);
194     std::vector<double*>::iterator it;
195     for(it=vector_champ_ves.begin();it!=vector_champ_ves.end();it++) delete *it;
196     o << "MOYENNE VOLUMIQUE CHAMP : CHAMP = " << nom_champ << std::endl;
197     if(groupe_forme!=NULL) o << " GROUPE_FORME = " << nom_groupe_forme << std::endl;
198     if(boite_analyse!=NULL) o << " BOITE_3D_ANALYSE = " << boite_analyse->get_xmin() << " "
199     << boite_analyse->get_ymin() << " "
200     << boite_analyse->get_zmin() << " "
201     << boite_analyse->get_xmax() << " "
202     << boite_analyse->get_ymax() << " "
203     << boite_analyse->get_zmax() << std::endl;
204     o << " DIM_CHAMP = " << dim_champ << std::endl;
205     for(int i=0;i<dim_champ;i++) o << " " << nom_champ << "[" << i << "] = " << moyenne[i] << " ± " << ecart_type[i] << " " << min[i] << " " << max[i] << std::endl;
206     o << std::endl;
207     return OK;
208     }
209    
210     int VER::export_fraction_volumique_CAD(vector< string >& vector_nom_fichier_ves,
211     ostream& o,
212     string nom_groupe_forme,
213     int liste_resultat,
214     char* fichier_liste_resultat)
215     {
216     char message[1000];
217     sprintf(message,"FRACTION VOLUMIQUE CAD");
218     affiche(message);
219     if(nom_groupe_forme!="NULL")
220     {
221     sprintf(message,"Groupe forme : %s",nom_groupe_forme.c_str());
222     affiche(message);
223     }
224     GROUPE_FORME* groupe_forme=NULL;
225     long nb_ves=0;
226     std::vector<double*> vector_volume_frac_vol;
227     std::vector<std::string>::iterator it_fichier_ves;
228     for(it_fichier_ves=vector_nom_fichier_ves.begin();it_fichier_ves!=vector_nom_fichier_ves.end();it_fichier_ves++)
229     {
230     std::string chemin_complet_fichier_ves=*it_fichier_ves;
231     char chr_pwd[2000];
232     getcwd(chr_pwd,2000);
233     std::string pwd = chr_pwd;
234     std::string fichier_ves;
235     std::string dossier;
236     get_nom_fichier_dossier(chemin_complet_fichier_ves,fichier_ves,dossier);
237     chdir(dossier.c_str());
238     VES ves((char*)fichier_ves.c_str());
239     nb_ves++;
240     sprintf(message," -> VES #%li : dossier[%s] fichier[%s]",nb_ves,dossier.c_str(),fichier_ves.c_str());
241     affiche(message);
242     if(nom_groupe_forme!="NULL")groupe_forme=ves.get_groupe_forme(nom_groupe_forme);
243     double *vol_fracvol = new double[2];
244     MICROSTRUCTURE::OUTILS::fraction_volumique_CAD(&ves,groupe_forme,vol_fracvol[0],vol_fracvol[1]);
245     vector_volume_frac_vol.push_back(vol_fracvol);
246     chdir(pwd.c_str());
247     }
248     affiche((char*)" -> FIN");
249     if(liste_resultat) export_liste_resultat(fichier_liste_resultat,2,vector_volume_frac_vol,std::string("// FRACTION_VOLUMIQUE_CAD"));
250     double moyenne[2];
251     double ecart_type[2];
252     double min[2];
253     double max[2];
254     MICROSTRUCTURE::OUTILS::moyenne_ecart_type(2,vector_volume_frac_vol,moyenne,ecart_type,min,max);
255     std::vector<double*>::iterator it;
256     for(it=vector_volume_frac_vol.begin();it!=vector_volume_frac_vol.end();it++) delete *it;
257     o << "FRACTION VOLUMIQUE CAD" << std::endl;
258     if(groupe_forme!=NULL) o << " GROUPE_FORME = " << nom_groupe_forme << std::endl;
259     o << " Volume = " << moyenne[0] << " ± " << ecart_type[0] << " " << min[0] << " " << max[0] << std::endl;
260     o << " Fraction_volumique = " << moyenne[1] << " ± " << ecart_type[1] << " " << min[1] << " " << max[1] << std::endl;
261     o << std::endl;
262     return OK;
263     }
264    
265     int VER::export_fraction_volumique_mg_maillage(vector< string >& vector_nom_fichier_ves,
266     ostream& o,
267     string nom_groupe_forme,
268     int liste_resultat,
269     char* fichier_liste_resultat)
270     {
271     char message[1000];
272     sprintf(message,"FRACTION VOLUMIQUE MG_MAILLAGE");
273     affiche(message);
274     if(nom_groupe_forme!="NULL")
275     {
276     sprintf(message,"Groupe forme : %s",nom_groupe_forme.c_str());
277     affiche(message);
278     }
279     GROUPE_FORME* groupe_forme=NULL;
280     long nb_ves=0;
281     std::vector<double*> vector_volume_frac_vol;
282     std::vector<std::string>::iterator it_fichier_ves;
283     for(it_fichier_ves=vector_nom_fichier_ves.begin();it_fichier_ves!=vector_nom_fichier_ves.end();it_fichier_ves++)
284     {
285     std::string chemin_complet_fichier_ves=*it_fichier_ves;
286     char chr_pwd[2000];
287     getcwd(chr_pwd,2000);
288     std::string pwd = chr_pwd;
289     std::string fichier_ves;
290     std::string dossier;
291     get_nom_fichier_dossier(chemin_complet_fichier_ves,fichier_ves,dossier);
292     chdir(dossier.c_str());
293     VES ves((char*)fichier_ves.c_str());
294     nb_ves++;
295     sprintf(message," -> VES #%li : dossier[%s] fichier[%s]",nb_ves,dossier.c_str(),fichier_ves.c_str());
296     affiche(message);
297     if(nom_groupe_forme!="NULL")groupe_forme=ves.get_groupe_forme(nom_groupe_forme);
298     double *vol_fracvol = new double[2];
299     MICROSTRUCTURE::OUTILS::fraction_volumique_mg_maillage(&ves,groupe_forme,vol_fracvol[0],vol_fracvol[1]);
300     vector_volume_frac_vol.push_back(vol_fracvol);
301     chdir(pwd.c_str());
302     }
303     affiche((char*)" -> FIN");
304     if(liste_resultat) export_liste_resultat(fichier_liste_resultat,2,vector_volume_frac_vol,std::string("// FRACTION_VOLUMIQUE_MG_MAILLAGE"));
305     double moyenne[2];
306     double ecart_type[2];
307     double min[2];
308     double max[2];
309     MICROSTRUCTURE::OUTILS::moyenne_ecart_type(2,vector_volume_frac_vol,moyenne,ecart_type,min,max);
310     std::vector<double*>::iterator it;
311     for(it=vector_volume_frac_vol.begin();it!=vector_volume_frac_vol.end();it++) delete *it;
312     o << "FRACTION VOLUMIQUE MG_MAILLAGE" << std::endl;
313     if(groupe_forme!=NULL) o << " GROUPE_FORME = " << nom_groupe_forme << std::endl;
314     o << " Volume = " << moyenne[0] << " ± " << ecart_type[0] << " " << min[0] << " " << max[0] << std::endl;
315     o << " Fraction_volumique = " << moyenne[1] << " ± " << ecart_type[1] << " " << min[1] << " " << max[1] << std::endl;
316     o << std::endl;
317     return OK;
318     }
319    
320     int VER::export_fraction_volumique_fem_maillage(vector< string >& vector_nom_fichier_ves,
321     ostream& o,
322     string nom_groupe_forme,
323     BOITE_3D *boite_analyse,
324     int liste_resultat,
325     char* fichier_liste_resultat)
326     {
327     char message[1000];
328     sprintf(message,"FRACTION VOLUMIQUE FEM_MAILLAGE");
329     affiche(message);
330     if(nom_groupe_forme!="NULL")
331     {
332     sprintf(message,"Groupe forme : %s",nom_groupe_forme.c_str());
333     affiche(message);
334     }
335     if(boite_analyse!=NULL)
336     {
337     sprintf(message,"Boite_3D analyse : [%lf,%lf,%lf,%lf,%lf,%lf]",boite_analyse->get_xmin(),
338     boite_analyse->get_ymin(),
339     boite_analyse->get_zmin(),
340     boite_analyse->get_xmax(),
341     boite_analyse->get_ymax(),
342     boite_analyse->get_zmax());
343     affiche(message);
344     }
345     GROUPE_FORME* groupe_forme=NULL;
346     long nb_ves=0;
347     std::vector<double*> vector_volume_frac_vol;
348     std::vector<std::string>::iterator it_fichier_ves;
349     for(it_fichier_ves=vector_nom_fichier_ves.begin();it_fichier_ves!=vector_nom_fichier_ves.end();it_fichier_ves++)
350     {
351     std::string chemin_complet_fichier_ves=*it_fichier_ves;
352     char chr_pwd[2000];
353     getcwd(chr_pwd,2000);
354     std::string pwd = chr_pwd;
355     std::string fichier_ves;
356     std::string dossier;
357     get_nom_fichier_dossier(chemin_complet_fichier_ves,fichier_ves,dossier);
358     chdir(dossier.c_str());
359     VES ves((char*)fichier_ves.c_str());
360     nb_ves++;
361     sprintf(message," -> VES #%li : dossier[%s] fichier[%s]",nb_ves,dossier.c_str(),fichier_ves.c_str());
362     affiche(message);
363     if(nom_groupe_forme!="NULL")groupe_forme=ves.get_groupe_forme(nom_groupe_forme);
364     double *vol_fracvol = new double[2];
365     MICROSTRUCTURE::OUTILS::fraction_volumique_fem_maillage(&ves,groupe_forme,vol_fracvol[0],vol_fracvol[1],boite_analyse);
366     vector_volume_frac_vol.push_back(vol_fracvol);
367     chdir(pwd.c_str());
368     }
369     affiche((char*)" -> FIN");
370     if(liste_resultat) export_liste_resultat(fichier_liste_resultat,2,vector_volume_frac_vol,std::string("// FRACTION_VOLUMIQUE_FEM_MAILLAGE"));
371     double moyenne[2];
372     double ecart_type[2];
373     double min[2];
374     double max[2];
375     MICROSTRUCTURE::OUTILS::moyenne_ecart_type(2,vector_volume_frac_vol,moyenne,ecart_type,min,max);
376     std::vector<double*>::iterator it;
377     for(it=vector_volume_frac_vol.begin();it!=vector_volume_frac_vol.end();it++) delete *it;
378     o << "FRACTION VOLUMIQUE FEM_MAILLAGE" << std::endl;
379     if(groupe_forme!=NULL) o << " GROUPE_FORME = " << nom_groupe_forme << std::endl;
380     if(boite_analyse!=NULL) o << " BOITE_3D_ANALYSE = " << boite_analyse->get_xmin() << " "
381     << boite_analyse->get_ymin() << " "
382     << boite_analyse->get_zmin() << " "
383     << boite_analyse->get_xmax() << " "
384     << boite_analyse->get_ymax() << " "
385     << boite_analyse->get_zmax() << std::endl;
386     o << " Volume = " << moyenne[0] << " ± " << ecart_type[0] << " " << min[0] << " " << max[0] << std::endl;
387     o << " Fraction_volumique = " << moyenne[1] << " ± " << ecart_type[1] << " " << min[1] << " " << max[1] << std::endl;
388     o << std::endl;
389     return OK;
390     }
391    
392     int VER::export_tenseur_orientation(vector< string >& vector_nom_fichier_ves,
393     ostream& o,
394     string nom_groupe_forme,
395     int liste_resultat,
396     char* fichier_liste_resultat)
397     {
398     char message[1000];
399     sprintf(message,"TENSEUR ORIENTATION");
400     affiche(message);
401     if(nom_groupe_forme=="NULL")
402     {
403     sprintf(message,"*** VER::export_tenseur_orientation ERREUR Groupe forme : %s ***",nom_groupe_forme.c_str());
404     affiche(message);
405     return FAIL;
406     }
407     GROUPE_FORME* groupe_forme=NULL;
408     long nb_ves=0;
409     std::vector<double*> vector_tenseur_ori;
410     std::vector<std::string>::iterator it_fichier_ves;
411     for(it_fichier_ves=vector_nom_fichier_ves.begin();it_fichier_ves!=vector_nom_fichier_ves.end();it_fichier_ves++)
412     {
413     std::string chemin_complet_fichier_ves=*it_fichier_ves;
414     char chr_pwd[2000];
415     getcwd(chr_pwd,2000);
416     std::string pwd = chr_pwd;
417     std::string fichier_ves;
418     std::string dossier;
419     get_nom_fichier_dossier(chemin_complet_fichier_ves,fichier_ves,dossier);
420     chdir(dossier.c_str());
421     VES ves((char*)fichier_ves.c_str());
422     nb_ves++;
423     sprintf(message," -> VES #%li : dossier[%s] fichier[%s]",nb_ves,dossier.c_str(),fichier_ves.c_str());
424     affiche(message);
425     groupe_forme=ves.get_groupe_forme(nom_groupe_forme);
426     double *a2=new double[6];
427     MICROSTRUCTURE::OUTILS::tenseur_orientation(groupe_forme,a2);
428     vector_tenseur_ori.push_back(a2);
429     chdir(pwd.c_str());
430     }
431     affiche((char*)" -> FIN");
432     if(liste_resultat) export_liste_resultat(fichier_liste_resultat,2,vector_tenseur_ori,std::string("// TENSEUR_ORIENTATION_A2"));
433     double moyenne[6];
434     double ecart_type[6];
435     double min[6];
436     double max[6];
437     MICROSTRUCTURE::OUTILS::moyenne_ecart_type(6,vector_tenseur_ori,moyenne,ecart_type,min,max);
438     std::vector<double*>::iterator it;
439     for(it=vector_tenseur_ori.begin();it!=vector_tenseur_ori.end();it++) delete *it;
440     o << "TENSEUR ORIENTATION" << std::endl;
441     o << " GROUPE_FORME = " << nom_groupe_forme << std::endl;
442     for(int i=0;i<6;i++) o << " a2[" << i << "] = " << moyenne[i] << " ± " << ecart_type[i] << " " << min[i] << " " << max[i] << std::endl;
443     o << std::endl;
444     return OK;
445     }
446    
447     int VER::export_liste_resultat(char* fichier, int dim_champ, std::vector< double* >& vector_champ, std::string description)
448     {
449     std::ofstream o(fichier,std::ios::out);
450     o.precision(16);
451     o << description << std::endl;
452     long k=0;
453     std::vector<double*>::iterator it;
454     for(it=vector_champ.begin();it!=vector_champ.end();it++)
455     {
456     o << k << " ";
457     double *tab = *it;
458     for(int i=0;i<dim_champ;i++)
459     {
460     o << tab[i] << " ";
461     }
462     o << std::endl;
463     k++;
464     }
465     o.close();
466     }
467    
468     int VER::compare_champ_theorie(std::vector< double* >& vector_champ,
469     int dim_champ,
470     double* val_theorique_champ,
471     ostream& o,
472     string nom_groupe_forme,
473     int liste_resultat,
474     char* fichier_liste_resultat,
475     int intervalles)
476     {
477    
478     }
479    
480    
481