68 LISTE_FEM_NOEUD::iterator it;
81 LISTE_FEM_ELEMENT2::iterator it2;
98 double xyz[3]={x,y,z};
101 double *xyz1=ele->get_fem_noeud(i)->get_coord();
103 ele->get_fem_noeud(i)->change_solution(vec.
get_longueur());
110 sprintf(mess,
" Le point %lf, %lf, %lf n'a pas pu être initialisé",x,y,z) ;
129 double xyz[3]={x,y,z};
131 ele->get_param_element_fini_2D(xyz,uvw);
133 for (
int i=0;i<ele->get_nb_fem_noeud();i++)
134 val=val+ele->get_fonction_interpolation(i+1,uvw)*ele->get_fem_noeud(i)->get_solution();
139 sprintf(mess,
" Le point %lf, %lf, %lf n'a pas pu être lu",x,y,z) ;
155 for (
int i=0;i<nb;i++)
173 LISTE_FEM_ELEMENT2::iterator it;
176 int nb=ele->get_nb_fem_noeud();
178 for (
int i=0;i<nb;i++)
179 if (ele->get_fem_noeud(i)->get_solution()<
INFINI)
182 ele->get_fem_noeud(i)->change_numero(-1);
184 else ele->get_fem_noeud(i)->change_numero(1);
185 if ((nbsol==0)||(nbsol==1)) far.
ajouter(ele);
186 if (nbsol==2) trial.
ajouter(ele);
187 if (nbsol==3) know.
ajouter(ele);
188 ele->change_numero(nbsol);
190 std::multimap<double,FEM_NOEUD*> trialnoeud;
191 std::map<FEM_NOEUD*,std::multimap<double,FEM_NOEUD*>::iterator> trialnoeud2;
193 for (
int i=0;i<trial.
get_nb();i++)
201 std::map<FEM_NOEUD*,std::multimap<double,FEM_NOEUD*>::iterator>::iterator itf=trialnoeud2.find(no);
202 if (itf!=trialnoeud2.end())
204 trialnoeud.erase(itf->second);
205 trialnoeud2.erase(itf);
207 std::pair<double,FEM_NOEUD*> p(
res,no);
208 std::multimap<double,FEM_NOEUD*>::iterator it=trialnoeud.insert(p);
209 std::pair<FEM_NOEUD*,std::multimap<double,FEM_NOEUD*>::iterator > p2(no,it);
210 trialnoeud2.insert(p2);
214 while (trialnoeud.size()!=0)
217 if (compteur>10000000)
return;
218 bool globalerreur=
false;
219 if (next==NULL) next=trialnoeud.begin()->second;
224 std::vector<FEM_ELEMENT2*> lst;
229 for (
int i=0;i<nbele;i++)
237 if (nbnum>3) nbnum=3;
246 std::map<FEM_NOEUD*,std::multimap<double,FEM_NOEUD*>::iterator>::iterator it=trialnoeud2.find(nvno);
247 if (it!=trialnoeud2.end())
249 trialnoeud.erase(it->second);
250 trialnoeud2.erase(it);
252 std::pair<double,FEM_NOEUD*> p(T,nvno);
253 std::multimap<double,FEM_NOEUD*>::iterator it2=trialnoeud.insert(p);
254 std::pair<FEM_NOEUD*,std::multimap<double,FEM_NOEUD*>::iterator > p2(nvno,it2);
255 trialnoeud2.insert(p2);
260 if (globalerreur==
false)
262 std::map<FEM_NOEUD*,std::multimap<double,FEM_NOEUD*>::iterator>::iterator it=trialnoeud2.find(no);
263 if (it!=trialnoeud2.end())
265 trialnoeud.erase(it->second);
266 trialnoeud2.erase(it);
297 for (
int i=0;i<3;i++)
301 if (
sol<solmin) {solmin=
sol;nummin=i;}
307 double ax=noa->
get_x();
308 double ay=noa->
get_y();
309 double az=noa->
get_z();
310 double bx=nob->
get_x();
311 double by=nob->
get_y();
312 double bz=nob->
get_z();
313 double dx=noc->
get_x();
314 double dy=noc->
get_y();
315 double dz=noc->
get_z();
319 erreur=
val2d(ax,ay,az,bx,by,bz,dx,dy,dz,at,bt,v,(*
res),alpha);