def test_writer_to_rad(): """Test the Model to.rad method.""" room = Room.from_box('Tiny_House_Zone', 5, 10, 3) dark_floor = Plastic.from_single_reflectance('DarkFloor', 0.1) room[0].properties.radiance.modifier = dark_floor south_face = room[3] south_face.apertures_by_ratio(0.4, 0.01) south_face.apertures[0].overhang(0.5, indoor=False) south_face.apertures[0].overhang(0.5, indoor=True) south_face.move_shades(Vector3D(0, 0, -0.5)) light_shelf_out = Plastic.from_single_reflectance( 'outdoor_light_shelf_0.5', 0.5) light_shelf_in = Plastic.from_single_reflectance('indoor_light_shelf_0.70', 0.7) south_face.apertures[0].outdoor_shades[ 0].properties.radiance.modifier = light_shelf_out south_face.apertures[0].indoor_shades[ 0].properties.radiance.modifier = light_shelf_in north_face = room[1] north_face.overhang(0.25, indoor=False) door_verts = [ Point3D(2, 10, 0.1), Point3D(1, 10, 0.1), Point3D(1, 10, 2.5), Point3D(2, 10, 2.5) ] door = Door('Front_Door', Face3D(door_verts)) north_face.add_door(door) aperture_verts = [ Point3D(4.5, 10, 1), Point3D(2.5, 10, 1), Point3D(2.5, 10, 2.5), Point3D(4.5, 10, 2.5) ] aperture = Aperture('Front_Aperture', Face3D(aperture_verts)) triple_pane = Glass.from_single_transmittance('custom_triple_pane_0.3', 0.3) aperture.properties.radiance.modifier = triple_pane north_face.add_aperture(aperture) tree_canopy_geo = Face3D.from_regular_polygon( 6, 2, Plane(Vector3D(0, 0, 1), Point3D(5, -3, 4))) tree_canopy = Shade('Tree_Canopy', tree_canopy_geo) table_geo = Face3D.from_rectangle(2, 2, Plane(o=Point3D(1.5, 4, 1))) table = Shade('Table', table_geo) room.add_indoor_shade(table) model = Model('Tiny_House', [room], orphaned_shades=[tree_canopy]) assert hasattr(model.to, 'rad') rad_string = model.to.rad(model) assert len(rad_string) == 2 assert 'outdoor_light_shelf_0.5' in rad_string[1] assert 'Front_Door' in rad_string[0]
def test_to_dict_single_zone(): """Test the Model to_dict method with a single zone model.""" room = Room.from_box('Tiny_House_Zone', 5, 10, 3) dark_floor = Plastic.from_single_reflectance('DarkFloor', 0.1) room[0].properties.radiance.modifier = dark_floor south_face = room[3] south_face.apertures_by_ratio(0.4, 0.01) south_face.apertures[0].overhang(0.5, indoor=False) south_face.apertures[0].overhang(0.5, indoor=True) south_face.move_shades(Vector3D(0, 0, -0.5)) light_shelf_out = Plastic.from_single_reflectance('OutdoorLightShelf', 0.5) light_shelf_in = Plastic.from_single_reflectance('IndoorLightShelf', 0.7) south_face.apertures[0].outdoor_shades[0].properties.radiance.modifier = light_shelf_out south_face.apertures[0].indoor_shades[0].properties.radiance.modifier = light_shelf_in north_face = room[1] north_face.overhang(0.25, indoor=False) door_verts = [Point3D(2, 10, 0.1), Point3D(1, 10, 0.1), Point3D(1, 10, 2.5), Point3D(2, 10, 2.5)] door = Door('Front_Door', Face3D(door_verts)) north_face.add_door(door) aperture_verts = [Point3D(4.5, 10, 1), Point3D(2.5, 10, 1), Point3D(2.5, 10, 2.5), Point3D(4.5, 10, 2.5)] aperture = Aperture('Front_Aperture', Face3D(aperture_verts)) triple_pane = Glass.from_single_transmittance('CustomTriplePane', 0.3) aperture.properties.radiance.modifier = triple_pane north_face.add_aperture(aperture) tree_canopy_geo = Face3D.from_regular_polygon( 6, 2, Plane(Vector3D(0, 0, 1), Point3D(5, -3, 4))) tree_canopy = Shade('Tree_Canopy', tree_canopy_geo) table_geo = Face3D.from_rectangle(2, 2, Plane(o=Point3D(1.5, 4, 1))) table = Shade('Table', table_geo) room.add_indoor_shade(table) model = Model('Tiny_House', [room], orphaned_shades=[tree_canopy]) model_dict = model.to_dict() assert 'radiance' in model_dict['properties'] assert 'modifiers' in model_dict['properties']['radiance'] assert 'modifier_sets' in model_dict['properties']['radiance'] assert len(model_dict['properties']['radiance']['modifiers']) == 5 assert len(model_dict['properties']['radiance']['modifier_sets']) == 0 assert model_dict['rooms'][0]['faces'][0]['properties']['radiance']['modifier'] == \ dark_floor.identifier south_ap_dict = model_dict['rooms'][0]['faces'][3]['apertures'][0] assert south_ap_dict['outdoor_shades'][0]['properties']['radiance']['modifier'] == \ light_shelf_out.identifier assert south_ap_dict['indoor_shades'][0]['properties']['radiance']['modifier'] == \ light_shelf_in.identifier assert model_dict['rooms'][0]['faces'][1]['apertures'][0]['properties']['radiance']['modifier'] == \ triple_pane.identifier
def test_assign_values(): pl = Plastic('test_plastic', 0.6, 0.7, 0.8, 0, 0) assert pl.r_reflectance == 0.6 assert pl.g_reflectance == 0.7 assert pl.b_reflectance == 0.8 assert pl.specularity == 0 assert pl.roughness == 0 assert pl.to_radiance( minimal=True) == 'void plastic test_plastic 0 0 5 0.6 0.7 0.8 0.0 0.0'
def test_plastic(): pl = Plastic('test_plastic') assert pl.r_reflectance == 0 assert pl.g_reflectance == 0 assert pl.b_reflectance == 0 assert pl.specularity == 0 assert pl.roughness == 0 assert pl.to_radiance( minimal=True) == 'void plastic test_plastic 0 0 5 0.0 0.0 0.0 0.0 0.0'
def test_to_from_dict(): """Test the Model to_dict and from_dict method with a single zone model.""" room = Room.from_box('Tiny_House_Room', 5, 10, 3) dark_floor = Plastic.from_single_reflectance('DarkFloor', 0.1) room[0].properties.radiance.modifier = dark_floor south_face = room[3] south_face.apertures_by_ratio(0.4, 0.01) south_face.apertures[0].overhang(0.5, indoor=False) south_face.apertures[0].overhang(0.5, indoor=True) south_face.apertures[0].move_shades(Vector3D(0, 0, -0.5)) light_shelf_out = Plastic.from_single_reflectance('OutdoorLightShelf', 0.5) light_shelf_in = Plastic.from_single_reflectance('IndoorLightShelf', 0.7) south_face.apertures[0].shades[0].properties.radiance.modifier = light_shelf_out south_face.apertures[0].shades[1].properties.radiance.modifier = light_shelf_in north_face = room[1] door_verts = [Point3D(2, 10, 0.1), Point3D(1, 10, 0.1), Point3D(1, 10, 2.5), Point3D(2, 10, 2.5)] door = Door('FrontDoor', Face3D(door_verts)) north_face.add_door(door) aperture_verts = [Point3D(4.5, 10, 1), Point3D(2.5, 10, 1), Point3D(2.5, 10, 2.5), Point3D(4.5, 10, 2.5)] aperture = Aperture('FrontAperture', Face3D(aperture_verts)) aperture.is_operable = True triple_pane = Glass.from_single_transmittance('CustomTriplePane', 0.3) aperture.properties.radiance.modifier = triple_pane north_face.add_aperture(aperture) tree_canopy_geo = Face3D.from_regular_polygon( 6, 2, Plane(Vector3D(0, 0, 1), Point3D(5, -3, 4))) tree_canopy = Shade('TreeCanopy', tree_canopy_geo) tree_trans = Glass.from_single_transmittance('TreeTransmittance', 0.75) tree_canopy.properties.radiance.modifier = tree_trans model = Model('TinyHouse', [room], orphaned_shades=[tree_canopy]) model_dict = model.to_dict(included_prop=['radiance']) new_model = Model.from_dict(model_dict) assert model_dict == new_model.to_dict(included_prop=['radiance']) assert dark_floor in new_model.properties.radiance.modifiers assert new_model.rooms[0][0].properties.radiance.modifier == dark_floor assert new_model.rooms[0][3].apertures[0].indoor_shades[0].properties.radiance.modifier == light_shelf_in assert new_model.rooms[0][3].apertures[0].outdoor_shades[0].properties.radiance.modifier == light_shelf_out assert triple_pane in new_model.properties.radiance.modifiers assert new_model.rooms[0][1].apertures[0].properties.radiance.modifier == triple_pane assert new_model.rooms[0][1].apertures[0].is_operable assert len(new_model.orphaned_shades) == 1 assert new_model.rooms[0][0].type == face_types.floor assert new_model.rooms[0][1].type == face_types.wall assert isinstance(new_model.rooms[0][0].boundary_condition, Ground) assert isinstance(new_model.rooms[0][1].boundary_condition, Outdoors) assert new_model.orphaned_shades[0].properties.radiance.modifier == tree_trans
def test_material_lockability(): """Test the lockability of Plastic.""" pl = Plastic('test_plastic', 0.6, 0.7, 0.8, 0, 0) pl.r_reflectance = 0.5 pl.lock() with pytest.raises(AttributeError): pl.r_reflectance = 0.7 pl.unlock() pl.r_reflectance = 0.7
def test_from_and_to_dict(): modifier = Plastic('polygon_material') polygon = Polygon('default_polygon', vertices, modifier=modifier) polygon_dict = polygon.to_dict() # check values in dictionary assert polygon_dict['identifier'] == 'default_polygon' assert polygon_dict['modifier'] == modifier.to_dict() assert polygon_dict['vertices'] == tuple(tuple(pt) for pt in vertices) polygon_from_dict = Polygon.from_dict(polygon_dict) assert polygon_from_dict.to_radiance() == polygon.to_radiance()
def test_from_and_to_dict(): modifier = Plastic('source_material') source = Source('default_source', modifier=modifier) source_dict = source.to_dict() # check values in dictionary assert source_dict['identifier'] == 'default_source' assert source_dict['modifier'] == modifier.to_dict() assert source_dict['direction'] == (0, 0, -1) assert source_dict['angle'] == 0.533 source_from_dict = Source.from_dict(source_dict) assert source_from_dict.to_radiance() == source.to_radiance()
def test_from_and_to_dict(): modifier = Plastic('sphere_material') sphere = Sphere('default_sphere', modifier=modifier) sphere_dict = sphere.to_dict() # check values in dictionary assert sphere_dict['identifier'] == 'default_sphere' assert sphere_dict['modifier'] == modifier.to_dict() assert sphere_dict['center_pt'] == (0, 0, 0) assert sphere_dict['radius'] == 10 sphere_from_dict = Sphere.from_dict(sphere_dict) assert sphere_from_dict.to_radiance() == sphere.to_radiance()
def test_from_and_to_dict(): modifier = Plastic('cylinder_material') cylinder = Cylinder('default_cylinder', modifier=modifier) cylinder_dict = cylinder.to_dict() # check values in dictionary assert cylinder_dict['identifier'] == 'default_cylinder' assert cylinder_dict['modifier'] == modifier.to_dict() assert cylinder_dict['center_pt_start'] == (0, 0, 0) assert cylinder_dict['center_pt_end'] == (0, 0, 10) assert cylinder_dict['radius'] == 10 cylinder_from_dict = Cylinder.from_dict(cylinder_dict) assert cylinder_from_dict.to_radiance() == cylinder.to_radiance()
def test_check_duplicate_modifier_identifiers(): """Test the check_duplicate_modifier_identifiers method.""" room = Room.from_box('Tiny_House_Zone', 5, 10, 3) high_ref_ceil = Plastic.from_single_reflectance('CustomModifier', 0.9) room[-1].properties.radiance.modifier = high_ref_ceil north_face = room[1] aperture_verts = [Point3D(4.5, 10, 1), Point3D(2.5, 10, 1), Point3D(2.5, 10, 2.5), Point3D(4.5, 10, 2.5)] aperture = Aperture('Front_Aperture', Face3D(aperture_verts)) aperture.is_operable = True triple_pane = Glass.from_single_transmittance('CustomTriplePane', 0.3) aperture.properties.radiance.modifier = triple_pane north_face.add_aperture(aperture) model = Model('Tiny_House', [room]) assert model.properties.radiance.check_duplicate_modifier_identifiers(False) == '' triple_pane.unlock() triple_pane.identifier = 'CustomModifier' triple_pane.lock() assert model.properties.radiance.check_duplicate_modifier_identifiers(False) != '' with pytest.raises(ValueError): model.properties.radiance.check_duplicate_modifier_identifiers(True)
def test_from_and_to_dict(): modifier = Plastic('ring_material') ring = Ring('default_ring', modifier=modifier) ring_dict = ring.to_dict() # check values in dictionary assert ring_dict['identifier'] == 'default_ring' assert ring_dict['modifier'] == modifier.to_dict() assert ring_dict['center_pt'] == (0, 0, 0) assert ring_dict['normal_vector'] == (0, 0, 1) assert ring_dict['radius_inner'] == 5 assert ring_dict['radius_outer'] == 10 ring_from_dict = Ring.from_dict(ring_dict) assert ring_from_dict.to_radiance() == ring.to_radiance()
def model_complete_multiroom_radiance(directory): triple_pane = Glass.from_single_transmittance('Triple_Pane_0.35', 0.35) first_floor = Room.from_box('First_Floor', 10, 10, 3, origin=Point3D(0, 0, 0)) second_floor = Room.from_box('Second_Floor', 10, 10, 3, origin=Point3D(0, 0, 3)) for face in first_floor[1:5]: face.apertures_by_ratio(0.2, 0.01) face.apertures[0].properties.radiance.modifier = triple_pane for face in second_floor[1:5]: face.apertures_by_ratio(0.2, 0.01) pts_1 = [Point3D(0, 0, 6), Point3D(0, 10, 6), Point3D(10, 10, 6), Point3D(10, 0, 6)] pts_2 = [Point3D(0, 0, 6), Point3D(5, 0, 9), Point3D(5, 10, 9), Point3D(0, 10, 6)] pts_3 = [Point3D(10, 0, 6), Point3D(10, 10, 6), Point3D(5, 10, 9), Point3D(5, 0, 9)] pts_4 = [Point3D(0, 0, 6), Point3D(10, 0, 6), Point3D(5, 0, 9)] pts_5 = [Point3D(10, 10, 6), Point3D(0, 10, 6), Point3D(5, 10, 9)] face_1 = Face('AtticFace1', Face3D(pts_1)) face_2 = Face('AtticFace2', Face3D(pts_2)) face_3 = Face('AtticFace3', Face3D(pts_3)) face_4 = Face('AtticFace4', Face3D(pts_4)) face_5 = Face('AtticFace5', Face3D(pts_5)) attic = Room('Attic', [face_1, face_2, face_3, face_4, face_5], 0.01, 1) mod_set = ModifierSet('Attic_Modifier_Set') polyiso = Plastic.from_single_reflectance('PolyIso', 0.45) mod_set.roof_ceiling_set.exterior_modifier = polyiso attic.properties.radiance.modifier_set = mod_set Room.solve_adjacency([first_floor, second_floor, attic], 0.01) model = Model('Multi_Room_Radiance_House', [first_floor, second_floor, attic]) dest_file = os.path.join(directory, 'model_complete_multiroom_radiance.json') with open(dest_file, 'w') as fp: json.dump(model.to_dict(), fp, indent=4)
def test_from_and_to_dict(): modifier = Plastic('cone_material') cone = Cone('default_cone', modifier=modifier) cone_dict = cone.to_dict() # check values in dictionary assert cone_dict['identifier'] == 'default_cone' assert cone_dict['modifier'] == modifier.to_dict() assert cone_dict['center_pt_start'] == (0, 0, 0) assert cone_dict['center_pt_end'] == (0, 0, 10) assert cone_dict['radius_start'] == 10 assert cone_dict['radius_end'] == 0 cone_from_dict = Cone.from_dict(cone_dict) assert cone_from_dict.to_radiance() == cone.to_radiance()
def test_from_dict_w_modifier(): glass_mod = { "identifier": "test_glass_mod", "type": "glass", "r_transmissivity": 0.4, "g_transmissivity": 0.5, "b_transmissivity": 0.6, "refraction_index": None, "modifier": None, "dependencies": [] } plastic_dict = { "identifier": "test_plastic", "type": "plastic", "r_reflectance": 0.1, "g_reflectance": 0.2, "b_reflectance": 0.3, "specularity": 0.01, "roughness": 0.02, "modifier": glass_mod, "dependencies": [] } gg = Plastic.from_dict(plastic_dict) assert gg.to_radiance(minimal=True, include_modifier=False) == \ 'test_glass_mod plastic test_plastic 0 0 5 0.1 0.2 0.3 0.01 0.02' assert gg.modifier.to_radiance(minimal=True) == \ 'void glass test_glass_mod 0 0 3 0.4 0.5 0.6'
def test_duplicate(): """Test what happens to radiance properties when duplicating a Door.""" verts = [ Point3D(0, 0, 0), Point3D(10, 0, 0), Point3D(10, 0, 10), Point3D(0, 0, 10) ] painted_door = Plastic.from_single_reflectance('PaintedDoor', 0.75) dr_original = Door.from_vertices('wall_door', Face3D(verts)) dr_dup_1 = dr_original.duplicate() assert dr_original.properties.radiance.host is dr_original assert dr_dup_1.properties.radiance.host is dr_dup_1 assert dr_original.properties.radiance.host is not dr_dup_1.properties.radiance.host assert dr_original.properties.radiance.modifier == \ dr_dup_1.properties.radiance.modifier dr_dup_1.properties.radiance.modifier = painted_door assert dr_original.properties.radiance.modifier != \ dr_dup_1.properties.radiance.modifier dr_dup_2 = dr_dup_1.duplicate() assert dr_dup_1.properties.radiance.modifier == \ dr_dup_2.properties.radiance.modifier dr_dup_2.properties.radiance.modifier = None assert dr_dup_1.properties.radiance.modifier != \ dr_dup_2.properties.radiance.modifier
def shade_state_abridged_snow(directory): snow_mod = Plastic.from_single_reflectance('SnowMaterial', 0.7) snow = RadianceShadeState(snow_mod) dest_file = os.path.join(directory, 'shade_state_abridged_snow.json') with open(dest_file, 'w') as fp: json.dump(snow.to_dict(abridged=True), fp, indent=4)
def test_material_equivalency(): """Test the equality of a material to another.""" pl_1 = Plastic('test_plastic', 0.6, 0.7, 0.8, 0, 0) pl_2 = pl_1.duplicate() pl_3 = Plastic('test_plastic2', 0.8, 0.7, 0.8, 0, 0) assert pl_1 is pl_1 assert pl_1 is not pl_2 assert pl_1 == pl_2 assert isinstance(pl_2, Plastic) assert pl_1 != pl_3 collection = [pl_1, pl_2, pl_3] assert len(set(collection)) == 2 pl_2.r_reflectance = 0.7 assert pl_1 != pl_2
def test_to_dict_multizone_house(): """Test the Model to_dict method with a multi-zone house.""" first_floor = Room.from_box('First_Floor', 10, 10, 3, origin=Point3D(0, 0, 0)) second_floor = Room.from_box('Second_Floor', 10, 10, 3, origin=Point3D(0, 0, 3)) for face in first_floor[1:5]: face.apertures_by_ratio(0.2, 0.01) for face in second_floor[1:5]: face.apertures_by_ratio(0.2, 0.01) pts_1 = [Point3D(0, 0, 6), Point3D(0, 10, 6), Point3D(10, 10, 6), Point3D(10, 0, 6)] pts_2 = [Point3D(0, 0, 6), Point3D(5, 0, 9), Point3D(5, 10, 9), Point3D(0, 10, 6)] pts_3 = [Point3D(10, 0, 6), Point3D(10, 10, 6), Point3D(5, 10, 9), Point3D(5, 0, 9)] pts_4 = [Point3D(0, 0, 6), Point3D(10, 0, 6), Point3D(5, 0, 9)] pts_5 = [Point3D(10, 10, 6), Point3D(0, 10, 6), Point3D(5, 10, 9)] face_1 = Face('AtticFace1', Face3D(pts_1)) face_2 = Face('AtticFace2', Face3D(pts_2)) face_3 = Face('AtticFace3', Face3D(pts_3)) face_4 = Face('AtticFace4', Face3D(pts_4)) face_5 = Face('AtticFace5', Face3D(pts_5)) attic = Room('Attic', [face_1, face_2, face_3, face_4, face_5], 0.01, 1) mod_set = ModifierSet('Attic_Construction_Set') mod_set.floor_set.interior_modifier = Plastic('AtticFloor', 0.4) mod_set.roof_ceiling_set.exterior_modifier = Plastic('AtticRoof', 0.6) attic.properties.radiance.modifier_set = mod_set Room.solve_adjacency([first_floor, second_floor, attic], 0.01) model = Model('Multi_Zone_Single_Family_House', [first_floor, second_floor, attic]) model_dict = model.to_dict() assert 'radiance' in model_dict['properties'] assert 'modifiers' in model_dict['properties']['radiance'] assert 'modifier_sets' in model_dict['properties']['radiance'] assert len(model_dict['properties']['radiance']['modifiers']) == 2 assert len(model_dict['properties']['radiance']['modifier_sets']) == 1 assert model_dict['rooms'][0]['faces'][5]['boundary_condition']['type'] == 'Surface' assert model_dict['rooms'][1]['faces'][0]['boundary_condition']['type'] == 'Surface' assert model_dict['rooms'][1]['faces'][5]['boundary_condition']['type'] == 'Surface' assert model_dict['rooms'][2]['faces'][0]['boundary_condition']['type'] == 'Surface' assert model_dict['rooms'][2]['properties']['radiance']['modifier_set'] == \ mod_set.identifier
def test_writer_to_rad_aperture_door_shade(): pts = [[0, 0, 0], [10, 0, 0], [10, 0, 3], [0, 0, 3]] face = Face.from_vertices('wall_face', pts) face.apertures_by_ratio(0.4, 0.01) face.apertures[0].overhang(0.5, indoor=False) face.apertures[0].overhang(0.5, indoor=True) face.apertures[0].move_shades(Vector3D(0, 0, -0.5)) light_shelf_out = Plastic.from_single_reflectance('OutdoorLightShelf', 0.5) light_shelf_in = Plastic.from_single_reflectance('IndoorLightShelf', 0.7) face.apertures[0].shades[0].properties.radiance.modifier = light_shelf_out face.apertures[0].shades[1].properties.radiance.modifier = light_shelf_in assert hasattr(face.to, 'rad') rad_string = face.to.rad(face) rad_string.split().count('polygon') == 4 assert 'polygon wall_face' in rad_string assert 'OutdoorLightShelf' in rad_string assert 'IndoorLightShelf' in rad_string
def to_radiance_visible(self, specularity=0.0): """Honeybee Radiance material from the visible reflectance of this material.""" try: from honeybee_radiance.modifier.material import Plastic except ImportError as e: raise ImportError('honeybee_radiance library must be installed to use ' 'to_radiance_solar() method. {}'.format(e)) return Plastic.from_single_reflectance( clean_rad_string(self.identifier), 1 - self.visible_absorptance, specularity, self.RADIANCEROUGHTYPES[self.roughness])
def test_from_dict(): """Test the Door from_dict method with radiance properties.""" door = Door.from_vertices('wall_door', [[0, 0, 0], [10, 0, 0], [10, 0, 10], [0, 0, 10]]) painted_door = Plastic.from_single_reflectance('PaintedDoor', 0.75) door.properties.radiance.modifier = painted_door ad = door.to_dict() new_door = Door.from_dict(ad) assert new_door.properties.radiance.modifier == painted_door assert new_door.to_dict() == ad
def test_writer_to_rad(): """Test the Room to_rad method.""" room = Room.from_box('ClosedOffice', 5, 10, 3) custom_set = ModifierSet('Custom_Modifier_Set') concrete = Plastic.from_single_reflectance('035Concrete', 0.35) custom_set.wall_set.exterior_modifier = concrete room.properties.radiance.modifier_set = custom_set assert hasattr(room.to, 'rad') rad_string = room.to.rad(room) assert '035Concrete' in rad_string
def test_from_dict(): """Test the Face from_dict method with radiance properties.""" face = Face.from_vertices( 'wall_face', [[0, 0, 0], [10, 0, 0], [10, 0, 10], [0, 0, 10]]) concrete = Plastic.from_single_reflectance('035Concrete', 0.35) face.properties.radiance.modifier = concrete fd = face.to_dict() new_face = Face.from_dict(fd) assert new_face.properties.radiance.modifier == concrete assert new_face.to_dict() == fd
def test_set_modifier(): """Test the setting of a modifier on an Door.""" door = Door.from_vertices('wall_door', [[0, 0, 0], [10, 0, 0], [10, 0, 10], [0, 0, 10]]) painted_door = Plastic.from_single_reflectance('PaintedDoor', 0.75) door.properties.radiance.modifier = painted_door assert door.properties.radiance.modifier == painted_door assert door.properties.radiance.is_modifier_set_on_object with pytest.raises(AttributeError): door.properties.radiance.modifier.r_reflectance = 0.45
def test_set_modifier(): """Test the setting of a modifier on a Face.""" face = Face.from_vertices( 'wall_face', [[0, 0, 0], [10, 0, 0], [10, 0, 10], [0, 0, 10]]) concrete = Plastic.from_single_reflectance('035Concrete', 0.35) face.properties.radiance.modifier = concrete assert face.properties.radiance.modifier == concrete assert face.properties.radiance.is_modifier_set_on_object with pytest.raises(AttributeError): face.properties.radiance.modifier.r_reflectance = 0.1
def test_update_values(): pl = Plastic('test_plastic', 0.6, 0.7, 0.8, 0.1, 0.02) pl.r_reflectance = 0.5 pl.g_reflectance = 0.4 pl.b_reflectance = 0.3 pl.specularity = 0.1 pl.roughness = 0.02 assert pl.r_reflectance == 0.5 assert pl.g_reflectance == 0.4 assert pl.b_reflectance == 0.3 assert pl.specularity == 0.1 assert pl.roughness == 0.02 assert pl.to_radiance(minimal=True) == \ 'void plastic test_plastic 0 0 5 0.5 0.4 0.3 0.1 0.02'
def test_check_duplicate_modifier_set_identifiers(): """Test the check_duplicate_modifier_set_identifiers method.""" first_floor = Room.from_box('FirstFloor', 10, 10, 3, origin=Point3D(0, 0, 0)) second_floor = Room.from_box('SecondFloor', 10, 10, 3, origin=Point3D(0, 0, 3)) for face in first_floor[1:5]: face.apertures_by_ratio(0.2, 0.01) for face in second_floor[1:5]: face.apertures_by_ratio(0.2, 0.01) mod_set_bottom = ModifierSet('Lower_Floor_Modifier_Set') first_floor.properties.radiance.modifier_set = mod_set_bottom second_floor.properties.radiance.modifier_set = mod_set_bottom pts_1 = [Point3D(0, 0, 6), Point3D(0, 10, 6), Point3D(10, 10, 6), Point3D(10, 0, 6)] pts_2 = [Point3D(0, 0, 6), Point3D(5, 0, 9), Point3D(5, 10, 9), Point3D(0, 10, 6)] pts_3 = [Point3D(10, 0, 6), Point3D(10, 10, 6), Point3D(5, 10, 9), Point3D(5, 0, 9)] pts_4 = [Point3D(0, 0, 6), Point3D(10, 0, 6), Point3D(5, 0, 9)] pts_5 = [Point3D(10, 10, 6), Point3D(0, 10, 6), Point3D(5, 10, 9)] face_1 = Face('AtticFace1', Face3D(pts_1)) face_2 = Face('AtticFace2', Face3D(pts_2)) face_3 = Face('AtticFace3', Face3D(pts_3)) face_4 = Face('AtticFace4', Face3D(pts_4)) face_5 = Face('AtticFace5', Face3D(pts_5)) attic = Room('Attic', [face_1, face_2, face_3, face_4, face_5], 0.01, 1) mod_set = ModifierSet('Attic_Modifier_Set') mod_set.floor_set.interior_modifier = Plastic('AtticFloor', 0.4) mod_set.roof_ceiling_set.exterior_modifier = Plastic('AtticRoof', 0.6) attic.properties.radiance.modifier_set = mod_set Room.solve_adjacency([first_floor, second_floor, attic], 0.01) model = Model('Multi_Zone_Single_Family_House', [first_floor, second_floor, attic]) assert model.properties.radiance.check_duplicate_modifier_set_identifiers(False) == '' mod_set.unlock() mod_set.identifier = 'Lower_Floor_Modifier_Set' mod_set.lock() assert model.properties.radiance.check_duplicate_modifier_set_identifiers(False) != '' with pytest.raises(ValueError): model.properties.radiance.check_duplicate_modifier_set_identifiers(True)
def test_writer_to_rad(): """Test the Face to.rad method.""" pts = [[0, 0, 0], [10, 0, 0], [10, 0, 10], [0, 0, 10]] face = Face.from_vertices('wall_face', pts) concrete = Plastic.from_single_reflectance('035Concrete', 0.35) face.properties.radiance.modifier = concrete assert hasattr(face.to, 'rad') rad_string = face.to.rad(face) assert 'polygon wall_face' in rad_string assert '035Concrete' in rad_string for pt in pts: assert ' '.join([str(float(x)) for x in pt]) in rad_string
def test_writer_to_rad(): """Test the Door to.rad method.""" pts = [[0, 0, 0], [10, 0, 0], [10, 0, 10], [0, 0, 10]] door = Door.from_vertices('wall_door', pts) painted_door = Plastic.from_single_reflectance('PaintedDoor', 0.75) door.properties.radiance.modifier = painted_door assert hasattr(door.to, 'rad') rad_string = door.to.rad(door) assert 'polygon wall_door' in rad_string assert 'PaintedDoor' in rad_string for pt in pts: assert ' '.join([str(float(x)) for x in pt]) in rad_string