[Paraview] Calling the calculator filter repeatedly inside a for-loop

pat marion pat.marion at kitware.com
Sun Nov 28 17:56:48 EST 2010


You can run it in a loop, but I'm not sure it will accomplish what you are
trying to do. Your code says:

    CalculatorX.Function = 'Result+p'

But the input to the calculator filter only has the "p" array.  It's the
output of the calculator that has the "Result" array.  So you can call the
calculator filter a second time, but the input still won't have any "Result"
array.  You could apply a 2nd Calculator filter that operates on the output
of the first calculator filter.  You would apply a 2nd calculator filter by
calling Calculator() again.  You could use your for loop to apply a new
calculator filter each time.  But it's important that you understand
paraview's pipeline model, filters do not operate on their data in place.

Pat

On Sun, Nov 28, 2010 at 4:51 PM, George <george.gerber at gmail.com> wrote:

>  Hi  Pat,
>
> Thank you for the advice.
> Is it therefore not possible to run the calculator filter inside a for
> loop? Or do I need to create an intermediate array (say ResultTemp) by deep
> copying the original Result array?
>
> Thank you,
> George
>
>
> On 2010/11/28 10:09 PM, pat marion wrote:
>
> Hi George,
>
> To execute a filter from python you can call UpdatePipeline().  This is
> just like clicking the Apply button.  So for your code it would be
> CalculatorX.UpdatePipeline().  But your loop isn't going to do what you
> want.  Filters operate on their input data and output new data, they do not
> modify their input data in place.  If you call the calculator filter 10
> times, it's going to produce the same output each time unless its input has
> changed.
>
> Pat
>
> On Sun, Nov 28, 2010 at 2:33 PM, George <george.gerber at gmail.com> wrote:
>
>> Hi paraviewers,
>>
>> I am trying to write a python script where I call the Calculator filter
>> repeatedly inside a for-loop.
>> However, I am not quite sure how to write this for paraview. At the moment
>> my code looks like this:
>> ~~~~~~~~~~~~
>> try: paraview.simple
>> except: from paraview.simple import *
>> paraview.simple._DisableFirstRenderCameraReset()
>>
>> # Data Processing
>> Coarse = OpenFOAMReader( FileName='C:\\Users\\Public\\Mesh.OpenFOAM' )
>> Coarse.CellArrays = ['U', 'U_0', 'p']
>> Coarse.MeshRegions = ['internalMesh']
>> SetActiveSource(Coarse)
>> CalculatorX = Calculator()
>> CalculatorX.AttributeMode = 'point_data'
>> CalculatorX.Function = 'p'
>> CalculatorX.ResultArrayName = 'Result'
>>
>> # A hypothetical for-loop where I repeatedly add the array 'p' to the
>> array 'Result'
>> for i in range(10):
>>    CalculatorX.Function = 'Result+p'    #( Result = Result + p)
>> ~~~~~~~~~~~~
>> The above script will not work in paraview as is.
>> Can anyone tell me the proper way of writing this in Python?
>>
>> Thank you very much,
>> George
>> _______________________________________________
>> 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/20101128/843b7ca1/attachment.htm>


More information about the ParaView mailing list