Model/domain
Khalim Conn-Kowlessar a21195ff25 Slice S0380.63: SAP 10.2 Table 4f additive pumps_fans components — Main 2 flue + solar HW
Cert 000565 has two Table 4f line items the existing
`_PUMPS_FANS_KWH_BY_MAIN_CATEGORY` lookup misses:
- (230e) Main 2 gas-combi flue fan = 45 kWh (Main 1 is the HP, so
  Main 1's category doesn't carry the gas flue fan — the 2-main
  cert has its flue fan on Main 2)
- (230g) Solar HW pump = 80 kWh (= [25 + 5×H1] × 2 per Table 4f
  with H1 = 3 m² collector aperture default)

New `_table_4f_additive_components(epc)` sums these on top of the
Main 1 category base. Per SAP 10.2 Table 4f page 174:
  - Gas boiler flue fan (fan-assisted): 45 kWh
  - Solar thermal system pump (electrically powered):
    [25 + 5×H1] × (2000 ÷ 1000) kWh, where H1 is the solar
    collector aperture area in m²

H1 currently defaults to 3.0 m² (cert 000565 lodging — flat-panel
3 m² is the most common UK domestic solar HW spec). TODO: extend
the Elmhurst schema + extractor to lodge `solar_collector_aperture_
area_m2` from Summary §16 so the cascade reads the actual value.

Cert 000565 cascade impact:
- pumps_fans_kwh_per_yr: 130 → 255  (Δ −122.52 → +2.48)
  The remaining +2.48 surplus is the (230a) MEV component
  miscounted in the 130 default base — Main 1 HP should give base
  = 0 per Table 4f ("circulation pump in COP"), but mapper-side
  HP-category derivation is its own deferred slice. With MEV
  properly wired and HP category = 4, the cert closes exactly to
  the 252.52 worksheet pin.
- total_fuel_cost_gbp: Δ −167.49 → −150.93 (the +125 kWh delta
  bills at the ALL_OTHER_USES blended rate £0.1324 → +£16.55)
- sap_score_continuous: Δ +1.91 → +1.72

Deferred (out of slice scope):
- (230a) MEV / MVHR — needs PCDB MEV lookup table + IUF derivation.
  For cert 000565 worksheet shows MEV = 127.5 kWh = IUF × SFP ×
  1.22 × V (V = 641.59 m³, PCDF 500755 SFP = 0.1274, IUF ≈ 1.278
  derived from worksheet). Next slice.
- HP SAP code (224, 211-227, 521-524) → main_heating_category=4
  in mapper — would change pumps_fans Main 1 base from 130 default
  to 0 (correct per Table 4f HP row). Currently blocked on MEV
  cascade landing — without MEV, dropping base from 130 to 0
  worsens the residual.

Cohort regression check: 427 pass + 10 expected 000565 fails. The
14 Elmhurst Summary fixtures + JSON fixtures + cohort ASHP all
either: (a) have no Main 2 lodged → no flue contribution, or
(b) have no solar HW lodged → no pump contribution. The additive
helper returns 0 for those certs.

Spec source: SAP 10.2 §10a Table 4f page 174 (verified verbatim).
RdSAP 10 references Table 4f via §19.1.

Pyright net-zero (34 / 34).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 08:06:22 +00:00
..
addresses get rid of comments 2026-05-20 13:21:11 +00:00
sap10_calculator Slice S0380.63: SAP 10.2 Table 4f additive pumps_fans components — Main 2 flue + solar HW 2026-05-29 08:06:22 +00:00
sap10_ml Slice S0380.26: RdSAP10 §5.8 dry-lining adjustment on alt walls — closes cert 7700 -0.44 → +5e-5 2026-05-28 10:56:11 +00:00
tasks added postcode splitter rewrite to ddd 2026-05-19 16:35:09 +00:00
postcode.py get rid of comments 2026-05-20 13:21:11 +00:00