ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/microstructure/src/mstruct_parametres.cpp
Revision: 919
Committed: Tue Mar 6 17:51:54 2018 UTC (7 years, 2 months ago) by couturad
File size: 19290 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_parametres.h"
2     #include "mstruct_generateur_rsa.h"
3     #include <string.h>
4     #include <fstream>
5     #include <cstdlib>
6    
7     using namespace MICROSTRUCTURE;
8    
9     void PARAMETRES::ini_param_generateur_rsa(OT_PARAMETRES* params, int type_inclusion,char* nom_groupe_forme)
10     {
11     params->ajouter("Type_generateur","0",OT_PARAMETRES::DOUBLE,"Type de generateur : RSA [1], ");
12     params->ajouter("Nom_mgcg_modele","VES",OT_PARAMETRES::STRING,"Nom du MG_CG_MODELE");
13     params->ajouter("Nom_groupe_inclusion",nom_groupe_forme,OT_PARAMETRES::STRING,"Nom du groupe d'inclusion (Ex: Sphere)");
14     params->ajouter("Boite3D_distribution_Xmin","-0.1",OT_PARAMETRES::DOUBLE,"Xmin boite3D de distribution d'inclusion");
15     params->ajouter("Boite3D_distribution_Ymin","-0.1",OT_PARAMETRES::DOUBLE,"Ymin boite3D de distribution d'inclusion");
16     params->ajouter("Boite3D_distribution_Zmin","-0.1",OT_PARAMETRES::DOUBLE,"Zmin boite3D de distribution d'inclusion");
17     params->ajouter("Boite3D_distribution_Xmax","1.1",OT_PARAMETRES::DOUBLE,"Xmax boite3D de distribution d'inclusion");
18     params->ajouter("Boite3D_distribution_Ymax","1.1",OT_PARAMETRES::DOUBLE,"Ymax boite3D de distribution d'inclusion");
19     params->ajouter("Boite3D_distribution_Zmax","1.1",OT_PARAMETRES::DOUBLE,"Zmax boite3D de distribution d'inclusion");
20     params->ajouter("Nb_pas_X","20",OT_PARAMETRES::DOUBLE,"Nombre de pas selon X pout la creation d'un octree");
21     params->ajouter("Nb_pas_Y","20",OT_PARAMETRES::DOUBLE,"Nombre de pas selon Y pout la creation d'un octree");
22     params->ajouter("Nb_pas_Z","20",OT_PARAMETRES::DOUBLE,"Nombre de pas selon Z pout la creation d'un octree");
23     params->ajouter("Fraction_volumique_cible","0.1",OT_PARAMETRES::DOUBLE,"Fraction volumique cible d'inclusion [0.0, 1.0]");
24     if(type_inclusion==GENERATEUR_RSA::TYPE_INCLUSION::SPHERE)
25     {
26     params->ajouter("Type_inclusion","0",OT_PARAMETRES::DOUBLE,"Type d'inclusion : Sphere [0], Cylindre [1]");
27     params->ajouter("Mu_rayon","0.2",OT_PARAMETRES::DOUBLE,"Moyenne du rayon de la sphere");
28     params->ajouter("Sigma_rayon","0.0",OT_PARAMETRES::DOUBLE,"Ecart type du rayon de la sphere");
29     }
30     if(type_inclusion==GENERATEUR_RSA::TYPE_INCLUSION::CYLINDRE)
31     {
32     params->ajouter("Type_inclusion","1",OT_PARAMETRES::DOUBLE,"Type d'inclusion : Sphere [0], Cylindre [1]");
33     params->ajouter("Mu_rayon","0.1",OT_PARAMETRES::DOUBLE,"Moyenne du rayon du cylindre");
34     params->ajouter("Sigma_rayon","0.0",OT_PARAMETRES::DOUBLE,"Ecart type du rayon du cylindre");
35     params->ajouter("Mu_longueur","0.2",OT_PARAMETRES::DOUBLE,"Moyenne de la longueur du cylindre");
36     params->ajouter("Sigma_longueur","0.0",OT_PARAMETRES::DOUBLE,"Ecart type de la longueur du cylindre");
37     params->ajouter("Mu_axe_X","0.0",OT_PARAMETRES::DOUBLE,"Moyenne de l'orientation selon l'axe X");
38     params->ajouter("Sigma_axe_X","0.0",OT_PARAMETRES::DOUBLE,"Ecart type de l'orientation selon l'axe X");
39     params->ajouter("Type_distribution_axe_X","0",OT_PARAMETRES::DOUBLE,"Type de distribution de l'orientation selon l'axe X : Uniforme[0], Normale[1]");
40     params->ajouter("Mu_axe_Y","0.0",OT_PARAMETRES::DOUBLE,"Moyenne de l'orientation selon l'axe Y");
41     params->ajouter("Sigma_axe_Y","0.0",OT_PARAMETRES::DOUBLE,"Ecart type de l'orientation selon l'axe Y");
42     params->ajouter("Type_distribution_axe_Y","0",OT_PARAMETRES::DOUBLE,"Type de distribution de l'orientation selon l'axe Y : Uniforme[0], Normale[1]");
43     params->ajouter("Mu_axe_Z","0.0",OT_PARAMETRES::DOUBLE,"Moyenne de l'orientation selon l'axe Z");
44     params->ajouter("Sigma_axe_Z","0.0",OT_PARAMETRES::DOUBLE,"Ecart type de l'orientation selon l'axe Z");
45     params->ajouter("Type_distribution_axe_Z","0",OT_PARAMETRES::DOUBLE,"Type de distribution de l'orientation selon l'axe Z : Uniforme[0], Normale[1]");
46     }
47     params->ajouter("Porosite","0",OT_PARAMETRES::DOUBLE,"Considerer l'inclusion comme etant une porosite (vide) [1]");
48     params->ajouter("Distance_min_inter_volume","0.02",OT_PARAMETRES::DOUBLE,"Distance minimale qui separe deux inclusions");
49     params->ajouter("Volume_min","0.0002",OT_PARAMETRES::DOUBLE,"Volume minimal admissible de l'inclusion");
50     params->ajouter("Aire_min","0.0002",OT_PARAMETRES::DOUBLE,"Aire minimal admissible d'une face de l'inclusion");
51     params->ajouter("Longueur_min","0.02",OT_PARAMETRES::DOUBLE,"Longueur minimal admissible d'une arete ");
52     params->ajouter("Angle_min","0.7854",OT_PARAMETRES::DOUBLE,"Angle minimal admissible entre deux faces");
53     params->ajouter("Nb_volume_max","500",OT_PARAMETRES::DOUBLE,"Nombre maximal d'inclusion");
54     params->ajouter("Nb_iteration_max","2000",OT_PARAMETRES::DOUBLE,"Nombre maximal d'iteration");
55     }
56    
57     void PARAMETRES::ini_param_materiau(OT_PARAMETRES* params,char* nom_groupe_forme)
58     {
59     params->ajouter("Nom_groupe_forme",nom_groupe_forme,OT_PARAMETRES::STRING,"Nom du groupe de forme (Ex: Sphere, Matrice)");
60     params->ajouter("Mu_E","69.0e9",OT_PARAMETRES::DOUBLE,"Moyenne du module d'elasticite");
61     params->ajouter("Sigma_E","0.0",OT_PARAMETRES::DOUBLE,"Ecart type du module d'elasticite");
62     params->ajouter("Mu_nu","0.3",OT_PARAMETRES::DOUBLE,"Moyenne du coefficient de Poisson");
63     params->ajouter("Sigma_nu","0.0",OT_PARAMETRES::DOUBLE,"Ecart type du coefficient de Poisson");
64     }
65    
66     void PARAMETRES::ini_param_carte_taille(OT_PARAMETRES* params)
67     {
68     params->ajouter("Nom_carte","carte",OT_PARAMETRES::STRING,"Nom de la carte de taille");
69     params->ajouter("Ecart_nodal","0.05",OT_PARAMETRES::DOUBLE,"Ecart nodal");
70     params->ajouter("Fechantillonnage","20",OT_PARAMETRES::DOUBLE,"Nombre d'échantillon par entité");
71     params->ajouter("Nb_cellule_direction","20",OT_PARAMETRES::DOUBLE,"Nombre de cellules de la FEM_SOLUTION dans les directions x,y,z");
72     params->ajouter("Nom_fem_solution","solcarte",OT_PARAMETRES::STRING,"Nom de la FEM_SOLUTION");
73     params->ajouter("Nb_couche_min","2",OT_PARAMETRES::DOUBLE,"Nombre de couches entre chaque solide");
74     params->ajouter("Nb_pas","32",OT_PARAMETRES::DOUBLE,"Nombre de pas de balayage");
75     params->ajouter("Facteur_augmentation","25",OT_PARAMETRES::DOUBLE,"Facteur d'augmentation de l'ecart nodal d'une cellule a l'autre");
76     }
77    
78     void PARAMETRES::ini_param_mailleur(OT_PARAMETRES* params)
79     {
80     params->ajouter("Niveau","3",OT_PARAMETRES::DOUBLE,"Niveau du maillage : 1D [1], 2D [2], 3D [3]");
81     params->ajouter("Niveau_opt_2d","5",OT_PARAMETRES::DOUBLE,"Limite supérieure des mailles à optimiser");
82     params->ajouter("Niveau_opt_3d","2",OT_PARAMETRES::DOUBLE,"Limite supérieure des mailles à optimiser");
83     params->ajouter("Priorite_metrique","0.65",OT_PARAMETRES::DOUBLE,"Valeur de la prise en compte de la métrique versus la qualité");
84     params->ajouter("Analyse","0",OT_PARAMETRES::DOUBLE,"Analyse de la qualité du maillage après le maillage : Analyse [1]");
85     }
86    
87     void PARAMETRES::ini_param_mailleur_fem(OT_PARAMETRES* params)
88     {
89     params->ajouter("Degre","2",OT_PARAMETRES::DOUBLE,"Degre du maillage a creer");
90     params->ajouter("Analyse","0",OT_PARAMETRES::DOUBLE,"Analyse de la qualité du maillage après le maillage : Analyse [1]");
91     params->ajouter("Optimisation_num_noeud","0",OT_PARAMETRES::DOUBLE,"Optimisation de la numerotation des noeuds : Optimisation [1]");
92     }
93    
94     void PARAMETRES::ini_param_etude(OT_PARAMETRES* params, int type_etude)
95     {
96     params->ajouter("Nom_etude","etude_1",OT_PARAMETRES::STRING,"Nom de l'etude");
97     params->ajouter("Fichier_param_aster","param_aster.txt",OT_PARAMETRES::STRING,"Nom du fichier de parametres aster");
98     params->ajouter("Type_etude",type_etude,OT_PARAMETRES::DOUBLE,"Type d'etude : Mecanique [0], Thermique [1]");
99     params->ajouter("Type_calcul","0",OT_PARAMETRES::DOUBLE,"Type de calcul : Elastique [0]");
100     params->ajouter("Code_resu","11111111",OT_PARAMETRES::STRING,"Code de resolution");
101     if(type_etude==VES::TYPE_ETUDE::MECANIQUE)
102     {
103     params->ajouter("Type_Chargement","0",OT_PARAMETRES::DOUBLE,"Type de chargement : Spherique [0], Deviatorique [1]");
104     params->ajouter("Type_CL","0",OT_PARAMETRES::DOUBLE,"Type de conditions aux limites : CLDH [0], CLCH[1]");
105     params->ajouter("Valeur_CL","0.0001",OT_PARAMETRES::DOUBLE,"Valeur de la condition aux limites");
106     }
107     }
108    
109     void PARAMETRES::ini_param_homogeneisation(OT_PARAMETRES* params)
110     {
111     params->ajouter("Fraction_volumique_CAD",0,OT_PARAMETRES::DOUBLE,"Calculer la fraction volumique CAD d'un groupe de forme [1]");
112     params->ajouter("Fraction_volumique_mg_maillage",0,OT_PARAMETRES::DOUBLE,"Calculer la fraction volumique du mg_maillage d'un groupe de forme [1]");
113     params->ajouter("Fraction_volumique_fem_maillage",0,OT_PARAMETRES::DOUBLE,"Calculer la fraction volumique du fem_maillage d'un groupe de forme [1]");
114     params->ajouter("Tenseur_orientation",0,OT_PARAMETRES::DOUBLE,"Calculer le tenseur d'orientation d'un groupe de forme [1]");
115     params->ajouter("Comparer_champ_theorie",0,OT_PARAMETRES::DOUBLE,"Comparer un champ par rapport a un champ theorique [1]");
116     params->ajouter("Critere_comparaison",0,OT_PARAMETRES::DOUBLE,"Erreur moyenne absolue [0], Erreur moyenne au carre [2]");
117     params->ajouter("Moyenne_volumique_champ",0,OT_PARAMETRES::DOUBLE,"Calculer la moyenne volumique d'un champ [1]");
118     params->ajouter("Num_solution",0,OT_PARAMETRES::DOUBLE,"Numero de la solution");
119     params->ajouter("Nom_champ","Sigma",OT_PARAMETRES::STRING,"Nom du champ");
120     params->ajouter("Nom_groupe_forme","NULL",OT_PARAMETRES::STRING,"Nom du groupe d'inclusion. Si [NULL] prend le ves au complet");
121     params->ajouter("Boite_analyse",0,OT_PARAMETRES::DOUBLE,"Calculer à partir des elements donc le centre de la boite englobante figure dans la boite d'analyse");
122     params->ajouter("Boite3D_analyse_Xmin","0.1",OT_PARAMETRES::DOUBLE,"Xmin boite3D d'analyse");
123     params->ajouter("Boite3D_analyse_Ymin","0.1",OT_PARAMETRES::DOUBLE,"Ymin boite3D d'analyse");
124     params->ajouter("Boite3D_analyse_Zmin","0.1",OT_PARAMETRES::DOUBLE,"Zmin boite3D d'analyse");
125     params->ajouter("Boite3D_analyse_Xmax","0.9",OT_PARAMETRES::DOUBLE,"Xmax boite3D d'analyse");
126     params->ajouter("Boite3D_analyse_Ymax","0.9",OT_PARAMETRES::DOUBLE,"Ymax boite3D d'analyse");
127     params->ajouter("Boite3D_analyse_Zmax","0.9",OT_PARAMETRES::DOUBLE,"Zmax boite3D d'analyse");
128     params->ajouter("Exporter_liste_resultat","0",OT_PARAMETRES::DOUBLE,"Exporter une liste de resultats");
129     params->ajouter("Fichier_liste_resultat","fichier_liste_resultat.txt",OT_PARAMETRES::STRING,"Exporter une liste de resultats");
130     params->ajouter("Val_champ_theorique_XX","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique XX");
131     params->ajouter("Val_champ_theorique_YY","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique YY");
132     params->ajouter("Val_champ_theorique_ZZ","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique ZZ");
133     params->ajouter("Val_champ_theorique_XY","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique XY");
134     params->ajouter("Val_champ_theorique_XZ","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique XZ");
135     params->ajouter("Val_champ_theorique_YZ","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique YZ");
136     }
137    
138     int PARAMETRES::generer_fichier_parametres(char* nom_dossier_param)
139     {
140     int mkdir_err=0;
141     std::string sys_command = "mkdir "; sys_command.append(nom_dossier_param);
142     mkdir_err = system(sys_command.c_str());
143     if(mkdir_err !=0)
144     {
145     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametres! ***" << std::endl;
146     return FAIL;
147     }
148     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/geometrie");
149     mkdir_err = system(sys_command.c_str());
150     if(mkdir_err !=0)
151     {
152     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametres/geometrie ! ***" << std::endl;
153     return FAIL;
154     }
155     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/materiau");
156     mkdir_err = system(sys_command.c_str());
157     if(mkdir_err !=0)
158     {
159     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/materiau ! ***" << std::endl;
160     return FAIL;
161     }
162     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/carte");
163     mkdir_err = system(sys_command.c_str());
164     if(mkdir_err !=0)
165     {
166     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametres/carte ! ***" << std::endl;
167     return FAIL;
168     }
169     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/maillage");
170     mkdir_err = system(sys_command.c_str());
171     if(mkdir_err !=0)
172     {
173     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/maillage ! ***" << std::endl;
174     return FAIL;
175     }
176     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/fem_maillage");
177     mkdir_err = system(sys_command.c_str());
178     if(mkdir_err !=0)
179     {
180     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/fem_maillage ! ***" << std::endl;
181     return FAIL;
182     }
183     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/etude");
184     mkdir_err = system(sys_command.c_str());
185     if(mkdir_err !=0)
186     {
187     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/etude ! ***" << std::endl;
188     return FAIL;
189     }
190     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/homogeneisation");
191     mkdir_err = system(sys_command.c_str());
192     if(mkdir_err !=0)
193     {
194     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/homogeneisation ! ***" << std::endl;
195     return FAIL;
196     }
197     std::ofstream f;
198     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/geometrie/lstparam_geo.txt");
199     f.open(sys_command.c_str(),ios::out);
200     f << "// Fichier de parametres GEOMETRIE" << std::endl;
201     f << "// [Nombre de fichier de parametres]" << std::endl;
202     f << "NB_FICHIER_PARAM 2" << std::endl;
203     f << "param_geo_sphere.txt" << std::endl;
204     f << "param_geo_cylindre.txt" << std::endl;
205     f.close();
206     OT_PARAMETRES params_geo_1;
207     ini_param_generateur_rsa(&params_geo_1,GENERATEUR_RSA::TYPE_INCLUSION::SPHERE,(char*)"Sphere");
208     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/geometrie/param_geo_sphere.txt");
209     params_geo_1.enregistrer((char*)sys_command.c_str());
210     OT_PARAMETRES params_geo_2;
211     ini_param_generateur_rsa(&params_geo_2,GENERATEUR_RSA::TYPE_INCLUSION::CYLINDRE,(char*)"Cylindre");
212     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/geometrie/param_geo_cylindre.txt");
213     params_geo_2.enregistrer((char*)sys_command.c_str());
214    
215     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/materiau/lstparam_mat.txt");
216     f.open(sys_command.c_str(),ios::out);
217     f << "// Fichier de parametres MATERIAU" << std::endl;
218     f << "// [Nombre de fichier de parametres]" << std::endl;
219     f << "NB_FICHIER_PARAM 3" << std::endl;
220     f << "param_mat_sphere.txt" << std::endl;
221     f << "param_mat_cylindre.txt" << std::endl;
222     f << "param_mat_matrice.txt" << std::endl;
223     f.close();
224     OT_PARAMETRES params_mat_sphere;
225     ini_param_materiau(&params_mat_sphere,(char*)"Sphere");
226     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/materiau/param_mat_sphere.txt");
227     params_mat_sphere.enregistrer((char*)sys_command.c_str());
228     OT_PARAMETRES params_mat_cylindre;
229     ini_param_materiau(&params_mat_cylindre,(char*)"Cylindre");
230     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/materiau/param_mat_cylindre.txt");
231     params_mat_cylindre.enregistrer((char*)sys_command.c_str());
232     OT_PARAMETRES params_mat_matrice;
233     ini_param_materiau(&params_mat_matrice,(char*)"Matrice");
234     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/materiau/param_mat_matrice.txt");
235     params_mat_matrice.enregistrer((char*)sys_command.c_str());
236    
237     OT_PARAMETRES params_carte;
238     ini_param_carte_taille(&params_carte);
239     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/carte/param_carte.txt");
240     params_carte.enregistrer((char*)sys_command.c_str());
241    
242     OT_PARAMETRES params_maill;
243     ini_param_mailleur(&params_maill);
244     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/maillage/param_maill.txt");
245     params_maill.enregistrer((char*)sys_command.c_str());
246    
247     OT_PARAMETRES params_fem_maillage;
248     ini_param_mailleur_fem(&params_fem_maillage);
249     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/fem_maillage/param_fem_maill.txt");
250     params_fem_maillage.enregistrer((char*)sys_command.c_str());
251    
252     OT_PARAMETRES params_etude;
253     ini_param_etude(&params_etude,VES::TYPE_ETUDE::MECANIQUE);
254     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/etude/param_etude.txt");
255     params_etude.enregistrer((char*)sys_command.c_str());
256    
257     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/homogeneisation/lstparam_homogeneisation.txt");
258     f.open(sys_command.c_str(),ios::out);
259     f << "// Fichier de parametres HOMOGENEISATION" << std::endl;
260     f << "// Nombre de fichier de parametres" << std::endl;
261     f << "NB_FICHIER_PARAM 1" << std::endl;
262     f << "param_homogeneisation_1.txt" << std::endl;
263     f.close();
264     OT_PARAMETRES params_homogeneisation_1;
265     ini_param_homogeneisation(&params_homogeneisation_1);
266     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/homogeneisation/param_homogeneisation_1.txt");
267     params_homogeneisation_1.enregistrer((char*)sys_command.c_str());
268    
269     return OK;
270     }
271    
272     int PARAMETRES::importer_fichier_parametres(char* fichier, OT_PARAMETRES* params)
273     {
274     params->lire(fichier);
275     }
276    
277     int PARAMETRES::importer_fichier_liste_parametres(char* fichier, std::vector< OT_PARAMETRES* >& vector_params)
278     {
279     std::string str_fichier = fichier;
280     std::size_t found = str_fichier.rfind((char*)"/");
281     std::string chemin;
282     if(found!=-1)
283     {
284     chemin = str_fichier.substr(0,found+1);
285     }
286     else chemin = "";
287     FILE* in=fopen(fichier,"rt");
288     char ligne[4000];
289     while(!feof(in))
290     {
291     fgets(ligne,4000,in);
292     char *aide = strstr(ligne,"//");
293     if(aide==NULL)
294     {
295     char message[500];
296     int nb_fichier_param=0;
297     sscanf(ligne,"%s %i ",message,&nb_fichier_param);
298     if(strcmp(message,"NB_FICHIER_PARAM")==0)
299     {
300     for(int i=0;i<nb_fichier_param;i++)
301     {
302     fgets(ligne,4000,in);
303     if(feof(in)) std::cerr << "*** PARAMETRES::PARAMETRES::importer_fichier_liste_parametres : Erreur de lecture ! ***" << std::endl;
304     char sous_fichier[500];
305     sscanf(ligne,"%s",sous_fichier);
306     OT_PARAMETRES *param = new OT_PARAMETRES;
307     std::string str_sous_fichier = chemin;
308     str_sous_fichier.append(sous_fichier);
309     param->lire((char*)str_sous_fichier.c_str());
310     vector_params.push_back(param);
311     }
312     }
313     }
314     }
315     }