mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
44 lines
1.8 KiB
Python
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
|
|
)
|