ViennaGrid
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.
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/