In the documentation of VTKHDF (VTK File Formats - VTK documentation) it states that
We describe the split into partitions using HDF5 datasets
NumberOfConnectivityIds
,NumberOfPoints
andNumberOfCells
. 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 theConnectivity
array for partition i.NumberOfPoints
andNumberOfCells
are arrays of size n, where NumberOfPoints[i] and NumberOfCells[i] are the number of points and number of cells for partition i. ThePoints
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 theConnectivity
array where each cell’s points start.Connectivity
stores the lists of point ids for each cell, andTypes
contain the cell information stored as described in vtkCellArray documentation. Data for each partition is appended in a HDF dataset forPoints
,Connectivity
,Offsets
,Types
,PointData
andCellData
. 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.