mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-19 17:03:02 +00:00
The gov API lodges a manufacturer's declared cylinder loss factor (kWh/day) in `sap_heating.cylinder_heat_loss`, in which case it leaves the cylinder volume / insulation type / thickness None. That field was undeclared on the 21.0.x schemas, so `from_dict` dropped it — then `_cylinder_storage_loss_override` hit its insulation-None / volume-None guards and returned None, dropping the §4 storage loss ENTIRELY. The dwelling over-rated (the declared loss is typically ~1.5 kWh/day ≈ 550 kWh/yr). SAP 10.2 §4 branch a) (PDF p.136): when the declared loss factor is known, storage loss (50) = (48) declared loss × (49) Table-2b temperature factor — replacing the Table 2 V×L×VF computation. - declare `cylinder_heat_loss` on RdSapSchema21_0_0/21_0_1.SapHeating + EpcPropertyData.SapHeating; thread through the 21.0.x mappers. - `cylinder_storage_loss_monthly_kwh` gains `declared_loss_kwh_per_day`: when set, combined_55 = declared × TF (volume/insulation unused). - `_cylinder_storage_loss_override` resolves the declared loss BEFORE the insulation/volume guards (the gov omits those when the loss is lodged). 12 /tmp certs carry it (mean |err| 3.00 -> 2.51; the clean ones close hard, e.g. 2360 2.65 -> 0.30, 0245 2.25 -> 0.53). Corpus within-0.5 67.0% -> 67.3% (MAE 1.025 -> 1.020); /tmp 71.2% -> 71.4% (0.889 -> 0.882). Worksheet harness 47/47; regression = only the 3 pre-existing fails; pyright net-zero. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| appendix_h_solar.py | ||
| dimensions.py | ||
| energy_requirements.py | ||
| fabric_energy_efficiency.py | ||
| fuel_cost.py | ||
| heat_transmission.py | ||
| internal_gains.py | ||
| mean_internal_temperature.py | ||
| mev.py | ||
| photovoltaic.py | ||
| rating.py | ||
| solar_gains.py | ||
| space_cooling.py | ||
| space_heating.py | ||
| utilisation_factor.py | ||
| ventilation.py | ||
| water_heating.py | ||