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(¶ms_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(¶ms_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(¶ms_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(¶ms_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(¶ms_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(¶ms_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(¶ms_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(¶ms_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(¶ms_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(¶ms_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 |
|
|
} |