I’m quite new to Paraview/Catalyst, but I was wondering if somebody could clarify something in the Catalyst user guide.
With respect to multiblock data, it says (page 33) that “If the leaf is a vtkDataSet then it should be non-empty on exactly one process”. Now, I take this to mean that, for instance,if a node is shared between two blocks in your data structure (i.e. at a block boundary) node data for that node should be specified only on one of the relevant blocks.
However, attempting this in the toy code I’ve been playing with (adapted from the FullExample.cxx example), by only setting 4 tuples for the second block in a 2-block mesh, produces segmentation faults as the code attempts to access data for all 8 points specified for that block.
Doing it the other way, setting the nodal data at all points included in a block including duplicates (which worked for the similar structured code I was testing earlier) runs, but produces errors when the resulting files are loaded into Paraview, stating that “Cannot read point data array “velocity” from PointData in piece 0. The data array in the element may be too short”.
Could someone clarify what the correct approach to building the VTK data structures is in this instance?
edit: I should add that running this code with a single block on one processor produces no problems whatsoever, so I’m sure it has something to do with how block interfaces are handled in unstructured grids.