r"""This is a module to perform live visualization in the context of Catalyst.
"""
from paraview.simple import *
from paraview import servermanager
# -----------------------------------------------------------------------------
[docs]def ConnectToCatalyst(ds_host='localhost', ds_port=22222):
"""Creates a connection to a catalyst simulation. Example usage:
> Connect("amber") # Connect to a single server at default port
> Connect("amber", 12345) # Connect to a single server at port 12345
return a LiveInsituLink object.
"""
displaySession = servermanager.ActiveConnection.Session
insituLink = servermanager.ConnectToCatalyst(ds_host, ds_port)
ProcessServerNotifications()
insituLink.InvokeCommand('Initialize')
SetActiveConnection(servermanager.GetConnectionFromSession(displaySession))
return insituLink
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
[docs]def PauseCatalyst(link, pause=True):
''' Pause / Unpause the Catalyst simulation managed by the LiveInsituLink link.
'''
currentState = link.GetProperty('SimulationPaused').GetElement(0) == 1
if currentState == pause:
return
link.GetProperty('SimulationPaused').SetElement(0, 1 if pause else 0)
link.UpdateVTKObjects()
if not pause:
link.InvokeCommand('LiveChanged')
# -----------------------------------------------------------------------------
[docs]def ProcessServerNotifications():
''' Processes pending events from server.
'''
pm = servermanager.vtkProcessModule.GetProcessModule()
nam = pm.GetNetworkAccessManager()
while nam.ProcessEvents(1) == 1:
pass