On Sat, Sep 24, 2016 at 9:19 AM, Thiago Milanetto Schlittler <
thiago...@gmail.com> wrote:

> Hello!
>
>     I'm having a weird problem with the method "triangulate_pointset()",
> from the TetGenMeshInterface class. Essentially, it seems like it is
> stalling after several calls. In my code, I have to calculate several
> polyhedron intersections and mesh them. To do so, I built a
> Mesh_Intersection class, which has the following method:
>
> void Mesh_Intersection::triangulate_intersection(const
> std::set<libMesh::Point> & input_points)
> {
>      /*
>       * input_points             : set containing the intersection
>       *                            polyhedron's vertices.
>       * m_libMesh_PolyhedronMesh : a libMesh::Mesh, member of the
> Mesh_Intersection
>       * cleared when calling this method.
>       */
>
>      m_libMesh_PolyhedronMesh.clear();
>
>      // Insert points into the mesh
>      for(std::set<libMesh::Point>::const_iterator it_set =
> input_points.begin();
>              it_set != input_points.end();
>              ++it_set)
>      {
>          m_libMesh_PolyhedronMesh.add_point(*it_set);
>      }
>
>      libMesh::TetGenMeshInterface
> temp_tetgen_interface(m_libMesh_PolyhedronMesh);
>      temp_tetgen_interface.triangulate_pointset();
> }
>
>     The code stalls at the last line. I already tested the input_points,
> and they are valid. I'm using libMesh 1.0.0, compiled with Intel icpc v.
> 16.0.3 and Intel MPI v. 5.1.2, on Linux. The m_libMesh_PolyhedronMesh is
> associated to a single processor. I don't think that it is a
> communicator problem because it happens even with only one processor. I
> think that the problem is associated to the compiler, since it works
> well on a machine where I used gcc 4.9. Did anyone else have a similar
> problem?
>

Yes, I have seen tetgen go into an infinite loop before, but due to the
complexity of the Tetgen codebase, was not really able to determine why at
the time.  If I recall correctly, the problem was also
architecture/compiler dependent, and the mesh generation problem itself was
not complicated, i.e. just looking at the geometry, you would not think
that mesh generation would be an issue.  I tried searching back through my
email for some thread that would have more information on this, but could
not find anything...

If tetgen is important to your application, you may want to try updating
it.  We are still apparently using version 1.4.1 from back in 2006, but
there is a version 1.5 available from the tetgen.org website.  Another
possibility you might want to investigate is the PETSc team's C-based
rewrite of Tetgen, called ctetgen (https://bitbucket.org/petsc/ctetgen).  I
get a ton of warnings when compiling Tetgen, and get the impression that it
is not the cleanest piece of code ever... if the PETSc guys decided to
entirely rewrite it and maintain a forked version, they probably had a
compelling reason to do so.  I would definitely be willing to switch to
ctetgen (we'll probably have to update some of our interface code slightly
to do so) but don't really have time to work on that myself.

-- 
John
------------------------------------------------------------------------------
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to