[Paraview] Need help with programmable filter output
Scott Ripplinger
bigbluedart at gmail.com
Thu Dec 6 12:08:53 EST 2012
Okay, I've done a little more work on this and the following is what I have
so far:
import math
r = inputs[0].PointData['d']/2
SurfArea = math.pi*r*r
z = inputs[0].Points[:,2]
h = 0.00015 - abs(z - 0.00015) - r
H0 = h/r
numPoints = inputs[0].GetNumberOfPoints()
SurfCvg = 0
for i in range(numPoints):
if H0[i] < 0.002:
SurfCvg = SurfCvg + SurfArea[i]
Theta = SurfCvg/(0.010*0.001*2)
output.RowData.append(Theta, 'Theta')
The output is set to vtkTable. When I try running this, though, I get the
following error message repeated three times:
ERROR: In ..\..\..\..\src\VTK\Filtering\vtkDemandDrivenPipeline.cxx, line
827
vtkPVDataRepresentationPipeline (000000001444A130): Input for connection
index 0 on input port index 0 for algorithm
vtkGeometryRepresentation(000000001279BFE0) is of type vtkTable, but a
vtkDataSet is required.
Do I need to manually define my SurfCvg and SurfArea variables as vtkTable
types? I'm just a bit lost at this point, but feeling closer.
-Scott
On Fri, Nov 30, 2012 at 10:18 AM, Berk Geveci <berk.geveci at kitware.com>wrote:
> Output should be vtkTable. By the way, if you have numpy installed, this
> could be done much more efficiently and in less code. See
>
> http://paraview.org/Wiki/ParaView/Users_Guide/Python_Programmable_Filter
> http://paraview.org/Wiki/ParaView/Users_Guide/Python_Calculator
>
> You may also want to check the numpy documentation.
>
> In general, if your data is medium to large, you want to avoid for loops
> over all cells/points in Python.
>
> Best,
> -berk
>
>
> On Thu, Nov 29, 2012 at 11:35 PM, Scott Ripplinger <bigbluedart at gmail.com>wrote:
>
>> I am attempting to run an analysis on some data which requires summing up
>> some numbers down to a single value for the whole domain for each time
>> step. I'm having trouble figuring out how to get the output and what VTK
>> classes and functions to use. Here is what I have so far:
>>
>> import math
>>
>> input = self.GetInputDataObject(0,0)
>>
>> output = self.GetOutputDataObject(0)
>>
>> numPoints = input.GetNumberOfPoints()
>>
>> points = input.GetPointData()
>>
>> SurfCvg = 0
>>
>> for i in xrange(numPoints):
>>
>> d = points.GetArray('d').GetValue(i)
>>
>> coords = input.GetPoint(i)
>>
>> z = coords[2]
>>
>> h = 0.00015 - abs(z - 0.00015) - 0.5*d
>>
>> H0 = 2*h/d
>>
>> if (H0 < 0.002):
>>
>> SurfCvg = SurfCvg + 0.25*math.pi*d*d
>>
>> Theta = SurfCvg/(0.01*0.001)
>>
>> outputarray = vtk.vtkFloatArray()
>>
>> outputarray.SetNumberOfValues(1)
>>
>> outputarray.SetValue(0, Theta)
>>
>> output.GetRowData().AddArray(outputarray)
>>
>>
>> I'm not even sure what to use as the output data set type. In the end I
>> need to plot (or export as a table) the value of "Theta" across all my time
>> steps. Any guidance would be appreciated.
>>
>>
>> -Scott
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the ParaView Wiki at:
>> http://paraview.org/Wiki/ParaView
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.paraview.org/mailman/listinfo/paraview
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20121206/14dd9093/attachment.htm>
More information about the ParaView
mailing list