diff --git a/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000516.py b/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000516.py index dabc4f70..b4c50656 100644 --- a/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000516.py +++ b/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000516.py @@ -29,6 +29,7 @@ from datatypes.epc.domain.epc_property_data import ( SapBuildingPart, SapFloorDimension, SapRoomInRoof, + SapRoomInRoofSurface, SapVentilation, SapWindow, ) @@ -67,6 +68,11 @@ def build_epc() -> EpcPropertyData: total_floor_area_m2=35.76, party_wall_length_m=18.14, heat_loss_perimeter_m=7.89, floor=0, + # 000516 line: "Exposed floor Main 35.76 × U=1.20" (28b) + # — the Main ground floor sits over an unheated space + # (passageway / over-garage), not earth. Routes via + # Table 20 (`u_exposed_floor`) to U=1.20. + is_exposed_floor=True, ), SapFloorDimension( room_height_m=3.00, # = 2.75 internal + 0.25 floor structure @@ -77,7 +83,39 @@ def build_epc() -> EpcPropertyData: ], sap_room_in_roof=SapRoomInRoof( floor_area=19.02, construction_age_band="A", + # 000516 §3.10 RR detailed surfaces: 2 stud walls @ 100mm + # (Table 17 col 3a → 0.36), 2 slopes uninsulated (col 1a + # "none" → 2.30), 1 flat ceiling uninsulated (col 2a "none" + # → 2.30), 2 gable walls treated as party at U=0.25. + detailed_surfaces=[ + SapRoomInRoofSurface( + kind="flat_ceiling", area_m2=3.56, + insulation_thickness_mm=0, + ), + SapRoomInRoofSurface( + kind="stud_wall", area_m2=3.88, + insulation_thickness_mm=100, insulation_type="mineral_wool", + ), + SapRoomInRoofSurface( + kind="stud_wall", area_m2=3.88, + insulation_thickness_mm=100, insulation_type="mineral_wool", + ), + SapRoomInRoofSurface( + kind="slope", area_m2=6.41, + insulation_thickness_mm=0, + ), + SapRoomInRoofSurface( + kind="slope", area_m2=6.41, + insulation_thickness_mm=0, + ), + SapRoomInRoofSurface(kind="gable_wall", area_m2=13.11), + SapRoomInRoofSurface(kind="gable_wall", area_m2=13.11), + ], ), + # 000516 line: "External roof Main 16.74 - 1.18 = 15.56 × U=2.30" + # (30) — uninsulated storey-below roof. Lodge thickness=0 so the + # u_roof cascade picks the Table 16 "none" row. + roof_insulation_thickness=0, wall_thickness_mm=400, ) return make_minimal_sap10_epc( @@ -86,7 +124,10 @@ def build_epc() -> EpcPropertyData: sap_building_parts=[main], habitable_rooms_count=3, heated_rooms_count=3, - door_count=1, + # 000516 PDF (26) lodges total door area 3.70 m² = 2 × _DEFAULT_DOOR_ + # AREA_M2 (1.85). Same as 000477/000480 — single worksheet entry + # but the area resolves to 2 physical doors. + door_count=2, percent_draughtproofed=75, low_energy_fixed_lighting_bulbs_count=SECTION_5_BULB_COUNT_LEL, sap_windows=list(SECTION_6_VERTICAL_WINDOWS),