123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- r"""This is a module to perform live visualization in the context of Catalyst.
- """
- from paraview.simple import *
- from paraview import servermanager
- # -----------------------------------------------------------------------------
- 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
- # -----------------------------------------------------------------------------
- def ExtractCatalystData(link, name):
- ''' Extract data called "name" from simulation managed by the LiveInsituLink link.
- Register it in displaySession
- '''
- displaySession = servermanager.ActiveConnection.Session
- proxy = link.CreateExtract('sources', name, 0)
- displaySession.GetSessionProxyManager().RegisterProxy('sources', name, proxy)
- data = FindSource(name)
- return data
- # -----------------------------------------------------------------------------
- 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')
- # -----------------------------------------------------------------------------
- def ProcessServerNotifications():
- ''' Processes pending events from server.
- '''
- pm = servermanager.vtkProcessModule.GetProcessModule()
- nam = pm.GetNetworkAccessManager()
- while nam.ProcessEvents(1) == 1:
- pass
|