Attached is a script that demonstrates how to do this. I suspect you're putting your code in `CreatePipeline`. As the name suggests, it's only called when creating pipeline the first time, and not on every iteration. I've modified a ParaView test script. Modifications are in `### START MODIFICATION ###` and `### END MODIFICATION ###` blocks. You can run this as follows:
> bin/pvbatch -sym -dr <ParaViewSource>/CoProcessing/PythonCatalyst/Testing/Cxx/waveletdriver.py /tmp/cptest.py 10 Utkarsh
from paraview.simple import * from paraview import coprocessing #-------------------------------------------------------------- # Code generated from cpstate.py to create the CoProcessor. # ParaView 5.4.0-RC3-33-g6465569 64 bits #-------------------------------------------------------------- # Global screenshot output options imageFileNamePadding=0 rescale_lookuptable=False # ----------------------- CoProcessor definition ----------------------- def CreateCoProcessor(): def _CreatePipeline(coprocessor, datadescription): class Pipeline: # state file generated using paraview version 5.4.0-RC3-33-g6465569 # ---------------------------------------------------------------- # setup views used in the visualization # ---------------------------------------------------------------- #### disable automatic camera reset on 'Show' paraview.simple._DisableFirstRenderCameraReset() # Create a new 'Render View' renderView1 = CreateView('RenderView') renderView1.AxesGrid = 'GridAxes3DActor' renderView1.StereoType = 0 renderView1.CameraPosition = [0.0, 0.0, 66.92130429902464] renderView1.CameraParallelScale = 17.320508075688775 renderView1.Background = [0.32, 0.34, 0.43] # register the view with coprocessor # and provide it with information such as the filename to use, # how frequently to write the images, etc. coprocessor.RegisterView(renderView1, filename='image_%t.png', freq=1, fittoscreen=0, magnification=1, width=400, height=400, cinema={}) renderView1.ViewTime = datadescription.GetTime() # uncomment following to set a specific view size # renderView1.ViewSize = [400, 400] # ---------------------------------------------------------------- # setup the data processing pipelines # ---------------------------------------------------------------- # create a new 'Wavelet' # create a producer from a simulation input wavelet1 = coprocessor.CreateProducer(datadescription, 'input') ### START MODIFICATION ### integrateVariables1 = IntegrateVariables(Input=wavelet1) ### END MODIFICATION ### # create a new 'Slice' slice1 = Slice(Input=wavelet1) slice1.SliceType = 'Plane' slice1.SliceOffsetValues = [0.0] # init the 'Plane' selected for 'SliceType' slice1.SliceType.Normal = [0.0, 0.0, 1.0] # create a new 'Parallel PolyData Writer' parallelPolyDataWriter1 = servermanager.writers.XMLPPolyDataWriter(Input=slice1) # register the writer with coprocessor # and provide it with information such as the filename to use, # how frequently to write the data, etc. coprocessor.RegisterWriter(parallelPolyDataWriter1, filename='filename_%t.pvtp', freq=1, paddingamount=0) # ---------------------------------------------------------------- # setup color maps and opacity mapes used in the visualization # note: the Get..() functions create a new object, if needed # ---------------------------------------------------------------- # get color transfer function/color map for 'RTData' rTDataLUT = GetColorTransferFunction('RTData') rTDataLUT.RGBPoints = [77.22376251220703, 0.231373, 0.298039, 0.752941, 177.02629470825195, 0.865003, 0.865003, 0.865003, 276.8288269042969, 0.705882, 0.0156863, 0.14902] rTDataLUT.ScalarRangeInitialized = 1.0 # get opacity transfer function/opacity map for 'RTData' rTDataPWF = GetOpacityTransferFunction('RTData') rTDataPWF.Points = [77.22376251220703, 0.0, 0.5, 0.0, 276.8288269042969, 1.0, 0.5, 0.0] rTDataPWF.ScalarRangeInitialized = 1 # ---------------------------------------------------------------- # setup the visualization in view 'renderView1' # ---------------------------------------------------------------- # show data from slice1 slice1Display = Show(slice1, renderView1) # trace defaults for the display properties. slice1Display.Representation = 'Surface' slice1Display.ColorArrayName = ['POINTS', 'RTData'] slice1Display.LookupTable = rTDataLUT slice1Display.OSPRayScaleArray = 'RTData' slice1Display.OSPRayScaleFunction = 'PiecewiseFunction' slice1Display.SelectOrientationVectors = 'None' slice1Display.ScaleFactor = 2.0 slice1Display.SelectScaleArray = 'RTData' slice1Display.GlyphType = 'Arrow' slice1Display.GlyphTableIndexArray = 'RTData' slice1Display.DataAxesGrid = 'GridAxesRepresentation' slice1Display.PolarAxes = 'PolarAxesRepresentation' slice1Display.GaussianRadius = 1.0 slice1Display.SetScaleArray = ['POINTS', 'RTData'] slice1Display.ScaleTransferFunction = 'PiecewiseFunction' slice1Display.OpacityArray = ['POINTS', 'RTData'] slice1Display.OpacityTransferFunction = 'PiecewiseFunction' # ---------------------------------------------------------------- # finally, restore active source SetActiveSource(parallelPolyDataWriter1) # ---------------------------------------------------------------- return Pipeline() class CoProcessor(coprocessing.CoProcessor): def CreatePipeline(self, datadescription): self.Pipeline = _CreatePipeline(self, datadescription) ### START MODIFICATION ### def WriteData(self, datadescription): """overridden to save extra data out""" super(CoProcessor, self).WriteData(datadescription) # let's write to CSV ourselves. afilter = self.Pipeline.integrateVariables1 fname = "/tmp/coefs_%d.csv" % datadescription.GetTimeStep() SaveData(fname, afilter) ### END MODIFICATION ### coprocessor = CoProcessor() # these are the frequencies at which the coprocessor updates. freqs = {'input': [1, 1, 1]} coprocessor.SetUpdateFrequencies(freqs) return coprocessor #-------------------------------------------------------------- # Global variable that will hold the pipeline for each timestep # Creating the CoProcessor object, doesn't actually create the ParaView pipeline. # It will be automatically setup when coprocessor.UpdateProducers() is called the # first time. coprocessor = CreateCoProcessor() #-------------------------------------------------------------- # Enable Live-Visualizaton with ParaView and the update frequency coprocessor.EnableLiveVisualization(False, 1) # ---------------------- Data Selection method ---------------------- def RequestDataDescription(datadescription): "Callback to populate the request for current timestep" global coprocessor if datadescription.GetForceOutput() == True: # We are just going to request all fields and meshes from the simulation # code/adaptor. for i in range(datadescription.GetNumberOfInputDescriptions()): datadescription.GetInputDescription(i).AllFieldsOn() datadescription.GetInputDescription(i).GenerateMeshOn() return # setup requests for all inputs based on the requirements of the # pipeline. coprocessor.LoadRequestedData(datadescription) # ------------------------ Processing method ------------------------ def DoCoProcessing(datadescription): "Callback to do co-processing for current timestep" global coprocessor # 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) # Write output data, if appropriate. coprocessor.WriteData(datadescription); # Write image capture (Last arg: rescale lookup table), if appropriate. coprocessor.WriteImages(datadescription, rescale_lookuptable=rescale_lookuptable, image_quality=0, padding_amount=imageFileNamePadding) # 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