Salome HOME
Updated expected values in python unit tests
[tools/solverlab.git] / CDMATH / postprocessing / MED_routines.py
1 import pvsimple as pvs
2 from pvsimple import *
3 import os
4 import time
5 import numpy as np
6 import MEDReader
7 from vtk.util import numpy_support as npvtk 
8 # do I need to kill the pipeline?
9
10 def Extract_MED_data_over_line_to_csv_file(inputFileName, outputFileName,
11                                            point1, point2,
12                                            resolution
13                                            ):
14     pvs._DisableFirstRenderCameraReset()
15     data_vtu = MEDReader.Reader(FileName=[inputFileName])
16     PlotOverLine1 = pvs.PlotOverLine(Source="High Resolution Line Source"
17                                      )
18     PlotOverLine1.Source.Point1 = point1
19     PlotOverLine1.Source.Point2 = point2
20     PlotOverLine1.Source.Resolution = resolution
21     writer = pvs.CreateWriter(outputFileName, PlotOverLine1)
22     writer.FieldAssociation = "Cells"  # or "Points" (default in cdmath is finite volumes)
23     writer.UpdatePipeline()
24     
25 def Extract_MED_data_over_line_to_numpyArray(inputFileName, point1, point2, resolution):
26     pvs._DisableFirstRenderCameraReset()
27     data_vtu = MEDReader.Reader(FileName=[inputFileName])
28     PlotOverLine1 = pvs.PlotOverLine(Source="High Resolution Line Source"
29                                      )
30     PlotOverLine1.Source.Point1 = point1
31     PlotOverLine1.Source.Point2 = point2
32     PlotOverLine1.Source.Resolution = resolution
33
34     vtkarray = PlotOverLine1.GetCellData() # or Slice1.GetCellData() # or Clip1.GetCellData()
35     numpy_array = npvtk.vtk_to_numpy(vtkarray)
36
37     return numpy_array
38     
39 def Extract_field_data_over_line_to_numpyArray(field, point1, point2, resolution):
40     field.writeMED(field.get_name())
41     inputFileName = os.getcwd()+field.get_name()+".med"
42
43     result = Extract_MED_data_over_line_to_numpyArray(inputFileName, point1, point2, resolution)
44
45     os.remove(inputFileName)
46     return result
47
48 def Slice_MED_data_over_line_to_numpyArray(inputFileName, point, normal):
49     pvs._DisableFirstRenderCameraReset()
50     data_vtu = MEDReader.Reader(FileName=[inputFileName])
51     Slice1 = pvs.Slice(SliceType="Plane")
52     Slice1.SliceOffsetValues = [0.0]
53     Slice1.SliceType.Origin = point
54     Slice1.SliceType.Normal = normal
55     CellCenters1 = pvs.CellCenters()    
56
57     vtkarray = Slice1.GetCellData() # or PlotOverLine1.GetCellData() # or Clip1.GetCellData()
58     numpy_array = npvtk.vtk_to_numpy(vtkarray)
59
60     return numpy_array
61
62 def Slice_MED_data_over_line_to_csv_file(inputFileName,
63                                         outputFileName,
64                                         point,
65                                         normal):
66     pvs._DisableFirstRenderCameraReset()
67     data_vtu = MEDReader.Reader(FileName=[inputFileName])
68     Slice1 = pvs.Slice(SliceType="Plane")
69     Slice1.SliceOffsetValues = [0.0]
70     Slice1.SliceType.Origin = point
71     Slice1.SliceType.Normal = normal
72     CellCenters1 = pvs.CellCenters()    
73     writer = pvs.CreateWriter(outputFileName, CellCenters1)
74     writer.Precision=30
75     writer.FieldAssociation = "Cells"  # or "Points" (default in cdmath is finite volumes)
76     writer.UpdatePipeline()
77  
78 def Slice_field_data_over_line_to_numpyArray(field,
79                                         outputFileName,
80                                         point,
81                                         normal):
82     field.writeMED(field.get_name())
83     inputFileName = os.getcwd()+field.get_name()+".med"
84  
85     result = Slice_MED_data_over_line_to_numpyArray(inputFileName, point1, point2, resolution)
86
87     os.remove(inputFileName)
88     return result
89
90 def Save_MED_to_picture_file(inputFileName, field_name,POINTS_or_CELLS,
91                              outputFileName,
92                              ):
93     data_med = MEDReader.Reader(FileName=[inputFileName])
94     # get active view
95     renderView1 = GetActiveViewOrCreate('RenderView')
96     # uncomment following to set a specific view size
97     # renderView1.ViewSize = [1052, 476]
98
99     # show data in view
100     display = Show(data_med, renderView1)
101
102     # reset view to fit data
103     renderView1.ResetCamera()
104
105     #changing interaction mode based on data extents
106     renderView1.InteractionMode = '2D'
107     renderView1.CameraPosition = [0.5, 0.5, 10000.0]
108     renderView1.CameraFocalPoint = [0.5, 0.5, 0.0]
109
110     # set scalar coloring
111     ColorBy(display, (POINTS_or_CELLS, field_name))
112
113     # rescale color and/or opacity maps used to include current data range
114     display.RescaleTransferFunctionToDataRange(True, False)
115
116     # show color bar/color legend
117     display.SetScalarBarVisibility(renderView1, True)
118
119     # get color transfer function/color map for 'Initialvariablesforsphericalexplosion'
120     resultfieldLUT = GetColorTransferFunction(field_name)
121
122     # get opacity transfer function/opacity map for 'Initialvariablesforsphericalexplosion'
123     resultfieldPWF = GetOpacityTransferFunction(field_name)
124
125     SaveScreenshot(outputFileName)