Coverage for bim2sim/plugins/PluginOpenFOAM/bim2sim_openfoam/utils/paraViewScripts.py: 0%

82 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-10-01 10:24 +0000

1from paraview.simple import * 

2 

3""" 

4A collection of paraView scripts for plotting different aspects of a  

5simulated OpenFOAM case.  

6!Can only be run inside paraView! 

7""" 

8 

9 

10def differenceSlice(case1: str, case2: str, var: str): 

11 """ 

12 Calculates the mean-squared error between 2 OpenFOAM cases of the 

13 same geometry by taking a slice of the x-y-plane along the center of the 

14 space. 

15 case 1 and case2 must be paths to the OpenFOAM base directory containing 

16 the controlDict. Coloring is automatically scaled to a very small range 

17 and might need adjustment. var refers to the quantity to investigate and 

18 must be either T, U, U_X, U_Y, U_Z, AoA, Co, G, p, p_rgh or yPlus. 

19 """ 

20 paraview.simple._DisableFirstRenderCameraReset() 

21 renderView1 = GetActiveViewOrCreate('RenderView') 

22 materialLibrary1 = GetMaterialLibrary() 

23 

24 file1 = case1 + '/system/controlDict' 

25 file2 = case2 + '/system/controlDict' 

26 difference_variable = var # T, U_X, U_Y, U_Z 

27 # difference_variable = 'U' # for magnitude 

28 

29 # create a new 'Open FOAM Reader' 

30 controlDict1 = OpenFOAMReader(registrationName='controlDict1', FileName=file1) 

31 controlDict1Display = Show(controlDict1, renderView1, 'UnstructuredGridRepresentation') 

32 controlDict1Display.Representation = 'Surface' 

33 controlDict1Display.SetScalarBarVisibility(renderView1, True) 

34 

35 # create a new 'Slice' 

36 slice1 = Slice(registrationName='Slice1', Input=controlDict1) 

37 slice1Display = Show(slice1, renderView1, 'GeometryRepresentation') 

38 slice1Display.Representation = 'Surface' 

39 slice1Display.SetScalarBarVisibility(renderView1, True) 

40 

41 # create a new 'Open FOAM Reader' 

42 controlDict = OpenFOAMReader(registrationName='controlDict', FileName=file2) 

43 controlDictDisplay = Show(controlDict, renderView1, 'UnstructuredGridRepresentation') 

44 controlDictDisplay.Representation = 'Surface' 

45 controlDictDisplay.SetScalarBarVisibility(renderView1, True) 

46 

47 

48 # create a new 'Slice' 

49 slice2 = Slice(registrationName='Slice2', Input=controlDict) 

50 slice2Display = Show(slice2, renderView1, 'GeometryRepresentation') 

51 slice2Display.Representation = 'Surface' 

52 slice2Display.SetScalarBarVisibility(renderView1, True) 

53 

54 

55 # set active source 

56 renameArrays1 = RenameArrays(registrationName='RenameArrays1', Input=slice1) 

57 renameArrays1.PointArrays = ['AoA', 'AoA_1', 'Co', 'Co_1', 'G', 'G_1', 'T', 

58 'T_1', 'U', 'U_1', 'a', 'a', 'alphat', 

59 'alphat', 'k', 'k', 'nut', 'nut', 'omega', 

60 'omega', 'p', 'p_1', 'p_rgh', 'p_rgh_1', 'qr', 

61 'qr', 'wallHeatFlux', 'wallHeatFlux', 'yPlus', 

62 'yPlus_1'] 

63 renameArrays1Display = Show(renameArrays1, renderView1, 'GeometryRepresentation') 

64 renameArrays1Display.Representation = 'Surface' 

65 renameArrays1Display.SetScalarBarVisibility(renderView1, True) 

66 

67 # create a new 'RenameArrays' 

68 renameArrays2 = RenameArrays(registrationName='RenameArrays2', Input=slice2) 

69 renameArrays2.PointArrays = ['AoA', 'AoA_2', 'Co', 'Co_2', 'G', 'G_2', 'T', 

70 'T_2', 'U', 'U_2', 'a', 'a', 'alphat', 

71 'alphat', 'k', 'k', 'nut', 'nut', 'omega', 

72 'omega', 'p', 'p_2', 'p_rgh', 'p_rgh_2', 'qr', 

73 'qr_2', 'wallHeatFlux', 'wallHeatFlux', 

74 'yPlus', 'yPlus_2'] 

