Proceedings
home
preface
contents
authors
keywords
copyright
reference ©2012 Civil-Comp Ltd

Paper 32

An Independent Mesh Model Process to Write Meshing Algorithms

C. de Bellabre, F. Ledoux and J.-Ch. Weill
CEA, DAM, DIF, Arpajon, France

Keywords: meshing framework, C++ generic programming, computation time, memory footprint, mesh model, Delaunay triangulation.

full paper (pdf) - reference

One of the main building blocks of computational simulations is the mesh data structure. Depending on the numerical approximation methods or the meshing algorithm to be implemented, the mesh data structure must provide drastically different features. In order to provide a single and uniform way to handle any type of meshes, general meshing infrastructures have been developed in the last few years. In this work, is on one of them, the C++ generic mesh data structure (GMDS) framework, which intensively uses generic programming, and allows users to select the mesh model, i.e. a combination of available cells and connections, that best fits their requirements.

At compile-time, the GMDS provides a tailored mesh data structure both in computation time and memory footprint, which fits as best as possible the algorithm requirements. A mesh framework such as GMDS provides code sharing and a uniform access to any kind of mesh model whatever the developer's requirements. However, some main issues remain to be solved in an industrial context: how to select the mesh model that best fits the requirements of an algorithm? and how to combine algorithms requiring different mesh models without space memory duplication? In order to provide a first answer, a new level of abstraction has been added into GMDS: for any mesh model, at compile-time some pieces of C++ source code to retrieve the connections that are not kept in memory according to the mesh model are built. These pieces of source code are a direct implementation of combinatorial terms that must be exhibited to build missing connections. For instance, if an algorithm is built for a mesh model where nodes, edges and faces are available and the connection from faces to edges and edges to nodes are kept in memory, it is possible to obtain the nodes of a face by traversing its adjacent edges.

In order to illustrate the benefits of this approach, an algorithm is implemented that generates a Delaunay triangulation. The source code obtained runs for 105 different mesh models with different performances both in computational time and memory footprint.