# Libraries to deal with unstructured grids

I am dealing with a *.cgns file. This mesh format, when saved as an unstructured grid, holds nodes coordinates, nodes connectivity per element and boundary conditions. It is a neat mesh format with good documentation. However, I am still responsible for building the rest of the data structures for the calculations. For example, the face table for cell-centered FV schemes. This is a very delicate work which has to be done for every solver somehow (for cell-vertex solvers it would be the points neighboring I think).

So, since many folks out there had to develop this type of routines, I think it is reasonable to think someone smarter than me wrote a library which organize these data structures.

I was reading PETSc documentation for DMPlex but I am still trying to figure out how to give a *.cgns file to it. From what I saw, even compiling with cgns support, the file I/O for this format is not well established for this library. I am not criticizing anyone, PETSc is an awesome library.

My question is if there is any library out there which manages the creation of this type of data structures, not just for FV methods, but also for any type of scheme/solver? A quick bonus question... Is there anyone researching algorithms to create data structures for PDE solvers efficiently?