75 renameArrays2Display = Show(renameArrays2, renderView1, 'GeometryRepresentation') 

76 renameArrays2Display.Representation = 'Surface' 

77 renameArrays2Display.SetScalarBarVisibility(renderView1, True) 

78 

79 

80 # create a new 'Resample With Dataset' 

81 resampleWithDataset1 = ResampleWithDataset(registrationName='ResampleWithDataset1', SourceDataArrays=renameArrays2, 

82 DestinationMesh=renameArrays1) 

83 resampleWithDataset1.PassPointArrays = 1 

84 resampleWithDataset1Display = Show(resampleWithDataset1, renderView1, 'GeometryRepresentation') 

85 resampleWithDataset1Display.Representation = 'Surface' 

86 

87 var1 = difference_variable + '_1' 

88 var2 = difference_variable + '_2' 

89 result_var = 'MSE(' + difference_variable + ')' 

90 # create a new 'Calculator' 

91 calculator1 = Calculator(registrationName='MSE-Calc', 

92 Input=resampleWithDataset1) 

93 if difference_variable == 'U': 

94 calculator1.ResultArrayName = result_var + ' (mag)' 

95 calculator1.Function = 'sqrt((U_1_X - U_2_X)^2 + (U_1_Y - U_2_Y)^2 + (' \ 

96 'U_1_Z - U_2_Z)^2)' 

97 else: 

98 calculator1.ResultArrayName = result_var 

99 calculator1.Function = 'sqrt((' + var1 + '-' + var2 + ')^2)' 

100 calculator1Display = Show(calculator1, renderView1, 'GeometryRepresentation') 

101 calculator1Display.Representation = 'Surface' 

102 calculator1Display.SetScalarBarVisibility(renderView1, True) 

103 

104 Hide(controlDict1, renderView1) 

105 Hide(controlDict, renderView1) 

106 Hide(slice1, renderView1) 

107 Hide(slice2, renderView1) 

108 Hide(renameArrays1, renderView1) 

109 Hide(renameArrays2, renderView1) 

110 Hide(resampleWithDataset1, renderView1) 

111 

112 # get color transfer function/color map for 'T_diff' 

113 # get 2D transfer function for 'Result' 

114 resultTF2D = GetTransferFunction2D(result_var) 

115 resultTF2D.ScalarRangeInitialized = 1 

116 resultTF2D.Range = [0.0, 5.0, 0.0, 1.0] 

117 

118 # get color transfer function/color map for 'Result' 

119 resultLUT = GetColorTransferFunction(result_var) 

120 resultLUT.TransferFunction2D = resultTF2D 

121 resultLUT.RGBPoints = [0.0, 0.231373, 0.298039, 0.752941, 1.5, 0.865003, 0.865003, 0.865003, 3.0, 0.705882, 0.0156863, 0.14902] 

122 resultLUT.ScalarRangeInitialized = 1.0 

123 

124 # Apply a preset using its name. Note this may not work as expected when presets have duplicate names. 

125 resultLUT.ApplyPreset('Rainbow Desaturated', True) 

126 

127 # get opacity transfer function/opacity map for 'Result' 

128 resultPWF = GetOpacityTransferFunction(result_var) 

129 resultPWF.Points = [0.0, 0.0, 0.5, 0.0, 3.0, 1.0, 0.5, 0.0] 

130 resultPWF.ScalarRangeInitialized = 1 

131 resultLUT.RescaleTransferFunction(0.0, 5.0) 

132 resultPWF.RescaleTransferFunction(0.0, 5.0) 

133 resultTF2D.RescaleTransferFunction(0.0, 5.0, 0.0, 1.0) 

134 renderView1 = GetActiveViewOrCreate('RenderView') 

135 

136 # get layout 

137 layout1 = GetLayout() 

138 layout1.SetSize(1124, 789) 

139 renderView1.InteractionMode = '2D' 

140 renderView1.CameraPosition = [14.478500080108644, 7.84499979019165, 1.348009467124939] 

141 renderView1.CameraFocalPoint = [2.049999952316284, 7.84499979019165, 1.348009467124939] 

142 renderView1.CameraViewUp = [0.0, 0.0, 1.0] 

143 renderView1.CameraParallelScale = 1.8950963928630833 

144 

145 file_name = difference_variable + '_Difference.png' 

146 SaveScreenshot(file_name)