In the documentation of VTKHDF (VTK File Formats - VTK documentation) it states that

We describe the split into partitions using HDF5 datasets

`NumberOfConnectivityIds`

,`NumberOfPoints`

and`NumberOfCells`

. Let n be the number of partitions which usually correspond to the number of the MPI ranks.`NumberOfConnectivityIds`

has size n where NumberOfConnectivityIds[i] represents the size of the`Connectivity`

array for partition i.`NumberOfPoints`

and`NumberOfCells`

are arrays of size n, where NumberOfPoints[i] and NumberOfCells[i] are the number of points and number of cells for partition i. The`Points`

array contains the points of the VTK dataset.`Offsets`

is an array of size ∑ (S(i) + 1), where S(i) is the number of cells in partition i, indicating the index in the`Connectivity`

array where each cell’s points start.`Connectivity`

stores the lists of point ids for each cell, and`Types`

contain the cell information stored as described in vtkCellArray documentation. Data for each partition is appended in a HDF dataset for`Points`

,`Connectivity`

,`Offsets`

,`Types`

,`PointData`

and`CellData`

. We can compute the size of partition i using the following formulas:

However, from this, it is not clear to me if a point is present on two processes, it has to be repeated multiple times in the `Points`

array.

If it is repeated multiple times in the Points array, the mesh is effectively split into pieces, based on the partitioning interface.

If it is not duplicated, then the `Connectivity`

-array should use global node indices.