def coprocess(time, timeStep, grid, attributes): global coProcessor import vtk from visocyte.modules import vtkPVCatalyst as catalyst import visocyte from visocyte.vtk.util import numpy_support dataDescription = catalyst.vtkCPDataDescription() dataDescription.SetTimeData(time, timeStep) dataDescription.AddInput("input") if coProcessor.RequestDataDescription(dataDescription): import fedatastructures imageData = vtk.vtkImageData() imageData.SetExtent(grid.XStartPoint, grid.XEndPoint, 0, grid.NumberOfYPoints - 1, 0, grid.NumberOfZPoints - 1) imageData.SetSpacing(grid.Spacing) velocity = numpy_support.numpy_to_vtk(attributes.Velocity) velocity.SetName("velocity") imageData.GetPointData().AddArray(velocity) pressure = numpy_support.numpy_to_vtk(attributes.Pressure) pressure.SetName("pressure") imageData.GetCellData().AddArray(pressure) dataDescription.GetInputDescriptionByName("input").SetGrid(imageData) dataDescription.GetInputDescriptionByName("input").SetWholeExtent( 0, grid.NumberOfGlobalXPoints - 1, 0, grid.NumberOfYPoints - 1, 0, grid.NumberOfZPoints - 1) coProcessor.CoProcess(dataDescription)
def coProcess(grid, time, step, scriptname, wholeExtent): scriptpath, scriptname = os.path.split(scriptname) sys.path.append(scriptpath) if scriptname.endswith(".py"): print('script name is %s' % scriptname) scriptname = scriptname[0:len(scriptname) - 3] try: cpscript = __import__(scriptname) except: print(sys.exc_info()) print('Cannot find %s -- no coprocessing will be performed.' % scriptname) sys.exit(1) return datadescription = vtkPVCatalyst.vtkCPDataDescription() datadescription.SetTimeData(time, step) datadescription.AddInput("input") cpscript.RequestDataDescription(datadescription) inputdescription = datadescription.GetInputDescriptionByName("input") if inputdescription.GetIfGridIsNecessary() == False: return inputdescription.SetGrid(grid) if grid.IsA("vtkImageData") == True or grid.IsA("vtkRectilinearGrid") == True \ or grid.IsA("vtkStructuredGrid") == True: inputdescription.SetWholeExtent(wholeExtent) cpscript.DoCoProcessing(datadescription)
def coProcess(grid, time, step): # initialize data description datadescription = vtkPVCatalyst.vtkCPDataDescription() datadescription.SetTimeData(time, step) datadescription.AddInput("input") cpscript.RequestDataDescription(datadescription) inputdescription = datadescription.GetInputDescriptionByName("input") if inputdescription.GetIfGridIsNecessary() == False: return if grid != None: # attach VTK data set to pipeline input inputdescription.SetGrid(grid) # execute catalyst processing cpscript.DoCoProcessing(datadescription)
def coProcess(grid, time, step, scriptname, wholeExtent): import os scriptpath, scriptname = os.path.split(scriptname) sys.path.append(scriptpath) if scriptname.endswith(".py"): print('script name is %s' % scriptname) scriptname = scriptname[0:len(scriptname) - 3] try: cpscript = __import__(scriptname) except: print(sys.exc_info()) print('Cannot find %s -- no coprocessing will be performed.' % scriptname) sys.exit(1) return datadescription = vtkPVCatalyst.vtkCPDataDescription() datadescription.SetTimeData(time, step) datadescription.AddInput("input") # add another input/channel that should never be requested by Live. we check later that # this input/channel indeed is NOT requested to verify that Catalyst is only # requesting what it should be. datadescription.AddInput("other_input") cpscript.RequestDataDescription(datadescription) inputdescription = datadescription.GetInputDescriptionByName("other_input") if inputdescription.GetIfGridIsNecessary() == True: print( 'ERROR: Should not be requesting Catalyst channel named "other_input" but am' ) sys.exit(1) return inputdescription = datadescription.GetInputDescriptionByName("input") if inputdescription.GetIfGridIsNecessary() == False: return inputdescription.SetGrid(grid) if grid.IsA("vtkImageData") == True or grid.IsA("vtkRectilinearGrid") == True \ or grid.IsA("vtkStructuredGrid") == True: inputdescription.SetWholeExtent(wholeExtent) cpscript.DoCoProcessing(datadescription)
channelname = 'input' if rank == 0: print("The channel name is ", channelname) if hasattr(reader, "TimestepValues"): timesteps = reader.TimestepValues if not timesteps: timesteps = [0] else: timesteps = [0] step = -1 for time in timesteps: step = step + 1 datadescription = vtkPVCatalyst.vtkCPDataDescription() datadescription.SetTimeData(time, step) datadescription.AddInput(channelname) if time == timesteps[-1]: # last time step so we force the output datadescription.ForceOutputOn() retval = catalyst.RequestDataDescription(datadescription) if retval == 1: reader.UpdatePipeline(time) dataset = pvsimple.servermanager.Fetch(reader) inputdescription = datadescription.GetInputDescriptionByName( channelname) inputdescription.SetGrid(dataset) if dataset.IsA("vtkImageData") == True or dataset.IsA("vtkRectilinearGrid") == True \
def coProcess(grid, time, step): # initialize data description datadescription = vtkPVCatalyst.vtkCPDataDescription() datadescription.SetTimeData(time, step) datadescription.AddInput("input") cpscript.RequestDataDescription(datadescription)