Coverage for test/unit/tasks/bps/test_enrich_material.py: 100%

127 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-12 17:09 +0000

1from bim2sim.elements.mapping.units import ureg 

2from bim2sim.sim_settings import BuildingSimSettings 

3from bim2sim.tasks.bps import EnrichMaterial 

4from test.unit.elements.helper import SetupHelperBPS 

5from test.unit.tasks import TestTask 

6 

7 

8class TestEnrichMaterial(TestTask): 

9 

10 @classmethod 

11 def simSettingsClass(cls): 

12 return BuildingSimSettings() 

13 

14 @classmethod 

15 def testTask(cls): 

16 return EnrichMaterial(cls.playground) 

17 

18 @classmethod 

19 def helper(cls): 

20 return SetupHelperBPS() 

21 

22 def test_enrichment_LOD_low_iwu_heavy_window_dreifach_2010(self): 

23 """Tests layer and material enrichment for specified sim_settings.""" 

24 self.playground.sim_settings.construction_class_walls = 'iwu_heavy' 

25 self.playground.sim_settings.construction_class_windows = \ 

26 'Waermeschutzverglasung, dreifach' 

27 self.playground.sim_settings.year_of_construction = 2010 

28 elements = self.helper.get_setup_simple_house() 

29 answers = () 

30 reads = (elements, ) 

31 test_res = self.run_task(answers, reads) 

32 # OuterWall layer and material 

33 ow_layer_1_thickness_exp = 0.175 * ureg.m 

34 ow_layer_2_thickness_exp = 0.07 * ureg.m 

35 ow_layer_1_material_dens_exp = 2420 * ureg.kg / ureg.m ** 3 

36 ow_layer_1_material_cp_exp = 1.0 * ureg.kilojoule / (ureg.kg * ureg.K) 

37 ow_layer_1_material_thermal_conduc_exp = \ 

38 2.1 * ureg.W / (ureg.m * ureg.K) 

39 ow_layer_2_material_dens_exp = 15 * ureg.kg / ureg.m ** 3 

40 ow_layer_2_material_cp_exp = 1.5 * ureg.kilojoule / (ureg.kg * ureg.K) 

41 ow_layer_2_material_thermal_conduc_exp = \ 

42 0.04 * ureg.W / (ureg.m * ureg.K) 

43 

44 # Window layer and material 

45 window_layer_thickness_exp = 0.024 * ureg.m 

46 window_inner_radiation_exp = 5.0 * ureg.W / (ureg.m ** 2 * ureg.K) 

47 window_inner_convection_exp = 2.7 * ureg.W / (ureg.m ** 2 * ureg.K) 

48 window_outer_radiation_exp = 5.0 * ureg.W / (ureg.m ** 2 * ureg.K) 

49 window_outer_convection_exp = 20.0 * ureg.W / (ureg.m ** 2 * ureg.K) 

50 window_g_value_exp = 0.5 

51 window_a_conv_exp = 0.07 

52 window_shading_g_total_exp = 1.0 

53 window_shading_max_irr_exp = 100.0 

54 

55 # Outer wall test data 

56 ow_layer_1_thickness = elements[ 

57 'outerWall001'].layerset.layers[0].thickness 

58 ow_layer_2_thickness = elements[ 

59 'outerWall001'].layerset.layers[1].thickness 

60 ow_layer_1_material_dens = elements[ 

61 'outerWall001'].layerset.layers[0].material.density 

62 ow_layer_1_material_cp = elements[ 

63 'outerWall001'].layerset.layers[ 

64 0].material.spec_heat_capacity 

65 ow_layer_1_material_thermal_conduc = elements[ 

66 'outerWall001'].layerset.layers[ 

67 0].material.thermal_conduc 

68 ow_layer_2_material_dens = elements[ 

69 'outerWall001'].layerset.layers[1].material.density 

70 ow_layer_2_material_cp = elements[ 

71 'outerWall001'].layerset.layers[ 

72 1].material.spec_heat_capacity 

73 ow_layer_2_material_thermal_conduc = elements[ 

74 'outerWall001'].layerset.layers[ 

75 1].material.thermal_conduc 

76 

77 # Window test data 

78 window_layer_thickness = elements[ 

79 'window001'].layerset.layers[0].thickness 

80 window_inner_radiation = elements[ 

81 'window001'].inner_radiation 

82 window_inner_convection = elements[ 

83 'window001'].inner_convection 

84 window_outer_radiation = elements[ 

85 'window001'].outer_radiation 

86 window_outer_convection = elements[ 

87 'window001'].outer_convection 

88 window_g_value = elements[ 

89 'window001'].g_value 

90 window_a_conv = elements[ 

91 'window001'].a_conv 

92 window_shading_g_total = elements[ 

93 'window001'].shading_g_total 

94 window_shading_max_irr = elements[ 

95 'window001'].shading_max_irr 

96 

97 # Assertions 

98 self.assertEqual(ow_layer_1_thickness_exp, ow_layer_1_thickness) 

99 self.assertEqual(ow_layer_2_thickness_exp, ow_layer_2_thickness) 

100 self.assertEqual(ow_layer_1_material_dens_exp, 

101 ow_layer_1_material_dens) 

102 self.assertEqual(ow_layer_1_material_cp_exp, ow_layer_1_material_cp) 

103 self.assertEqual(ow_layer_1_material_thermal_conduc_exp, 

104 ow_layer_1_material_thermal_conduc) 

105 self.assertEqual(ow_layer_2_material_dens_exp, 

106 ow_layer_2_material_dens) 

