This documentation is still incomplete!
Until now, we have seen grids as purely combinatorial constructs. Adding geometric functionality in a separate layer has the advantage to make a combinatorial grid usable in a broader context, because there may be many different geometric embeddings for a grid. Also, there are a lot of algorithms that do not require any geometry at all.
Some of the major points of variation of the mathematical aspects of geometric embeddings are
Furthermore, geometric embeddings can differ in computational aspects:
A linear and a non-linear geometry for the same grid
What kind of functionality is available in a class implementing a geometric embedding for a grid? This question cannot be answered in general. The most basic geometry concept is that of Vertex Grid Geometry, which just allows access to vertex coordinates. A more advanced concept is Volume Grid Geometry, which defines geometric counterparts for all combinatorial grid elements, as shown in the table.
types | ||||||
typedef coord_type GeomCoord | point in space | |||||
typedef segment_type GeomSegment | 1D segment corr. to Edge | |||||
typedef polygon_type GeomPolygon | 2D polygon corr. to Face | |||||
typedef polyhedron_type GeomPolyhedron | 3D polyhedron corr. to Cell (in 3D Grids) | |||||
functionals from combinatorics to geometry | ||||||
|
| |||||
There may be a lot more functionality available, depending on the actual geometry. For example, if the combinatorial and the geometric dimension are equal, one may define outward normal in the centers of facets.