Meshing is an importang part in the processing of numerical solutions to partial differential equations, especially finite element problems. While the mesh size is the main parameter for error estimations in finite element methods, a common assumption is that all cells of a mesh are of good shape. What can be considered to be a good shape is, however, problem-specific. Even though numerous existing meshing algorithms are able to produce meshes with certain properties, such as the Delaunay property with guaranteed quality and isotropic meshing elements, the simultaneous use of different meshing algorithms is challenging because of non-unified interfaces.
As a solution to this problem, ViennaMesh, a meshing framework offering a common programming interface for a plethora of internally and externally provided meshing algorithms, was extended by a set of abstract concepts defining the generic requirements on functionalities and data structures, which allow for wrapping external data structures and software libraries such as Tetgen, Netgen, and VERDICT. These abstract concepts guarantee exchangeability of algorithms and functionalities in a convenient way.
ViennaGrid, the internal data structure used by ViennaMesh, was developed with a high level of flexibility regarding the topological structure of mesh elements in mind. The topological connectivity
of mesh elements is inspired by a previous version, and was abstracted by a more general approach using abstract boundary element types instead of dimensions for enabling mesh elements with different bounding elements of the same dimension, e.g. triangluar prisms. To avoid performance issues of traditional object-oriented approaches, the required data structures can be configured at compile time to match the particular needs using C++ meta programming techniques. This enables supporting the full family of simplices and hypercubes of arbitrary order.
With the two key aspects, the abstract concepts and the highly flexible data structure, ViennaMesh is a flexible meshing framework, which can be easily adapted to the needs of finite element problems.
|