mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
S0380.71 closed STANDARD-tariff electric MAIN heating PE/CO2 via the monthly Table 12d/12e cascade. The same spec rule applies to HOT WATER but the cascade still hardcoded the annual flat factors at `cert_to_inputs.py:3697-3699` (CO2) and `:3826-3828` (PE), plus the §12 / §13a section helpers. This slice extends the spec-citation fix to HW. Per SAP 10.2 Table 12d (p.195) and Table 12e (p.196) headers: "Where electricity is the fuel used, the relevant set of factors in the table below should be used to calculate the monthly [CO2 emissions / primary energy] instead the annual average factor given in Table 12." The rule applies to ALL electric end-uses regardless of tariff, including the HW path. For electric HW (`water_heating_fuel=29` API standard electricity → Table 12 code 30) the monthly cascade weighted by `wh_result.output_monthly_kwh` (HW demand monthly proxy) lands at ~0.140 CO2 / ~1.517 PE vs annual flat 0.136 / 1.501 on a HW demand profile. Cohort closure (20 STANDARD-tariff ASHP certs): Mean PE residual: −0.66 → −0.36 kWh/m² (≈+0.30 closure per cert) Worst cert 9796: −1.36 → −1.08 PE / −0.005 → −0.002 CO2 t/yr Cumulative S0380.71 + S0380.72 closure for the ASHP cohort: Mean PE residual: −3.10 → −0.36 kWh/m² (8.6× compression) Changes: - NEW `_hot_water_co2_factor_kg_per_kwh(epc, hw_monthly_kwh)` helper — electric HW fuel → monthly Table 12d cascade; non-electric HW fuel → annual Table 12 factor. - NEW `_hot_water_primary_factor(epc, hw_monthly_kwh)` helper — PE mirror per Table 12e. - `cert_to_inputs` `hot_water_co2_factor_kg_per_kwh` / `hot_water_primary_factor` fields routed through the new helpers (was annual flat `co2_factor_kg_per_kwh` / `primary_energy_factor`). - `environmental_section_from_cert` (§12) + `primary_energy_section_ from_cert` (§13a) section helpers updated to read the cert_to_inputs HW factor fields rather than recomputing annual flat — keeps the worksheet line refs in sync with the cascade. - Imports: add `PRIMARY_ENERGY_FACTOR`, `_DEFAULT_CO2_KG_PER_KWH`, `_DEFAULT_PEF` from `table_12` for the helpers' degenerate paths. Tests: - `test_electric_water_heating_co2_and_pe_factors_apply_monthly_ table_12d_12e` — pins electric HW > annual flat by the winter- weighting margin. - `test_gas_water_heating_co2_and_pe_factors_pass_through_annual_ table_12` — pins mains-gas HW at 0.210 / 1.130 (Table 12 code 1 annual factors). - `test_golden_fixtures.py`: 20 ASHP cluster cert pins updated to the post-S0380.72 residuals; other certs unchanged. Baseline: 546 pass + 9 expected `test_sap_result_pin[000565-*]` cascade-gap fails. Pyright net-zero on every touched file. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| addresses | ||
| data_transformation | ||
| epc | ||
| sap10_calculator | ||
| sap10_ml | ||
| tasks | ||
| postcode.py | ||