Skip to content

Overhaul MeshGraph to support HDF5 geometry input/output

Dave Moxey requested to merge feature/hdf5-mesh-4 into master

This MR significantly adjusts MeshGraph to use a factory pattern, which allows for different file format I/O of meshes (and in particular, will enable HDF5 I/O for geometry). Three classes for XML, compressed XML and HDF5 (experimental) are now supported.

The main highlights:

  • MeshGraph now handles partitioning of meshes, which allows different file formats to adopt different strategies for partitioning.
  • Consequently, SessionReader no longer reads the session file when it is constructed, to allow for shared-filesystem partitioning (where only the root process reads the session file to save memory) to be performed by the MeshGraph.
  • All XML I/O is now done in a single place inside MeshGraph: previously, we had various I/O routines inside MeshPartition, MeshGraph and NekMesh.
  • Geometry classes have been reworked to reduce memory footprint -- by default they do not construct any coefficients or Xmap object -- since these are now used in the partitioning process. Some of the internal ordering of what constitutes forward/backwards edges has been altered, which has allowed the removal of some 2D-specific functions (GetCartesianEorient)
  • Significant code tidying and removal of the MeshGraph1/2/3D classes, which had quite a lot of duplicate code.
Edited by Dave Moxey

Merge request reports