mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-27 23:35:01 +00:00
A cert lodging its horizontal dimensions measured externally (measurement_type=2) must have its floor area and exposed perimeter converted to internal dimensions before any SAP use (RdSAP 10 §3.4 + Table 2, p.17-18). measurement_type was read nowhere (the `# What is this?` field), so external certs carried a TFA ~11-15% too large — inflating occupancy and understating every per-m2 output (CO2/m2, PE/m2). Plumb measurement_type onto EpcPropertyData, and add a post-mapping _with_internal_dimensions step: compute ONE whole-dwelling area/perimeter ratio from the ground-floor footprint via the Table 2 built-form equation (§3.4 Note 4 — not a per-storey conversion, which over-corrects multi-part mid-terraces), apply it to every storey's area/perimeter, reduce party walls by 2w (Note 5), and refresh total_floor_area_m2 (read for occupancy N). Wall thickness w is the lodged main-dwelling value, else the Table 3 default (p.19). Room-in-roof floor area is always internal (§3.1) and left untouched. Scoped to the RdSAP-Schema reduced-data family (17.0-21.x) where per-storey external dims are the lodgement standard; legacy SAP-Schema-15.0/16.x are plumbed but not converted. Corpus: within-0.5 81.0% -> 81.2%, MAE 0.571 -> 0.570, PE 2.5 -> 2.4. Cert 100091435353 TFA 128.7 -> 111.6 (lodged 112), SAP 66.23 -> 65.33 (+1.2 -> +0.3); mean |dSAP vs lodged| over the 12 external certs 0.556 -> 0.429. Closes #1669. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| epc | ||
| __init__.py | ||
| address_match.py | ||
| datatypes.py | ||
| enums.py | ||