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)
20 ParaViewVersion = pvs.GetParaViewVersion()
22 if(ParaViewVersion <5.8) :
23 writer.FieldAssociation = "Points" # or "Cell Data"
25 writer.FieldAssociation = "Point Data" # or "Cells"
27 writer.UpdatePipeline()
29 def Extract_PV_data_over_line_to_numpyArray(inputFileName, point1, point2, resolution):
30 dirName = os.path.dirname(inputFileName)
31 outputFileName = os.path.join(dirName, "tmp." + str(os.getpid()) + str(time.clock()) + ".csv")
32 Extract_PV_data_over_line_to_txt_file(inputFileName, outputFileName, point1, point2, resolution)
33 var, x1, x2, x3 = np.loadtxt(outputFileName, delimiter=',',
34 skiprows=1, usecols=(0, 3, 4, 5), unpack=True)
35 os.remove(outputFileName)
36 return x1, x2, x3, var
39 # should be rewritten in order to skip the tmp file
40 # and directly convert the field data to a numpy array
42 def Slice_PV_data_to_numpyArray(inputFileName, point, normal, resolution):
43 dirName = os.path.dirname(inputFileName)
44 outputFileName = os.path.join(dirName, "tmp." + str(os.getpid()) + str(time.clock()) + ".csv")
45 Slice_PV_data_to_txt_file(inputFileName, outputFileName, point, normal, resolution)
46 var = np.loadtxt(outputFileName, delimiter=',',
47 skiprows=1, usecols=(0), unpack=True)
48 os.remove(outputFileName)
51 def Slice_PV_data_to_txt_file(inputFileName,
55 pvs._DisableFirstRenderCameraReset()
56 data_vtu = pvs.XMLUnstructuredGridReader(FileName=[inputFileName])
57 Slice1 = pvs.Slice(SliceType="Plane")
58 Slice1.SliceOffsetValues = [0.0]
59 Slice1.SliceType.Origin = point
60 Slice1.SliceType.Normal = normal
61 CellCenters1 = pvs.CellCenters()
62 writer = pvs.CreateWriter(outputFileName, CellCenters1)
63 writer.Precision=resolution
65 ParaViewVersion = pvs.GetParaViewVersion()
67 if(ParaViewVersion <5.8) :
68 writer.FieldAssociation = "Points" # or "Cell Data"
70 writer.FieldAssociation = "Point Data" # or "Cells"
72 writer.UpdatePipeline()
74 def Slice_PV_field_data_to_numpyArray(field,
78 inputFileName = field.getName()
79 field.writeVTK(inputFileName)
81 numpy_array = Slice_PV_data_to_numpyArray(inputFileName+"_1.vtu", point, normal, resolution)
83 os.remove(inputFileName+"_1.vtu")
86 def Slice_PV_field_data_to_txt_file(field, outputFileName,
89 numpy_array = Slice_PV_field_data_to_numpyArray(field, point, normal, resolution)
91 np.savetxt(outputFileName, numpy_array, delimiter=" ")
95 def Save_PV_data_to_picture_file(inputFileName, field_name,
96 node_or_cell,outputFileName
98 pvs._DisableFirstRenderCameraReset()
100 #pvs.HideAll(view=None)#Not available in paraview 5.1.2
101 view = pvs.GetActiveView()
102 sources = pvs.GetSources().values()
103 for aSource in sources:
104 pvs.Hide(aSource, view)
106 # create a new 'XML Unstructured Grid Reader'
107 reader = pvs.XMLUnstructuredGridReader(FileName=[inputFileName])
108 if node_or_cell== 'CELLS':
109 reader.CellArrayStatus = [field_name]
110 elif node_or_cell== 'NODES':
111 reader.PointArrayStatus = [field_name]
113 raise ValueError("unknown type : should be CELLS or NODES")
116 renderView1 = pvs.GetActiveViewOrCreate('RenderView')
117 # uncomment following to set a specific view size
118 # renderView1.ViewSize = [1057, 499]
121 display = pvs.Show(reader, renderView1);
122 # trace defaults for the display properties.
123 display.ColorArrayName = [None, '']
124 display.GlyphType = 'Arrow'
125 display.ScalarOpacityUnitDistance = 0.02234159571242408
127 # reset view to fit data
128 renderView1.ResetCamera()
130 # set scalar coloring
131 if node_or_cell== 'CELLS':
132 pvs.ColorBy(display, ('CELLS', field_name))
133 elif node_or_cell== 'NODES':
134 pvs.ColorBy(display, ('POINTS', field_name))
136 raise ValueError("unknown type : should be CELLS or NODES")
138 # rescale color and/or opacity maps used to include current data range
139 display.RescaleTransferFunctionToDataRange(True)
141 # show color bar/color legend
142 display.SetScalarBarVisibility(renderView1, True)
144 pvs.SaveScreenshot(outputFileName+".png", magnification=1, quality=100, view=renderView1)
145 display.SetScalarBarVisibility(renderView1, False)
147 if field_name=='Velocity' :
148 #pvs.HideAll(view=None)#Not available in paraview 5.1.2
149 view = pvs.GetActiveView()
150 sources = pvs.GetSources().values()
151 for aSource in sources:
152 pvs.Hide(aSource, view)
153 # create a new 'Stream Tracer'
154 streamTracer1 = pvs.StreamTracer(Input=reader, SeedType='Point Source')
155 streamTracer1.Vectors = ['CELLS', 'Velocity']
157 # init the 'Point Source' selected for 'SeedType'
158 streamTracer1.SeedType.Center = [0.5, 0.5, 0.0]
159 streamTracer1.SeedType.Radius = 0.0
161 # Properties modified on streamTracer1
162 streamTracer1.SeedType = 'High Resolution Line Source'
164 # Properties modified on streamTracer1.SeedType
165 streamTracer1.SeedType.Point1 = [0.0, 0.0, 0.0]
166 streamTracer1.SeedType.Point2 = [1.0, 1.0, 0.0]
167 streamTracer1.SeedType.Resolution = 20# Pb : claims attribute Resolution does not exist
170 streamTracer1Display = pvs.Show(streamTracer1, renderView1)
172 # create a new 'Stream Tracer'
173 streamTracer2 = pvs.StreamTracer(Input=reader, SeedType='Point Source')
174 streamTracer2.Vectors = ['CELLS', 'Velocity']
176 # init the 'Point Source' selected for 'SeedType'
177 streamTracer2.SeedType.Center = [0.5, 0.5, 0.0]
178 streamTracer2.SeedType.Radius = 0.0
180 # Properties modified on streamTracer2
181 streamTracer2.SeedType = 'High Resolution Line Source'
183 # Properties modified on streamTracer2.SeedType
184 streamTracer2.SeedType.Point1 = [0.0, 1.0, 0.0]
185 streamTracer2.SeedType.Point2 = [1.0, 0.0, 0.0]
186 streamTracer2.SeedType.Resolution = 25# Pb : claims attribute Resolution does not exist
189 streamTracer2Display = pvs.Show(streamTracer2, renderView1)
191 pvs.SaveScreenshot(outputFileName+"_streamlines.png", magnification=1, quality=100, view=renderView1)