mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
131 lines
5.1 KiB
Python
131 lines
5.1 KiB
Python
r"""This module is used to export complete CoProcessing Python scripts that
|
|
can be used in a vtkCPPythonScriptPipeline.
|
|
|
|
This module uses paraview.cpstate Module to dump the ParaView session state as a
|
|
an Python class description that can be then be used in the CoProcessor.
|
|
|
|
The exported script can be used in a vtkCPPythonScriptPipeline instance for
|
|
CoProcessing."""
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# The __output_contents is the templet script that accept 3 arguments:
|
|
# 1) The CoProcessor class definition
|
|
# 2) The boolean to know if we want to enable live-visualization
|
|
# 3) The boolean to know if we need to rescale the data range
|
|
# -----------------------------------------------------------------------------
|
|
__output_contents = """
|
|
from paraview.simple import *
|
|
from paraview import coprocessing
|
|
|
|
|
|
#--------------------------------------------------------------
|
|
# Code generated from cpstate.py to create the CoProcessor.
|
|
# ParaView @PARAVIEW_VERSION_FULL@ @PARAVIEW_BUILD_ARCHITECTURE@ bits
|
|
|
|
%s
|
|
#--------------------------------------------------------------
|
|
# Global variables 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
|
|
coprocessor.EnableLiveVisualization(%s, %s)
|
|
|
|
|
|
# ---------------------- 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=%s)
|
|
|
|
# Live Visualization, if enabled.
|
|
coprocessor.DoLiveVisualization(datadescription, "localhost", 22222)
|
|
"""
|
|
|
|
from paraview import cpstate
|
|
|
|
def DumpCoProcessingScript(export_rendering, simulation_input_map, screenshot_info,
|
|
rescale_data_range, enable_live_viz, live_viz_frequency,
|
|
cinema_tracks,
|
|
filename=None):
|
|
"""Returns a string with the generated CoProcessing script based on the
|
|
options specified.
|
|
|
|
First three arguments are same as those expected by
|
|
cpstate.DumpPipeline() function.
|
|
|
|
rescale_data_range :- boolean set to true if the LUTs must be scaled on
|
|
each timestep
|
|
enable_live_viz :- boolean set to true if the generated script should
|
|
handle live-visualization.
|
|
live_viz_frequency :- integer specifying how often should
|
|
the coprocessor send the live data
|
|
cinema_tracks :- cinema offline visualizer parameters
|
|
filename :- if specified, the script is written to the file.
|
|
"""
|
|
pipeline_script = cpstate.DumpPipeline(\
|
|
export_rendering, simulation_input_map, screenshot_info, cinema_tracks)
|
|
script = __output_contents % (pipeline_script,
|
|
enable_live_viz, live_viz_frequency,
|
|
rescale_data_range)
|
|
if filename:
|
|
outFile = open(filename, "w")
|
|
outFile.write(script)
|
|
outFile.close()
|
|
return script
|
|
|
|
def run(filename=None):
|
|
"""Create a dummy pipeline and save the coprocessing state in the filename
|
|
specified, if any, else dumps it out on stdout."""
|
|
|
|
from paraview import simple, servermanager
|
|
wavelet = simple.Wavelet(registrationName="Wavelet1")
|
|
contour = simple.Contour()
|
|
script = DumpCoProcessingScript(export_rendering=False,
|
|
simulation_input_map={"Wavelet1" : "input"},
|
|
screenshot_info={},
|
|
rescale_data_range=True,
|
|
enable_live_viz=True,
|
|
live_viz_frequency=1,
|
|
cinema_tracks={},
|
|
filename=filename)
|
|
if not filename:
|
|
print "# *** Generated Script Begin ***"
|
|
print script
|
|
print "# *** Generated Script End ***"
|
|
|
|
if __name__ == "__main__":
|
|
run()
|
|
|
|
# ---- end ----
|