mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
A door opening to an unheated corridor/stairwell takes U=1.4 W/m²K (RdSAP 10 Table 26, p.51 — any age band) instead of the 3.0 external-door default, and its area deducts from the SHELTERED wall, not the main wall (RdSAP §3.7, p.18: "the door of a flat/maisonette to an unheated stairwell or corridor ... is deducted from the sheltered wall area"). The cascade previously billed every door at the external U on the main wall. Signal: a SHELTERED alternative wall (`is_sheltered`, the RdSAP §5.9 wall-to-unheated-corridor surface, already modelled) is the evidence that the dwelling is accessed via an unheated corridor, so one lodged door opens to it. `_corridor_door_count` returns 1 when a sheltered alt wall is present and >=1 door is lodged, else 0 — so the door channel is unchanged for every non-corridor dwelling (houses, exposed-gable flats). `heat_transmission_ from_cert` gains a `corridor_door_count` param (default 0): it splits the door area into external (main wall, age-default U) + corridor (sheltered alt wall, U=1.4), threading the corridor door's area into that wall's opening deduction and billing it at 1.4. Validated on TWO faithful worksheets: simulated case 34 (cert 001431 storage flat — doors 8.14 exact, fabric 207.47 ≈ ws 207.48) and the long-standing worksheet-harness diverger cert 2474 (−0.87 → −0.32, the "space-demand thread" was the dropped corridor door). The worksheet harness is now 47/47 with ZERO divergers. API SAP gauge: 57.6% → 60.0% within 0.5; mean|err| 1.185 → 1.167; signed −0.165 → −0.115 — ~22 sheltered-corridor flats were a systematic gap. Regression gate green (3 pre-existing fails unrelated); pyright net-zero. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| applications | ||
| domain | ||
| infrastructure | ||
| orchestration | ||
| repositories | ||
| utilities | ||
| __init__.py | ||
| conftest.py | ||
| test_lambda_packaging.py | ||