vtkProbeLineFilter do not draw some PointData when the dataset do not belong to proc id 0

Hi all,

I am facing a strange situation and would appreciate any help.
I’am working in parallel on two MPI threads. I have 4 datasets (each representing a material) that are spread over those two MPI threads.

At time 0:
Thread 0 holds dataset A and dataset B while thread 1 holds dataset C and dataset D.
With the custom reader i use i can load only one of the dataset. Let’s say i am loading the dataset C (thread 1).

When i try to use vtkProbeLineFIlter on this dataset ( SAMPLE_LINE_UNIFORMLY) Point Data are missing (for example the pressure in the material and all other Point or Cell data of the dataset C)
This is not the case if i use other sampling methods such as SAMPLE_LINE_AT_SEGMENT_CENTERS or SAMPLE_LINE_AT_CELL_BOUNDARIES

At time 1:
At this timestep the dataset C is now spread over thread 0 and thread 1. In this configuration the vtkProbeLineFilter works perfectly well for all sampling methods.

I think that this “problem” of time 0 is linked to the documentation warning of the vtkProbeLineFilter:

In case of a distributed pipeline, the dataset used to determine the lines to probe from (ie the dataset on port 1) will always be the one from rank 0, and will be broadcasted to all other ranks.

Can you confirm this please?

PS: I debugged a bit and found that the situation of time 0 is due to the fact that in vtkPProbeFilter.cxx line 105, there is a loop on the number of arrays of output point data of thread 0. At this time and for thread 0 the number of arrays in output point data is drastically different from the number of arrays in remote output (thread 1) which causes the trouble.

I confirm that this is indeed a bug. And you are correct. If, in the first MPI rank, the dataset that you are probing with does not intersect the dataset, the filter does not work properly. I will work on a fix.


Ok. Thanks @berk.geveci !

This is now fixed in master.

Nice! Thanks for this rapid development!