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
« 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
8class TestEnrichMaterial(TestTask):
10 @classmethod
11 def simSettingsClass(cls):
12 return BuildingSimSettings()
14 @classmethod
15 def testTask(cls):
16 return EnrichMaterial(cls.playground)
18 @classmethod
19 def helper(cls):
20 return SetupHelperBPS()
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)
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
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
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
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)
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)
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
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
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
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
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)
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)