A C++ library for the handling and traversal of unstructured grids in arbitrary spatial dimensions
The tessellation of surfaces and solids into complexes of small elements such as triangles, quadrilaterals, tetrahedra or hexahedra is one of the major ingredients for many computational algorithms. Applications range from rendering, most notably in computer games, to computational science, in particular for the numerical solution of partial differential equations on complex domains for the study of physical phenomena. These various areas lead to a broad range of different requirements on a mesh library, which certainly cannot be fulfilled by a single, predetermined datastructure. Unlike other mesh libraries, ViennaGrid provides the abililty to easily adjust the internal representation of meshes, while providing a uniform interface for the storage and access of data on mesh elements as well as STL-compatible iteration over such elements.
- Unified interface for dimension-independent mesh traversal
- Multiple coordinate systems supported and provided
- Simplex meshes (lines, triangles, tetrahedra)
- Uniform and local refinement of triangular and tetrahedral meshes
- Quadrilateral and hexahedral meshes
- Convenient storage of data on mesh elements using ViennaData
- Highly customizable internal storage scheme
- IO from/to VTK (Paraview), Netgen and OpenDX
- Computation of Voronoi diagrams for Delaunay meshes
The high flexibility is achieved by the use of metaprogramming techniques, which allow for a customization without runtime penalty.
More information can be found at http://viennagrid.sourceforge.net/