Model/model_data/recommendations/FloorRecommendations.py
Khalim Conn-Kowlessar c116adf3c0 minor
2023-06-24 22:50:08 +01:00

44 lines
1.8 KiB
Python

from model_data.BaseUtility import BaseUtility
from model_data.Property import Property
from model_data.analysis.UvalueEstimations import UvalueEstimations
class FloorRecommendations(BaseUtility):
# part L building regulations indicate that any rennovations on an existing property's walls should
# achieve a U-value of no higher than 0.3
BUILDING_REGULATIONS_PART_L_MAX_U_VALUE = 0.25
# We don't recommend measures that are too low because it becomes expensive, therefore we aim to avoid
# diminishing returns. This value should be verified with Osmosis (TODO)
DIMINISHING_RETURNS_U_VALUE = 0.2
def __init__(self, property_instance: Property, uvalue_estimates: UvalueEstimations):
self.property = property_instance
self.uvalue_estimates = uvalue_estimates
# For audit purposes, when estimating u values we'll store it
self.estimated_u_value = None
# Will contains a list of recommended measures
self.recommendations = []
def recommend(self):
is_suspended = self.property.floor["is_suspended"]
insulation_thickness = self.property.floor["insulation_thickness"]
self.property.year_built
self.property.data["floor-energy-eff"]
self.property.data["floor-env-eff"]
# TODO: We neeed to know if the property is ground floor or not
if self.property.floor["another_property_below"]:
# If there's another property below, it's likely impractical to recommend a floor upgrade
return
if is_suspended:
if insulation_thickness == "none":
uvalue = None
else:
uvalue = self.uvalue_estimates.get_estimate(
component="floor",
description="",
thickness=insulation_thickness
)