From 8e487a9bae5eee8077ca2713c4c812ac180fca56 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Thu, 2 Jul 2026 20:49:58 +0000 Subject: [PATCH] docs(elmhurst): validate slice-5 wall fix against accredited Elmhurst worksheet (uprn 200004296092) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Built the cert in accredited Elmhurst RdSAP10-Online on the lodged register inputs; downloaded Input Summary + SAP Worksheets (committed alongside). Confirmed: - Slice 5 DIRECTION validated: the externally-insulated solid-brick wall is billed insulated by both tools (Elmhurst U 0.48, engine U 0.29), far below the uninsulated 1.40 the pre-fix §5.8 gate produced. - ROOF matches EXACTLY (U 0.30, 9.35 W/K). - Engine 71.74 = lodged 71; Elmhurst current SAP 66 (its "unknown external insulation" default is more conservative + this build used a generic combi and no keyed wall thickness, so 66 is not a clean engine-comparison). Follow-up lead (documented in ELMHURST_FINDINGS.md): the engine feeds the UNMEASURED lodged wall_thickness (360 mm, measured=N) into the §5.6 formula, whereas RdSAP §5.3 uses measured thickness / Table-3 default otherwise. The party-wall "difference" is NOT a bug (engine 0.25 is spec-correct, Table 15 row 4). Also adds the build script scripts/hyde/build_200004296092.py. No engine change in this commit. Co-Authored-By: Claude Fable 5 --- .../uprn_200004296092/ELMHURST_FINDINGS.md | 70 + .../uprn_200004296092/elmhurst_summary.pdf | Bin 0 -> 78631 bytes .../uprn_200004296092/elmhurst_worksheet.pdf | Bin 0 -> 44339 bytes .../uprn_200004296092/sum.txt | 254 ++++ .../uprn_200004296092/ws.txt | 1311 +++++++++++++++++ scripts/hyde/build_200004296092.py | 297 ++++ 6 files changed, 1932 insertions(+) create mode 100644 backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/ELMHURST_FINDINGS.md create mode 100644 backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/elmhurst_summary.pdf create mode 100644 backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/elmhurst_worksheet.pdf create mode 100644 backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/sum.txt create mode 100644 backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/ws.txt create mode 100644 scripts/hyde/build_200004296092.py diff --git a/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/ELMHURST_FINDINGS.md b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/ELMHURST_FINDINGS.md new file mode 100644 index 000000000..165cbe29a --- /dev/null +++ b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/ELMHURST_FINDINGS.md @@ -0,0 +1,70 @@ +# Elmhurst validation — UPRN 200004296092 (corpus, slice-5 wall fix) + +Built in accredited Elmhurst RdSAP10-Online on the lodged register inputs +(end-terrace house, solid brick + **external insulation, thickness "NI"**, +pitched 150 mm loft, solid ground floor, mains-gas combi, TFA 62). +Artefacts: `elmhurst_summary.pdf` (Input Summary), `elmhurst_worksheet.pdf` +(SAP Worksheets). + +## Headline +- **Lodged SAP 71**; **engine 71.74** (post slice-5 §5.4 100 mm fix, was 64.35); + **accredited Elmhurst current SAP 66** (band D), potential 75. +- Slice 5 is **directionally validated**: the externally-insulated wall must be + billed insulated, not at the uninsulated 1.40 the §5.8 gate produced. Both + Elmhurst (0.48) and the engine (0.29) are far below 1.40. + +## Fabric line-by-line (engine dive vs Elmhurst worksheet) +| Element | Engine | Elmhurst | Note | +|---|---|---|---| +| External wall | 21.1 W/K (U 0.29) | 30.7 W/K (U **0.48**, "SolidWallDensePlaster**200**") | see WALL below | +| Roof | 9.35 W/K (U 0.30) | 9.35 W/K (U 0.30) | **exact match** | +| Ground floor | 21.2 W/K | 22.7 W/K (U 0.73) | close | +| Party wall | **8.57 W/K** | **0.00 W/K** | see PARTY below | +| Windows | 7.96 W/K | ~same area (4.31 + 4×2.89 split) | ~ | + +The wall (engine −9.6) and party wall (engine +8.6) differences nearly cancel, +so the two HTCs are close; the residual SAP gap (71.7 vs 66) is dominated by the +heating system — this build used a GENERIC Post-98 condensing combi, whereas the +engine uses the lodged PCDB 16137 (Ideal Logic combi 30). Not a clean 1e-4 +comparison for that reason. + +## Leads (both partly confounded by an imperfect build — see caveats) +1. **WALL — base thickness on an unmeasured wall.** The cert lodges + `wall_thickness 360` but `wall_thickness_measured = N`. Elmhurst modelled a + **~200 mm** base wall ("SolidWallDensePlaster200") — but note my build did + NOT enter a wall thickness, so Elmhurst used its own default; had I keyed + 360 mm it might match the engine. The open question is genuine though: + RdSAP §5.3 uses the documentary/measured thickness, and when NOT measured + the engine perhaps should fall to the Table-3 default rather than trust the + unmeasured lodged 360 mm. WORTH A DEDICATED CHECK (build with the thickness + keyed both ways). +2. **PARTY WALL — NOT an engine gap.** Elmhurst rendered the party wall as + "Solid, U 0.00", but the engine's **0.25** is SPEC-CORRECT: RdSAP §5.10 + Table 15 row 4 ("unable to determine, house") = 0.25. The cert lodges + `party_wall_construction = 0` (unable to determine), so 0.25 is right; the + Elmhurst 0.00 reflects how my build's party-wall dropdown resolved (a + "Solid" masonry party wall, Table 15 row 1 = 0), not the cert's "unknown". + Build artifact, not a bug. + +## Build caveats (why the 71.7-vs-66 residual isn't cleanly attributable) +- Heating: built a GENERIC Post-98 condensing combi; the engine uses the lodged + PCDB 16137 (Ideal Logic combi 30) — different efficiency. +- Wall thickness: not keyed into Elmhurst (defaulted 200 mm) vs engine's 360 mm. +- Party wall: entered as a resolved type (0.00) vs the cert's "unable to + determine" (engine 0.25). +So this build's clean, confirmed results are: (a) the ROOF matches exactly +(U 0.30, 9.35 W/K), (b) slice 5's DIRECTION is validated (insulated wall, not +the uninsulated 1.40). The wall-thickness question (lead 1) is the one genuine +follow-up. + +## Slice-5 calibration note (banked) +The accredited "External insulation, **Unknown** thickness" selection in Elmhurst +produced U 0.48 (≈ a 50 mm equivalent on its 200 mm base), NOT the 0.29 the +§5.4-literal "assume 100 mm" gives on the engine's 360 mm base. The 100 mm fix +nevertheless matches the LODGED corpus better (MAE 0.658 → 0.647, within held) — +lodged assessors typically knew the real (~100 mm) thickness the register then +flattens to "NI". Per the campaign rule (engine = lodged is the goal; Elmhurst +arbitrates only when lodged can't be explained from register data), the 100 mm +fix STANDS; the lodged-vs-Elmhurst gap here is explained by the register's "NI" +discarding the assessor's thickness knowledge. But the base-thickness and +party-wall leads above are genuine and independent of the insulation default. diff --git a/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/elmhurst_summary.pdf b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/elmhurst_summary.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2caa620585e51ce1227bc8e5b126082b3b7f2a75 GIT binary patch literal 78631 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 literal 0 HcmV?d00001 diff --git a/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/elmhurst_worksheet.pdf b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/elmhurst_worksheet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3ebe582a3d801be3a4289f974ce21c86f4e0c421 GIT binary patch literal 44339 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 literal 0 HcmV?d00001 diff --git a/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/sum.txt b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/sum.txt new file mode 100644 index 000000000..25a3346a2 --- /dev/null +++ b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/sum.txt @@ -0,0 +1,254 @@ + Summary Information +Surveyor: P960-0001 +Name: Richard Matthew Ratcliff Title: Mr. Tel Number: 07760 443 469 +Survey Reference: 001431 My Reference: Khalim-test +Current SAP rating: D 66 Potential SAP rating: C 75 Emissions (t/year): 1.927 tonnes +Current EI rating: C 72 Potential EI rating: C 76 Fuel Bill: £1026 +Property Details: +RdSAP version: RdSAP10 +Reference Number: P960-0001-001431 +My Reference: Khalim-test +Lodgement Required: No +Regs Region: England +EPC Language: English +UPRN: +Postcode: W6 9BF +Region: Thames Valley +House Name: 28 Distillery Wharf +House No: 28 +Street: Distillery Wharf +Locality: +Town: London +County: +Property Tenure: Owner-occupied +Transaction Type: Marketed sale +Inspection Date: 25/06/2025 +Process date: 02/07/2026 +Check for the existence of No +an EPC: +Does an EPC exist at the No +point of carrying out this +energy assessment: +Reason why another energy +assessment needs to be +undertaken: + + RdSAP Inputs + +Property Description: +1.0 Property type: H House + E End-Terrace +2.0 Number of Storeys: 2 + Habitable Rooms: 3 + Heated Habitable Rooms: 3 +3.0 Date Built: Main Property B 1900-1929 + + +4.0 Dimensions: +Dimension type: Internal +Main Property + Floor Room Heat Loss Party Wall + Area Height Wall Perimeter Length + [m2] [m] [m] [m] + + 1st Floor: 31.16 2.40 15.97 6.79 + Lowest Floor: 31.16 2.40 15.97 6.79 No + +5.0 Conservatory: +Is there a conservatory? No +7.0 Walls: + + + + + © Elmhurst Energy Systems Limited Registered Office Unit 16, St Johns Business Park, Lutterworth, Leicestershire LE17 4HB + Summary Information +Main Property + + Type SO Solid Brick + Insulation E External + Insulation Thickness Unknown + Conductivity Known No + Thermal Conductivity Lambda = 0.04 W/m*K + Wall Thickness Unknown No + Wall Thickness 260 mm + U-value Known No + Party Wall Type S Solid masonry / timber / system build +8.0 Roofs: +Main Property + + Type PA Pitched (slates/tiles), access to loft + Insulation J Joists + Insulation Thickness 150 mm + U-value Known No +8.1 Rooms in Roof: +9.0 Floors: +Main Property + + Location G Ground floor + Type S Solid + Insulation A As built + Default U-value 0.73 + U-value Known No +10.0 Doors: + Total Number of Doors 2 + Number of Insulated Doors 0 +11.0 Windows: + Frame Frame Glazing Building U g Draught Permanent +W H Area Glazing Type Location Orient. Data-Source + Type Factor Gap Part value value Proofed Shutters + Double with unknown +4.31 1.00 4.31 PVC 0.70 12 mm Main External wall North Manufacturer 2.80 0.76 Yes None + install date + Double with unknown +2.89 1.00 2.89 PVC 0.70 12 mm Main External wall West Manufacturer 2.80 0.76 Yes None + install date + Double with unknown +2.89 1.00 2.89 PVC 0.70 12 mm Main External wall North Manufacturer 2.80 0.76 Yes None + install date + Double with unknown +2.89 1.00 2.89 PVC 0.70 12 mm Main External wall East Manufacturer 2.80 0.76 Yes None + install date + + Draught Proofing 67 % +12.0 Ventilation & Cooling + No. of open chimneys 0 + No. of open flues 0 + No. of open chimneys/open flues attached to closed fire 0 + No. of flues attached to solid fuel boiler 0 + No. of open flues attached to other heater 0 + No. of blocked chimneys 0 + No. of intermittent extract fans 0 + No. of passive vents 0 + No. of flueless gas fires 0 + Fixed Space Cooling No + Draught Lobby Unable to determine + + + + + © Elmhurst Energy Systems Limited Registered Office Unit 16, St Johns Business Park, Lutterworth, Leicestershire LE17 4HB + Summary Information +12.1 Mechanical Ventilation + Mechanical Ventilation No +12.2 Air Pressure Test + Test Method Not available +13.0 Lighting + Total number of bulbs 6 + Number of LED and CFL Known Yes + Number of LED lights 0 + Number of CFL lights 0 + Total number of Low Energy 0 + Total number of incandescents 6 +14.0 Main Heating1 + PCDF boiler Reference 0 + Main Heating EES Code BGW + Main Heating SAP Code 104 + Heat Emitter Radiators + Heat pump age 2013 or later + Flue Type Balanced + Fan Assisted Flue Yes + Design flow temperature <= 35°C + PCDF Heating Controls 0 + Main Heating Controls EES CBE + Main Heating Controls Sap SAP code 2106, Programmer, room thermostat and TRVs + PCDF Compensator 0 + Percentage of Heat 100 % +14.1 Main Heating2 + PCDF boiler Reference 0 + Main Heating EES Code + Main Heating SAP Code 0 + Percentage of Heat 0% +14.1 Community Heating/Heat Network + Heating Type None +14.2 Meters +Electricity meter type Single +Main gas Yes +Electricity Smart Meter Present No +Gas Smart Meter Present No +15.0 Water Heating + Water Heating Code HWP + Water Heating SapCode 901 + Water Heating Fuel Type Mains gas +15.1 Hot Water Cylinder + Hot Water Cylinder Present No +15.2 Community Hot Water + PCDF boiler Reference 0 +16.0 Solar water heating + Solar Water Heating No +17.0 Waste Water Heat Recovery System + Is WWHRS present in the property? No / Unknown +1x.0 Baths and Showers + Total Number of Baths 2 + Number of Baths Connected 0 + +Description Type Connected + +1 Non-electric shower None + + + + + © Elmhurst Energy Systems Limited Registered Office Unit 16, St Johns Business Park, Lutterworth, Leicestershire LE17 4HB + Summary Information +18.0 Flue Gas Heat Recovery System + Present No +19.0 Photovoltaic Panel + Photovoltaic Panel None + Export capable meter No +20.0 Wind Turbine + Terrain Type Urban + Wind turbine present? No +22.0 Special Features +21.0 Small-Scale Hydro + Electricity generated [kWh/year] 0.00 + + + + + © Elmhurst Energy Systems Limited Registered Office Unit 16, St Johns Business Park, Lutterworth, Leicestershire LE17 4HB + Summary Information + + Recommendations + + Loft insulation (SAP increase too small) + Flat roof insulation (Not applicable) + Room-in-roof insulation (Not applicable) + Cavity wall insulation (Not applicable) + Solid wall insulation (SAP increase too small) + Floor insulation (solid floor) (Recommended) + Hot water cylinder insulation (Not applicable) + Draught proofing (SAP increase too small) + Low energy lighting (Recommended) + Cylinder thermostat (Not applicable) + Heating controls for wet central heating system (Already installed) + Upgrade boiler, same fuel (Already installed) + Change heating to condensing gas condensing boiler (fuel switch) (Not applicable) + Flue gas heat recovery in conjunction with new boiler (Not applicable) + Solar water heating (SAP increase too small) + Heat recovery system for mixer showers (SAP increase too small) + Double glazed windows (Already installed) + Insulated doors (SAP increase too small) + Solar photovoltaic panels (Recommended) + Wind turbine (Not applicable) + PV diverter (Not applicable) + PV battery (Not applicable) + Water heating controls (Not applicable) + + Alternative Recommendations + External wall insulation with cavity insulation (Not applicable) + Biomass boiler (alternative) (Not applicable) + Micro CHP (alternative) (Not applicable) + + Related Party Disclosure + +No related party + + Addenda +When considering the PV installation consider installing PV battery and a PV diverter for water heating + + + + + © Elmhurst Energy Systems Limited Registered Office Unit 16, St Johns Business Park, Lutterworth, Leicestershire LE17 4HB + \ No newline at end of file diff --git a/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/ws.txt b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/ws.txt new file mode 100644 index 000000000..20c66e415 --- /dev/null +++ b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_200004296092/ws.txt @@ -0,0 +1,1311 @@ +---------------------------------------------------------------------------------------------------- + SAP 10.02 Input Data (House) 02/07/2026 +---------------------------------------------------------------------------------------------------- +Full RefNo 001431 +Inspection date 25/06/2025 00:00:00 +Regs Region England +SAP Region Thames Valley +Property address 28 Distillery Wharf, 28 Distillery Wharf London +Postcode W6 9BF +Dwelling Orientation North +Property Type House, End-Terrace +Storeys 2 +Property Age Band B +Sheltered Sides 1 +Sunlight Shade Average or unknown +Measurements Perimeter, Floor Area, Storey Height + 1st Storey: 15.97, 31.16, 2.40 + 2nd Storey: 15.97, 31.16, 2.65 +Living Area 18.7 m2, fraction: 30.0% +Thermal Mass Enter TMP value +Thermal MassValue 250.00 +External Walls Nett Area, Gross Area, Kappa, Element, Construction, Type, ShelterFactor, UValueFinal + External walls Main 63.97, 80.65, 190, SolidWallDensePlaster200, Solid, 0.0, 0.48, Gross +Party Walls Area, Kappa, Element, Construction, Type, ShelterFactor, UValueFinal + Party walls Main 34.29, 0, Other, Solid, 0, 0.00 +External Roofs Nett Area, Gross Area, Kappa, Construction, Element, UValueFinal + External roof Main 31.16, 31.16, 9, Plasterboard, insulated slope, 0.3 +Heat Loss Floors Area, Kappa, Construction, Element, Type, ShelterFactor, UValueFinal + Ground floor Main 31.16, 0.00, Other, Ground Floor - Solid, 0.00, 0.73 +Description Data Source, Type, Glazing, Glazing Gap, Argon Filled, Solar Trans, Frame Type, Frame Factor, U Value + Doors uninsulated 1 Manufacturer, Solid Door, , , , , , , + Windows 1 Manufacturer, Window, Double glazed, , , 0.76, , 0.7, +Openings Opening Type, Location, Orientation, Pitch, Width, Height, Count, Area + Doors uninsulated Solid Door, External walls Main, East, , 3.7, 1, 1, 3.70 + Windows 1(Main) Window, External walls Main, North, , 4.31, 1, 1, 4.31 + Windows 2(Main) Window, External walls Main, West, , 2.89, 1, 1, 2.89 + Windows 2(Main) Window, External walls Main, North, , 2.89, 1, 1, 2.89 + Windows 2(Main) Window, External walls Main, East, , 2.89, 1, 1, 2.89 +Conservatory None +Draught Proofing 67 +Draught Lobby No +Thermal Bridges + Bridging User Input + Y 0.15 + Description RDSAP conversion + List of Bridges Junction with, Bridge Type, Source Type, Imported, Length, Psi, Adjusted, Result, Reference + 0. External wall, E22 Basement floor, Table K1 - Default, No, 1.00, 0.220, 0.220, 0.22, TER +Pressure Test False +Pressure Test Method Blower Door +Designed AP50 15.00 +AsBuilt AP50 0.00 +Property Tested True +Mechanical Ventilation None +Open Chimneys 0 +Open Flues 0 +Chimneys/Flues Attached to Closed Fire0 +Flues Attached to Solid Fuel Boiler0 +Flues Attached to Other Heater0 +Blocked chimneys 0 +Intermittent Fans 0 +Passive Vents 0 +Flueless Gas Fires 0 +Cooling System None +Lightings Name, Power, Efficacy, Capacity, Count + incandescent lights 60, 11.2, 672, 6 +Percentage of LEL Fittings 0.00 +Electricity Tariff Standard +Main Heating 1 + Description + Percentage 100 + FuelType Mains gas + SAP Code 104 + Boiler Efficiency Type SAP Table + Controls by PCDF 0 + MHS Controls 2106 Programmer, room thermostat and TRVs + Boiler Interlock Yes + Compensator 0 + Delayed Start Stat No + Ctrl SAP Code 2106 + Flue Type Balanced + Fan Assisted Flue Yes + Pumped Pump in heated space + Heat Pump Age 2013 or later + Heat Emitter Radiators + Flow Temperature Enter value + Flow Temperature Value 35 + Combi boiler type Standard Combi + Combi keep hot type None +Main Heating 2 None +Smoke Control Area Unknown +Community Heating None +Secondary Heating + Description Electricity Electric Panel, convector or radiant heaters + SAP Code 691 + Efficiency 100 +Water Heating + Type MainHeating1 + WHS 901 From main heating system + Low Water Usage No + SAP Code 901 + Cold Water Source From mains + Total number of baths in property2 + Hot Water Cylinder None +Showers Description, Type, Flow rate, Rated power, Connected, Connected WWHRS + Shower 01 Vented hot water system, 7.00, , No, +Flue Gas Heat Recovery System None +Waste Water Heat Recovery none +PV Unit None +Terrain Type Urban +Wind Turbine None +Small Scale Hydro None +Special Features None +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +SAP 10 WORKSHEET FOR Existing dwelling (SAP) (Version 10.2, February 2022) +CALCULATION OF ENERGY RATING +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +1. Overall dwelling characteristics + ---------------------------------------------------------------------------------------------------- + Area Storey height Volume +Main dwelling (m2) (m) (m3) + Ground floor 31.1600 (1b) x 2.4000 (2b) = 74.7840 (1b) - (3b) + First floor 31.1600 (1c) x 2.6500 (2c) = 82.5740 (1c) - (3c) +Total floor area TFA = (1a)+(1b)+(1c)+(1d)+(1e)...(1n) 62.3200 (4) +Dwelling volume (3a)+(3b)+(3c)+(3d)+(3e)...(3n) = 157.3580 (5) +---------------------------------------------------------------------------------------------------- +2. Ventilation rate +---------------------------------------------------------------------------------------------------- + m3 per hour + +Number of open chimneys 0 * 80 = 0.0000 (6a) +Number of open flues 0 * 20 = 0.0000 (6b) +Number of chimneys / flues attached to closed fire 0 * 10 = 0.0000 (6c) +Number of flues attached to solid fuel boiler 0 * 20 = 0.0000 (6d) +Number of flues attached to other heater 0 * 35 = 0.0000 (6e) +Number of blocked chimneys 0 * 20 = 0.0000 (6f) +Number of intermittent extract fans 0 * 10 = 0.0000 (7a) +Number of passive vents 0 * 10 = 0.0000 (7b) +Number of flueless gas fires 0 * 40 = 0.0000 (7c) + Air changes per hour +Infiltration due to chimneys, flues and fans = (6a)+(6b)+(6c)+(6d)+(6e)+(6f)+(6g)+(7a)+(7b)+(7c) = 0.0000 / (5) = 0.0000 (8) + Number of storeys in the dwelling (ns) 2 (9) + Additional infiltration [(9) - 1] x 0.1 = 0.1000 (10) + Structural infiltration: 0.25 for steel or timber frame or 0.35 for masonry construction 0.3500 (11) + If suspended wooden floor, enter 0.2 (unsealed) or 0.1 (sealed), else enter 0 0.0000 (12) + If no draught lobby, enter 0.05, else enter 0 0.0500 (13) + Percentage of windows and doors draught stripped 67.0000 (14) + Window infiltration 0.25 - [0.2 * (14) / 100] = 0.1160 (15) +Pressure test No +Infiltration rate 0.6160 (18) +Number of sides sheltered 1 (19) +Shelter factor (20) = 1 - [0.075 x (19)] = 0.9250 (20) +Infiltration rate adjusted to include shelter factor (21) = (18) x (20) = 0.5698 (21) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Wind speed 5.1000 5.0000 4.9000 4.4000 4.3000 3.8000 3.8000 3.7000 4.0000 4.3000 4.5000 4.7000 (22) +Wind factor 1.2750 1.2500 1.2250 1.1000 1.0750 0.9500 0.9500 0.9250 1.0000 1.0750 1.1250 1.1750 (22a) +Adj infilt rate + 0.7265 0.7123 0.6980 0.6268 0.6125 0.5413 0.5413 0.5271 0.5698 0.6125 0.6410 0.6695 (22b) +Effective ac 0.7639 0.7537 0.7436 0.6964 0.6876 0.6465 0.6465 0.6389 0.6623 0.6876 0.7055 0.7241 (25) +---------------------------------------------------------------------------------------------------- +3. Heat losses and heat loss parameter +---------------------------------------------------------------------------------------------------- +Element Gross Openings NetArea U-value A x U K-value A x K +Main dwelling m2 m2 m2 W/m2K W/K kJ/m2K kJ/K + Doors uninsulated 1 3.7000 3.0000 11.1000 (26) + Windows 1 12.9800 2.5180 32.6835 (27) + Ground floor Main 31.1600 0.7300 22.7468 (28a) + External walls Main 80.6500 16.6800 63.9700 0.4800 30.7056 (29a) + External roof Main 31.1600 31.1600 0.3000 9.3480 (30) +Total net area of external elements Aum(A, m2) 142.9700 (31) +Fabric heat loss, W/K = Sum (A x U) (26)...(30) + (32) = 106.5839 (33) +Main dwelling + Party walls Main 34.2900 0.0000 0.0000 (32) +Thermal mass parameter (TMP = Cm / TFA) in kJ/m2K 250.0000 (35) +Thermal bridges (User defined value 0.150 * total exposed area) 21.4455 (36) +Point Thermal bridges (36a) = 0.0000 +Total fabric heat loss (33) + (36) + (36a) = 128.0294 (37) +Ventilation heat loss calculated monthly (38)m = 0.33 x (25)m x (5) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +(38)m 39.6678 39.1356 38.6140 36.1641 35.7058 33.5720 33.5720 33.1768 34.3939 35.7058 36.6330 37.6025 (38) +Heat transfer coeff + 167.6971 167.1650 166.6434 164.1935 163.7351 161.6013 161.6013 161.2062 162.4232 163.7351 164.6624 165.6318 (39) +Average = Sum(39)m / 12 = 164.1913 + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +HLP 2.6909 2.6824 2.6740 2.6347 2.6273 2.5931 2.5931 2.5867 2.6063 2.6273 2.6422 2.6578 (40) +HLP (average) 2.6346 +Days in mont 31 28 31 30 31 30 31 31 30 31 30 31 +---------------------------------------------------------------------------------------------------- +4. Water heating energy requirements (kWh/year) +---------------------------------------------------------------------------------------------------- +Assumed occupancy 2.0464 (42) +Hot water usage for mixer showers + 51.2148 50.4451 49.3236 47.1777 45.5941 43.8281 42.8243 43.9374 45.1575 47.0536 49.2456 51.0186 (42a) +Hot water usage for baths + 26.6248 26.2294 25.6726 24.6459 23.8771 23.0246 22.5642 23.1171 23.7192 24.6313 25.6791 26.5348 (42b) +Hot water usage for other uses + 37.4603 36.0981 34.7359 33.3737 32.0116 30.6494 30.6494 32.0116 33.3737 34.7359 36.0981 37.4603 (42c) +Average daily hot water use (litres/day) 105.9586 (43) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Daily hot water use + 115.2999 112.7727 109.7321 105.1973 101.4828 97.5021 96.0379 99.0660 102.2504 106.4209 111.0229 115.0137 (44) +Energy conte 182.6069 160.5868 168.6541 144.0099 136.6153 119.8902 116.1495 122.6644 126.0850 144.4121 158.1725 180.0836 (45) +Energy content (annual) Total = Sum(45)m = 1759.9303 +Distribution loss (46)m = 0.15 x (45)m + 27.3910 24.0880 25.2981 21.6015 20.4923 17.9835 17.4224 18.3997 18.9127 21.6618 23.7259 27.0125 (46) +Water storage loss (or HIU loss): +Total storage loss + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (56) +If cylinder contains dedicated solar storage + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (57) +Primary loss 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (59) +Combi loss 50.9589 46.0274 50.9589 49.3151 50.9589 48.0832 48.9398 50.4830 49.3151 50.9589 49.3151 50.9589 (61) +Total heat required for water heating calculated for each month + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (62) +WWHRS 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63a) +PV diverter 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63b) +Solar input 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63c) +FGHRS 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63d) +Output from w/h + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (64) + Total per year (kWh/year) = Sum(64)m = 2356.2034 (64) +Electric shower(s) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (64a) + Total Energy used by instantaneous electric shower(s) (kWh/year) = Sum(64a)m = 0.0000 (64a) +Heat gains from water heating, kWh/month + 73.4565 64.9019 68.8172 60.2121 58.1643 51.8843 50.8547 53.4067 54.2520 60.7568 64.9211 72.6175 (65) +---------------------------------------------------------------------------------------------------- +5. Internal gains (see Table 5 and 5a) +---------------------------------------------------------------------------------------------------- +Metabolic gains (Table 5), Watts + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +(66)m 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 (66) +Lighting gains (calculated in Appendix L, equation L9 or L9a), also see Table 5 + 71.1593 63.2031 51.4002 38.9133 29.0881 24.5574 26.5352 34.4914 46.2943 58.7812 68.6064 73.1371 (67) +Appliances gains (calculated in Appendix L, equation L13 or L13a), also see Table 5 + 266.8027 269.5713 262.5946 247.7419 228.9932 211.3720 199.5999 196.8313 203.8081 218.6607 237.4095 255.0307 (68) +Cooking gains (calculated in Appendix L, equation L15 or L15a), also see Table 5 + 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 (69) +Pumps, fans 3.0000 3.0000 3.0000 3.0000 3.0000 0.0000 0.0000 0.0000 0.0000 3.0000 3.0000 3.0000 (70) +Losses e.g. evaporation (negative values) (Table 5) + -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 (71) +Water heating gains (Table 5) + 98.7319 96.5803 92.4963 83.6279 78.1778 72.0615 68.3530 71.7832 75.3500 81.6623 90.1682 97.6042 (72) +Total internal gains + 529.9471 522.6078 499.7442 463.5362 429.5123 398.2441 384.7412 393.3590 415.7055 452.3574 489.4372 519.0251 (73) +---------------------------------------------------------------------------------------------------- +6. Solar gains +---------------------------------------------------------------------------------------------------- +[Jan] Area Solar flux g FF Access Gains + m2 Table 6a Specific data Specific data factor W + W/m2 or Table 6b or Table 6c Table 6d +---------------------------------------------------------------------------------------------------- +North 7.2000 10.6334 0.7600 0.7000 0.7700 28.2260 (74) +East 2.8900 19.6403 0.7600 0.7000 0.7700 20.9262 (76) +West 2.8900 19.6403 0.7600 0.7000 0.7700 20.9262 (80) +---------------------------------------------------------------------------------------------------- +Solar gains 70.0784 135.8134 226.4912 343.8726 439.3250 459.0195 433.0958 359.0167 267.0192 161.3582 87.0054 57.9479 (83) +Total gains 600.0254 658.4212 726.2353 807.4088 868.8373 857.2635 817.8371 752.3758 682.7247 613.7156 576.4425 576.9730 (84) +---------------------------------------------------------------------------------------------------- +7. Mean internal temperature (heating season) +---------------------------------------------------------------------------------------------------- +Temperature during heating periods in the living area from Table 9, Th1 (C) 21.0000 (85) +Utilisation factor for gains for living area, ni1,m (see Table 9a) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +tau 25.8071 25.8893 25.9703 26.3578 26.4316 26.7806 26.7806 26.8462 26.6451 26.4316 26.2827 26.1289 +alpha 2.7205 2.7260 2.7314 2.7572 2.7621 2.7854 2.7854 2.7897 2.7763 2.7621 2.7522 2.7419 +util living area + 0.9881 0.9836 0.9735 0.9487 0.8963 0.8005 0.6824 0.7308 0.8833 0.9610 0.9831 0.9894 (86) +MIT 18.0348 18.2517 18.6986 19.3471 19.9916 20.5260 20.7917 20.7386 20.2963 19.4913 18.6708 18.0152 (87) +Th 2 18.9125 18.9172 18.9219 18.9438 18.9479 18.9673 18.9673 18.9709 18.9598 18.9479 18.9396 18.9309 (88) +util rest of house + 0.9835 0.9772 0.9621 0.9235 0.8361 0.6608 0.4360 0.4985 0.7860 0.9365 0.9751 0.9853 (89) +MIT 2 16.4138 16.6314 17.0756 17.7205 18.3240 18.7776 18.9318 18.9172 18.6162 17.8743 17.0631 16.4054 (90) +Living area fraction fLA = Living area / (4) = 0.3001 (91) +MIT 16.9002 17.1176 17.5626 18.2086 18.8244 19.3022 19.4899 19.4637 19.1203 18.3595 17.5455 16.8884 (92) +Temperature adjustment 0.0000 +adjusted MIT 16.9002 17.1176 17.5626 18.2086 18.8244 19.3022 19.4899 19.4637 19.1203 18.3595 17.5455 16.8884 (93) +---------------------------------------------------------------------------------------------------- +8. Space heating requirement +---------------------------------------------------------------------------------------------------- + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Utilisation 0.9765 0.9686 0.9509 0.9107 0.8312 0.6900 0.5126 0.5690 0.7966 0.9259 0.9666 0.9789 (94) +Useful gains 585.9077 637.7302 690.5719 735.2903 722.1589 591.5356 419.2138 428.1056 543.8706 568.2557 557.2080 564.7854 (95) +Ext temp. 4.3000 4.9000 6.5000 8.9000 11.7000 14.6000 16.6000 16.4000 14.1000 10.6000 7.1000 4.2000 (96) +Heat loss rate W + 2113.0154 2042.3548 1843.5024 1528.4133 1166.5069 759.8827 467.0161 493.8903 815.4187 1270.5091 1719.9789 2101.6097 (97) +Space heating kWh + 1136.1681 943.9077 857.7803 571.0485 330.5949 0.0000 0.0000 0.0000 0.0000 522.4765 837.1951 1143.3973 (98a) +Space heating requirement - total per year (kWh/year) 6342.5685 +Solar heating kWh + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (98b) +Solar heating contribution - total per year (kWh/year) 0.0000 +Space heating kWh + 1136.1681 943.9077 857.7803 571.0485 330.5949 0.0000 0.0000 0.0000 0.0000 522.4765 837.1951 1143.3973 (98c) +Space heating requirement after solar contribution - total per year (kWh/year) 6342.5685 +Space heating per m2 (98c) / (4) = 101.7742 (99) +---------------------------------------------------------------------------------------------------- +9a. Energy requirements - Individual heating systems, including micro-CHP +---------------------------------------------------------------------------------------------------- +Fraction of space heat from secondary/supplementary system (Table 11) 0.1000 (201) +Fraction of space heat from main system(s) 0.9000 (202) +Efficiency of main space heating system 1 (in %) 84.0000 (206) +Efficiency of main space heating system 2 (in %) 0.0000 (207) +Efficiency of secondary/supplementary heating system, % 100.0000 (208) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Space heating requirement + 1136.1681 943.9077 857.7803 571.0485 330.5949 0.0000 0.0000 0.0000 0.0000 522.4765 837.1951 1143.3973 (98) +Space heating efficiency (main heating system 1) + 84.0000 84.0000 84.0000 84.0000 84.0000 0.0000 0.0000 0.0000 0.0000 84.0000 84.0000 84.0000 (210) +Space heating fuel (main heating system) + 1217.3230 1011.3297 919.0504 611.8377 354.2088 0.0000 0.0000 0.0000 0.0000 559.7963 896.9947 1225.0686 (211) +Space heating efficiency (main heating system 2) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (212) +Space heating fuel (main heating system 2) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (213) +Space heating fuel (secondary) + 113.6168 94.3908 85.7780 57.1049 33.0595 0.0000 0.0000 0.0000 0.0000 52.2477 83.7195 114.3397 (215) +Water heating +Water heating requirement + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (64) +Efficiency of water heater 75.0000 (216) +(217)m 82.1666 82.0733 81.8254 81.3322 80.2753 75.0000 75.0000 75.0000 75.0000 81.1419 81.8785 82.1916 (217) +Fuel for water heating, kWh/month + 284.2588 251.7436 268.3923 237.6978 233.6638 223.9646 220.1191 230.8632 233.8667 240.7769 253.4089 281.1024 (219) +Space cooling fuel requirement +(221)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (221) +Pumps and Fa 7.3041 6.5973 7.3041 7.0685 7.3041 7.0685 7.3041 7.3041 7.0685 7.3041 7.0685 7.3041 (231) +Lighting 62.2853 49.9676 44.9903 32.9618 25.4607 20.8016 23.2261 30.1901 39.2140 51.4509 58.1136 64.0164 (232) +Electricity generated by PVs (Appendix M) (negative quantity) +(233a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (233a) +Electricity generated by wind turbines (Appendix M) (negative quantity) +(234a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (234a) +Electricity generated by hydro-electric generators (Appendix M) (negative quantity) +(235a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235a) +Electricity used or net electricity generated by micro-CHP (Appendix N) (negative if net generation) +(235c)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235c) +Electricity generated by PVs (Appendix M) (negative quantity) +(233b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (233b) +Electricity generated by wind turbines (Appendix M) (negative quantity) +(234b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (234b) +Electricity generated by hydro-electric generators (Appendix M) (negative quantity) +(235b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235b) +Electricity used or net electricity generated by micro-CHP (Appendix N) (negative if net generation) +(235d)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235d) +Annual totals kWh/year +Space heating fuel - main system 1 6795.6091 (211) +Space heating fuel - main system 2 0.0000 (213) +Space heating fuel - secondary 634.2569 (215) +Efficiency of water heater 75.0000 +Water heating fuel used 2959.8582 (219) +Space cooling fuel 0.0000 (221) +Electricity for pumps and fans: + central heating pump 41.0000 (230c) + main heating flue fan 45.0000 (230e) +Total electricity for the above, kWh/year 86.0000 (231) +Electricity for lighting (calculated in Appendix L) 502.6784 (232) + Energy saving/generation technologies (Appendices M ,N and Q) +PV generation 0.0000 (233) +Wind generation 0.0000 (234) +Hydro-electric generation (Appendix N) 0.0000 (235a) +Electricity generated - Micro CHP (Appendix N) 0.0000 (235) +Appendix Q - special features +Energy saved or generated 0.0000 (236) +Energy used 0.0000 (237) +Total delivered energy for all uses 10978.4026 (238) +---------------------------------------------------------------------------------------------------- +10a. Fuel costs - using Table 12 prices +---------------------------------------------------------------------------------------------------- + Fuel Fuel price Fuel cost + kWh/year p/kWh £/year +Space heating - main system 1 6795.6091 3.4800 236.4872 (240) +Total CO2 associated with community systems 0.0000 (473) +Space heating - secondary 634.2569 13.1900 83.6585 (242) +Water heating (other fuel) 2959.8582 3.4800 103.0031 (247) +Energy for instantaneous electric shower(s) 0.0000 13.1900 0.0000 (247a) +Pumps, fans and electric keep-hot 86.0000 13.1900 11.3434 (249) +Energy for lighting 502.6784 13.1900 66.3033 (250) +Additional standing charges 120.0000 (251) +Total energy cost 620.7954 (255) +---------------------------------------------------------------------------------------------------- +11a. SAP rating - Individual heating systems +---------------------------------------------------------------------------------------------------- +Energy cost deflator (Table 12): 0.4200 (256) +Energy cost factor (ECF) [(255) x (256)] / [(4) + 45.0] = 2.4295 (257) +SAP value 66.1085 +SAP rating (Section 12) 66 (258) +SAP band D +---------------------------------------------------------------------------------------------------- +12a. Carbon dioxide emissions - Individual heating systems including micro-CHP +---------------------------------------------------------------------------------------------------- + Energy Emission factor Emissions + kWh/year kg CO2/kWh kg CO2/year +Space heating - main system 1 6795.6091 0.2100 1427.0779 (261) +Total CO2 associated with community systems 0.0000 (373) +Space heating - secondary 634.2569 0.1540 97.6607 (263) +Water heating (other fuel) 2959.8582 0.2100 621.5702 (264) +Space and water heating 2146.3088 (265) +Pumps, fans and electric keep-hot 86.0000 0.1387 11.9293 (267) +Energy for lighting 502.6784 0.1443 72.5520 (268) +Total CO2, kg/year 2230.7901 (272) +CO2 emissions per m2 35.8000 (273) +EI value 72.1463 +EI rating 72 (274) +EI band C +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +SAP 10 WORKSHEET FOR Existing dwelling (SAP) (Version 10.2, February 2022) +CALCULATION OF EPC COSTS, EMISSIONS AND PRIMARY ENERGY +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +1. Overall dwelling characteristics +---------------------------------------------------------------------------------------------------- + Area Storey height Volume +Main dwelling (m2) (m) (m3) + Ground floor 31.1600 (1b) x 2.4000 (2b) = 74.7840 (1b) - (3b) + First floor 31.1600 (1c) x 2.6500 (2c) = 82.5740 (1c) - (3c) +Total floor area TFA = (1a)+(1b)+(1c)+(1d)+(1e)...(1n) 62.3200 (4) +Dwelling volume (3a)+(3b)+(3c)+(3d)+(3e)...(3n) = 157.3580 (5) +---------------------------------------------------------------------------------------------------- +2. Ventilation rate +---------------------------------------------------------------------------------------------------- + m3 per hour + +Number of open chimneys 0 * 80 = 0.0000 (6a) +Number of open flues 0 * 20 = 0.0000 (6b) +Number of chimneys / flues attached to closed fire 0 * 10 = 0.0000 (6c) +Number of flues attached to solid fuel boiler 0 * 20 = 0.0000 (6d) +Number of flues attached to other heater 0 * 35 = 0.0000 (6e) +Number of blocked chimneys 0 * 20 = 0.0000 (6f) +Number of intermittent extract fans 0 * 10 = 0.0000 (7a) +Number of passive vents 0 * 10 = 0.0000 (7b) +Number of flueless gas fires 0 * 40 = 0.0000 (7c) + Air changes per hour +Infiltration due to chimneys, flues and fans = (6a)+(6b)+(6c)+(6d)+(6e)+(6f)+(6g)+(7a)+(7b)+(7c) = 0.0000 / (5) = 0.0000 (8) + Number of storeys in the dwelling (ns) 2 (9) + Additional infiltration [(9) - 1] x 0.1 = 0.1000 (10) + Structural infiltration: 0.25 for steel or timber frame or 0.35 for masonry construction 0.3500 (11) + If suspended wooden floor, enter 0.2 (unsealed) or 0.1 (sealed), else enter 0 0.0000 (12) + If no draught lobby, enter 0.05, else enter 0 0.0500 (13) + Percentage of windows and doors draught stripped 67.0000 (14) + Window infiltration 0.25 - [0.2 * (14) / 100] = 0.1160 (15) +Pressure test No +Infiltration rate 0.6160 (18) +Number of sides sheltered 1 (19) +Shelter factor (20) = 1 - [0.075 x (19)] = 0.9250 (20) +Infiltration rate adjusted to include shelter factor (21) = (18) x (20) = 0.5698 (21) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Wind speed 3.8000 3.7000 3.7000 3.5000 3.5000 3.1000 3.3000 3.0000 3.0000 3.1000 3.1000 3.5000 (22) +Wind factor 0.9500 0.9250 0.9250 0.8750 0.8750 0.7750 0.8250 0.7500 0.7500 0.7750 0.7750 0.8750 (22a) +Adj infilt rate + 0.5413 0.5271 0.5271 0.4986 0.4986 0.4416 0.4701 0.4274 0.4274 0.4416 0.4416 0.4986 (22b) +Effective ac 0.6465 0.6389 0.6389 0.6243 0.6243 0.5975 0.6105 0.5913 0.5913 0.5975 0.5975 0.6243 (25) +---------------------------------------------------------------------------------------------------- +3. Heat losses and heat loss parameter +---------------------------------------------------------------------------------------------------- +Element Gross Openings NetArea U-value A x U K-value A x K +Main dwelling m2 m2 m2 W/m2K W/K kJ/m2K kJ/K + Doors uninsulated 1 3.7000 3.0000 11.1000 (26) + Windows 1 12.9800 2.5180 32.6835 (27) + Ground floor Main 31.1600 0.7300 22.7468 (28a) + External walls Main 80.6500 16.6800 63.9700 0.4800 30.7056 (29a) + External roof Main 31.1600 31.1600 0.3000 9.3480 (30) +Total net area of external elements Aum(A, m2) 142.9700 (31) +Fabric heat loss, W/K = Sum (A x U) (26)...(30) + (32) = 106.5839 (33) +Main dwelling + Party walls Main 34.2900 0.0000 0.0000 (32) +Thermal mass parameter (TMP = Cm / TFA) in kJ/m2K 250.0000 (35) +Thermal bridges (User defined value 0.150 * total exposed area) 21.4455 (36) +Point Thermal bridges (36a) = 0.0000 +Total fabric heat loss (33) + (36) + (36a) = 128.0294 (37) +Ventilation heat loss calculated monthly (38)m = 0.33 x (25)m x (5) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +(38)m 33.5720 33.1768 33.1768 32.4181 32.4181 31.0272 31.7016 30.7058 30.7058 31.0272 31.0272 32.4181 (38) +Heat transfer coeff + 161.6013 161.2062 161.2062 160.4475 160.4475 159.0566 159.7310 158.7352 158.7352 159.0566 159.0566 160.4475 (39) +Average = Sum(39)m / 12 = 159.9773 + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +HLP 2.5931 2.5867 2.5867 2.5746 2.5746 2.5523 2.5631 2.5471 2.5471 2.5523 2.5523 2.5746 (40) +HLP (average) 2.5670 +Days in mont 31 28 31 30 31 30 31 31 30 31 30 31 +---------------------------------------------------------------------------------------------------- +4. Water heating energy requirements (kWh/year) +---------------------------------------------------------------------------------------------------- +Assumed occupancy 2.0464 (42) +Hot water usage for mixer showers + 51.2148 50.4451 49.3236 47.1777 45.5941 43.8281 42.8243 43.9374 45.1575 47.0536 49.2456 51.0186 (42a) +Hot water usage for baths + 26.6248 26.2294 25.6726 24.6459 23.8771 23.0246 22.5642 23.1171 23.7192 24.6313 25.6791 26.5348 (42b) +Hot water usage for other uses + 37.4603 36.0981 34.7359 33.3737 32.0116 30.6494 30.6494 32.0116 33.3737 34.7359 36.0981 37.4603 (42c) +Average daily hot water use (litres/day) 105.9586 (43) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Daily hot water use + 115.2999 112.7727 109.7321 105.1973 101.4828 97.5021 96.0379 99.0660 102.2504 106.4209 111.0229 115.0137 (44) +Energy conte 182.6069 160.5868 168.6541 144.0099 136.6153 119.8902 116.1495 122.6644 126.0850 144.4121 158.1725 180.0836 (45) +Energy content (annual) Total = Sum(45)m = 1759.9303 +Distribution loss (46)m = 0.15 x (45)m + 27.3910 24.0880 25.2981 21.6015 20.4923 17.9835 17.4224 18.3997 18.9127 21.6618 23.7259 27.0125 (46) +Water storage loss (or HIU loss): +Total storage loss + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (56) +If cylinder contains dedicated solar storage + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (57) +Primary loss 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (59) +Combi loss 50.9589 46.0274 50.9589 49.3151 50.9589 48.0832 48.9398 50.4830 49.3151 50.9589 49.3151 50.9589 (61) +Total heat required for water heating calculated for each month + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (62) +WWHRS 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63a) +PV diverter 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63b) +Solar input 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63c) +FGHRS 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63d) +Output from w/h + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (64) + Total per year (kWh/year) = Sum(64)m = 2356.2034 (64) +Electric shower(s) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (64a) + Total Energy used by instantaneous electric shower(s) (kWh/year) = Sum(64a)m = 0.0000 (64a) +Heat gains from water heating, kWh/month + 73.4565 64.9019 68.8172 60.2121 58.1643 51.8843 50.8547 53.4067 54.2520 60.7568 64.9211 72.6175 (65) +---------------------------------------------------------------------------------------------------- +5. Internal gains (see Table 5 and 5a) +---------------------------------------------------------------------------------------------------- +Metabolic gains (Table 5), Watts + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +(66)m 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 (66) +Lighting gains (calculated in Appendix L, equation L9 or L9a), also see Table 5 + 71.1593 63.2031 51.4002 38.9133 29.0881 24.5574 26.5352 34.4914 46.2943 58.7812 68.6064 73.1371 (67) +Appliances gains (calculated in Appendix L, equation L13 or L13a), also see Table 5 + 266.8027 269.5713 262.5946 247.7419 228.9932 211.3720 199.5999 196.8313 203.8081 218.6607 237.4095 255.0307 (68) +Cooking gains (calculated in Appendix L, equation L15 or L15a), also see Table 5 + 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 (69) +Pumps, fans 3.0000 3.0000 3.0000 3.0000 3.0000 0.0000 0.0000 0.0000 0.0000 3.0000 3.0000 3.0000 (70) +Losses e.g. evaporation (negative values) (Table 5) + -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 (71) +Water heating gains (Table 5) + 98.7319 96.5803 92.4963 83.6279 78.1778 72.0615 68.3530 71.7832 75.3500 81.6623 90.1682 97.6042 (72) +Total internal gains + 529.9471 522.6078 499.7442 463.5362 429.5123 398.2441 384.7412 393.3590 415.7055 452.3574 489.4372 519.0251 (73) +---------------------------------------------------------------------------------------------------- +6. Solar gains +---------------------------------------------------------------------------------------------------- +[Jan] Area Solar flux g FF Access Gains + m2 Table 6a Specific data Specific data factor W + W/m2 or Table 6b or Table 6c Table 6d +---------------------------------------------------------------------------------------------------- +North 7.2000 11.5683 0.7600 0.7000 0.7700 30.7077 (74) +East 2.8900 21.5704 0.7600 0.7000 0.7700 22.9826 (76) +West 2.8900 21.5704 0.7600 0.7000 0.7700 22.9826 (80) +---------------------------------------------------------------------------------------------------- +Solar gains 76.6730 133.8602 224.7811 352.4577 437.5532 487.5086 459.0611 390.9446 291.1241 173.9501 98.4071 64.8811 (83) +Total gains 606.6201 656.4679 724.5253 815.9939 867.0655 885.7527 843.8023 784.3036 706.8297 626.3075 587.8443 583.9062 (84) +---------------------------------------------------------------------------------------------------- +7. Mean internal temperature (heating season) +---------------------------------------------------------------------------------------------------- +Temperature during heating periods in the living area from Table 9, Th1 (C) 21.0000 (85) +Utilisation factor for gains for living area, ni1,m (see Table 9a) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +tau 26.7806 26.8462 26.8462 26.9732 26.9732 27.2090 27.0942 27.2641 27.2641 27.2090 27.2090 26.9732 +alpha 2.7854 2.7897 2.7897 2.7982 2.7982 2.8139 2.8063 2.8176 2.8176 2.8139 2.8139 2.7982 +util living area + 0.9851 0.9800 0.9656 0.9261 0.8356 0.6366 0.4258 0.4815 0.7985 0.9397 0.9769 0.9865 (86) +MIT 18.4242 18.6244 19.0967 19.7531 20.3898 20.8355 20.9671 20.9519 20.6203 19.8886 19.0627 18.4121 (87) +Th 2 18.9673 18.9709 18.9709 18.9778 18.9778 18.9906 18.9844 18.9935 18.9935 18.9906 18.9906 18.9778 (88) +util rest of house + 0.9789 0.9715 0.9493 0.8856 0.7279 0.3908 0.0727 0.1199 0.6192 0.8964 0.9650 0.9808 (89) +MIT 2 16.8338 17.0336 17.4974 18.1289 18.6833 18.9656 18.9843 18.9933 18.8769 18.2799 17.4816 16.8285 (90) +Living area fraction fLA = Living area / (4) = 0.3001 (91) +MIT 17.3110 17.5110 17.9773 18.6163 19.1954 19.5267 19.5793 19.5810 19.4000 18.7626 17.9560 17.3037 (92) +Temperature adjustment 0.0000 +adjusted MIT 17.3110 17.5110 17.9773 18.6163 19.1954 19.5267 19.5793 19.5810 19.4000 18.7626 17.9560 17.3037 (93) +---------------------------------------------------------------------------------------------------- +8. Space heating requirement +---------------------------------------------------------------------------------------------------- + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Utilisation 0.9710 0.9622 0.9376 0.8756 0.7429 0.4675 0.1840 0.2358 0.6665 0.8892 0.9554 0.9735 (94) +Useful gains 589.0545 631.6483 679.2849 714.4648 644.1081 414.0819 155.2945 184.9239 471.0774 556.9055 561.6531 568.4109 (95) +Ext temp. 5.6000 6.2000 8.0000 10.6000 13.7000 16.7000 18.6000 18.4000 15.7000 12.2000 8.5000 5.6000 (96) +Heat loss rate W + 1892.5112 1823.3964 1608.4000 1286.1922 881.7185 449.6045 156.4215 187.4638 587.3223 1043.8267 1504.0390 1877.8239 (97) +Space heating kWh + 969.7718 800.8547 691.2617 411.6437 176.7821 0.0000 0.0000 0.0000 0.0000 362.2694 678.5179 974.2033 (98a) +Space heating requirement - total per year (kWh/year) 5065.3045 +Solar heating kWh + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (98b) +Solar heating contribution - total per year (kWh/year) 0.0000 +Space heating kWh + 969.7718 800.8547 691.2617 411.6437 176.7821 0.0000 0.0000 0.0000 0.0000 362.2694 678.5179 974.2033 (98c) +Space heating requirement after solar contribution - total per year (kWh/year) 5065.3045 +Space heating per m2 (98c) / (4) = 81.2790 (99) +---------------------------------------------------------------------------------------------------- +9a. Energy requirements - Individual heating systems, including micro-CHP +---------------------------------------------------------------------------------------------------- +Fraction of space heat from secondary/supplementary system (Table 11) 0.1000 (201) + Fraction of space heat from main system(s) 0.9000 (202) +Efficiency of main space heating system 1 (in %) 84.0000 (206) +Efficiency of main space heating system 2 (in %) 0.0000 (207) +Efficiency of secondary/supplementary heating system, % 100.0000 (208) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Space heating requirement + 969.7718 800.8547 691.2617 411.6437 176.7821 0.0000 0.0000 0.0000 0.0000 362.2694 678.5179 974.2033 (98) +Space heating efficiency (main heating system 1) + 84.0000 84.0000 84.0000 84.0000 84.0000 0.0000 0.0000 0.0000 0.0000 84.0000 84.0000 84.0000 (210) +Space heating fuel (main heating system) + 1039.0412 858.0586 740.6375 441.0468 189.4094 0.0000 0.0000 0.0000 0.0000 388.1458 726.9834 1043.7892 (211) +Space heating efficiency (main heating system 2) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (212) +Space heating fuel (main heating system 2) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (213) +Space heating fuel (secondary) + 96.9772 80.0855 69.1262 41.1644 17.6782 0.0000 0.0000 0.0000 0.0000 36.2269 67.8518 97.4203 (215) +Water heating +Water heating requirement + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (64) +Efficiency of water heater 75.0000 (216) +(217)m 81.9246 81.8127 81.4500 80.6802 78.8786 75.0000 75.0000 75.0000 75.0000 80.3856 81.5192 81.9491 (217) +Fuel for water heating, kWh/month + 285.0986 252.5452 269.6294 239.6187 237.8011 223.9646 220.1191 230.8632 233.8667 243.0424 254.5261 281.9342 (219) +Space cooling fuel requirement +(221)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (221) +Pumps and Fa 7.3041 6.5973 7.3041 7.0685 7.3041 7.0685 7.3041 7.3041 7.0685 7.3041 7.0685 7.3041 (231) +Lighting 62.2853 49.9676 44.9903 32.9618 25.4607 20.8016 23.2261 30.1901 39.2140 51.4509 58.1136 64.0164 (232) +Electricity generated by PVs (Appendix M) (negative quantity) +(233a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (233a) +Electricity generated by wind turbines (Appendix M) (negative quantity) +(234a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (234a) +Electricity generated by hydro-electric generators (Appendix M) (negative quantity) +(235a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235a) +Electricity used or net electricity generated by micro-CHP (Appendix N) (negative if net generation) +(235c)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235c) +Electricity generated by PVs (Appendix M) (negative quantity) +(233b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (233b) +Electricity generated by wind turbines (Appendix M) (negative quantity) +(234b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (234b) +Electricity generated by hydro-electric generators (Appendix M) (negative quantity) +(235b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235b) +Electricity used or net electricity generated by micro-CHP (Appendix N) (negative if net generation) +(235d)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235d) +Annual totals kWh/year +Space heating fuel - main system 1 5427.1120 (211) +Space heating fuel - main system 2 0.0000 (213) +Space heating fuel - secondary 506.5305 (215) +Efficiency of water heater 75.0000 +Water heating fuel used 2973.0093 (219) +Space cooling fuel 0.0000 (221) +Electricity for pumps and fans: + central heating pump 41.0000 (230c) + main heating flue fan 45.0000 (230e) +Total electricity for the above, kWh/year 86.0000 (231) +Electricity for lighting (calculated in Appendix L) 502.6784 (232) +Energy saving/generation technologies (Appendices M ,N and Q) +PV generation 0.0000 (233) +Wind generation 0.0000 (234) +Hydro-electric generation (Appendix N) 0.0000 (235a) +Electricity generated - Micro CHP (Appendix N) 0.0000 (235) +Appendix Q - special features +Energy saved or generated 0.0000 (236) +Energy used 0.0000 (237) +Total delivered energy for all uses 9495.3302 (238) +---------------------------------------------------------------------------------------------------- +10a. Fuel costs - using BEDF prices (596) +---------------------------------------------------------------------------------------------------- + Fuel Fuel price Fuel cost + kWh/year p/kWh £/year +Space heating - main system 1 5427.1120 7.3200 397.2646 (240) +Total CO2 associated with community systems 0.0000 (473) +Space heating - secondary 506.5305 27.6700 140.1570 (242) +Water heating (other fuel) 2973.0093 7.3200 217.6243 (247) +Energy for instantaneous electric shower(s) 0.0000 27.6700 0.0000 (247a) +Pumps, fans and electric keep-hot 86.0000 27.6700 23.7962 (249) +Energy for lighting 502.6784 27.6700 139.0911 (250) +Additional standing charges 108.0000 (251) +Total energy cost 1025.9332 (255) +---------------------------------------------------------------------------------------------------- +12a. Carbon dioxide emissions - Individual heating systems including micro-CHP +---------------------------------------------------------------------------------------------------- + Energy Emission factor Emissions + kWh/year kg CO2/kWh kg CO2/year +Space heating - main system 1 5427.1120 0.2100 1139.6935 (261) +Total CO2 associated with community systems 0.0000 (373) +Space heating - secondary 506.5305 0.1549 78.4693 (263) +Water heating (other fuel) 2973.0093 0.2100 624.3320 (264) +Space and water heating 1842.4948 (265) +Pumps, fans and electric keep-hot 86.0000 0.1387 11.9293 (267) +Energy for lighting 502.6784 0.1443 72.5520 (268) +Total CO2, kg/year 1926.9760 (272) +---------------------------------------------------------------------------------------------------- +13a. Primary energy - Individual heating systems including micro-CHP +---------------------------------------------------------------------------------------------------- + Energy Primary energy factor Primary energy + kWh/year kg CO2/kWh kWh/year +Space heating - main system 1 5427.1120 1.1300 6132.6365 (275) +Total CO2 associated with community systems 0.0000 (473) +Space heating - secondary 506.5305 1.5736 797.0530 (277) +Water heating (other fuel) 2973.0093 1.1300 3359.5005 (278) +Space and water heating 10289.1901 (279) +Pumps, fans and electric keep-hot 86.0000 1.5128 130.1008 (281) +Energy for lighting 502.6784 1.5338 771.0249 (282) +Total Primary energy kWh/year 11190.3158 (286) +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +SAP 10 WORKSHEET FOR Existing dwelling (SAP) (Version 10.2, February 2022) +CALCULATION OF ENERGY RATING FOR IMPROVED DWELLING +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +1. Overall dwelling characteristics +---------------------------------------------------------------------------------------------------- + Area Storey height Volume +Main dwelling (m2) (m) (m3) + Ground floor 31.1600 (1b) x 2.4000 (2b) = 74.7840 (1b) - (3b) + First floor 31.1600 (1c) x 2.6500 (2c) = 82.5740 (1c) - (3c) +Total floor area TFA = (1a)+(1b)+(1c)+(1d)+(1e)...(1n) 62.3200 (4) + Dwelling volume (3a)+(3b)+(3c)+(3d)+(3e)...(3n) = 157.3580 (5) +---------------------------------------------------------------------------------------------------- +2. Ventilation rate +---------------------------------------------------------------------------------------------------- + m3 per hour + +Number of open chimneys 0 * 80 = 0.0000 (6a) +Number of open flues 0 * 20 = 0.0000 (6b) +Number of chimneys / flues attached to closed fire 0 * 10 = 0.0000 (6c) +Number of flues attached to solid fuel boiler 0 * 20 = 0.0000 (6d) +Number of flues attached to other heater 0 * 35 = 0.0000 (6e) +Number of blocked chimneys 0 * 20 = 0.0000 (6f) +Number of intermittent extract fans 0 * 10 = 0.0000 (7a) +Number of passive vents 0 * 10 = 0.0000 (7b) +Number of flueless gas fires 0 * 40 = 0.0000 (7c) + Air changes per hour +Infiltration due to chimneys, flues and fans = (6a)+(6b)+(6c)+(6d)+(6e)+(6f)+(6g)+(7a)+(7b)+(7c) = 0.0000 / (5) = 0.0000 (8) + Number of storeys in the dwelling (ns) 2 (9) + Additional infiltration [(9) - 1] x 0.1 = 0.1000 (10) + Structural infiltration: 0.25 for steel or timber frame or 0.35 for masonry construction 0.3500 (11) + If suspended wooden floor, enter 0.2 (unsealed) or 0.1 (sealed), else enter 0 0.0000 (12) + If no draught lobby, enter 0.05, else enter 0 0.0500 (13) + Percentage of windows and doors draught stripped 67.0000 (14) + Window infiltration 0.25 - [0.2 * (14) / 100] = 0.1160 (15) +Pressure test No +Infiltration rate 0.6160 (18) +Number of sides sheltered 1 (19) +Shelter factor (20) = 1 - [0.075 x (19)] = 0.9250 (20) +Infiltration rate adjusted to include shelter factor (21) = (18) x (20) = 0.5698 (21) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Wind speed 5.1000 5.0000 4.9000 4.4000 4.3000 3.8000 3.8000 3.7000 4.0000 4.3000 4.5000 4.7000 (22) +Wind factor 1.2750 1.2500 1.2250 1.1000 1.0750 0.9500 0.9500 0.9250 1.0000 1.0750 1.1250 1.1750 (22a) +Adj infilt rate + 0.7265 0.7123 0.6980 0.6268 0.6125 0.5413 0.5413 0.5271 0.5698 0.6125 0.6410 0.6695 (22b) +Effective ac 0.7639 0.7537 0.7436 0.6964 0.6876 0.6465 0.6465 0.6389 0.6623 0.6876 0.7055 0.7241 (25) +---------------------------------------------------------------------------------------------------- +3. Heat losses and heat loss parameter +---------------------------------------------------------------------------------------------------- +Element Gross Openings NetArea U-value A x U K-value A x K +Main dwelling m2 m2 m2 W/m2K W/K kJ/m2K kJ/K + Doors uninsulated 1 3.7000 3.0000 11.1000 (26) + Windows 1 12.9800 2.5180 32.6835 (27) + Ground floor Main 31.1600 0.2500 7.7900 (28a) + External walls Main 80.6500 16.6800 63.9700 0.4800 30.7056 (29a) + External roof Main 31.1600 31.1600 0.3000 9.3480 (30) +Total net area of external elements Aum(A, m2) 142.9700 (31) +Fabric heat loss, W/K = Sum (A x U) (26)...(30) + (32) = 91.6271 (33) +Main dwelling + Party walls Main 34.2900 0.0000 0.0000 (32) +Thermal mass parameter (TMP = Cm / TFA) in kJ/m2K 250.0000 (35) +Thermal bridges (User defined value 0.150 * total exposed area) 21.4455 (36) +Point Thermal bridges (36a) = 0.0000 +Total fabric heat loss (33) + (36) + (36a) = 113.0726 (37) +Ventilation heat loss calculated monthly (38)m = 0.33 x (25)m x (5) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +(38)m 39.6678 39.1356 38.6140 36.1641 35.7058 33.5720 33.5720 33.1768 34.3939 35.7058 36.6330 37.6025 (38) +Heat transfer coeff + 152.7403 152.2082 151.6866 149.2367 148.7783 146.6445 146.6445 146.2494 147.4664 148.7783 149.7056 150.6750 (39) +Average = Sum(39)m / 12 = 149.2345 + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +HLP 2.4509 2.4424 2.4340 2.3947 2.3873 2.3531 2.3531 2.3467 2.3663 2.3873 2.4022 2.4178 (40) +HLP (average) 2.3946 +Days in mont 31 28 31 30 31 30 31 31 30 31 30 31 +---------------------------------------------------------------------------------------------------- +4. Water heating energy requirements (kWh/year) +---------------------------------------------------------------------------------------------------- +Assumed occupancy 2.0464 (42) +Hot water usage for mixer showers + 51.2148 50.4451 49.3236 47.1777 45.5941 43.8281 42.8243 43.9374 45.1575 47.0536 49.2456 51.0186 (42a) +Hot water usage for baths + 26.6248 26.2294 25.6726 24.6459 23.8771 23.0246 22.5642 23.1171 23.7192 24.6313 25.6791 26.5348 (42b) +Hot water usage for other uses + 37.4603 36.0981 34.7359 33.3737 32.0116 30.6494 30.6494 32.0116 33.3737 34.7359 36.0981 37.4603 (42c) +Average daily hot water use (litres/day) 105.9586 (43) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Daily hot water use + 115.2999 112.7727 109.7321 105.1973 101.4828 97.5021 96.0379 99.0660 102.2504 106.4209 111.0229 115.0137 (44) +Energy conte 182.6069 160.5868 168.6541 144.0099 136.6153 119.8902 116.1495 122.6644 126.0850 144.4121 158.1725 180.0836 (45) +Energy content (annual) Total = Sum(45)m = 1759.9303 +Distribution loss (46)m = 0.15 x (45)m + 27.3910 24.0880 25.2981 21.6015 20.4923 17.9835 17.4224 18.3997 18.9127 21.6618 23.7259 27.0125 (46) +Water storage loss (or HIU loss): +Total storage loss + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (56) +If cylinder contains dedicated solar storage + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (57) +Primary loss 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (59) +Combi loss 50.9589 46.0274 50.9589 49.3151 50.9589 48.0832 48.9398 50.4830 49.3151 50.9589 49.3151 50.9589 (61) +Total heat required for water heating calculated for each month + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (62) +WWHRS 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63a) +PV diverter 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63b) +Solar input 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63c) +FGHRS 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63d) +Output from w/h + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (64) + Total per year (kWh/year) = Sum(64)m = 2356.2034 (64) +Electric shower(s) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (64a) + Total Energy used by instantaneous electric shower(s) (kWh/year) = Sum(64a)m = 0.0000 (64a) +Heat gains from water heating, kWh/month + 73.4565 64.9019 68.8172 60.2121 58.1643 51.8843 50.8547 53.4067 54.2520 60.7568 64.9211 72.6175 (65) +---------------------------------------------------------------------------------------------------- +5. Internal gains (see Table 5 and 5a) +---------------------------------------------------------------------------------------------------- +Metabolic gains (Table 5), Watts + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +(66)m 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 (66) +Lighting gains (calculated in Appendix L, equation L9 or L9a), also see Table 5 + 21.4748 19.0737 15.5118 11.7434 8.7783 7.4110 8.0079 10.4090 13.9709 17.7393 20.7043 22.0716 (67) +Appliances gains (calculated in Appendix L, equation L13 or L13a), also see Table 5 + 266.8027 269.5713 262.5946 247.7419 228.9932 211.3720 199.5999 196.8313 203.8081 218.6607 237.4095 255.0307 (68) +Cooking gains (calculated in Appendix L, equation L15 or L15a), also see Table 5 + 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 (69) +Pumps, fans 3.0000 3.0000 3.0000 3.0000 3.0000 0.0000 0.0000 0.0000 0.0000 3.0000 3.0000 3.0000 (70) +Losses e.g. evaporation (negative values) (Table 5) + -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 (71) +Water heating gains (Table 5) + 98.7319 96.5803 92.4963 83.6279 78.1778 72.0615 68.3530 71.7832 75.3500 81.6623 90.1682 97.6042 (72) + Total internal gains + 480.2625 478.4784 463.8557 436.3663 409.2025 381.0977 366.2140 369.2766 383.3821 411.3154 441.5351 467.9596 (73) +---------------------------------------------------------------------------------------------------- +6. Solar gains +---------------------------------------------------------------------------------------------------- +[Jan] Area Solar flux g FF Access Gains + m2 Table 6a Specific data Specific data factor W + W/m2 or Table 6b or Table 6c Table 6d +---------------------------------------------------------------------------------------------------- +North 7.2000 10.6334 0.7600 0.7000 0.7700 28.2260 (74) +East 2.8900 19.6403 0.7600 0.7000 0.7700 20.9262 (76) +West 2.8900 19.6403 0.7600 0.7000 0.7700 20.9262 (80) +---------------------------------------------------------------------------------------------------- +Solar gains 70.0784 135.8134 226.4912 343.8726 439.3250 459.0195 433.0958 359.0167 267.0192 161.3582 87.0054 57.9479 (83) +Total gains 550.3409 614.2918 690.3469 780.2390 848.5275 840.1171 799.3098 728.2933 650.4014 572.6737 528.5405 525.9076 (84) +---------------------------------------------------------------------------------------------------- +7. Mean internal temperature (heating season) +---------------------------------------------------------------------------------------------------- +Temperature during heating periods in the living area from Table 9, Th1 (C) 21.0000 (85) +Utilisation factor for gains for living area, ni1,m (see Table 9a) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +tau 28.3342 28.4333 28.5310 28.9994 29.0888 29.5120 29.5120 29.5918 29.3475 29.0888 28.9086 28.7226 +alpha 2.8889 2.8956 2.9021 2.9333 2.9393 2.9675 2.9675 2.9728 2.9565 2.9393 2.9272 2.9148 +util living area + 0.9906 0.9863 0.9760 0.9497 0.8924 0.7878 0.6632 0.7179 0.8842 0.9654 0.9864 0.9919 (86) +MIT 18.2110 18.4316 18.8731 19.5070 20.1207 20.6096 20.8376 20.7883 20.3770 19.6041 18.8156 18.1916 (87) +Th 2 19.0497 19.0547 19.0597 19.0832 19.0876 19.1083 19.1083 19.1122 19.1003 19.0876 19.0787 19.0694 (88) +util rest of house + 0.9871 0.9810 0.9658 0.9258 0.8333 0.6527 0.4342 0.4999 0.7921 0.9440 0.9801 0.9888 (89) +MIT 2 16.6722 16.8940 17.3333 17.9651 18.5373 18.9492 19.0790 19.0662 18.7874 18.0739 17.2925 16.6652 (90) +Living area fraction fLA = Living area / (4) = 0.3001 (91) +MIT 17.1340 17.3553 17.7953 18.4277 19.0124 19.4474 19.6067 19.5829 19.2644 18.5330 17.7495 17.1232 (92) +Temperature adjustment 0.0000 +adjusted MIT 17.1340 17.3553 17.7953 18.4277 19.0124 19.4474 19.6067 19.5829 19.2644 18.5330 17.7495 17.1232 (93) +---------------------------------------------------------------------------------------------------- +8. Space heating requirement +---------------------------------------------------------------------------------------------------- + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Utilisation 0.9815 0.9738 0.9560 0.9143 0.8302 0.6825 0.5049 0.5658 0.8028 0.9348 0.9733 0.9838 (94) +Useful gains 540.1819 598.2008 659.9997 713.3767 704.4687 573.3873 403.5552 412.0764 522.1727 535.3218 514.4052 517.4024 (95) +Ext temp. 4.3000 4.9000 6.5000 8.9000 11.7000 14.6000 16.6000 16.4000 14.1000 10.6000 7.1000 4.2000 (96) +Heat loss rate W + 1960.2641 1895.8060 1713.3509 1421.8886 1087.9269 710.8496 440.9131 465.4991 761.5729 1180.2651 1594.2946 1947.2023 (97) +Space heating kWh + 1056.5411 871.9907 783.6932 510.1286 285.2929 0.0000 0.0000 0.0000 0.0000 479.8378 777.5204 1063.7711 (98a) +Space heating requirement - total per year (kWh/year) 5828.7758 +Solar heating kWh + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (98b) +Solar heating contribution - total per year (kWh/year) 0.0000 +Space heating kWh + 1056.5411 871.9907 783.6932 510.1286 285.2929 0.0000 0.0000 0.0000 0.0000 479.8378 777.5204 1063.7711 (98c) +Space heating requirement after solar contribution - total per year (kWh/year) 5828.7758 +Space heating per m2 (98c) / (4) = 93.5298 (99) +---------------------------------------------------------------------------------------------------- +9a. Energy requirements - Individual heating systems, including micro-CHP +---------------------------------------------------------------------------------------------------- +Fraction of space heat from secondary/supplementary system (Table 11) 0.1000 (201) +Fraction of space heat from main system(s) 0.9000 (202) +Efficiency of main space heating system 1 (in %) 84.0000 (206) +Efficiency of main space heating system 2 (in %) 0.0000 (207) +Efficiency of secondary/supplementary heating system, % 100.0000 (208) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Space heating requirement + 1056.5411 871.9907 783.6932 510.1286 285.2929 0.0000 0.0000 0.0000 0.0000 479.8378 777.5204 1063.7711 (98) +Space heating efficiency (main heating system 1) + 84.0000 84.0000 84.0000 84.0000 84.0000 0.0000 0.0000 0.0000 0.0000 84.0000 84.0000 84.0000 (210) +Space heating fuel (main heating system) + 1132.0083 934.2758 839.6713 546.5663 305.6709 0.0000 0.0000 0.0000 0.0000 514.1119 833.0576 1139.7547 (211) +Space heating efficiency (main heating system 2) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (212) +Space heating fuel (main heating system 2) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (213) +Space heating fuel (secondary) + 105.6541 87.1991 78.3693 51.0129 28.5293 0.0000 0.0000 0.0000 0.0000 47.9838 77.7520 106.3771 (215) +Water heating +Water heating requirement + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (64) +Efficiency of water heater 75.0000 (216) +(217)m 82.0582 81.9505 81.6730 81.1157 79.9500 75.0000 75.0000 75.0000 75.0000 80.9734 81.7563 82.0850 (217) +Fuel for water heating, kWh/month + 284.6342 252.1206 268.8932 238.3322 234.6145 223.9646 220.1191 230.8632 233.8667 241.2782 253.7878 281.4673 (219) +Space cooling fuel requirement +(221)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (221) +Pumps and Fa 7.3041 6.5973 7.3041 7.0685 7.3041 7.0685 7.3041 7.3041 7.0685 7.3041 7.0685 7.3041 (231) +Lighting 18.7968 15.0795 13.5774 9.9474 7.6836 6.2776 7.0093 9.1109 11.8342 15.5271 17.5378 19.3192 (232) +Electricity generated by PVs (Appendix M) (negative quantity) +(233a)m -34.1798 -49.1906 -71.4871 -79.7104 -83.3882 -72.3889 -71.4835 -67.4980 -60.4123 -54.9397 -37.6017 -29.4537 (233a) +Electricity generated by wind turbines (Appendix M) (negative quantity) +(234a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (234a) +Electricity generated by hydro-electric generators (Appendix M) (negative quantity) +(235a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235a) +Electricity used or net electricity generated by micro-CHP (Appendix N) (negative if net generation) +(235c)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235c) +Electricity generated by PVs (Appendix M) (negative quantity) +(233b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (233b) +Electricity generated by wind turbines (Appendix M) (negative quantity) +(234b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (234b) +Electricity generated by hydro-electric generators (Appendix M) (negative quantity) +(235b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235b) +Electricity used or net electricity generated by micro-CHP (Appendix N) (negative if net generation) +(235d)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235d) +Annual totals kWh/year +Space heating fuel - main system 1 6245.1169 (211) +Space heating fuel - main system 2 0.0000 (213) +Space heating fuel - secondary 582.8776 (215) +Efficiency of water heater 75.0000 +Water heating fuel used 2963.9416 (219) +Space cooling fuel 0.0000 (221) +Electricity for pumps and fans: + central heating pump 41.0000 (230c) + main heating flue fan 45.0000 (230e) +Total electricity for the above, kWh/year 86.0000 (231) +Electricity for lighting (calculated in Appendix L) 151.7006 (232) +Energy saving/generation technologies (Appendices M ,N and Q) +PV generation -711.7338 (233) +Wind generation 0.0000 (234) +Hydro-electric generation (Appendix N) 0.0000 (235a) +Electricity generated - Micro CHP (Appendix N) 0.0000 (235) +Appendix Q - special features + Energy saved or generated 0.0000 (236) +Energy used 0.0000 (237) +Total delivered energy for all uses 9317.9029 (238) +---------------------------------------------------------------------------------------------------- +10a. Fuel costs - using Table 12 prices +---------------------------------------------------------------------------------------------------- + Fuel Fuel price Fuel cost + kWh/year p/kWh £/year +Space heating - main system 1 6245.1169 3.4800 217.3301 (240) +Total CO2 associated with community systems 0.0000 (473) +Space heating - secondary 582.8776 13.1900 76.8816 (242) +Water heating (other fuel) 2963.9416 3.4800 103.1452 (247) +Energy for instantaneous electric shower(s) 0.0000 13.1900 0.0000 (247a) +Pumps, fans and electric keep-hot 86.0000 13.1900 11.3434 (249) +Energy for lighting 151.7006 13.1900 20.0093 (250) +Additional standing charges 120.0000 (251) +Energy saving/generation technologies +PV Unit electricity used in dwelling -711.7338 13.1900 -93.8777 +PV Unit electricity exported 0.0000 13.1900 0.0000 +Total -93.8777 (252) +Total energy cost 454.8318 (255) +---------------------------------------------------------------------------------------------------- +11a. SAP rating - Individual heating systems +---------------------------------------------------------------------------------------------------- +Energy cost deflator (Table 12): 0.4200 (256) +Energy cost factor (ECF) [(255) x (256)] / [(4) + 45.0] = 1.7800 (257) +SAP value 75.1690 +SAP rating (Section 12) 75 (258) +SAP band C +---------------------------------------------------------------------------------------------------- +12a. Carbon dioxide emissions - Individual heating systems including micro-CHP +---------------------------------------------------------------------------------------------------- + Energy Emission factor Emissions + kWh/year kg CO2/kWh kg CO2/year +Space heating - main system 1 6245.1169 0.2100 1311.4746 (261) +Total CO2 associated with community systems 0.0000 (373) +Space heating - secondary 582.8776 0.1541 89.8305 (263) +Water heating (other fuel) 2963.9416 0.2100 622.4277 (264) +Space and water heating 2023.7328 (265) +Pumps, fans and electric keep-hot 86.0000 0.1387 11.9293 (267) +Energy for lighting 151.7006 0.1443 21.8951 (268) +Energy saving/generation technologies +PV Unit electricity used in dwelling -711.7338 0.1353 -96.2872 +PV Unit electricity exported 0.0000 0.0000 0.0000 +Total -96.2872 (269) +Total CO2, kg/year 1961.2700 (272) +CO2 emissions per m2 31.4700 (273) +EI value 75.5115 +EI rating 76 (274) +EI band C +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +SAP 10 WORKSHEET FOR Existing dwelling (SAP) (Version 10.2, February 2022) +CALCULATION OF EPC COSTS, EMISSIONS AND PRIMARY ENERGY FOR IMPROVED DWELLING +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +1. Overall dwelling characteristics +---------------------------------------------------------------------------------------------------- + Area Storey height Volume +Main dwelling (m2) (m) (m3) + Ground floor 31.1600 (1b) x 2.4000 (2b) = 74.7840 (1b) - (3b) + First floor 31.1600 (1c) x 2.6500 (2c) = 82.5740 (1c) - (3c) +Total floor area TFA = (1a)+(1b)+(1c)+(1d)+(1e)...(1n) 62.3200 (4) +Dwelling volume (3a)+(3b)+(3c)+(3d)+(3e)...(3n) = 157.3580 (5) +---------------------------------------------------------------------------------------------------- +2. Ventilation rate +---------------------------------------------------------------------------------------------------- + m3 per hour + +Number of open chimneys 0 * 80 = 0.0000 (6a) +Number of open flues 0 * 20 = 0.0000 (6b) +Number of chimneys / flues attached to closed fire 0 * 10 = 0.0000 (6c) +Number of flues attached to solid fuel boiler 0 * 20 = 0.0000 (6d) +Number of flues attached to other heater 0 * 35 = 0.0000 (6e) +Number of blocked chimneys 0 * 20 = 0.0000 (6f) +Number of intermittent extract fans 0 * 10 = 0.0000 (7a) +Number of passive vents 0 * 10 = 0.0000 (7b) +Number of flueless gas fires 0 * 40 = 0.0000 (7c) + Air changes per hour +Infiltration due to chimneys, flues and fans = (6a)+(6b)+(6c)+(6d)+(6e)+(6f)+(6g)+(7a)+(7b)+(7c) = 0.0000 / (5) = 0.0000 (8) + Number of storeys in the dwelling (ns) 2 (9) + Additional infiltration [(9) - 1] x 0.1 = 0.1000 (10) + Structural infiltration: 0.25 for steel or timber frame or 0.35 for masonry construction 0.3500 (11) + If suspended wooden floor, enter 0.2 (unsealed) or 0.1 (sealed), else enter 0 0.0000 (12) + If no draught lobby, enter 0.05, else enter 0 0.0500 (13) + Percentage of windows and doors draught stripped 67.0000 (14) + Window infiltration 0.25 - [0.2 * (14) / 100] = 0.1160 (15) +Pressure test No +Infiltration rate 0.6160 (18) +Number of sides sheltered 1 (19) +Shelter factor (20) = 1 - [0.075 x (19)] = 0.9250 (20) +Infiltration rate adjusted to include shelter factor (21) = (18) x (20) = 0.5698 (21) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Wind speed 3.8000 3.7000 3.7000 3.5000 3.5000 3.1000 3.3000 3.0000 3.0000 3.1000 3.1000 3.5000 (22) +Wind factor 0.9500 0.9250 0.9250 0.8750 0.8750 0.7750 0.8250 0.7500 0.7500 0.7750 0.7750 0.8750 (22a) +Adj infilt rate + 0.5413 0.5271 0.5271 0.4986 0.4986 0.4416 0.4701 0.4274 0.4274 0.4416 0.4416 0.4986 (22b) +Effective ac 0.6465 0.6389 0.6389 0.6243 0.6243 0.5975 0.6105 0.5913 0.5913 0.5975 0.5975 0.6243 (25) +---------------------------------------------------------------------------------------------------- +3. Heat losses and heat loss parameter +---------------------------------------------------------------------------------------------------- +Element Gross Openings NetArea U-value A x U K-value A x K +Main dwelling m2 m2 m2 W/m2K W/K kJ/m2K kJ/K + Doors uninsulated 1 3.7000 3.0000 11.1000 (26) + Windows 1 12.9800 2.5180 32.6835 (27) + Ground floor Main 31.1600 0.2500 7.7900 (28a) + External walls Main 80.6500 16.6800 63.9700 0.4800 30.7056 (29a) + External roof Main 31.1600 31.1600 0.3000 9.3480 (30) +Total net area of external elements Aum(A, m2) 142.9700 (31) +Fabric heat loss, W/K = Sum (A x U) (26)...(30) + (32) = 91.6271 (33) +Main dwelling + Party walls Main 34.2900 0.0000 0.0000 (32) +Thermal mass parameter (TMP = Cm / TFA) in kJ/m2K 250.0000 (35) +Thermal bridges (User defined value 0.150 * total exposed area) 21.4455 (36) +Point Thermal bridges (36a) = 0.0000 +Total fabric heat loss (33) + (36) + (36a) = 113.0726 (37) +Ventilation heat loss calculated monthly (38)m = 0.33 x (25)m x (5) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec + (38)m 33.5720 33.1768 33.1768 32.4181 32.4181 31.0272 31.7016 30.7058 30.7058 31.0272 31.0272 32.4181 (38) +Heat transfer coeff + 146.6445 146.2494 146.2494 145.4907 145.4907 144.0998 144.7742 143.7784 143.7784 144.0998 144.0998 145.4907 (39) +Average = Sum(39)m / 12 = 145.0205 + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +HLP 2.3531 2.3467 2.3467 2.3346 2.3346 2.3123 2.3231 2.3071 2.3071 2.3123 2.3123 2.3346 (40) +HLP (average) 2.3270 +Days in mont 31 28 31 30 31 30 31 31 30 31 30 31 +---------------------------------------------------------------------------------------------------- +4. Water heating energy requirements (kWh/year) +---------------------------------------------------------------------------------------------------- +Assumed occupancy 2.0464 (42) +Hot water usage for mixer showers + 51.2148 50.4451 49.3236 47.1777 45.5941 43.8281 42.8243 43.9374 45.1575 47.0536 49.2456 51.0186 (42a) +Hot water usage for baths + 26.6248 26.2294 25.6726 24.6459 23.8771 23.0246 22.5642 23.1171 23.7192 24.6313 25.6791 26.5348 (42b) +Hot water usage for other uses + 37.4603 36.0981 34.7359 33.3737 32.0116 30.6494 30.6494 32.0116 33.3737 34.7359 36.0981 37.4603 (42c) +Average daily hot water use (litres/day) 105.9586 (43) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Daily hot water use + 115.2999 112.7727 109.7321 105.1973 101.4828 97.5021 96.0379 99.0660 102.2504 106.4209 111.0229 115.0137 (44) +Energy conte 182.6069 160.5868 168.6541 144.0099 136.6153 119.8902 116.1495 122.6644 126.0850 144.4121 158.1725 180.0836 (45) +Energy content (annual) Total = Sum(45)m = 1759.9303 +Distribution loss (46)m = 0.15 x (45)m + 27.3910 24.0880 25.2981 21.6015 20.4923 17.9835 17.4224 18.3997 18.9127 21.6618 23.7259 27.0125 (46) +Water storage loss (or HIU loss): +Total storage loss + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (56) +If cylinder contains dedicated solar storage + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (57) +Primary loss 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (59) +Combi loss 50.9589 46.0274 50.9589 49.3151 50.9589 48.0832 48.9398 50.4830 49.3151 50.9589 49.3151 50.9589 (61) +Total heat required for water heating calculated for each month + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (62) +WWHRS 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63a) +PV diverter 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63b) +Solar input 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63c) +FGHRS 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (63d) +Output from w/h + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (64) + Total per year (kWh/year) = Sum(64)m = 2356.2034 (64) +Electric shower(s) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (64a) + Total Energy used by instantaneous electric shower(s) (kWh/year) = Sum(64a)m = 0.0000 (64a) +Heat gains from water heating, kWh/month + 73.4565 64.9019 68.8172 60.2121 58.1643 51.8843 50.8547 53.4067 54.2520 60.7568 64.9211 72.6175 (65) +---------------------------------------------------------------------------------------------------- +5. Internal gains (see Table 5 and 5a) +---------------------------------------------------------------------------------------------------- +Metabolic gains (Table 5), Watts + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +(66)m 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 122.7847 (66) +Lighting gains (calculated in Appendix L, equation L9 or L9a), also see Table 5 + 21.4748 19.0737 15.5118 11.7434 8.7783 7.4110 8.0079 10.4090 13.9709 17.7393 20.7043 22.0716 (67) +Appliances gains (calculated in Appendix L, equation L13 or L13a), also see Table 5 + 266.8027 269.5713 262.5946 247.7419 228.9932 211.3720 199.5999 196.8313 203.8081 218.6607 237.4095 255.0307 (68) +Cooking gains (calculated in Appendix L, equation L15 or L15a), also see Table 5 + 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 49.3249 (69) +Pumps, fans 3.0000 3.0000 3.0000 3.0000 3.0000 0.0000 0.0000 0.0000 0.0000 3.0000 3.0000 3.0000 (70) +Losses e.g. evaporation (negative values) (Table 5) + -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 -81.8565 (71) +Water heating gains (Table 5) + 98.7319 96.5803 92.4963 83.6279 78.1778 72.0615 68.3530 71.7832 75.3500 81.6623 90.1682 97.6042 (72) +Total internal gains + 480.2625 478.4784 463.8557 436.3663 409.2025 381.0977 366.2140 369.2766 383.3821 411.3154 441.5351 467.9596 (73) +---------------------------------------------------------------------------------------------------- +6. Solar gains +---------------------------------------------------------------------------------------------------- +[Jan] Area Solar flux g FF Access Gains + m2 Table 6a Specific data Specific data factor W + W/m2 or Table 6b or Table 6c Table 6d +---------------------------------------------------------------------------------------------------- +North 7.2000 11.5683 0.7600 0.7000 0.7700 30.7077 (74) +East 2.8900 21.5704 0.7600 0.7000 0.7700 22.9826 (76) +West 2.8900 21.5704 0.7600 0.7000 0.7700 22.9826 (80) +---------------------------------------------------------------------------------------------------- +Solar gains 76.6730 133.8602 224.7811 352.4577 437.5532 487.5086 459.0611 390.9446 291.1241 173.9501 98.4071 64.8811 (83) +Total gains 556.9355 612.3386 688.6368 788.8241 846.7557 868.6063 825.2750 760.2212 674.5063 585.2655 539.9422 532.8408 (84) +---------------------------------------------------------------------------------------------------- +7. Mean internal temperature (heating season) +---------------------------------------------------------------------------------------------------- +Temperature during heating periods in the living area from Table 9, Th1 (C) 21.0000 (85) +Utilisation factor for gains for living area, ni1,m (see Table 9a) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +tau 29.5120 29.5918 29.5918 29.7461 29.7461 30.0332 29.8933 30.1003 30.1003 30.0332 30.0332 29.7461 +alpha 2.9675 2.9728 2.9728 2.9831 2.9831 3.0022 2.9929 3.0067 3.0067 3.0022 3.0022 2.9831 +util living area + 0.9881 0.9831 0.9683 0.9259 0.8265 0.6133 0.4021 0.4603 0.7942 0.9446 0.9810 0.9895 (86) +MIT 18.5901 18.7933 19.2566 19.8925 20.4875 20.8766 20.9779 20.9661 20.6784 19.9847 19.1949 18.5759 (87) +Th 2 19.1083 19.1122 19.1122 19.1196 19.1196 19.1333 19.1266 19.1365 19.1365 19.1333 19.1333 19.1196 (88) +util rest of house + 0.9832 0.9760 0.9536 0.8869 0.7217 0.3874 0.0923 0.1390 0.6247 0.9057 0.9713 0.9851 (89) +MIT 2 17.0860 17.2893 17.7444 18.3557 18.8686 19.1133 19.1266 19.1361 19.0331 18.4675 17.7026 17.0793 (90) +Living area fraction fLA = Living area / (4) = 0.3001 (91) +MIT 17.5373 17.7406 18.1982 18.8168 19.3543 19.6424 19.6821 19.6852 19.5268 18.9228 18.1504 17.5284 (92) +Temperature adjustment 0.0000 +adjusted MIT 17.5373 17.7406 18.1982 18.8168 19.3543 19.6424 19.6821 19.6852 19.5268 18.9228 18.1504 17.5284 (93) +---------------------------------------------------------------------------------------------------- +8. Space heating requirement +---------------------------------------------------------------------------------------------------- + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Utilisation 0.9770 0.9682 0.9433 0.8784 0.7380 0.4574 0.1888 0.2404 0.6697 0.8994 0.9634 0.9794 (94) +Useful gains 544.1060 592.8372 649.5622 692.8756 624.9256 397.2799 155.7782 182.7905 451.6915 526.4023 520.2010 521.8383 (95) +Ext temp. 5.6000 6.2000 8.0000 10.6000 13.7000 16.7000 18.6000 18.4000 15.7000 12.2000 8.5000 5.6000 (96) +Heat loss rate W + 1750.5467 1687.8026 1491.4798 1195.4735 822.6545 423.9972 156.6578 184.7872 550.2136 968.7502 1390.6200 1735.4681 (97) +Space heating kWh + 897.5919 735.8167 626.3867 361.8705 147.1103 0.0000 0.0000 0.0000 0.0000 329.1069 626.7017 902.9406 (98a) +Space heating requirement - total per year (kWh/year) 4627.5252 +Solar heating kWh + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (98b) +Solar heating contribution - total per year (kWh/year) 0.0000 +Space heating kWh + 897.5919 735.8167 626.3867 361.8705 147.1103 0.0000 0.0000 0.0000 0.0000 329.1069 626.7017 902.9406 (98c) +Space heating requirement after solar contribution - total per year (kWh/year) 4627.5252 +Space heating per m2 (98c) / (4) = 74.2543 (99) +---------------------------------------------------------------------------------------------------- +9a. Energy requirements - Individual heating systems, including micro-CHP + ---------------------------------------------------------------------------------------------------- +Fraction of space heat from secondary/supplementary system (Table 11) 0.1000 (201) +Fraction of space heat from main system(s) 0.9000 (202) +Efficiency of main space heating system 1 (in %) 84.0000 (206) +Efficiency of main space heating system 2 (in %) 0.0000 (207) +Efficiency of secondary/supplementary heating system, % 100.0000 (208) + Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +Space heating requirement + 897.5919 735.8167 626.3867 361.8705 147.1103 0.0000 0.0000 0.0000 0.0000 329.1069 626.7017 902.9406 (98) +Space heating efficiency (main heating system 1) + 84.0000 84.0000 84.0000 84.0000 84.0000 0.0000 0.0000 0.0000 0.0000 84.0000 84.0000 84.0000 (210) +Space heating fuel (main heating system) + 961.7056 788.3750 671.1287 387.7184 157.6182 0.0000 0.0000 0.0000 0.0000 352.6145 671.4661 967.4363 (211) +Space heating efficiency (main heating system 2) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (212) +Space heating fuel (main heating system 2) + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (213) +Space heating fuel (secondary) + 89.7592 73.5817 62.6387 36.1870 14.7110 0.0000 0.0000 0.0000 0.0000 32.9107 62.6702 90.2941 (215) +Water heating +Water heating requirement + 233.5658 206.6142 219.6130 193.3250 187.5742 167.9734 165.0893 173.1474 175.4000 195.3711 207.4875 231.0425 (64) +Efficiency of water heater 75.0000 (216) +(217)m 81.7985 81.6695 81.2661 80.4060 78.4793 75.0000 75.0000 75.0000 75.0000 80.1761 81.3739 81.8263 (217) +Fuel for water heating, kWh/month + 285.5380 252.9883 270.2395 240.4361 239.0111 223.9646 220.1191 230.8632 233.8667 243.6773 254.9804 282.3572 (219) +Space cooling fuel requirement +(221)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (221) +Pumps and Fa 7.3041 6.5973 7.3041 7.0685 7.3041 7.0685 7.3041 7.3041 7.0685 7.3041 7.0685 7.3041 (231) +Lighting 18.7968 15.0795 13.5774 9.9474 7.6836 6.2776 7.0093 9.1109 11.8342 15.5271 17.5378 19.3192 (232) +Electricity generated by PVs (Appendix M) (negative quantity) +(233a)m -36.0565 -47.5984 -69.1347 -78.0275 -80.0163 -73.7910 -72.7946 -69.6016 -62.6000 -55.9069 -40.3706 -31.7267 (233a) +Electricity generated by wind turbines (Appendix M) (negative quantity) +(234a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (234a) +Electricity generated by hydro-electric generators (Appendix M) (negative quantity) +(235a)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235a) +Electricity used or net electricity generated by micro-CHP (Appendix N) (negative if net generation) +(235c)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235c) +Electricity generated by PVs (Appendix M) (negative quantity) +(233b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (233b) +Electricity generated by wind turbines (Appendix M) (negative quantity) +(234b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (234b) +Electricity generated by hydro-electric generators (Appendix M) (negative quantity) +(235b)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235b) +Electricity used or net electricity generated by micro-CHP (Appendix N) (negative if net generation) +(235d)m 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 (235d) +Annual totals kWh/year +Space heating fuel - main system 1 4958.0627 (211) +Space heating fuel - main system 2 0.0000 (213) +Space heating fuel - secondary 462.7525 (215) +Efficiency of water heater 75.0000 +Water heating fuel used 2978.0416 (219) +Space cooling fuel 0.0000 (221) +Electricity for pumps and fans: + central heating pump 41.0000 (230c) + main heating flue fan 45.0000 (230e) +Total electricity for the above, kWh/year 86.0000 (231) +Electricity for lighting (calculated in Appendix L) 151.7006 (232) +Energy saving/generation technologies (Appendices M ,N and Q) +PV generation -717.6247 (233) +Wind generation 0.0000 (234) +Hydro-electric generation (Appendix N) 0.0000 (235a) +Electricity generated - Micro CHP (Appendix N) 0.0000 (235) +Appendix Q - special features +Energy saved or generated 0.0000 (236) +Energy used 0.0000 (237) +Total delivered energy for all uses 7918.9327 (238) +---------------------------------------------------------------------------------------------------- +10a. Fuel costs - using BEDF prices (596) +---------------------------------------------------------------------------------------------------- + Fuel Fuel price Fuel cost + kWh/year p/kWh £/year +Space heating - main system 1 4958.0627 7.3200 362.9302 (240) +Total CO2 associated with community systems 0.0000 (473) +Space heating - secondary 462.7525 27.6700 128.0436 (242) +Water heating (other fuel) 2978.0416 7.3200 217.9926 (247) +Energy for instantaneous electric shower(s) 0.0000 27.6700 0.0000 (247a) +Pumps, fans and electric keep-hot 86.0000 27.6700 23.7962 (249) +Energy for lighting 151.7006 27.6700 41.9755 (250) +Additional standing charges 108.0000 (251) +Energy saving/generation technologies +PV Unit electricity used in dwelling -717.6247 27.6700 -198.5668 +PV Unit electricity exported 0.0000 5.8100 0.0000 +Total -198.5668 (252) +Total energy cost 684.1714 (255) +---------------------------------------------------------------------------------------------------- +12a. Carbon dioxide emissions - Individual heating systems including micro-CHP +---------------------------------------------------------------------------------------------------- + Energy Emission factor Emissions + kWh/year kg CO2/kWh kg CO2/year +Space heating - main system 1 4958.0627 0.2100 1041.1932 (261) +Total CO2 associated with community systems 0.0000 (373) +Space heating - secondary 462.7525 0.1551 71.7611 (263) +Water heating (other fuel) 2978.0416 0.2100 625.3887 (264) +Space and water heating 1738.3430 (265) +Pumps, fans and electric keep-hot 86.0000 0.1387 11.9293 (267) +Energy for lighting 151.7006 0.1443 21.8951 (268) +Energy saving/generation technologies +PV Unit electricity used in dwelling -717.6247 0.1352 -97.0291 +PV Unit electricity exported 0.0000 0.0000 0.0000 +Total -97.0291 (269) +Total CO2, kg/year 1675.1383 (272) +---------------------------------------------------------------------------------------------------- +13a. Primary energy - Individual heating systems including micro-CHP +---------------------------------------------------------------------------------------------------- + Energy Primary energy factor Primary energy + kWh/year kg CO2/kWh kWh/year +Space heating - main system 1 4958.0627 1.1300 5602.6109 (275) +Total CO2 associated with community systems 0.0000 (473) +Space heating - secondary 462.7525 1.5741 728.4382 (277) +Water heating (other fuel) 2978.0416 1.1300 3365.1870 (278) +Space and water heating 9696.2361 (279) +Pumps, fans and electric keep-hot 86.0000 1.5128 130.1008 (281) +Energy for lighting 151.7006 1.5338 232.6834 (282) +Energy saving/generation technologies +PV Unit electricity used in dwelling -717.6247 1.4997 -1076.2548 +PV Unit electricity exported 0.0000 0.0000 0.0000 +Total -1076.2548 (283) +Total Primary energy kWh/year 8982.7654 (286) + \ No newline at end of file diff --git a/scripts/hyde/build_200004296092.py b/scripts/hyde/build_200004296092.py new file mode 100644 index 000000000..926b6809c --- /dev/null +++ b/scripts/hyde/build_200004296092.py @@ -0,0 +1,297 @@ +"""Elmhurst build for UPRN 200004296092 (RdSAP-Schema-21.0.1, END-TERRACE HOUSE, +2-storey, band B, SOLID BRICK 360 mm WITH EXTERNAL INSULATION (thickness lodged +"NI" = unknown), pitched 150 mm loft, solid uninsulated ground floor, mains-gas +COMBI (PCDB 16137 Ideal Logic combi 30 ~ generic Post-98 condensing combi), +control 2106 (CBE), double glazed ~4.31 m², 2 doors, TFA ~62, party wall 6.79 m. +Engine 71.74 = lodged 71 AFTER the §5.4 "assume 100 mm if unknown" wall fix +(slice 5); this build validates that against the accredited Elmhurst worksheet. + +The KEY page is `walls`: it prints Elmhurst's insulation dropdown so we can see +how the accredited tool handles External insulation of unknown thickness. Run: + DISPLAY=:99 python scripts/hyde/build_200004296092.py +""" +from __future__ import annotations +import sys +from pathlib import Path +import elmhurst_lib as E + +DIM = "TabContainer_TabPanelMain_WebUserControlDimensionsMain_" +WALL = ("TabContainer_TabPanelMain_InnerTabContainerMain_" + "TabPanelExternalWallMain_WebUserControlWallMain_") +PWALL = ("TabContainer_TabPanelMain_InnerTabContainerMain_" + "TabPanelPartyWallMain_WebUserControlPartyWallMain_") +ROOF = "TabContainer_TabPanelMain_WebUserControlRoofMain_" +FLOOR = "TabContainer_TabPanelMain_WebUserControlFloorsMain_" +WP = "TabContainer_TabPanelWindowsPanel_" +DP = "TabContainer_TabPanelDoorsPanel_" +VP = "TabContainer_TabPanelVentilationPanel_" +APT = "TabContainer_TabPanelAirPressureTest_" +LP = "TabContainer_TabPanelLighting_" +MV = "TabContainer_TabPanelMechVent_" +WH = "TabContainer_TabPanelWaterHeating_" +MH1B = "TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_" + +_SAMPLE_DIR = (Path(__file__).parent.parent.parent + / "backend/epc_api/json_samples/real_life_examples" + / "RdSAP-Schema-21.0.1/uprn_200004296092") + + +def _pick(page, suffix, contains): + val = page.evaluate( + """(a)=>{const s=document.getElementById(a[0]);if(!s)return null; + for(const o of s.options){if(o.text.toLowerCase().includes(a[1].toLowerCase()))return o.value;}return null;}""", + [f"{E.FP}{suffix}", contains]) + if val is not None: + E.set_select(page, suffix, val) + return val + + +def _options(page, suffix): + return page.evaluate( + """(id)=>{const s=document.getElementById(id);if(!s)return []; + return Array.from(s.options).map(o=>o.text);}""", f"{E.FP}{suffix}") + + +def property_description(page): + E.goto(page, "PropertyDescription", "WebFormPropertyDescription.aspx") + E.set_select(page, "DropDownListPropertyType1", "H House") + print("built_form ->", _pick(page, "DropDownListPropertyType2", "end-terrace") + or _pick(page, "DropDownListPropertyType2", "end terrace")) + E.set_text(page, "TextBoxStoreys", "2") + E.set_text(page, "TextBoxHabitableRooms", "3") + E.set_text(page, "TextBoxHeatedHabitableRooms", "3") + print("date ->", _pick(page, "DropDownListDateBuiltMain", "1900-1929") + or _pick(page, "DropDownListDateBuiltMain", "1900")) + E.set_select(page, "DropDownListDateBuiltFirst", "") + E.set_select(page, "DropDownListRoomInRoofMain", "") + E.save_close(page) + + +def dimensions(page): + E.goto(page, "Dimensions", "WebFormDimensions.aspx") + E.set_text(page, f"{DIM}TextBoxFloorAreaLowestFloor", "31.16") + E.set_text(page, f"{DIM}TextBoxRoomHeightLowestFloor", "2.40") + E.set_text(page, f"{DIM}TextBoxWallPerimeterLowestFloor", "15.97") + E.set_text(page, f"{DIM}TextBoxPartyWallLengthLowestFloor", "6.79") + E.set_text(page, f"{DIM}TextBoxFloorArea1stFloor", "31.16") + E.set_text(page, f"{DIM}TextBoxRoomHeight1stFloor", "2.40") + E.set_text(page, f"{DIM}TextBoxWallPerimeter1stFloor", "15.97") + E.set_text(page, f"{DIM}TextBoxPartyWallLength1stFloor", "6.79") + E.save_close(page) + + +def walls(page): + E.goto(page, "Walls", "WebFormWalls.aspx") + print("WALL TYPE options:", _options(page, f"{WALL}DropDownListType")) + _pick(page, f"{WALL}DropDownListType", "solid brick") \ + or _pick(page, f"{WALL}DropDownListType", "brick") + page.wait_for_timeout(600) + print("INSULATION options:", _options(page, f"{WALL}DropDownListInsulation")) + ins = (_pick(page, f"{WALL}DropDownListInsulation", "external") + or _pick(page, f"{WALL}DropDownListInsulation", "ext")) + print("insulation ->", ins) + page.wait_for_timeout(600) + # If a thickness dropdown appears for external insulation, show it (this is + # the slice-5 question: what does Elmhurst do with UNKNOWN thickness?). + for suf in (f"{WALL}DropDownListInsulationThickness", + f"{WALL}DropDownListExternalInsulationThickness"): + if page.locator(f"#{E.FP}{suf}").count(): + print("INSULATION THICKNESS options:", _options(page, suf), + "current:", page.locator(f"#{E.FP}{suf}").input_value()) + print("party wall ->", + _pick(page, f"{PWALL}DropDownListPartyWallType", "determine") + or _pick(page, f"{PWALL}DropDownListPartyWallType", "masonry")) + E.save_close(page) + + +def roofs(page): + E.goto(page, "Roofs", "WebFormRoofs.aspx") + _pick(page, f"{ROOF}DropDownListType", "access to loft") \ + or _pick(page, f"{ROOF}DropDownListType", "loft") + _pick(page, f"{ROOF}DropDownListInsulationAt", "joists") + E.set_select(page, f"{ROOF}DropDownListThickness", "150 mm") + E.save_close(page) + + +def floors(page): + E.goto(page, "Floors", "WebFormFloors.aspx") + E.set_select(page, f"{FLOOR}DropDownListLocation", "G Ground floor") + _pick(page, f"{FLOOR}DropDownListType", "solid") + E.set_select(page, f"{FLOOR}DropDownListInsulation", "A As built") + E.save_close(page) + + +def openings(page): + E.goto(page, "Openings", "WebFormOpenings.aspx") + E.click_tab(page, "TabContainer_TabPanelWindowsPanel") + _add_window(page, 4.31, "North", _glazing(page)) + _delete_zero_rows(page) + E.click_tab(page, "TabContainer_TabPanelDoorsPanel") + E.set_text(page, f"{DP}TextBoxDoors", "2") + E.set_text(page, f"{DP}TextBoxDoorsInsulated", "0") + E.set_text(page, f"{DP}TextBoxDraughtProofedDoors", "0") + E.save_close(page) + + +def _glazing(page): + for needle in ("unknown install date", "before 2002", "pre 2002"): + for opt in _options(page, f"{WP}DropDownListExtGlazing"): + low = opt.lower() + if needle in low and "triple" not in low and "single" not in low and "known data" not in low: + return opt + return "Double post or during 2022" + + +def _add_window(page, area, orientation, glazing): + print("glazing ->", glazing) + E.set_select(page, f"{WP}DropDownListExtGlazing", glazing) + page.wait_for_timeout(400) + ft = page.locator(f"#{E.FP}{WP}DropDownListExtFrameType") + if ft.count(): + ft.select_option("PVC") + gg = page.locator(f"#{E.FP}{WP}DropDownListExtGlazingGap") + if gg.count(): + gg.select_option("12 mm") + wid = f"{E.FP}{WP}TextBoxExtWidth" + page.evaluate( + """(a)=>{const e=document.getElementById(a[0]);if(e){e.value=a[1]; + e.dispatchEvent(new Event('input',{bubbles:true})); + e.dispatchEvent(new Event('change',{bubbles:true})); + e.dispatchEvent(new Event('blur',{bubbles:true}));}}""", [wid, str(area)]) + page.locator(f"#{E.FP}{WP}TextBoxExtHeight").fill("1.00") + page.locator(f"#{E.FP}{WP}DropDownListExtOrientation").select_option(orientation) + page.locator(f"#{E.FP}{WP}DropDownListExtBuildingPartId").select_option("Main") + page.locator(f"#{E.FP}{WP}DropDownListExtLocation").select_option("External wall") + page.wait_for_timeout(300) + before = E.window_row_count(page) + page.evaluate("(id)=>{const e=document.getElementById(id); if(e)e.click();}", f"{E.FP}{WP}ButtonAddWindow") + for _ in range(25): + page.wait_for_timeout(200) + if E.window_row_count(page) > before: + break + + +def _grid_rows(page): + return page.evaluate( + """()=>{const t=document.querySelector("[id*=GridViewExtendedWidows]"); + if(!t)return[];return Array.from(t.querySelectorAll('tr')).slice(1) + .map(r=>Array.from(r.querySelectorAll('td')).map(c=>c.innerText.trim()));}""") + + +def _delete_zero_rows(page): + g = 0 + while g < 6 and E.window_row_count(page) > 1: + g += 1 + rows = _grid_rows(page) + bad = next((i for i, c in enumerate(rows) if len(c) > 1 and c[1] in ("0.00", "0", "0.0")), None) + if bad is None: + break + _delete_row(page, bad) + page.wait_for_timeout(400) + + +def _delete_row(page, idx): + before = E.window_row_count(page) + btn = page.evaluate( + """(i)=>{const b=document.querySelectorAll("[id*='GridViewExtendedWidows_DeleteButton_']");return b[i]?b[i].id:null;}""", idx) + if not btn: + return + page.evaluate("(id)=>{const e=document.getElementById(id); if(e)e.click();}", btn) + page.wait_for_selector(f"#{E.FP}DeleteWindowDialog_LinkButtonYes", state="visible", timeout=5000) + page.evaluate("(id)=>{const e=document.getElementById(id); if(e)e.click();}", f"{E.FP}DeleteWindowDialog_LinkButtonYes") + for _ in range(20): + page.wait_for_timeout(200) + if E.window_row_count(page) < before: + break + + +def ventilation(page): + E.goto(page, "VentilationAndCooling", "WebFormVentilationAndCooling.aspx") + E.click_tab(page, "TabContainer_TabPanelVentilationPanel") + E.set_text(page, f"{VP}TextBoxIntermittentFans", "0") + cool = page.locator(f"#{E.FP}{VP}CheckBoxFixedSpaceCooling") + if cool.count() and cool.is_checked(): + E.commit(page, cool.uncheck) + E.click_tab(page, "TabContainer_TabPanelMechVent") + mv = page.locator(f"#{E.FP}{MV}CheckBoxMechanicalVentilation") + if mv.count() and mv.is_checked(): + E.commit(page, mv.uncheck) + E.click_tab(page, "TabContainer_TabPanelAirPressureTest") + E.set_select(page, f"{APT}DropDownListTestMethod", "Not available") + E.click_tab(page, "TabContainer_TabPanelLighting") + E.set_text(page, f"{LP}TextBoxLightsTotal", "6") + E.set_text(page, f"{LP}TextBoxLedLightsTotal", "0") + E.set_text(page, f"{LP}TextBoxCflLightsTotal", "0") + E.save_close(page) + + +def space_heating(page): + E.goto(page, "SpaceHeating", "WebFormSpaceHeating.aspx") + page.wait_for_timeout(1000) + mhc = page.locator(f"#{E.MH1}TextBoxMainHeatingCode") + code = mhc.input_value() if mhc.count() else "" + if code and code not in ("0",): + print(f"clearing leftover MainHeatingCode {code}") + page.evaluate("""(id)=>{const e=document.getElementById(id);if(e){e.value=''; + e.dispatchEvent(new Event('change',{bubbles:true}));}}""", f"{E.MH1}TextBoxMainHeatingCode") + page.wait_for_timeout(400) + E.save_close(page) + return + # Generic Post-1998 condensing combi (~89% SAP 4b, ≈ PCDB 16137 Ideal Logic + # combi 30). combi vs regular is set on the water page (from primary + no + # cylinder). Control 2106 = CBE (programmer, room thermostat and TRVs). + E.set_heating_dialog(page, f"{MH1B}ButtonMainHeatingCode", + "^Gas", "Mains gas", "Boilers", "Post 1998", "Condensing", + "Combi condens") + print("code:", page.locator(f"#{E.MH1}TextBoxMainHeatingCode").input_value()) + E.set_heating_dialog(page, f"{MH1B}ButtonMainHeatingControls", + "^Boilers", "^Standard", "CBE Programmer, room thermostat and TRVs") + print("control:", page.locator(f"#{E.MH1}TextBoxMainHeatingControls").input_value()) + E.set_select(page, "DropDownListSecondaryHeatingPresent", "No") + E.save_close(page) + + +def water_heating(page): + E.goto(page, "WaterHeating", "WebFormWaterHeating.aspx") + E.click_tab(page, "TabContainer_TabPanelWaterHeating") + page.wait_for_timeout(400) + E.clear_hot_water_cylinder(page) + E.set_heating_dialog(page, f"{WH}ButtonWaterHeatingCode", + "From Space Heating", "From the primary heating system") + print("water code:", page.locator(f"#{E.FP}{WH}TextBoxWaterHeatingCode").input_value()) + E.save_close(page) + + +def download(page): + _SAMPLE_DIR.mkdir(parents=True, exist_ok=True) + print("navigating via Recommendations ...") + with page.expect_navigation(wait_until="networkidle", timeout=60_000): + page.click("#ContentBody_buttonActionRecommendations_Link", timeout=15_000) + page.wait_for_timeout(1500) + for btn, fname in (("ContentBody_ContentPlaceHolder1_LinkButtonSummary", "elmhurst_summary.pdf"), + ("ContentBody_ContentPlaceHolder1_ButtonDebugInforPdf", "elmhurst_worksheet.pdf")): + try: + with page.expect_download(timeout=60_000) as dl: + page.click(f"#{btn}", timeout=15_000) + dl.value.save_as(str(_SAMPLE_DIR / fname)) + print("saved", fname) + except Exception as e: + print("!! download failed", fname, type(e).__name__, str(e)[:120]) + + +_ORDER = ["property_description", "dimensions", "walls", "roofs", "floors", + "openings", "ventilation", "space_heating", "water_heating", "download"] + + +def main(): + if len(sys.argv) < 2 or sys.argv[1] not in _ORDER: + print("usage: build_200004296092.py <" + "|".join(_ORDER) + ">") + return 2 + with E.session() as (ctx, page): + globals()[sys.argv[1]](page) + print("done:", sys.argv[1], "->", page.url) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())