Default the water-only heat network to flat-rate charging per RdSAP 10 🟩

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-07-14 23:38:49 +00:00
parent e6525f7b31
commit fecf4f622c

View file

@ -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)