Eu segundo o uso do VTK para saída de arquivo. Se você deseja usar uma estrutura de malha muito genérica, eu indicaria a direção da biblioteca CGNS (CFD General Notation System), que é um formato de malha de código aberto com sua própria biblioteca, mantida por um consórcio (incluindo Boeing e NASA) . A leitura de uma lista de nós, propriedades, condições de contorno etc. é extremamente útil com esta biblioteca e a própria biblioteca é muito fácil de compilar. A biblioteca está em C ++, mas pode ser vinculada ao Fortran.
Nós o usamos em nosso código interno e achei um formato muito eficiente. Ele usa o HDF5 sob o capô para arquivos binários. Além disso, ANSYS, Salome, GMSH suportam a exportação para este formato em graus variados. Aqui está o github:
https://cgns.github.io/