Sorry for the delay, I was a bit busy fixing other stuff and could only look at TetGen today.
Good news is that exchanging TetGen 1.4 for TetGen 1.5 no longer enters an infinite loop ... bad news is that I'm getting some bad triangulations now (checked the same code with the older cluster and TetGen 1.4). I think I'll fall back to CGAL for now, and maybe later try my hand with ctetgen. Cheers, Thiago Milanetto Schlittler On 26/09/16 16:22, John Peterson wrote: > > > On Sat, Sep 24, 2016 at 9:19 AM, Thiago Milanetto Schlittler > <thiago...@gmail.com <mailto: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 > <http://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 > <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 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Libmesh-users mailing list Libmesh-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-users