Embarrassingly parallel mesh refinement by edge subdivision
We have previously proposed a new technique for the communication-free adaptive refinement of tetrahedral meshes that works for all configurations. Implementations of the scheme must deal with all possible geometric configurations, which results in a large number of cases that in turn result in practical programming issues. In this article, we address this issue with a Python script that generates C++ code using the symmetric group \({\mathfrak{S}}_{4}\) acting over canonical topological and geometric configurations. We then analyze the performance of the technique by characterizing (a) mesh quality, (b) execution time and parallel speedup, and (c) traits of the algorithm that could affect quality or execution time differently for different meshes and different mesh refinement strategies. This article also details the method used to debug the many subdivision templates that the algorithm relies upon. Mesh quality is on par with other similar refinement schemes, and we suggest a more elaborate technique that may substantially improve mesh quality. We show that throughput on modern hardware can exceed 600,000 output tetrahedra per second per processor, and that the method is embarrassingly parallelassuming the application has partitioned the input properly.
parallel mesh refinement symmetric groups adaptive tetrahedral tessellation streaming subdivision