Hello, I have a set of distributed vtr files read with a pvd file with cell data. I would like to convert that cell data to point data to get linear interpolation upon plotting.
When calling CellDataToPointData and plotting, however, there are visible seams at the boundaries of each of the vtr files, pictured below. Is there a way to correct this?
Calling CleanToGrid or CleanCellsToGrid before converting to point data does not fix the problem. The same behavior occurs when combining the data into a vtu and convert to point data with pyvista. Reviewing the cell data of the vtu as read by pyvista, all the cells have the appropriate strides for a single vtr block, meaning that there are no cells that connect data from one vtr file to another.
This was fixed with the following sequence of steps, which is relatively complicated, but works fine.
- Read and combine mesh in pyvista with MultiBlock
- Call cell_centers to get point data at the cell centers.
- Sort points by x,y,z (this is a uniform Cartesian 3D mesh)
- Generate new cells for the new ordering manually
- Write out a new vtu file with pyvista and plot at point data
Is there any other simpler way? No combinations of filters that I tried was effective, but perhaps there is another correct sequence?
pyvista has added a tolerance parameter to their combine method, which is effective at combining points between blocks that coincide but are not literally floating point equal. This makes this workflow within pyvista far simpler. I am not aware of a way to do this directly in paraview at this time.