diff --git a/model_data/recommendations/WallRecommendations.py b/model_data/recommendations/WallRecommendations.py index 7cad0cca..a5df28bb 100644 --- a/model_data/recommendations/WallRecommendations.py +++ b/model_data/recommendations/WallRecommendations.py @@ -11,7 +11,7 @@ external_wall_insulation_parts = [ # -slab-ewi-render-fire/ "type": "external_wall_insulation", "description": "Mineral Wool External Wall Insulation", - "depths": [30, 50, 70, 80, 90, 100], + "depths": [30, 50, 70, 80, 90, 100, 150, 200], "depth_unit": "mm", "cost": None, "cost_unit": None, @@ -89,22 +89,24 @@ external_wall_insulation_parts = [ } ] -wall_parts = [ +internal_wall_insulation_parts = [ { - "id": 1, "type": "internal_wall_insulation", "description": "Internal wall insulation", - "depth": None, + "depths": [30, 50, 70, 80, 90, 100, 150], "depth_unit": "mm", "cost": None, + "cost_unit": None, # The u-value here is just a placehoder for now and we probably want to have multiple # options for internal wall insulation (e.g. 50mm, 100mm, 150mm), with different material types # and costs - "u_value": 0.3 - }, - + "r_value_per_mm": 0.0278, + "r_value_unit": "m2K/W" + } ] +wall_parts = external_wall_insulation_parts + internal_wall_insulation_parts + class WallRecommendations: YEAR_WALLS_BUILT_WITH_INSULATION = 1990 @@ -174,6 +176,32 @@ class WallRecommendations: } ) + if is_solid_brick: + + # This is an estimated figure based on industry standards + u_value = self.DEFAULT_U_VALUES["solid_brick"] + + # Recommend external and internal wall insulation + parts = [ + part for part in wall_parts if part["type"] in ["external_wall_insulation", "internal_wall_insulation"] + ] + for part in parts: + + for depth in part["depths"]: + part_u_value = self.r_value_per_mm_to_u_value(depth, part["r_value_per_mm"]) + + _, new_u_value = self.calculate_u_value_uplift(u_value, part_u_value) + new_u_value = round(new_u_value, 2) + + # We allow a small tolerance for error so we don't discount the recommendation entirely + # if it's close, since this is an estimated new u-value + if new_u_value - self.U_VALUE_ERROR <= self.BUILDING_REGULATIONS_PART_L_MAX_U_VALUE: + self.recommendations.append( + { + **part, "new_u_value": new_u_value, + } + ) + raise NotImplementedError("Not implemented yet") @staticmethod