[Paraview] mapping unstructured grid onto regular grid
Favre Jean
jfavre at cscs.ch
Sat Sep 11 04:51:36 EDT 2010
_______________________________________
I would like to map an unstructured grid (describing particle data
with per particle attributes I would like interpolated onto the
regular grid) onto a regular mesh. I am trying to use the 'Resample
With Dataset' filter but have not been having much luck.
________________________________________
As far as I understand, what you are trying to do is not possible, with the "Resample with dataset filter". The reason is that your input dataset does not seem to have 3D cells. Resampling needs 3D cells for interpolation.
There is a method, vtkShepardMethod (http://www.vtk.org/doc/nightly/html/classvtkShepardMethod.html), which does exactly what you need. However, Shepard is not included in ParaView. No problem, you can do it off-line:
I have tried the following python script with my paraview compilation and my ./bin/vtkpython and it produced the required output. See if it fits your purpose.
from vtk import *
numPts = 300
ps = vtk.vtkPointSource()
ps.SetRadius(1)
ps.SetNumberOfPoints(numPts)
ps.Update()
ca = vtk.vtkFloatArray()
ca.SetName("datavalue")
ca.SetNumberOfComponents(1)
ca.SetNumberOfTuples(numPts)
for i in range(0, numPts):
ca.SetValue(i, ps.GetOutput().GetPoint(i)[0])
ps.GetOutput().GetPointData().AddArray(ca)
ps.GetOutput().GetPointData().SetScalars(ca)
ps.Update()
ps.GetOutput().GetPointData().SetScalars(ca)
sh = vtk.vtkShepardMethod()
sh.SetSampleDimensions(20,20,20)
sh.SetInputConnection(ps.GetOutputPort())
sh.SetModelBounds(ps.GetOutput().GetBounds())
wr = vtk.vtkDataSetWriter()
wr.SetInputConnection(sh.GetOutputPort())
wr.SetFileName("/tmp/foo.vtk")
wr.Write()
-----------------
Jean M. Favre
Swiss National Supercomputing Center
More information about the ParaView
mailing list