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

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-sca...

Full description

Saved in:
Bibliographic Details
Published in:Computer physics communications Vol. 308; p. 109442
Main Authors: Lu, Jiayin, Rycroft, Chris H.
Format: Journal Article
Language:English
Published: United States Elsevier B.V 01.03.2025
Elsevier
Subjects:
ISSN:0010-4655
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary: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 104 to 107 points. TriMe++ can handle complicated geometries and generates adaptive meshes of high quality. Program title:TriMe++ CPC Library link to program files:https://doi.org/10.17632/jxcsxtywtw.1 Developer's repository link:https://github.com/jiayinlu19960224/TriMe Licensing provisions: BSD 3-clause Programming language: C++ External routines/libraries: OpenMP, multi-threaded Voro++ Nature of problem: Multi-threaded geometry meshing in two dimension using the Delaunay triangulation Solution method: The TriMe++ library is built around several C++ classes that follows a structured meshing pipeline. During initialization, the shape_2d class reads the geometry input and generates a signed distance field using a grid-based data structure to represent the shape. The sizing_2d class subsequently produces adaptive element sizing and density fields for the mesh. It uses an adaptive quad-tree data structure, enabling efficient refinement of sizing and density values in areas with complex geometries. In the meshing procedure, the parallel_meshing_2d class iteratively improves point positions in the mesh. In each meshing iteration, the multi-threaded Voro++ library generates the Delaunay triangulation of the points. Users can select from three meshing algorithms, the DistMesh algorithm in the mesh_alg_2d_dm class, the centroidal Voronoi diagram meshing algorithm in the mesh_alg_2d_cvd class, and a hybrid method of the two in the mesh_alg_2d_hybrid class Throughout this meshing workflow, we use OpenMP for multi-threaded parallel computations.
Bibliography:USDOE Office of Science (SC), Advanced Scientific Computing Research (ASCR)
AC02-05CH11231
None
ISSN:0010-4655
DOI:10.1016/j.cpc.2024.109442