{"title":"TriMe++: Multi-threaded triangular meshing in two dimensions","authors":"Jiayin Lu , Chris H. Rycroft","doi":"10.1016/j.cpc.2024.109442","DOIUrl":null,"url":null,"abstract":"<div><div>We present <span>TriMe++</span>, 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 <span>TriMe++</span>, 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<sup>4</sup> to 10<sup>7</sup> points. <span>TriMe++</span> can handle complicated geometries and generates adaptive meshes of high quality.</div></div><div><h3>Program summary</h3><div><em>Program title:</em> <span>TriMe++</span></div><div><em>CPC Library link to program files:</em> <span><span>https://doi.org/10.17632/jxcsxtywtw.1</span><svg><path></path></svg></span></div><div><em>Developer's repository link:</em> <span><span>https://github.com/jiayinlu19960224/TriMe</span><svg><path></path></svg></span></div><div><em>Licensing provisions:</em> BSD 3-clause</div><div><em>Programming language:</em> C++</div><div><em>External routines/libraries:</em> OpenMP, multi-threaded <span>Voro++</span></div><div><em>Nature of problem:</em> Multi-threaded geometry meshing in two dimension using the Delaunay triangulation</div><div><em>Solution method:</em> The <span>TriMe++</span> library is built around several C++ classes that follows a structured meshing pipeline. During initialization, the <span>shape_2d</span> class reads the geometry input and generates a signed distance field using a grid-based data structure to represent the shape. The <span>sizing_2d</span> 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 <span>parallel_meshing_2d</span> class iteratively improves point positions in the mesh. In each meshing iteration, the multi-threaded <span>Voro++</span> library generates the Delaunay triangulation of the points. Users can select from three meshing algorithms, the DistMesh algorithm in the <span>mesh_alg_2d_dm</span> class, the centroidal Voronoi diagram meshing algorithm in the <span>mesh_alg_2d_cvd</span> class, and a hybrid method of the two in the <span>mesh_alg_2d_hybrid</span> class Throughout this meshing workflow, we use OpenMP for multi-threaded parallel computations.</div></div>","PeriodicalId":285,"journal":{"name":"Computer Physics Communications","volume":"308 ","pages":"Article 109442"},"PeriodicalIF":7.2000,"publicationDate":"2024-11-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Computer Physics Communications","FirstCategoryId":"101","ListUrlMain":"https://www.sciencedirect.com/science/article/pii/S0010465524003655","RegionNum":2,"RegionCategory":"物理与天体物理","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q1","JCRName":"COMPUTER SCIENCE, INTERDISCIPLINARY APPLICATIONS","Score":null,"Total":0}
引用次数: 0
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 104 to 107 points. TriMe++ can handle complicated geometries and generates adaptive meshes of high quality.
Program summary
Program title:TriMe++
CPC Library link to program files:https://doi.org/10.17632/jxcsxtywtw.1
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.
期刊介绍:
The focus of CPC is on contemporary computational methods and techniques and their implementation, the effectiveness of which will normally be evidenced by the author(s) within the context of a substantive problem in physics. Within this setting CPC publishes two types of paper.
Computer Programs in Physics (CPiP)
These papers describe significant computer programs to be archived in the CPC Program Library which is held in the Mendeley Data repository. The submitted software must be covered by an approved open source licence. Papers and associated computer programs that address a problem of contemporary interest in physics that cannot be solved by current software are particularly encouraged.
Computational Physics Papers (CP)
These are research papers in, but are not limited to, the following themes across computational physics and related disciplines.
mathematical and numerical methods and algorithms;
computational models including those associated with the design, control and analysis of experiments; and
algebraic computation.
Each will normally include software implementation and performance details. The software implementation should, ideally, be available via GitHub, Zenodo or an institutional repository.In addition, research papers on the impact of advanced computer architecture and special purpose computers on computing in the physical sciences and software topics related to, and of importance in, the physical sciences may be considered.