Beispiel #1
0
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]
Beispiel #2
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
Beispiel #3
0
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'
Beispiel #4
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'
Beispiel #5
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
Beispiel #6
0
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()
Beispiel #8
0
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()
Beispiel #10
0
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()
Beispiel #11
0
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()
Beispiel #13
0
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)
Beispiel #14
0
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()
Beispiel #15
0
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'
Beispiel #16
0
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
Beispiel #17
0
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)
Beispiel #18
0
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
Beispiel #19
0
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
Beispiel #21
0
 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])
Beispiel #22
0
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
Beispiel #23
0
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
Beispiel #25
0
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
Beispiel #27
0
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'
Beispiel #28
0
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
Beispiel #30
0
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