From 233f085fb35569ba241df53bb4fdfffe78348419 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Thu, 2 Jul 2026 16:08:46 +0000 Subject: [PATCH] =?UTF-8?q?Elmhurst=20'No=20Insulation'=20cylinder=20(0=20?= =?UTF-8?q?mm=20lodged)=20takes=20the=20uninsulated=20storage=20loss=20?= =?UTF-8?q?=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- domain/sap10_calculator/rdsap/cert_to_inputs.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/domain/sap10_calculator/rdsap/cert_to_inputs.py b/domain/sap10_calculator/rdsap/cert_to_inputs.py index 3260dd181..5bb76429d 100644 --- a/domain/sap10_calculator/rdsap/cert_to_inputs.py +++ b/domain/sap10_calculator/rdsap/cert_to_inputs.py @@ -7115,11 +7115,17 @@ def _cylinder_storage_loss_override( if sh.cylinder_insulation_thickness_mm is not None else None ) - # SAP 10.2 Table 2: an uninsulated cylinder (lodged insulation type 0) - # takes the loose-jacket formula at t = 0 — the WORST loss SAP knows, - # never the zero-loss combi default (which over-rates the dwelling). + # SAP 10.2 Table 2: an uninsulated cylinder takes the loose-jacket + # formula at t = 0 — the WORST loss SAP knows, never the zero-loss + # combi default (which over-rates the dwelling). Two lodgement shapes + # describe it: the EPB API's insulation type 0, and the Elmhurst + # site-notes path's type None + explicit 0 mm ("No Insulation" maps to + # no material; the lodged thickness carries the signal — see + # `_ELMHURST_CYLINDER_NO_INSULATION_LABELS` in the mapper). if _int_or_none(sh.cylinder_insulation_type) == _CYLINDER_INSULATION_TYPE_NONE: insulation_label, thickness_mm = "loose_jacket", 0.0 + if insulation_label is None and thickness_mm == 0.0: + insulation_label = "loose_jacket" if insulation_label is None: return None if thickness_mm is None: