mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
S0380.65 added the dual-rate Table 12a Grid 1 + Table 12d blend for the electric main_heating CO2 factor, but the STANDARD-tariff branch fell back to the annual Table 12 flat (code 30 = 0.136). Same gap existed on the PE side (no helper at all — line 3756 hardcoded `primary_energy_factor(main_fuel)` = 1.501 annual flat). For the 20-cert STANDARD-tariff ASHP cohort this hid a systematic +2.7 kWh/m² PE under-count on every cert. Per SAP 10.2 Table 12d header (p.195) and Table 12e header (p.196): "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 spec rule applies regardless of tariff — only the high/low split is tariff-dependent. STANDARD-tariff electric mains still require the monthly cascade, just with single-code (30) factors. Cohort closure (PE residual vs lodged EPC PEUI): 9796: -4.18 → -1.36 4800: -3.83 → -0.59 2536: -3.48 → -1.02 ... 20 cluster certs mean: -3.10 → -0.66 Changes: - `_main_heating_co2_factor_kg_per_kwh` — drop STANDARD-tariff fallback; instead apply `_effective_monthly_co2_factor` with `_STANDARD_ELECTRICITY_FUEL_CODE` (30) for STANDARD-tariff electric mains. Dual-rate path unchanged. - NEW `_main_heating_primary_factor(main, tariff, monthly_kwh)` — PE-side mirror covering both STANDARD (single-code 30 monthly cascade) and dual-rate (Table 12a Grid 1 high/low blend over Table 12e high/low codes) paths. - `cert_to_inputs` `space_heating_primary_factor` field — routed through the new helper (was annual `primary_energy_factor`). Tests: - Updated `test_standard_meter_ashp_main_heating_co2_factor_…` (renamed `…_falls_back_to_annual_table_12` → `…_applies_monthly_table_12d_code_30`) to assert the monthly cascade > annual flat by the winter-weighting margin. - Added `test_standard_meter_ashp_main_heating_primary_factor_…` pinning the PE Table 12e analog. - Added `test_dual_meter_ashp_main_heating_primary_factor_…` pinning the dual-rate Table 12a Grid 1 PE blend. - `test_golden_fixtures.py`: 20 ASHP cluster cert pins updated to the post-S0380.71 residuals (mean PE residual -3.10 → -0.66 kWh/m²). Other certs unchanged. Baseline: 544 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 | ||
| sap10_calculator | ||
| sap10_ml | ||
| tasks | ||
| postcode.py | ||