49 sprintf(chaine2,
"%s0_fm.sol",chaine);
54 for (
int i=0;i<nbpt;i++)
57 sprintf(numlevel,
"L%d",i+1);
120 parse.
decode(entite,
"&",param);
123 for (
int i=0;i<nb;i++)
125 int num=atoi(param[0].argument[i].c_str());
131 for (
int j=0;j<nbele;j++)
140 int nbnoeudinit=
lst.size();
141 if (nbnoeudinit!=2)
return false;
148 parse.
decode(entite,
"@,@,@,@,@,@",param);
149 lstdouble.push_back(atof(param[0].argument[0].c_str()));
150 lstdouble.push_back(atof(param[1].argument[0].c_str()));
151 lstdouble.push_back(atof(param[2].argument[0].c_str()));
152 lstdouble.push_back(atof(param[3].argument[0].c_str()));
153 lstdouble.push_back(atof(param[4].argument[0].c_str()));
154 lstdouble.push_back(atof(param[5].argument[0].c_str()));
169 std::vector<FEM_NOEUD*> lst2;
170 lst2.push_back(
lst[num]);
182 int nbval=lstpoints.size()/3;
183 for (
int i=0;i<nbval;i++)
185 valA=fm.
get_valeur(lstpoints[3*i+0],lstpoints[3*i+1],lstpoints[3*i+2]);
186 lstpoints.push_back(valA);
195 int nb=lstpoint.size()/3;
196 for (
int i=0;i<nb;i++)
197 for (
int j=0;j<nb;j++)
199 for (
int i=0;i<nb;i++)
201 std::vector<double>
lst=lstpoint;
202 lst.erase(
lst.begin()+3*i,
lst.begin()+3*i+3);
203 calcul_fm(i,lstpoint[3*i],lstpoint[3*i+1],lstpoint[3*i+2],
lst);
205 for (
int j=0;j<nb;j++)
208 double val=
lst[3*nb-3+ii];
214 for (
int i=0;i<nb;i++)
215 for (
int j=i+1;j<nb;j++)
220 matdist[i*nb+j]=matdist[i*nb+j]+matdist[j*nb+i]-vala-valb;
221 matdist[j*nb+i]=matdist[i*nb+j];
227 std::vector<double>
lst;
228 double xdep,ydep,zdep;
252 double longueur=valA+valB-vala-valb;
270 LISTE_FEM_NOEUD::iterator itn;
273 double val=
sol->
lire(ligne,num3);
274 no->change_solution(val,1);
276 no->change_solution(val,2);
278 no->change_solution(val,3);
283 LISTE_FEM_ELEMENT2::iterator it;
287 double val1=ele->get_fem_noeud(0)->get_solution();
288 double val2=ele->get_fem_noeud(1)->get_solution();
289 double val3=ele->get_fem_noeud(2)->get_solution();
290 if ((val1-limit)*(val2-limit)<1e-12)
292 double t=(limit-val1)/(val2-val1);
293 double val1apb=ele->get_fem_noeud(0)->get_solution(1);
294 double val2apb=ele->get_fem_noeud(1)->get_solution(1);
295 double valApB=val1apb+t*(val2apb-val1apb);
299 double val1a=ele->get_fem_noeud(0)->get_solution(2);
300 double val2a=ele->get_fem_noeud(1)->get_solution(2);
301 vala=val1a+t*(val2a-val1a);
302 double val1b=ele->get_fem_noeud(0)->get_solution(3);
303 double val2b=ele->get_fem_noeud(1)->get_solution(3);
304 valb=val1b+t*(val2b-val1b);
305 xm=ele->get_fem_noeud(0)->get_x()+t*(ele->get_fem_noeud(1)->get_x()-ele->get_fem_noeud(0)->get_x());
306 ym=ele->get_fem_noeud(0)->get_y()+t*(ele->get_fem_noeud(1)->get_y()-ele->get_fem_noeud(0)->get_y());
307 zm=ele->get_fem_noeud(0)->get_z()+t*(ele->get_fem_noeud(1)->get_z()-ele->get_fem_noeud(0)->get_z());
310 if ((val2-limit)*(val3-limit)<1e-12)
312 double t=(limit-val2)/(val3-val2);
313 double val2apb=ele->get_fem_noeud(1)->get_solution(1);
314 double val3apb=ele->get_fem_noeud(2)->get_solution(1);
315 double valApB=val2apb+t*(val3apb-val2apb);
319 double val2a=ele->get_fem_noeud(1)->get_solution(2);
320 double val3a=ele->get_fem_noeud(2)->get_solution(2);
321 vala=val2a+t*(val3a-val2a);
322 double val2b=ele->get_fem_noeud(1)->get_solution(3);
323 double val3b=ele->get_fem_noeud(2)->get_solution(3);
324 valb=val2b+t*(val3b-val2b);
325 xm=ele->get_fem_noeud(1)->get_x()+t*(ele->get_fem_noeud(2)->get_x()-ele->get_fem_noeud(1)->get_x());
326 ym=ele->get_fem_noeud(1)->get_y()+t*(ele->get_fem_noeud(2)->get_y()-ele->get_fem_noeud(1)->get_y());
327 zm=ele->get_fem_noeud(1)->get_z()+t*(ele->get_fem_noeud(2)->get_z()-ele->get_fem_noeud(1)->get_z());
330 if ((val1-limit)*(val3-limit)<1e-12)
332 double t=(limit-val1)/(val3-val1);
333 double val1apb=ele->get_fem_noeud(0)->get_solution(1);
334 double val3apb=ele->get_fem_noeud(2)->get_solution(1);
335 double valApB=val1apb+t*(val3apb-val1apb);
339 double val1a=ele->get_fem_noeud(0)->get_solution(2);
340 double val3a=ele->get_fem_noeud(2)->get_solution(2);
341 vala=val1a+t*(val3a-val1a);
342 double val1b=ele->get_fem_noeud(0)->get_solution(3);
343 double val3b=ele->get_fem_noeud(2)->get_solution(3);
344 valb=val1b+t*(val3b-val1b);
345 xm=ele->get_fem_noeud(0)->get_x()+t*(ele->get_fem_noeud(2)->get_x()-ele->get_fem_noeud(0)->get_x());
346 ym=ele->get_fem_noeud(0)->get_y()+t*(ele->get_fem_noeud(2)->get_y()-ele->get_fem_noeud(0)->get_y());
347 zm=ele->get_fem_noeud(0)->get_z()+t*(ele->get_fem_noeud(2)->get_z()-ele->get_fem_noeud(0)->get_z());
353 sprintf(mess,
" Le point milieu x=%lf, y=%lf, z=%lf la demi longueur de la LS1=%f la demi longueur de la LS2=%f ",xm,ym,zm,vala,valb) ;