From fecf4f622c643ed28c6662ff46bebcd6e983e101 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 14 Jul 2026 23:38:49 +0000 Subject: [PATCH] =?UTF-8?q?Default=20the=20water-only=20heat=20network=20t?= =?UTF-8?q?o=20flat-rate=20charging=20per=20RdSAP=2010=20=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 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/domain/sap10_calculator/rdsap/cert_to_inputs.py b/domain/sap10_calculator/rdsap/cert_to_inputs.py index 8db55aa89..3daae3c28 100644 --- a/domain/sap10_calculator/rdsap/cert_to_inputs.py +++ b/domain/sap10_calculator/rdsap/cert_to_inputs.py @@ -1187,6 +1187,11 @@ _HEAT_NETWORK_DHW_CHARGING_FACTOR_BY_CODE: Final[dict[int, float]] = { 2306: 1.00, 2308: 1.00, 2309: 1.00, 2310: 1.00, 2312: 1.00, 2314: 1.00, } +# SAP 10.2 Table 4c(3) (PDF p.169) worksheet (305a) flat-rate-charging +# factor — the RdSAP 10 (spec p.59) default for a water-ONLY heat network +# (WHC 950/951/952), whose own charging method is never lodged. +_TABLE_4C3_FLAT_RATE_CHARGING_FACTOR: Final[float] = 1.05 + def _heat_network_space_charging_factor(main: Optional[MainHeatingDetail]) -> float: """SAP 10.2 Table 4c(3) (PDF p.169) worksheet (305) — heat-network @@ -8024,7 +8029,16 @@ def cert_to_inputs( # heating only ... distribution loss"). q_generated = q_useful × # DLF, so delivered-per-fuel efficiency = plant_eff / DLF. Fires # on the WHC alone — the HW network is independent of the main. - water_eff = water_eff / _heat_network_dlf(primary_age) + # RdSAP 10 (spec p.59, "Heat Network (HN) supplying — water + # heating only"): a non-PCDB water-only network defaults to + # "flat-rate charging", so the Table 4c(3) worksheet (305a) + # factor 1.05 always applies — the scheme's own charging method + # is never lodged (the dwelling's heating-control code describes + # the SPACE network's charging, not this one's). + water_eff = water_eff / ( + _heat_network_dlf(primary_age) + * _TABLE_4C3_FLAT_RATE_CHARGING_FACTOR + ) is_instantaneous = epc.sap_heating.water_heating_code in _INSTANTANEOUS_WATER_CODES # §9a Table 11 secondary fraction — pulled forward of §4 so the # post-§8 Equation D1 cascade can derive Q_space = (98c)m × (204)