OpenFOAM is supplied with its own mesh generator, blockMesh.
OpenFOAM applications handle unstructured meshes of mixed polyhedra with any
number of faces: hexahedra, tetrahedra, degenerate cells, basically anything (see
diagram).
Mesh generation is made simple by the fact that a cell is simply represented as
a list of faces and a face as a list of vertices: this makes mesh handling very easy
even for complex meshes with, say, embedded refinement or complex shapes near
the boundary.
Figure 12:
Two polyhedral control volumes and a face between them.