added exposed floor insulation

This commit is contained in:
Khalim Conn-Kowlessar 2023-10-24 16:02:08 +08:00
parent 1228c680a6
commit 448c6a3772
3 changed files with 18 additions and 10 deletions

View file

@ -15,7 +15,7 @@ def filter_materials(materials):
mapping = {
"walls": ["internal_wall_insulation", "external_wall_insulation", "cavity_wall_insulation"],
"floor": ["suspended_floor_insulation", "solid_floor_insulation"],
"floor": ["suspended_floor_insulation", "solid_floor_insulation", "exposed_floor_insulation"],
"ventilation": ["mechanical_ventilation"],
"roof": ["loft_insulation"]
}

View file

@ -45,10 +45,13 @@ class FloorRecommendations(Definitions):
part for part in self.materials if part["type"] == "solid_floor_insulation"
]
self.exposed_floor_insulation_parts = [
part for part in self.materials if part["type"] == "exposed_floor_insulation"
]
def recommend(self):
u_value = self.property.floor["thermal_transmittance"]
is_suspended = self.property.floor["is_suspended"]
is_solid = self.property.floor["is_solid"]
floor_level = (
FLOOR_LEVEL_MAP[self.property.data["floor-level"]] if
self.property.data["floor-level"] not in self.DATA_ANOMALY_MATCHES else None
@ -89,14 +92,17 @@ class FloorRecommendations(Definitions):
)
self.estimated_u_value = u_value
if is_suspended:
if self.property.floor["is_suspended"]:
# Given the U-value, we recommend underfloor insulation
self.recommend_floor_insulation(u_value=u_value, parts=self.suspended_floor_insulation_parts)
if is_solid:
if self.property.floor["is_solid"]:
# Given the U-value, we recommend solid floor insulation options which are usually solid foam
self.recommend_floor_insulation(u_value=u_value, parts=self.solid_floor_insulation_parts)
if self.property.floor["is_to_unheated_space"] or self.property.floor["is_to_external_air"]:
self.recommend_floor_insulation(u_value=u_value, parts=self.exposed_floor_insulation_parts)
raise NotImplementedError("Implement me!")
@staticmethod

View file

@ -347,11 +347,13 @@ def get_exposed_floor_uvalue(insulation_thickness_str, age_band):
:return:
"""
if age_band in ["A", "B", "C", "D", "E", "F", "G", "H", "I"]:
# As directed by the documentation, if the insulation thickness is not known, we assume it's
# 50mm for these age bands
if insulation_thickness_str in ["below_average", "average", "above_average"]:
insulation_thickness = 50
unknown_insulation_age_bands = ["A", "B", "C", "D", "E", "F", "G", "H", "I"]
# As directed by the documentation, if the insulation thickness is not known, we assume it's
# 50mm for these age bands
if insulation_thickness_str in ["below_average", "average", "above_average"] and (
age_band in unknown_insulation_age_bands
):
insulation_thickness = 50
elif insulation_thickness_str in ["none", None]:
insulation_thickness = 0
elif insulation_thickness_str in ["below_average"]: