mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
handling uncommon heating systems
This commit is contained in:
parent
25f4c7f246
commit
0988fb7d6d
2 changed files with 72 additions and 55 deletions
|
|
@ -402,8 +402,11 @@ class Funding:
|
||||||
):
|
):
|
||||||
return 'DHS non-CHP'
|
return 'DHS non-CHP'
|
||||||
|
|
||||||
if mainheating["has_electric_storage_heaters"] and mainheat_energy_eff == "Very Poor":
|
if mainheating["has_electric_storage_heaters"] and (
|
||||||
|
(mainheat_energy_eff == "Very Poor") or pd.isnull(mainheat_energy_eff)
|
||||||
|
):
|
||||||
return 'Electric Storage Heaters Responsiveness <=0.2'
|
return 'Electric Storage Heaters Responsiveness <=0.2'
|
||||||
|
|
||||||
if mainheating["has_electric_storage_heaters"] and mainheat_energy_eff in [
|
if mainheating["has_electric_storage_heaters"] and mainheat_energy_eff in [
|
||||||
"Poor", "Average", "Good", "Very Good",
|
"Poor", "Average", "Good", "Very Good",
|
||||||
]:
|
]:
|
||||||
|
|
@ -421,7 +424,7 @@ class Funding:
|
||||||
if mainheating["has_room_heaters"] and (
|
if mainheating["has_room_heaters"] and (
|
||||||
main_fuel["fuel_type"] in [
|
main_fuel["fuel_type"] in [
|
||||||
"dual fuel appliance mineral and wood", "manufactured smokeless fuel", "dual fuel mineral wood", "oil",
|
"dual fuel appliance mineral and wood", "manufactured smokeless fuel", "dual fuel mineral wood", "oil",
|
||||||
'smokeless coal'
|
'smokeless coal', 'wood logs'
|
||||||
] or mainheating["has_coal"]
|
] or mainheating["has_coal"]
|
||||||
):
|
):
|
||||||
return 'Solid Fossil Room Heaters'
|
return 'Solid Fossil Room Heaters'
|
||||||
|
|
@ -437,11 +440,12 @@ class Funding:
|
||||||
return 'Electric Room Heaters'
|
return 'Electric Room Heaters'
|
||||||
|
|
||||||
if mainheating["has_warm_air"] and main_fuel["fuel_type"] == "mains gas":
|
if mainheating["has_warm_air"] and main_fuel["fuel_type"] == "mains gas":
|
||||||
# Treat warm air gas system as a condensing gas boiler
|
|
||||||
if mainheat_energy_eff in ["Good", "Very Good"]:
|
if mainheat_energy_eff in ["Good", "Very Good"]:
|
||||||
return "Condensing Gas Boiler"
|
return 'Condensing Gas Boiler'
|
||||||
else:
|
elif mainheat_energy_eff in ["Average", "Poor"]:
|
||||||
return "Non Condensing Gas Boiler"
|
return 'Non Condensing Gas Boiler'
|
||||||
|
elif mainheat_energy_eff == "Very Poor":
|
||||||
|
return 'Gas Back Boiler to Radiators'
|
||||||
|
|
||||||
if mainheating["has_electricaire"]:
|
if mainheating["has_electricaire"]:
|
||||||
# Based on current understanding, electricaire is an electric warm air storage heater, using
|
# Based on current understanding, electricaire is an electric warm air storage heater, using
|
||||||
|
|
@ -455,6 +459,13 @@ class Funding:
|
||||||
if mainheating["has_electric_underfloor_heating"] or mainheating["has_electric_ceiling_heating"]:
|
if mainheating["has_electric_underfloor_heating"] or mainheating["has_electric_ceiling_heating"]:
|
||||||
return "Electric Room Heaters"
|
return "Electric Room Heaters"
|
||||||
|
|
||||||
|
# Treat warm air lpg as a direct acting lpg oiler
|
||||||
|
if mainheating["has_warm_air"] and main_fuel["fuel_type"] == "lpg":
|
||||||
|
if mainheat_energy_eff in ["Good", "Very Good"]:
|
||||||
|
return 'Condensing LPG Boiler'
|
||||||
|
else: # Average, Poor, Very Poor
|
||||||
|
return 'Non Condensing LPG Boiler'
|
||||||
|
|
||||||
raise ValueError("Invalid pre heating system")
|
raise ValueError("Invalid pre heating system")
|
||||||
|
|
||||||
def calculate_partial_project_abs(
|
def calculate_partial_project_abs(
|
||||||
|
|
|
||||||
|
|
@ -1015,57 +1015,63 @@ mock_project_scores_matrix = mock_project_scores_matrix()
|
||||||
mock_whlg_postcodes = mock_whlg_postcodes()
|
mock_whlg_postcodes = mock_whlg_postcodes()
|
||||||
mock_partial_scores_matrix = mock_partial_scores_matrix()
|
mock_partial_scores_matrix = mock_partial_scores_matrix()
|
||||||
|
|
||||||
|
errors = []
|
||||||
for _, x in tqdm(epc_df.iterrows(), total=len(epc_df)):
|
for _, x in tqdm(epc_df.iterrows(), total=len(epc_df)):
|
||||||
# inputs
|
try:
|
||||||
mainheat_energy_eff = x["MAINHEAT_ENERGY_EFF"]
|
# inputs
|
||||||
heating_cleaner = MainHeatAttributes(description=x["MAINHEAT_DESCRIPTION"])
|
mainheat_energy_eff = x["MAINHEAT_ENERGY_EFF"]
|
||||||
fuel_cleaner = MainFuelAttributes(description="" if pd.isnull(x["MAIN_FUEL"]) else x["MAIN_FUEL"])
|
heating_cleaner = MainHeatAttributes(description=x["MAINHEAT_DESCRIPTION"])
|
||||||
|
fuel_cleaner = MainFuelAttributes(description="" if pd.isnull(x["MAIN_FUEL"]) else x["MAIN_FUEL"])
|
||||||
|
|
||||||
h = heating_cleaner.process()
|
h = heating_cleaner.process()
|
||||||
f = fuel_cleaner.process()
|
f = fuel_cleaner.process()
|
||||||
|
|
||||||
funding = Funding(
|
funding = Funding(
|
||||||
project_scores_matrix=mock_project_scores_matrix,
|
project_scores_matrix=mock_project_scores_matrix,
|
||||||
partial_project_scores_matrix=mock_partial_scores_matrix,
|
partial_project_scores_matrix=mock_partial_scores_matrix,
|
||||||
whlg_eligible_postcodes=mock_whlg_postcodes,
|
whlg_eligible_postcodes=mock_whlg_postcodes,
|
||||||
social_cavity_abs_rate=13.5,
|
social_cavity_abs_rate=13.5,
|
||||||
social_solid_abs_rate=17,
|
social_solid_abs_rate=17,
|
||||||
private_cavity_abs_rate=13.5,
|
private_cavity_abs_rate=13.5,
|
||||||
private_solid_abs_rate=17,
|
private_solid_abs_rate=17,
|
||||||
tenure="Social"
|
tenure="Social"
|
||||||
)
|
)
|
||||||
|
|
||||||
self = funding
|
self = funding
|
||||||
measures = measures
|
measures = measures
|
||||||
starting_sap = 33
|
starting_sap = 33
|
||||||
ending_sap = 69
|
ending_sap = 69
|
||||||
floor_area = 71
|
floor_area = 71
|
||||||
mainheat_description = x["MAINHEAT_DESCRIPTION"]
|
mainheat_description = x["MAINHEAT_DESCRIPTION"]
|
||||||
heating_control_description = x["MAINHEATCONT_DESCRIPTION"]
|
heating_control_description = x["MAINHEATCONT_DESCRIPTION"]
|
||||||
is_cavity = True
|
is_cavity = True
|
||||||
current_wall_uvalue = 2
|
current_wall_uvalue = 2
|
||||||
is_partial = False
|
is_partial = False
|
||||||
existing_li_thickness = 0
|
existing_li_thickness = 0
|
||||||
has_wall_insulation_recommendation = True
|
has_wall_insulation_recommendation = True
|
||||||
has_roof_insulation_recommendation = True
|
has_roof_insulation_recommendation = True
|
||||||
mainheating = h
|
mainheating = h
|
||||||
main_fuel = f
|
main_fuel = f
|
||||||
mainheat_energy_eff = mainheat_energy_eff
|
mainheat_energy_eff = mainheat_energy_eff
|
||||||
|
|
||||||
funding.check_funding(
|
funding.check_funding(
|
||||||
measures=measures,
|
measures=measures,
|
||||||
starting_sap=33,
|
starting_sap=33,
|
||||||
ending_sap=69,
|
ending_sap=69,
|
||||||
floor_area=71,
|
floor_area=71,
|
||||||
mainheat_description=x["MAINHEAT_DESCRIPTION"],
|
mainheat_description=x["MAINHEAT_DESCRIPTION"],
|
||||||
heating_control_description=x["MAINHEATCONT_DESCRIPTION"],
|
heating_control_description=x["MAINHEATCONT_DESCRIPTION"],
|
||||||
is_cavity=True,
|
is_cavity=True,
|
||||||
current_wall_uvalue=2,
|
current_wall_uvalue=2,
|
||||||
is_partial=False,
|
is_partial=False,
|
||||||
existing_li_thickness=0,
|
existing_li_thickness=0,
|
||||||
has_wall_insulation_recommendation=True,
|
has_wall_insulation_recommendation=True,
|
||||||
has_roof_insulation_recommendation=True,
|
has_roof_insulation_recommendation=True,
|
||||||
mainheating=h,
|
mainheating=h,
|
||||||
main_fuel=f,
|
main_fuel=f,
|
||||||
mainheat_energy_eff=mainheat_energy_eff,
|
mainheat_energy_eff=mainheat_energy_eff,
|
||||||
)
|
)
|
||||||
|
except Exception as e:
|
||||||
|
errors.append(x["LMK_KEY"])
|
||||||
|
|
||||||
|
errored_epcs = epc_df[epc_df["LMK_KEY"].isin(errors)]
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue