When I use the extract surface on data distributed by mpi, the mpi boundaries get extracted as well. This make sense, but I would like to avoid that. Is there a way to get only the full domain surfaces?
Here is how to reproduce:
mpirun -np 4 pvserver
connect a ParaView client to the server
create a wavelet source
convert it to a partionned data set collection (not necessary, but that what my real data is)
extract surface
clip to see the inside
I just noticed that you have a partitioned dataset collection (https://vtk.org/doc/nightly/html/classvtkPartitionedDataSetCollection.html#details). Since by definition the partitions may be essentially unrelated (e.g. some could be unstructured grids and some could be image datas) there’s no real way in general to figure out how to make the items in a partitioned dataset collection fit back together. If it were a partitioned dataset (https://vtk.org/doc/nightly/html/classvtkPartitionedDataSet.html) then the Ghost Cells Generator filter should work since there should be homogeneity within the items.
So, I think you’d need to either specify the ghost information yourself when generating the data or use a different dataset type.
Thanks for your insight. The conversion from an image data to a partitioned dataset collection creates a collection of one partitioned data set. I can use ExtractBlock to extract all the wavelet data in a single partitioned dataset to which I applied the ghost cell generator. I still end up with the mpi boundaries, and for some reason some of the surfaces are missing. Any ideas?
My data comes to ParaView through Catalyst2, so it’s not easy to reproduce offline. If I write the data to disk, then I can’t figure out how to distributed again using ParaView only.
Seems to me there’s a bug in the Ghost Cell Generator filter. Let me try to explain what is expected here, since there seems to be some confusion based on a quick glance of the responses.
Since you’re using Catalyst2, the data coming into ParaView will either be a PartitionedDataSetCollection (PDC) or PartitionedDataSet (PD). In either case, for different partitions of a data block split across ranks, all individual datasets will show up as partitions in a single PD.
Unless ghost information is already present in the data being provided to Catalyst, there’s no automatic addition of ghost arrays in the pipeline. So if you directly apply ExtractSurface filter to a PD (or PDC), you’ll see internal faces.
Now, one is expected to use Ghost Cells Generator. Ghost Cells Generator is intended to process each PD at a time and exchange boundary elements to generate ghost layer for each dataset in the PD. This seems to not be working as expected. I suspect there’s a bug handling ghost layers when partitions are structured datasets – a case the implementation should support, IIRC (cc @Yohann_Bearzi).