107 self.assertEqual(ow_layer_2_material_cp_exp, ow_layer_2_material_cp) 

108 self.assertEqual(ow_layer_2_material_thermal_conduc_exp, 

109 ow_layer_2_material_thermal_conduc) 

110 self.assertEqual(window_layer_thickness_exp, window_layer_thickness) 

111 self.assertEqual(window_inner_radiation_exp, window_inner_radiation) 

112 self.assertEqual(window_inner_convection_exp, window_inner_convection) 

113 self.assertEqual(window_outer_radiation_exp, window_outer_radiation) 

114 self.assertEqual(window_outer_convection_exp, window_outer_convection) 

115 self.assertEqual(window_g_value_exp, window_g_value) 

116 self.assertEqual(window_a_conv_exp, window_a_conv) 

117 self.assertEqual(window_shading_g_total_exp, window_shading_g_total) 

118 self.assertEqual(window_shading_max_irr_exp, window_shading_max_irr) 

119 

120 def test_enrichment_LOD_low_kfw40_window_zweifach_2010(self): 

121 """Tests layer and material enrichment for specified sim_settings.""" 

122 self.playground.sim_settings.construction_class_walls = 'kfw_40' 

123 self.playground.sim_settings.construction_class_windows = \ 

124 'Alu- oder Stahlfenster, Waermeschutzverglasung, zweifach' 

125 self.playground.sim_settings.year_of_construction = 2010 

126 elements = self.helper.get_setup_simple_house() 

127 answers = () 

128 reads = (elements, ) 

129 test_res = self.run_task(answers, reads) 

130 

131 # OuterWall layer and material expected values 

132 ow_layer_1_thickness_exp = 0.01 * ureg.m 

133 ow_layer_2_thickness_exp = 0.04 * ureg.m 

134 ow_layer_3_thickness_exp = 0.18 * ureg.m 

135 ow_layer_4_thickness_exp = 0.015 * ureg.m 

136 ow_layer_5_thickness_exp = 0.06 * ureg.m 

137 ow_layer_6_thickness_exp = 0.0125 * ureg.m 

138 

139 # Window layer and material expected values 

140 window_layer_thickness_exp = 0.024 * ureg.m 

141 window_inner_radiation_exp = 5.0 * ureg.W / (ureg.m ** 2 * ureg.K) 

142 window_inner_convection_exp = 2.7 * ureg.W / (ureg.m ** 2 * ureg.K) 

143 window_outer_radiation_exp = 5.0 * ureg.W / (ureg.m ** 2 * ureg.K) 

144 window_outer_convection_exp = 20.0 * ureg.W / (ureg.m ** 2 * ureg.K) 

145 window_g_value_exp = 0.65 

146 window_a_conv_exp = 0.07 

147 window_shading_g_total_exp = 1.0 

148 window_shading_max_irr_exp = 100.0 

149 

150 # Outer wall test data 

151 ow_layer_1_thickness = elements[ 

152 'outerWall001'].layerset.layers[0].thickness 

153 ow_layer_2_thickness = elements[ 

154 'outerWall001'].layerset.layers[1].thickness 

155 ow_layer_3_thickness = elements[ 

156 'outerWall001'].layerset.layers[2].thickness 

157 ow_layer_4_thickness = elements[ 

158 'outerWall001'].layerset.layers[3].thickness 

159 ow_layer_5_thickness = elements[ 

160 'outerWall001'].layerset.layers[4].thickness 

161 ow_layer_6_thickness = elements[ 

162 'outerWall001'].layerset.layers[5].thickness 

163 

164 # Window test data 

165 window_layer_thickness = elements[ 

166 'window001'].layerset.layers[0].thickness 

167 window_inner_radiation = elements[ 

168 'window001'].inner_radiation 

169 window_inner_convection = elements[ 

170 'window001'].inner_convection 

171 window_outer_radiation = elements[ 

172 'window001'].outer_radiation 

173 window_outer_convection = elements[ 

174 'window001'].outer_convection 

175 window_g_value = elements[ 

176 'window001'].g_value 

177 window_a_conv = elements[ 

178 'window001'].a_conv 

179 window_shading_g_total = elements[ 

180 'window001'].shading_g_total 

181 window_shading_max_irr = elements[ 

182 'window001'].shading_max_irr 

183 

184 # Assertions for outer wall 

185 self.assertEqual(ow_layer_1_thickness_exp, ow_layer_1_thickness) 

186 self.assertEqual(ow_layer_2_thickness_exp, ow_layer_2_thickness) 

187 self.assertEqual(ow_layer_3_thickness_exp, ow_layer_3_thickness) 

188 self.assertEqual(ow_layer_4_thickness_exp, ow_layer_4_thickness) 

189 self.assertEqual(ow_layer_5_thickness_exp, ow_layer_5_thickness) 

190 self.assertEqual(ow_layer_6_thickness_exp, ow_layer_6_thickness) 

191 

192 # Assertions for window 

193 self.assertEqual(window_layer_thickness_exp, window_layer_thickness) 

194 self.assertEqual(window_inner_radiation_exp, window_inner_radiation) 

195 self.assertEqual(window_inner_convection_exp, window_inner_convection) 

196 self.assertEqual(window_outer_radiation_exp, window_outer_radiation) 

197 self.assertEqual(window_outer_convection_exp, window_outer_convection) 

198 self.assertEqual(window_g_value_exp, window_g_value) 

199 self.assertEqual(window_a_conv_exp, window_a_conv) 

200 self.assertEqual(window_shading_g_total_exp, window_shading_g_total) 

201 self.assertEqual(window_shading_max_irr_exp, window_shading_max_irr)