[Gmsh] Possible problems with find_edge function
Vazquez Sabariego Ruth
R.Sabariego at ulg.ac.be
Fri May 29 09:39:14 CEST 2009
Could you send the example that causes the problem?
Ruth
> Hello,
>
> Here is the piece of original code from gmsh in BDS.cpp. Although I am not
> quite sure, but
> feel that there might be some unintentional problems with the code.
>
> (1) Problem #1: find_edge is a query function and it has created
> temporary instance of
> BDS_Edge. When created, it changes the
> structure
> ( i.e. add edge to the
> point). Since there are no destructor in the
> BDS_Edge those change may
> persist forever.
>
> (2) Problem #2: Looks like the edges are undirectional. Why the
> reverse
> edge points
> are not checked ? There are some cases, where I
> found that we query
> for {p1,p2} and in the triangle reverse edge (
> p2,p1) is available.
>
>
> BDS_Edge *BDS_Mesh::find_edge(BDS_Point *p1, BDS_Point *p2, BDS_Face *t)
> const
> {
> BDS_Point P1(p1->iD);
> BDS_Point P2(p2->iD);
>
> BDS_Edge E(&P1, &P2);
>
> if(t->e1->p1->iD == E.p1->iD && t->e1->p2->iD == E.p2->iD)
> return t->e1;
> if(t->e2->p1->iD == E.p1->iD && t->e2->p2->iD == E.p2->iD)
> return t->e2;
> if(t->e3->p1->iD == E.p1->iD && t->e3->p2->iD == E.p2->iD)
> return t->e3;
> return 0;
> }
>
> Can someone clarify my doubts ?
>
> Thanks.
>
> Chaman Singh Verma
>
> Poona, India
> _______________________________________________
> gmsh mailing list
> gmsh at geuz.org
> http://www.geuz.org/mailman/listinfo/gmsh
>