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.