vtkPolyData parallel processing

I am currently in a situation where I have vtkPolyData containing many points, but only a subset of these points are vertices in a mesh and have normals associated.

I would like to like to perform some heavy operations on the points with vertices and would like to slice it up. If my dataset was a vtkMultiBlockDataSet, I would know how to do this (spatial streaming). In addition, I also need operate backwards in time. I can do this using a vtkTemporalDataSetCache.

I would like to have a multiblock ‘polydata’ set, where I can compute normals and afterwards treat the result as blocks each containing a subset of the (point, normal) pairs.

What is the easiest approach to split a vtkPolyData into a number of blocks each containing points and normals?

Thanks in advance

I have decided to implement my surface as a vtkStructuredGrid for the x and y coordinates and two arrays, the depth (z) and a validity flag. Next implement a triangulation algorithm working on these input.

The output is a vtkStructured grid and then I have implemented a generic module for converting a vtkStructured grid into vtkMultiBlockDataSet. Finally, I can use the experimental vtkThreadedCompositeDataPipeline for executing in parallel each block set.

The algorithm working on the block set is quite heavy since it must be applied to all previous data for something called space-exclusion.

The pipeline is then

xy-grid + depth and validity → Triangulation → TemporalDataSetCache → SpaceExclusion.

For this pipeline, the vtkThreadedCompositeDataPipeline is used.

Question: How many (if any) modules can take advantage of the vtkThreadedCompositeDataPipeline.

Thanks in advance

Ahh. I believe ghost points / cells is what I need. I will search for a functionaly for partioning a mesh into multiple cells, with points marked as ghost and real points

Hi Jens,

If you have a recent version of VTK (I believe at least 9.1), there is a filter that will generate ghost points and ghost cells on a vtkPolyData. Look for vtkGhostCellsGenerator. It takes as input a collection of datasets and generates the ghosts.

I would advise using vtkPartitionedDataSet instead of vtkMultiBlockDataSet. It’s on the way of deprecation and there are ambiguities in this collection format that might make some filters not behave like you intend them to. You can refer to here.

Thanks for the input. I will continue using vtkPartitionedDataSet