def test_to_honeybee_different_heights(): """Test the to_honeybee method with different floor and ceiling heights.""" pts_1 = (Point3D(0, 0, 2), Point3D(10, 0, 2), Point3D(10, 10, 2), Point3D(0, 10, 2)) pts_2 = (Point3D(10, 0, 3), Point3D(20, 0, 3), Point3D(20, 10, 3), Point3D(10, 10, 3)) room2d_1 = Room2D('Office1', Face3D(pts_1), 5) room2d_2 = Room2D('Office2', Face3D(pts_2), 3) story = Story('OfficeFloor', [room2d_1, room2d_2]) story.set_outdoor_window_parameters(SimpleWindowRatio(0.4)) story.solve_room_2d_adjacency(0.01) rooms = story.to_honeybee(True, tolerance=0.01) assert len(rooms) == 2 assert len(rooms[0]) == 8 assert rooms[0].volume == 500 assert rooms[0].floor_area == 100 assert rooms[0].exterior_wall_area >= 150 assert rooms[0].exterior_aperture_area == pytest.approx(150 * 0.4, rel=1e-3) assert rooms[0].average_floor_height == 2 assert rooms[0].check_solid(0.01, 1) assert isinstance(rooms[0][1].boundary_condition, Outdoors) assert not isinstance(rooms[0][2].boundary_condition, Surface) # bottom assert isinstance(rooms[0][3].boundary_condition, Surface) # middle assert not isinstance(rooms[0][4].boundary_condition, Surface) # top assert len(rooms[0][3].apertures) == 1 assert len(rooms[1][4].apertures) == 1 rm1_ap = rooms[0][3].apertures[0] rm2_ap = rooms[1][4].apertures[0] assert isinstance(rm1_ap.boundary_condition, Surface) assert isinstance(rm2_ap.boundary_condition, Surface) assert rm1_ap.area == pytest.approx(rm2_ap.area, rel=1e-3)
def test_to_honeybee(): """Test the to_honeybee method.""" pts_1 = (Point3D(0, 0, 3), Point3D(10, 0, 3), Point3D(10, 10, 3), Point3D(0, 10, 3)) pts_2 = (Point3D(10, 0, 3), Point3D(20, 0, 3), Point3D(20, 10, 3), Point3D(10, 10, 3)) room2d_1 = Room2D('Office1', Face3D(pts_1), 3) room2d_2 = Room2D('Office2', Face3D(pts_2), 3) story = Story('OfficeFloor', [room2d_1, room2d_2]) story.solve_room_2d_adjacency(0.01) story.set_outdoor_window_parameters(SimpleWindowRatio(0.4)) rooms = story.to_honeybee(0.01) assert len(rooms) == 2 assert len(rooms[0]) == 6 assert rooms[0].story == story.identifier assert rooms[0].multiplier == story.multiplier assert rooms[0].volume == 300 assert rooms[0].floor_area == 100 assert rooms[0].exterior_wall_area == 90 assert rooms[0].exterior_aperture_area == pytest.approx(90 * 0.4, rel=1e-3) assert rooms[0].average_floor_height == 3 assert rooms[0].check_solid(0.01, 1) assert isinstance(rooms[0][1].boundary_condition, Outdoors) assert isinstance(rooms[0][2].boundary_condition, Surface) assert rooms[0][2].boundary_condition.boundary_condition_object == \ rooms[1][4].identifier assert len(rooms[0][1].apertures) == 1 assert len(rooms[0][2].apertures) == 0
def test_set_construction_set(): """Test the setting of a ConstructionSet on a Story.""" pts_1 = (Point3D(0, 0, 3), Point3D(0, 10, 3), Point3D(10, 10, 3), Point3D(10, 0, 3)) pts_2 = (Point3D(10, 0, 3), Point3D(10, 10, 3), Point3D(20, 10, 3), Point3D(20, 0, 3)) pts_3 = (Point3D(0, 10, 3), Point3D(0, 20, 3), Point3D(10, 20, 3), Point3D(10, 10, 3)) pts_4 = (Point3D(10, 10, 3), Point3D(10, 20, 3), Point3D(20, 20, 3), Point3D(20, 10, 3)) room2d_1 = Room2D('Office1', Face3D(pts_1), 3) room2d_2 = Room2D('Office2', Face3D(pts_2), 3) room2d_3 = Room2D('Office3', Face3D(pts_3), 3) room2d_4 = Room2D('Office4', Face3D(pts_4), 3) story = Story('OfficeFloor', [room2d_1, room2d_2, room2d_3, room2d_4]) story.solve_room_2d_adjacency(0.01) story.set_outdoor_window_parameters(SimpleWindowRatio(0.4)) mass_set = ConstructionSet('Thermal Mass Construction Set') concrete20 = EnergyMaterial('20cm Concrete', 0.2, 2.31, 2322, 832, 'MediumRough', 0.95, 0.75, 0.8) concrete10 = EnergyMaterial('10cm Concrete', 0.1, 2.31, 2322, 832, 'MediumRough', 0.95, 0.75, 0.8) thick_constr = OpaqueConstruction('Thick Concrete Construction', [concrete20]) thin_constr = OpaqueConstruction('Thin Concrete Construction', [concrete10]) shade_constr = ShadeConstruction('Light Shelf', 0.5, 0.5) mass_set.wall_set.exterior_construction = thick_constr mass_set.roof_ceiling_set.interior_construction = thin_constr mass_set.shade_construction = shade_constr story.properties.energy.construction_set = mass_set assert story.properties.energy.construction_set == mass_set assert story[0].properties.energy.construction_set == mass_set rooms = story.to_honeybee() model = hb_model.Model(story.identifier, rooms) assert len(model.properties.energy.construction_sets) == 1 assert model.properties.energy.construction_sets[0] == mass_set assert model.rooms[0].properties.energy.construction_set == mass_set