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)