ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/addin/outil/src/ot_parametres.cpp
Revision: 1132
Committed: Fri Feb 16 15:46:17 2024 UTC (18 months, 1 week ago) by francois
File size: 6900 byte(s)
Log Message:
parametrage de la boite dans l'homogéinisation
Integration de la version de 15.6 de code aster dans un singularity

File Contents

# Content
1 #include <stdio.h>
2 #include <string.h>
3 #include <iostream>
4 #include "ot_parametres.h"
5 #include "ot_chaine.h"
6
7
8
9
10
11
12
13
14
15
16
17
18 OT_PARAMETRES::OT_PARAMETRES()
19 {
20 }
21
22 OT_PARAMETRES::OT_PARAMETRES(OT_PARAMETRES &mdd)
23 {
24 int taille=nom_param.size();
25 for (int i=0;i<taille;i++)
26 {
27 nom_param.insert(nom_param.end(),mdd.nom_param[i]);
28 valeur_param.insert(valeur_param.end(),mdd.valeur_param[i]);
29 aide_param.insert(aide_param.end(),mdd.aide_param[i]);
30 type_param.insert(type_param.end(),mdd.type_param[i]);
31 }
32 }
33
34
35 OT_PARAMETRES::~OT_PARAMETRES()
36 {
37 }
38
39
40 void OT_PARAMETRES::ajouter(std::string chaine,double valeur,int typep,std::string aide)
41 {
42 int res=get_num_param(chaine);
43 if (res==-1)
44 {
45 nom_param.insert(nom_param.end(),chaine);
46 char mess[255];
47 sprintf(mess,"%lf",valeur);
48 valeur_param.insert(valeur_param.end(),mess);
49 aide_param.insert(aide_param.end(),aide);
50 type_param.insert(type_param.end(),typep);
51 }
52 else
53 {
54 char mess[255];
55 sprintf(mess,"%lf",valeur);
56 valeur_param[res]=mess;
57 if (aide.length()>aide_param[res].length()) aide_param[res]=aide;
58 }
59 }
60
61 void OT_PARAMETRES::ajouter(std::string chaine,std::vector<double> &valeur,int typep,std::string aide)
62 {
63 int res=get_num_param(chaine);
64 if (res==-1)
65 {
66 nom_param.insert(nom_param.end(),chaine);
67 std::string chainetmp="";
68 for (int i=0;i<valeur.size();i++)
69 {
70 char mess[255];
71 sprintf(mess,"%lf",valeur[i]);
72 chainetmp=chainetmp+mess;
73 if (i!=valeur.size()-1) chainetmp=chainetmp+";" ;
74 }
75 valeur_param.insert(valeur_param.end(),chainetmp);
76 aide_param.insert(aide_param.end(),aide);
77 type_param.insert(type_param.end(),typep);
78 }
79 else
80 {
81 std::string chainetmp="";
82 for (int i=0;i<valeur.size();i++)
83 {
84 char mess[255];
85 sprintf(mess,"%lf",valeur[i]);
86 chainetmp=chainetmp+mess;
87 if (i!=valeur.size()-1) chainetmp=chainetmp+";" ;
88 }
89 valeur_param[res]=chainetmp;
90 if (aide.length()>aide_param[res].length()) aide_param[res]=aide;
91 }
92 }
93 void OT_PARAMETRES::ajouter(std::string chaine,std::string valeurstring,int typep,std::string aide)
94 {
95 int res=get_num_param(chaine);
96 if (res==-1)
97 {
98 nom_param.insert(nom_param.end(),chaine);
99 valeur_param.insert(valeur_param.end(),valeurstring);
100 aide_param.insert(aide_param.end(),aide);
101 type_param.insert(type_param.end(),typep);
102 }
103 else
104 {
105 valeur_param[res]=valeurstring;
106 if (aide.length()>aide_param[res].length()) aide_param[res]=aide;
107 }
108
109 }
110
111 void OT_PARAMETRES::enregistrer(char *nom)
112 {
113 FILE* in=fopen(nom,"wt");
114 int taille=nom_param.size();
115 for (int i=0;i<taille;i++)
116 fprintf(in,"%s = %s //%s\n",nom_param[i].c_str(),valeur_param[i].c_str(),aide_param[i].c_str());
117 taille=params.size();
118 for (int i=0;i<taille;i++)
119 fprintf(in,"-> %s\n",params[i].c_str());
120 fclose(in);
121 }
122
123 int OT_PARAMETRES::lire(char *nom)
124 {
125 FILE* in=fopen(nom,"rt");
126 if (in==NULL) return 0; // return FAIL
127 // if (in==NULL)
128 // {
129 // std::cerr << "*** OT_PARAMETRES::lire : Erreur de lecture du fichier (" << nom <<") ***" << std::endl;
130 // return;
131 // }
132 while (!feof(in))
133 {
134 char chaine[4000];
135 char* res=fgets(chaine,4000,in);
136 if (!feof(in))
137 {
138 char nom[255],c;
139 char nom2[255];
140 nom2[0]=0;
141 int nb=sscanf(chaine,"%s %s",nom,nom2);
142 if (nb==2)
143 if (strcmp(nom,"->")==0)
144 {
145 lire(nom2);
146 ajouter(nom2);
147 continue;
148 }
149 nb=sscanf(chaine,"%s %c %s",nom,&c,nom2);
150 if (nb!=3) continue;
151 double val;
152 char *aide=strstr(chaine,"//");
153 if (aide==NULL) aide=chaine+strlen(chaine)-1; else aide=aide+2;
154 for (int i=0;i<strlen(aide);i++)
155 if (aide[i]=='\n') aide[i]=0;
156 int num=sscanf(nom2,"%lf",&val);
157 if (num==1) ajouter(nom,nom2,DOUBLE,aide);
158 else ajouter(nom,nom2,STRING,aide);
159 }
160 }
161 fclose(in);
162 return 1; // return OK;
163 }
164
165 void OT_PARAMETRES::ajouter(std::string chaine)
166 {
167 params.push_back(chaine);
168 }
169
170
171 double OT_PARAMETRES::get_valeur(std::string chaine,int num)
172 {
173 int taille=nom_param.size();
174 for (int i=0;i<taille;i++)
175 {
176 std::string valtmp=nom_param[i];
177 if (valtmp==chaine)
178 {
179 OT_CHAINE opc;
180 std::vector<std::string> tab=opc.split(valeur_param[i],';');
181 double val;
182 sscanf(tab[num].c_str(),"%lf",&val);
183 return val;
184 }
185
186 }
187 return 0.;
188 }
189
190 void OT_PARAMETRES::change_valeur(std::string chaine,double val,int num)
191 {
192 int taille=nom_param.size();
193 for (int i=0;i<taille;i++)
194 {
195 std::string valtmp=nom_param[i];
196 if (valtmp==chaine)
197 {
198 OT_CHAINE opc;
199 std::vector<std::string> tab=opc.split(valeur_param[i],';');
200 char mess[255];
201 sprintf(mess,"%lf",val);
202 tab[num]=mess;
203 valeur_param[i]="";
204 for (int j=0;j<tab.size();j++)
205 {
206 valeur_param[i]=valeur_param[i]+tab[j];
207 if (i!=tab.size()-1)
208 valeur_param[i]=valeur_param[i]+";";
209
210 }
211 }
212
213 }
214 }
215
216 void OT_PARAMETRES::change_valeur(std::string chaine,std::string val)
217 {
218 int taille=nom_param.size();
219 for (int i=0;i<taille;i++)
220 {
221 std::string valtmp=nom_param[i];
222 if (valtmp==chaine)
223 {
224 valeur_param[i]=val;
225 }
226
227 }
228 }
229
230 int OT_PARAMETRES::get_num_param(std::string chaine)
231 {
232 int taille=nom_param.size();
233 for (int i=0;i<taille;i++)
234 {
235 std::string valtmp=nom_param[i];
236 if (valtmp==chaine)
237 {
238 return i;
239 }
240
241 }
242 return -1;
243 }
244
245
246 std::string OT_PARAMETRES::get_nom(std::string chaine)
247 {
248 int taille=nom_param.size();
249 for (int i=0;i<taille;i++)
250 {
251 std::string valtmp=nom_param[i];
252 if (valtmp==chaine)
253 {
254 return valeur_param[i];
255 }
256
257 }
258 return "";
259 }
260
261 int OT_PARAMETRES::get_type(std::string chaine)
262 {
263 int taille=nom_param.size();
264 for (int i=0;i<taille;i++)
265 {
266 std::string valtmp=nom_param[i];
267 if (valtmp==chaine)
268 {
269 return type_param[i];
270 }
271
272 }
273 return 0;
274 }
275 double OT_PARAMETRES::get_valeur(int num)
276 {
277 double val;
278 sscanf(valeur_param[num].c_str(),"%lf",&val);
279 return val;
280 }
281
282 std::string OT_PARAMETRES::get_nom(int num)
283 {
284 return nom_param[num];
285 }
286
287 int OT_PARAMETRES::get_type(int num)
288 {
289 return type_param[num];
290 }
291 int OT_PARAMETRES::get_nb(void)
292 {
293 return nom_param.size();
294 }
295
296
297 void OT_PARAMETRES::vide(void)
298 {
299 nom_param.clear();
300 valeur_param.clear();
301 aide_param.clear();
302 type_param.clear();
303 params.clear();
304 }
305