1 import paraview.simple as pvs
5 # do I need to kill the pipeline?
7 def Extract_PV_data_over_line_to_txt_file(inputFileName, outputFileName,
11 pvs._DisableFirstRenderCameraReset()
12 data_vtu = pvs.XMLUnstructuredGridReader(FileName=[inputFileName])
13 PlotOverLine1 = pvs.PlotOverLine(Source="High Resolution Line Source"
15 PlotOverLine1.Source.Point1 = point1
16 PlotOverLine1.Source.Point2 = point2
17 PlotOverLine1.Source.Resolution = resolution
18 writer = pvs.CreateWriter(outputFileName, PlotOverLine1)
19 writer.FieldAssociation = "Points" # or "Cells"
20 writer.UpdatePipeline()
22 def Extract_PV_data_over_line_to_numpyArray(inputFileName, point1, point2, resolution):
23 dirName = os.path.dirname(inputFileName)
24 outputFileName = os.path.join(dirName, "tmp." + str(os.getpid()) + str(time.clock()) + ".csv")
25 Extract_PV_data_over_line_to_txt_file(inputFileName, outputFileName, point1, point2, resolution)
26 var, x1, x2, x3 = np.loadtxt(outputFileName, delimiter=',',
27 skiprows=1, usecols=(0, 3, 4, 5), unpack=True)
28 os.remove(outputFileName)
29 return x1, x2, x3, var
32 # should be rewritten in order to skip the tmp file
33 # and directly convert the field data to a numpy array
35 def Slice_PV_data_to_numpyArray(inputFileName, point, normal, resolution):
36 dirName = os.path.dirname(inputFileName)
37 outputFileName = os.path.join(dirName, "tmp." + str(os.getpid()) + str(time.clock()) + ".csv")
38 Slice_PV_data_to_txt_file(inputFileName, outputFileName, point, normal, resolution)
39 var = np.loadtxt(outputFileName, delimiter=',',
40 skiprows=1, usecols=(0), unpack=True)
41 os.remove(outputFileName)
44 def Slice_PV_data_to_txt_file(inputFileName,
48 pvs._DisableFirstRenderCameraReset()
49 data_vtu = pvs.XMLUnstructuredGridReader(FileName=[inputFileName])
50 Slice1 = pvs.Slice(SliceType="Plane")
51 Slice1.SliceOffsetValues = [0.0]
52 Slice1.SliceType.Origin = point
53 Slice1.SliceType.Normal = normal
54 CellCenters1 = pvs.CellCenters()
55 writer = pvs.CreateWriter(outputFileName, CellCenters1)
56 writer.Precision=resolution
57 writer.FieldAssociation = "Points" # or "Cells"
58 writer.UpdatePipeline()
60 def Slice_PV_field_data_to_numpyArray(field,
64 inputFileName = field.getName()
65 field.writeVTK(inputFileName)
67 numpy_array = Slice_PV_data_to_numpyArray(inputFileName+"_1.vtu", point, normal, resolution)
69 os.remove(inputFileName+"_1.vtu")
72 def Slice_PV_field_data_to_txt_file(field, outputFileName,
75 numpy_array = Slice_PV_field_data_to_numpyArray(field, point, normal, resolution)
77 np.savetxt(outputFileName, numpy_array, delimiter=" ")
81 def Save_PV_data_to_picture_file(inputFileName, field_name,
82 node_or_cell,outputFileName
84 pvs._DisableFirstRenderCameraReset()
86 #pvs.HideAll(view=None)#Not available in paraview 5.1.2
87 view = pvs.GetActiveView()
88 sources = pvs.GetSources().values()
89 for aSource in sources:
90 pvs.Hide(aSource, view)
92 # create a new 'XML Unstructured Grid Reader'
93 reader = pvs.XMLUnstructuredGridReader(FileName=[inputFileName])
94 if node_or_cell== 'CELLS':
95 reader.CellArrayStatus = [field_name]
96 elif node_or_cell== 'NODES':
97 reader.PointArrayStatus = [field_name]
99 raise ValueError("unknown type : should be CELLS or NODES")
102 renderView1 = pvs.GetActiveViewOrCreate('RenderView')
103 # uncomment following to set a specific view size
104 # renderView1.ViewSize = [1057, 499]
107 display = pvs.Show(reader, renderView1);
108 # trace defaults for the display properties.
109 display.ColorArrayName = [None, '']
110 display.GlyphType = 'Arrow'
111 display.ScalarOpacityUnitDistance = 0.02234159571242408
113 # reset view to fit data
114 renderView1.ResetCamera()
116 # set scalar coloring
117 if node_or_cell== 'CELLS':
118 pvs.ColorBy(display, ('CELLS', field_name))
119 elif node_or_cell== 'NODES':
120 pvs.ColorBy(display, ('POINTS', field_name))
122 raise ValueError("unknown type : should be CELLS or NODES")
124 # rescale color and/or opacity maps used to include current data range
125 display.RescaleTransferFunctionToDataRange(True)
127 # show color bar/color legend
128 display.SetScalarBarVisibility(renderView1, True)
130 pvs.SaveScreenshot(outputFileName+".png", magnification=1, quality=100, view=renderView1)
131 display.SetScalarBarVisibility(renderView1, False)
133 if field_name=='Velocity' :
134 #pvs.HideAll(view=None)#Not available in paraview 5.1.2
135 view = pvs.GetActiveView()
136 sources = pvs.GetSources().values()
137 for aSource in sources:
138 pvs.Hide(aSource, view)
139 # create a new 'Stream Tracer'
140 streamTracer1 = pvs.StreamTracer(Input=reader, SeedType='Point Source')
141 streamTracer1.Vectors = ['CELLS', 'Velocity']
143 # init the 'Point Source' selected for 'SeedType'
144 streamTracer1.SeedType.Center = [0.5, 0.5, 0.0]
145 streamTracer1.SeedType.Radius = 0.0
147 # Properties modified on streamTracer1
148 streamTracer1.SeedType = 'High Resolution Line Source'
150 # Properties modified on streamTracer1.SeedType
151 streamTracer1.SeedType.Point1 = [0.0, 0.0, 0.0]
152 streamTracer1.SeedType.Point2 = [1.0, 1.0, 0.0]
153 streamTracer1.SeedType.Resolution = 20# Pb : claims attribute Resolution does not exist
156 streamTracer1Display = pvs.Show(streamTracer1, renderView1)
158 # create a new 'Stream Tracer'
159 streamTracer2 = pvs.StreamTracer(Input=reader, SeedType='Point Source')
160 streamTracer2.Vectors = ['CELLS', 'Velocity']
162 # init the 'Point Source' selected for 'SeedType'
163 streamTracer2.SeedType.Center = [0.5, 0.5, 0.0]
164 streamTracer2.SeedType.Radius = 0.0
166 # Properties modified on streamTracer2
167 streamTracer2.SeedType = 'High Resolution Line Source'
169 # Properties modified on streamTracer2.SeedType
170 streamTracer2.SeedType.Point1 = [0.0, 1.0, 0.0]
171 streamTracer2.SeedType.Point2 = [1.0, 0.0, 0.0]
172 streamTracer2.SeedType.Resolution = 25# Pb : claims attribute Resolution does not exist
175 streamTracer2Display = pvs.Show(streamTracer2, renderView1)
177 pvs.SaveScreenshot(outputFileName+"_streamlines.png", magnification=1, quality=100, view=renderView1)