Table of Contents
Fetching ...

TriMe++: Multi-threaded triangular meshing in two dimensions

Jiayin Lu, Chris H. Rycroft

TL;DR

TriMe++ introduces a 2D multi-threaded meshing library that generates high-quality adaptive meshes using Delaunay triangulation. It integrates DistMesh, centroidal Voronoi diagram (CVD) meshing via Lloyd's algorithm, and a hybrid approach, all powered by a multi-threaded Voro++ backbone for parallel Voronoi/Delaunay computations. The framework demonstrates significant parallel speedups for large-scale meshes ($10^4$ to $10^7$ points) and provides comprehensive performance comparisons against PyDistMesh and CGAL across uniform, adaptive, and complex shapes (e.g., a North America map). It also outlines extensions to MPI/GPU and 3D meshing, and proposes improvements to the geometry grid and adaptive strategies to further boost efficiency and quality.

Abstract

We present TriMe++, a multi-threaded software library designed for generating two-dimensional meshes for intricate geometric shapes using the Delaunay triangulation. Multi-threaded parallel computing is implemented throughout the meshing procedure, making it suitable for fast generation of large-scale meshes. Three iterative meshing algorithms are implemented: the DistMesh algorithm, the centroidal Voronoi diagram meshing, and a hybrid of the two. We compare the performance of the three meshing methods in TriMe++, and show that the hybrid method retains the advantages of the other two. The software library achieves significant parallel speedup when generating large-scale meshes containing between $10^4$ to $10^7$ points. TriMe++ can handle complicated geometries and generates adaptive meshes of high quality.

TriMe++: Multi-threaded triangular meshing in two dimensions

TL;DR

TriMe++ introduces a 2D multi-threaded meshing library that generates high-quality adaptive meshes using Delaunay triangulation. It integrates DistMesh, centroidal Voronoi diagram (CVD) meshing via Lloyd's algorithm, and a hybrid approach, all powered by a multi-threaded Voro++ backbone for parallel Voronoi/Delaunay computations. The framework demonstrates significant parallel speedups for large-scale meshes ( to points) and provides comprehensive performance comparisons against PyDistMesh and CGAL across uniform, adaptive, and complex shapes (e.g., a North America map). It also outlines extensions to MPI/GPU and 3D meshing, and proposes improvements to the geometry grid and adaptive strategies to further boost efficiency and quality.

Abstract

We present TriMe++, a multi-threaded software library designed for generating two-dimensional meshes for intricate geometric shapes using the Delaunay triangulation. Multi-threaded parallel computing is implemented throughout the meshing procedure, making it suitable for fast generation of large-scale meshes. Three iterative meshing algorithms are implemented: the DistMesh algorithm, the centroidal Voronoi diagram meshing, and a hybrid of the two. We compare the performance of the three meshing methods in TriMe++, and show that the hybrid method retains the advantages of the other two. The software library achieves significant parallel speedup when generating large-scale meshes containing between to points. TriMe++ can handle complicated geometries and generates adaptive meshes of high quality.
Paper Structure (38 sections, 14 equations, 32 figures, 7 tables, 4 algorithms)

This paper contains 38 sections, 14 equations, 32 figures, 7 tables, 4 algorithms.

Figures (32)

  • Figure 1: An example Voronoi tessellation for a set of discrete points in a two-dimensional space. The corresponding Delaunay triangulation is obtained by connecting points sharing the same Voronoi cell edges. A cricumcircle for one of the triangles is drawn in the plot. For a Delaunay triangle, no other points are in its circumcircle.
  • Figure 2: Two types of badly shaped tiangles in 2D: (a) a needle-type triangle, with one very small angle, and (b) a flat-type triangle with one very large angle.
  • Figure 3: The cell-based approach to construct Voronoi diagram: For each point, when considering a neighboring point, we cut the point's original Voronoi cell with the associated half-space. The process is repeated until all neighboring points are found. In the end, all individual Voronoi cells are put together to obtain the Voronoi diagram.
  • Figure 4: In DistMesh, the triangle edges that connect points are modeled as springs with repulsive forces, which push points outwards to fill out the geometry domain. A point experiences internal spring forces acting on it by its neighbors. In addition, the geometry boundaries exert normal forces pushing points inwards, so that points cannot be outside of the geometry.
  • Figure 5: Lloyd's algorithm to generate a CVD: (a) Initial random points and their Voronoi diagram. (b) In an iteration $i$, points move to the locations of their Voronoi cell centroids. (c), (d) Point positions and their Voronoi diagrams after $10$ and $20$ iterations, respectively.
  • ...and 27 more figures