mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
Remap every window's glazing from a landlord glazing override 🟩
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8ce22a5ccb
commit
608e96bb09
1 changed files with 18 additions and 0 deletions
|
|
@ -19,6 +19,7 @@ from datatypes.epc.domain.epc_property_data import (
|
||||||
)
|
)
|
||||||
from domain.modelling.simulation import (
|
from domain.modelling.simulation import (
|
||||||
EpcSimulation,
|
EpcSimulation,
|
||||||
|
GlazingOverlay,
|
||||||
HeatingOverlay,
|
HeatingOverlay,
|
||||||
LightingOverlay,
|
LightingOverlay,
|
||||||
SecondaryHeatingOverlay,
|
SecondaryHeatingOverlay,
|
||||||
|
|
@ -53,6 +54,8 @@ def apply_simulations(
|
||||||
)
|
)
|
||||||
if simulation.lighting is not None:
|
if simulation.lighting is not None:
|
||||||
_fold_lighting(result, simulation.lighting)
|
_fold_lighting(result, simulation.lighting)
|
||||||
|
if simulation.glazing is not None:
|
||||||
|
_fold_glazing(result, simulation.glazing)
|
||||||
if simulation.heating is not None:
|
if simulation.heating is not None:
|
||||||
_fold_heating(result, simulation.heating)
|
_fold_heating(result, simulation.heating)
|
||||||
if simulation.secondary_heating is not None:
|
if simulation.secondary_heating is not None:
|
||||||
|
|
@ -202,6 +205,21 @@ def _fold_window(window: SapWindow, overlay: WindowOverlay) -> None:
|
||||||
details.solar_transmittance = overlay.solar_transmittance
|
details.solar_transmittance = overlay.solar_transmittance
|
||||||
|
|
||||||
|
|
||||||
|
def _fold_glazing(epc: EpcPropertyData, overlay: GlazingOverlay) -> None:
|
||||||
|
"""Expand a whole-dwelling `GlazingOverlay` across every window: set each
|
||||||
|
window's `glazing_type` to the corrected SAP10 code AND clear its lodged
|
||||||
|
transmission U, so `heat_transmission`'s Table-24 cascade re-derives U from
|
||||||
|
the new type (the lodged U was for the old, mis-recorded glazing). A landlord
|
||||||
|
glazing override carries no per-window geometry, so it applies uniformly —
|
||||||
|
the expansion lives here because the baseline window list is known only at
|
||||||
|
fold time."""
|
||||||
|
if overlay.glazing_type is None:
|
||||||
|
return
|
||||||
|
for window in epc.sap_windows:
|
||||||
|
window.glazing_type = overlay.glazing_type
|
||||||
|
window.window_transmission_details = None
|
||||||
|
|
||||||
|
|
||||||
def _fold_ventilation(
|
def _fold_ventilation(
|
||||||
baseline: Optional[SapVentilation], overlay: VentilationOverlay
|
baseline: Optional[SapVentilation], overlay: VentilationOverlay
|
||||||
) -> SapVentilation:
|
) -> SapVentilation:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue