[Paraview] Pipeline update with Catalyst

Andy Bauer andy.bauer at kitware.com
Tue Feb 7 07:44:31 EST 2017


Hi Tim,

The short answer is that  you need to do
coprocessor.Pipeline.flameArea.UpdatePipeline() before checking for the
area. You also may need to use MPI to do the global sum or broadcast of the
value since I think that value will either just have local values or maybe
just the proper global value on processor 0. You should have access to
mpi4py in the Python script in order to do that.

The long answer is that ParaView & VTK use a demand-driven pipeline design
meaning that until something explicitly tells a pipeline to update it
won't. For the Catalyst scripts this is done in the
coprocessor.WriteData(), coprocessor.WriteImages() and
coprocessor.DoLiveVisualization() calls for each output that is required
(e.g. for a writer that is supposed to output at that time step but not for
other writers that are not supposed to output at that time step). You can
manually force a filter to update by using the UpdatePipeline() method
which will update that pipeline along with everything it depends on. It
won't update any filters though that don't have an effect on it computing
its requested information which means that for the flameArea filter it
won't affect any writers or image output stuff which is what you want.

There is some information on Catayst script details at
https://blog.kitware.com/anatomy-of-a-paraview-catalyst-python-script/ but
I don't think that contains this information.

Cheers,
Andy

On Tue, Feb 7, 2017 at 7:14 AM, Gallagher, Timothy P <
tim.gallagher at gatech.edu> wrote:

> Hello again,
>
>
> I am working on a pipeline using Catalyst that writes data only when
> features are detected. The idea is to have a 3D contour generated in the
> pipeline, and when it is big enough, start recording data. There is a long
> lead-up to when the features appear, and then they disappear rapidly, so I
> would like to only collect data when the features are present.
>
>
> To that end, my DoCoProcessing() function has something that checks the
> 'Area' value in the CellData of an IntegrateVariables filter. The full
> function is below. However, this doesn't ever write any images or data. It
> also doesn't throw any errors, so I have a feeling the pipeline isn't
> actually evaluated/updated after the call to UpdateProducers.
>
>
> So, my question -- at what point in the DoCoProcessing function is the
> pipeline actually evaluated? Do all the filters execute when the
> UpdatedProducers function is called? Or do they only update when the
> outputs to which they are connected are called, ie. WriteData and
> WriteImages?
>
>
> Thanks,
>
>
> Tim
>
>
> def DoCoProcessing(datadescription):
>     "Callback to do co-processing for current timestep"
>     global coprocessor
>     global lastTime
>     global deltaT
>
>     # Update the coprocessor by providing it the newly generated
> simulation data.
>
>
>     # If the pipeline hasn't been setup yet, this will setup the
> pipeline.
>
>
>     coprocessor.UpdateProducers(datadescription)
>
>     curTime = datadescription.GetTime()
>
>     if curTime >= lastTime + deltaT:
>       lastTime = curTime
>
>       if coprocessor.Pipeline.flameArea.CellData['Area'] > 1e-9:
>         # Write output data, if appropriate.
>
>
>
>         coprocessor.WriteData(datadescription);
>
>         # Write image capture (Last arg: rescale lookup table), if
> appropriate.
>
>
>         coprocessor.WriteImages(datadescription,
> rescale_lookuptable=False)
>
>         # Live Visualization, if enabled.
>
>
>
>         coprocessor.DoLiveVisualization(datadescription, "localhost",
> 22222)
>
>
> _______________________________________________
> 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
>
> Search the list archives at: http://markmail.org/search/?q=ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20170207/0aeb39e1/attachment.html>


More information about the ParaView mailing list