diff --git a/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000480.py b/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000480.py index bdfe5d91..4e14dcc2 100644 --- a/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000480.py +++ b/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000480.py @@ -24,6 +24,7 @@ from datatypes.epc.domain.epc_property_data import ( SapBuildingPart, SapFloorDimension, SapRoomInRoof, + SapRoomInRoofSurface, SapVentilation, SapWindow, ) @@ -66,6 +67,36 @@ def build_epc() -> EpcPropertyData: ], sap_room_in_roof=SapRoomInRoof( floor_area=19.83, construction_age_band="B", + # U985 §3 lines 198-202 + 211-212: 5 uninsulated surfaces + # (Table 17 row "none" → U=2.30) lodged on Main, plus 2 + # gable walls routed to party at U=0.25 per Table 4. All + # RR surfaces sit on Main — the RR (19.83 m²) is larger + # than the Main storey footprint (15.28 m²) so Main has + # no External roof line (the entire Main roof is the RR). + detailed_surfaces=[ + SapRoomInRoofSurface( + kind="flat_ceiling", area_m2=2.31, + insulation_thickness_mm=0, + ), + SapRoomInRoofSurface( + kind="stud_wall", area_m2=4.24, + insulation_thickness_mm=0, + ), + SapRoomInRoofSurface( + kind="stud_wall", area_m2=4.24, + insulation_thickness_mm=0, + ), + SapRoomInRoofSurface( + kind="slope", area_m2=10.78, + insulation_thickness_mm=0, + ), + SapRoomInRoofSurface( + kind="slope", area_m2=10.78, + insulation_thickness_mm=0, + ), + SapRoomInRoofSurface(kind="gable_wall", area_m2=11.33), + SapRoomInRoofSurface(kind="gable_wall", area_m2=8.47), + ], ), wall_thickness_mm=380, ) @@ -82,6 +113,12 @@ def build_epc() -> EpcPropertyData: total_floor_area_m2=17.01, party_wall_length_m=7.84, heat_loss_perimeter_m=4.34, floor=0, + # 000480 line 207: "Exposed floor Ext1 17.01 × U=1.20" + # — the Ext1 ground floor sits over an unheated space + # (passageway / over-garage), not soil. Routes via + # Table 20 (`u_exposed_floor`) to U=1.20 instead of + # the BS EN ISO 13370 ground-contact cascade. + is_exposed_floor=True, ), SapFloorDimension( room_height_m=3.09, # 2.84 internal + 0.25 floor structure @@ -92,6 +129,9 @@ def build_epc() -> EpcPropertyData: ], # NB: no alternative wall on this cert (vs 000487 which had a # 1.43 m² timber-frame alt wall on the extension). + # 000480 line 207: External roof Ext1 17.01 × U=0.14 → Table 16 + # joist insulation 300 mm (or ≈ 270 mm row at 0.16). Pin 300 mm. + roof_insulation_thickness=300, wall_thickness_mm=380, ) return make_minimal_sap10_epc(