7.1 Benchmark Setup

The benchmarks in this chapter show the benefits of the templated approaches presented in this work while at the same time preserving or even improving element qualities. To evaluate the memory savings, the required memory using the data structure MESH (cf. Section 2.4) - or for multi-region inputs MRMESH - are compared to the templated data structures TEMPLATED_MESH and TEMPLATED_MESH_SVB (cf. Section 4.5). For runtime analysis, the mesh generation time using a conventional approach (cf. Section 3.1) is compared to the runtime of a templated mesh generation process (cf. Section 5 and 6). To obtain better element qualities, mesh generation algorithms based on Algorithm 5.1.2 (and the specializations presented in Chapter 6) are utilized.

In typical mesh generation use cases an input geometry is meshed using a set of meshing parameters, e.g., local mesh element size or desired mesh element quality. To reflect these use cases in the benchmarks, a conventional mesh generation algorithm and a templated mesh generation algorithm are compared for generating meshes for the same geometry utilizing the same meshing parameters. However, the resulting mesh of the conventional mesh generation algorithm and the resulting structure instance (cf. Section 4.1) of the templated mesh differ in general. As presented later in this chapter, a high correlation between the memory savings and runtime speedups and cell counts is observed for most benchmarks. To associate the memory saving and the runtime speedup with one single cell count value, a common ground for the cell count of the conventionally generated mesh and the templated mesh is required. The average of the cell count of the conventionally generated mesh and the structure instance of the templated mesh is used in all cases for which two different meshes are compared. For example, the memory saving of two meshes with different cell counts will be associated with the average of the cell counts.

To ensure good mesh element quality, mesh element quality statistics of the resulting meshes and structure instances are generated. This statistic is used to evaluate, if the desired quality has been achieved. For 2D and 3D meshes, the smallest angle (for 3D meshes the smallest dihedral angle, cf. Definition 2.16) is used as mesh element quality measure. Benchmarks for 3D meshes are also performed using the radius-edge ratio quality measure parameter (cf. Definition 2.17).

In addition to mesh element quality measures, the benchmarks were carried out with different mesh element sizes (i.e. the element volume). As symmetry and similarity identification is not the focus of this work, it is assumed that the input geometry of each benchmark is already available in a templated form and symmetry or similarity detections are not required. Including automatic symmetry and similarity detection in the runtime benchmarks reduces the savings of the templated approaches. However, it has been shown, that the losses are moderate [48].

For the benchmarks in this chapter, a set of benchmark tools has been implemented utilizing the ViennaMesh software framework [19]. These implementations are published as free open source software [13]. Triangle and Tetgen are used for 2D and 3D mesh generation, respectively (cf. Section 3.1.3). All benchmarks have been carried out on an Intel Core i7-3770 workstation with $ 16$GB of DDR3-1600 memory. The executables have been generated with the clang++ 3.1 compiler [3]. Runtime values are averaged over $ 100$ benchmark executions.

florian 2016-11-21