Files
ThirdParty-6/ParaView-5.0.1/CoProcessing/Adaptors/PythonAdaptor/cp_pythonadaptorscript.py

91 lines
3.0 KiB
Python

try: paraview.simple
except: from paraview.simple import *
cp_writers = []
def RequestDataDescription(datadescription):
"Callback to populate the request for current timestep"
timestep = datadescription.GetTimeStep()
input_name = 'input'
if (timestep % 2 == 0) :
datadescription.GetInputDescriptionByName(input_name).AllFieldsOn()
datadescription.GetInputDescriptionByName(input_name).GenerateMeshOn()
else:
datadescription.GetInputDescriptionByName(input_name).AllFieldsOff()
datadescription.GetInputDescriptionByName(input_name).GenerateMeshOff()
def DoCoProcessing(datadescription):
"Callback to do co-processing for current timestep"
global cp_writers
cp_writers = []
timestep = datadescription.GetTimeStep()
PythonAdaptorDriver_vti = CreateProducer( datadescription, "input" )
Slice1 = Slice( guiName="Slice1", SliceOffsetValues=[0.0], SliceType="Plane" )
Slice1.SliceType.Offset = 0.0
Slice1.SliceType.Origin = [0.25, 0.5, 0.5]
Slice1.SliceType.Normal = [0.0, 1.0, 0.0]
ParallelPolyDataWriter1 = CreateWriter( XMLPPolyDataWriter, "filename_%t.pvtp", 2 )
for writer in cp_writers:
if timestep % writer.cpFrequency == 0:
writer.FileName = writer.cpFileName.replace("%t", str(timestep))
writer.UpdatePipeline()
if timestep % 1 == 0:
renderviews = servermanager.GetRenderViews()
imagefilename = ""
for view in range(len(renderviews)):
fname = imagefilename.replace("%v", str(view))
fname = fname.replace("%t", str(timestep))
WriteImage(fname, renderviews[view])
# explicitly delete the proxies -- we do it this way to avoid problems with prototypes
tobedeleted = GetProxiesToDelete()
while len(tobedeleted) > 0:
Delete(tobedeleted[0])
tobedeleted = GetProxiesToDelete()
def GetProxiesToDelete():
iter = servermanager.vtkSMProxyIterator()
iter.Begin()
tobedeleted = []
while not iter.IsAtEnd():
if iter.GetGroup().find("prototypes") != -1:
iter.Next()
continue
proxy = servermanager._getPyProxy(iter.GetProxy())
proxygroup = iter.GetGroup()
iter.Next()
if proxygroup != 'timekeeper' and proxy != None and proxygroup.find("pq_helper_proxies") == -1 :
tobedeleted.append(proxy)
return tobedeleted
def CreateProducer(datadescription, gridname):
"Creates a producer proxy for the grid"
if not datadescription.GetInputDescriptionByName(gridname):
raise RuntimeError, "Simulation input name '%s' does not exist" % gridname
grid = datadescription.GetInputDescriptionByName(gridname).GetGrid()
producer = TrivialProducer()
producer.GetClientSideObject().SetOutput(grid)
producer.UpdatePipeline()
return producer
def CreateWriter(proxy_ctor, filename, freq):
global cp_writers
writer = proxy_ctor()
writer.FileName = filename
writer.add_attribute("cpFrequency", freq)
writer.add_attribute("cpFileName", filename)
cp_writers.append(writer)
return writer