honeybee-openstudio 2.32.1 → 2.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/honeybee-openstudio.gemspec +1 -1
- data/lib/honeybee/_defaults/model.json +218 -23
- data/lib/honeybee/material/frame.rb +42 -0
- data/lib/honeybee.rb +3 -2
- data/lib/to_openstudio/geometry/aperture.rb +19 -9
- data/lib/to_openstudio/geometry/door.rb +19 -9
- data/lib/to_openstudio/material/frame.rb +102 -0
- data/lib/to_openstudio/model.rb +6 -4
- data/lib/to_openstudio.rb +3 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1ff38871fe8372492211f52eef8aaa7b35f70dd3f8b86bf0a720ca793a171cd
|
4
|
+
data.tar.gz: 75d64bfd82c639cdc2e9effffdacbed361ebf0046d090f1736a1474327fadfc5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e56ee08a45f9774dde6621f41f40b5f7235b5742379471758132829cea4879cfbda9caffa0bc5cf1e7f6b56003c9d4401a9b8fc77b477ac65c90284b7f80fa3
|
7
|
+
data.tar.gz: 701ceb0b859d3a0090bcb2a84576e74ad55b219fa11365f5c4fa2ed1bb762b79ab7e13a9c1198f39281d73f400e7febd0f053e6696a63db573557d08e34d3cfe
|
data/honeybee-openstudio.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'honeybee-openstudio'
|
7
|
-
spec.version = '2.
|
7
|
+
spec.version = '2.33.0'
|
8
8
|
spec.authors = ['Tanushree Charan', 'Dan Macumber', 'Chris Mackey', 'Mostapha Sadeghipour Roudsari']
|
9
9
|
spec.email = ['tanushree.charan@nrel.gov', 'chris@ladybug.tools']
|
10
10
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
"servers": [],
|
4
4
|
"info": {
|
5
5
|
"description": "Honeybee model schema.",
|
6
|
-
"version": "1.
|
6
|
+
"version": "1.50.5",
|
7
7
|
"title": "Honeybee Model Schema",
|
8
8
|
"contact": {
|
9
9
|
"name": "Ladybug Tools",
|
@@ -214,6 +214,11 @@
|
|
214
214
|
"x-displayName": "EnergyMaterialVegetation",
|
215
215
|
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/EnergyMaterialVegetation\" />\n"
|
216
216
|
},
|
217
|
+
{
|
218
|
+
"name": "energywindowframe_model",
|
219
|
+
"x-displayName": "EnergyWindowFrame",
|
220
|
+
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/EnergyWindowFrame\" />\n"
|
221
|
+
},
|
217
222
|
{
|
218
223
|
"name": "energywindowmaterialblind_model",
|
219
224
|
"x-displayName": "EnergyWindowMaterialBlind",
|
@@ -494,6 +499,11 @@
|
|
494
499
|
"x-displayName": "OpaqueConstructionAbridged",
|
495
500
|
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/OpaqueConstructionAbridged\" />\n"
|
496
501
|
},
|
502
|
+
{
|
503
|
+
"name": "othersidetemperature_model",
|
504
|
+
"x-displayName": "OtherSideTemperature",
|
505
|
+
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/OtherSideTemperature\" />\n"
|
506
|
+
},
|
497
507
|
{
|
498
508
|
"name": "outdoors_model",
|
499
509
|
"x-displayName": "Outdoors",
|
@@ -1007,6 +1017,7 @@
|
|
1007
1017
|
"energymaterial_model",
|
1008
1018
|
"energymaterialnomass_model",
|
1009
1019
|
"energymaterialvegetation_model",
|
1020
|
+
"energywindowframe_model",
|
1010
1021
|
"energywindowmaterialblind_model",
|
1011
1022
|
"energywindowmaterialgas_model",
|
1012
1023
|
"energywindowmaterialgascustom_model",
|
@@ -1063,6 +1074,7 @@
|
|
1063
1074
|
"nolimit_model",
|
1064
1075
|
"opaqueconstruction_model",
|
1065
1076
|
"opaqueconstructionabridged_model",
|
1077
|
+
"othersidetemperature_model",
|
1066
1078
|
"outdoors_model",
|
1067
1079
|
"people_model",
|
1068
1080
|
"peopleabridged_model",
|
@@ -1404,6 +1416,45 @@
|
|
1404
1416
|
],
|
1405
1417
|
"additionalProperties": false
|
1406
1418
|
},
|
1419
|
+
"OtherSideTemperature": {
|
1420
|
+
"title": "OtherSideTemperature",
|
1421
|
+
"description": "Base class for all objects that are not extensible with additional keys.\n\nThis effectively includes all objects except for the Properties classes\nthat are assigned to geometry objects.",
|
1422
|
+
"type": "object",
|
1423
|
+
"properties": {
|
1424
|
+
"type": {
|
1425
|
+
"title": "Type",
|
1426
|
+
"default": "OtherSideTemperature",
|
1427
|
+
"pattern": "^OtherSideTemperature$",
|
1428
|
+
"type": "string",
|
1429
|
+
"readOnly": true
|
1430
|
+
},
|
1431
|
+
"heat_transfer_coefficient": {
|
1432
|
+
"title": "Heat Transfer Coefficient",
|
1433
|
+
"description": "A value in W/m2-K to indicate the combined convective/radiative film coefficient. If equal to 0, then the specified temperature above is equal to the exterior surface temperature. Otherwise, the temperature above is considered the outside air temperature and this coefficient is used to determine the difference between this outside air temperature and the exterior surface temperature.",
|
1434
|
+
"default": 0,
|
1435
|
+
"minimum": 0,
|
1436
|
+
"type": "number",
|
1437
|
+
"format": "double"
|
1438
|
+
},
|
1439
|
+
"temperature": {
|
1440
|
+
"title": "Temperature",
|
1441
|
+
"description": "A temperature value in Celsius to note the temperature on the other side of the object. This input can also be an Autocalculate object to signify that the temperature is equal to the outdoor air temperature.",
|
1442
|
+
"default": {
|
1443
|
+
"type": "Autocalculate"
|
1444
|
+
},
|
1445
|
+
"anyOf": [
|
1446
|
+
{
|
1447
|
+
"$ref": "#/components/schemas/Autocalculate"
|
1448
|
+
},
|
1449
|
+
{
|
1450
|
+
"type": "number",
|
1451
|
+
"format": "double"
|
1452
|
+
}
|
1453
|
+
]
|
1454
|
+
}
|
1455
|
+
},
|
1456
|
+
"additionalProperties": false
|
1457
|
+
},
|
1407
1458
|
"ShadeEnergyPropertiesAbridged": {
|
1408
1459
|
"title": "ShadeEnergyPropertiesAbridged",
|
1409
1460
|
"description": "Base class for all objects that are not extensible with additional keys.\n\nThis effectively includes all objects except for the Properties classes\nthat are assigned to geometry objects.",
|
@@ -1667,7 +1718,7 @@
|
|
1667
1718
|
},
|
1668
1719
|
"discharge_coefficient": {
|
1669
1720
|
"title": "Discharge Coefficient",
|
1670
|
-
"description": "A number that will be
|
1721
|
+
"description": "A number that will be multiplied by the area of the window in the stack (buoyancy-driven) part of the equation to account for additional friction from window geometry, insect screens, etc. Typical values include 0.45, for unobstructed windows WITH insect screens and 0.65 for unobstructed windows WITHOUT insect screens. This value should be lowered if windows are of an awning or casement type and are not allowed to fully open.",
|
1671
1722
|
"default": 0.45,
|
1672
1723
|
"minimum": 0,
|
1673
1724
|
"maximum": 1,
|
@@ -2263,6 +2314,9 @@
|
|
2263
2314
|
},
|
2264
2315
|
{
|
2265
2316
|
"$ref": "#/components/schemas/Surface"
|
2317
|
+
},
|
2318
|
+
{
|
2319
|
+
"$ref": "#/components/schemas/OtherSideTemperature"
|
2266
2320
|
}
|
2267
2321
|
]
|
2268
2322
|
},
|
@@ -3517,7 +3571,7 @@
|
|
3517
3571
|
},
|
3518
3572
|
"multiplier": {
|
3519
3573
|
"title": "Multiplier",
|
3520
|
-
"description": "An integer noting how many times this Room is repeated. Multipliers are used to speed up the calculation when similar Rooms are repeated more than once. Essentially, a given simulation with the Room is run once and then the result is
|
3574
|
+
"description": "An integer noting how many times this Room is repeated. Multipliers are used to speed up the calculation when similar Rooms are repeated more than once. Essentially, a given simulation with the Room is run once and then the result is multiplied by the multiplier.",
|
3521
3575
|
"default": 1,
|
3522
3576
|
"minimum": 1,
|
3523
3577
|
"type": "integer",
|
@@ -3902,7 +3956,7 @@
|
|
3902
3956
|
},
|
3903
3957
|
"solar_diffusing": {
|
3904
3958
|
"title": "Solar Diffusing",
|
3905
|
-
"description": "
|
3959
|
+
"description": "If False (default), the beam solar radiation incident on the glass is transmitted as beam radiation with no diffuse component.If True, the beam solar radiation incident on the glass is transmitted as hemispherical diffuse radiation with no beam component.",
|
3906
3960
|
"default": false,
|
3907
3961
|
"type": "boolean"
|
3908
3962
|
}
|
@@ -4065,6 +4119,13 @@
|
|
4065
4119
|
"pattern": "^WindowConstructionAbridged$",
|
4066
4120
|
"type": "string",
|
4067
4121
|
"readOnly": true
|
4122
|
+
},
|
4123
|
+
"frame": {
|
4124
|
+
"title": "Frame",
|
4125
|
+
"description": "An optional identifier for a frame material that surrounds the window construction.",
|
4126
|
+
"maxLength": 100,
|
4127
|
+
"minLength": 1,
|
4128
|
+
"type": "string"
|
4068
4129
|
}
|
4069
4130
|
},
|
4070
4131
|
"required": [
|
@@ -4655,7 +4716,8 @@
|
|
4655
4716
|
"type": "WindowConstructionAbridged",
|
4656
4717
|
"materials": [
|
4657
4718
|
"Generic Clear Glass"
|
4658
|
-
]
|
4719
|
+
],
|
4720
|
+
"frame": null
|
4659
4721
|
},
|
4660
4722
|
{
|
4661
4723
|
"identifier": "Generic Shade",
|
@@ -4788,7 +4850,8 @@
|
|
4788
4850
|
"Generic Low-e Glass",
|
4789
4851
|
"Generic Window Air Gap",
|
4790
4852
|
"Generic Clear Glass"
|
4791
|
-
]
|
4853
|
+
],
|
4854
|
+
"frame": null
|
4792
4855
|
},
|
4793
4856
|
{
|
4794
4857
|
"identifier": "Generic Exterior Door",
|
@@ -5407,7 +5470,7 @@
|
|
5407
5470
|
},
|
5408
5471
|
"u_factor": {
|
5409
5472
|
"title": "U Factor",
|
5410
|
-
"description": "The overall heat transfer coefficient for window system in W/m2-K. Note that constructions with U-values above 5.8
|
5473
|
+
"description": "The overall heat transfer coefficient for window system in W/m2-K. Note that constructions with U-values above 5.8 should not be assigned to skylights as this implies the resistance of the window is negative when air films are subtracted.",
|
5411
5474
|
"exclusiveMinimum": 0,
|
5412
5475
|
"maximum": 12,
|
5413
5476
|
"type": "number",
|
@@ -5415,7 +5478,7 @@
|
|
5415
5478
|
},
|
5416
5479
|
"shgc": {
|
5417
5480
|
"title": "Shgc",
|
5418
|
-
"description": "
|
5481
|
+
"description": "Unit-less quantity for the Solar Heat Gain Coefficient (solar transmittance + conduction) at normal incidence and vertical orientation.",
|
5419
5482
|
"exclusiveMinimum": 0,
|
5420
5483
|
"exclusiveMaximum": 1,
|
5421
5484
|
"type": "number",
|
@@ -5649,6 +5712,113 @@
|
|
5649
5712
|
],
|
5650
5713
|
"additionalProperties": false
|
5651
5714
|
},
|
5715
|
+
"EnergyWindowFrame": {
|
5716
|
+
"title": "EnergyWindowFrame",
|
5717
|
+
"description": "Opaque material representing a layer within an opaque construction.",
|
5718
|
+
"type": "object",
|
5719
|
+
"properties": {
|
5720
|
+
"identifier": {
|
5721
|
+
"title": "Identifier",
|
5722
|
+
"description": "Text string for a unique object ID. This identifier remains constant as the object is mutated, copied, and serialized to different formats (eg. dict, idf, osm). This identifier is also used to reference the object across a Model. It must be < 100 characters, use only ASCII characters and exclude (, ; ! \\n \\t).",
|
5723
|
+
"maxLength": 100,
|
5724
|
+
"minLength": 1,
|
5725
|
+
"pattern": "^[^,;!\\n\\t]+$",
|
5726
|
+
"type": "string"
|
5727
|
+
},
|
5728
|
+
"width": {
|
5729
|
+
"title": "Width",
|
5730
|
+
"description": "Number for the width of frame in plane of window [m]. The frame width is assumed to be the same on all sides of window..",
|
5731
|
+
"exclusiveMinimum": 0,
|
5732
|
+
"maximum": 1,
|
5733
|
+
"type": "number",
|
5734
|
+
"format": "double"
|
5735
|
+
},
|
5736
|
+
"conductance": {
|
5737
|
+
"title": "Conductance",
|
5738
|
+
"description": "Number for the thermal conductance of the frame material measured from inside to outside of the frame surface (no air films) and taking 2D conduction effects into account [W/m2-K].",
|
5739
|
+
"exclusiveMinimum": 0,
|
5740
|
+
"type": "number",
|
5741
|
+
"format": "double"
|
5742
|
+
},
|
5743
|
+
"display_name": {
|
5744
|
+
"title": "Display Name",
|
5745
|
+
"description": "Display name of the object with no character restrictions.",
|
5746
|
+
"type": "string"
|
5747
|
+
},
|
5748
|
+
"user_data": {
|
5749
|
+
"title": "User Data",
|
5750
|
+
"description": "Optional dictionary of user data associated with the object.All keys and values of this dictionary should be of a standard data type to ensure correct serialization of the object (eg. str, float, int, list).",
|
5751
|
+
"type": "object"
|
5752
|
+
},
|
5753
|
+
"type": {
|
5754
|
+
"title": "Type",
|
5755
|
+
"default": "EnergyWindowFrame",
|
5756
|
+
"pattern": "^EnergyWindowFrame$",
|
5757
|
+
"type": "string",
|
5758
|
+
"readOnly": true
|
5759
|
+
},
|
5760
|
+
"edge_to_center_ratio": {
|
5761
|
+
"title": "Edge To Center Ratio",
|
5762
|
+
"description": "Number between 0 and 4 for the ratio of the glass conductance near the frame (excluding air films) divided by the glass conductance at the center of the glazing (excluding air films). This is used only for multi-pane glazing constructions. This ratio should usually be greater than 1.0 since the spacer material that separates the glass panes is usually more conductive than the gap between panes. A value of 1 effectively indicates no spacer. Values should usually be obtained from the LBNL WINDOW program so that the unique characteristics of the window construction can be accounted for.",
|
5763
|
+
"default": 1,
|
5764
|
+
"exclusiveMinimum": 0,
|
5765
|
+
"maximum": 4,
|
5766
|
+
"type": "number",
|
5767
|
+
"format": "double"
|
5768
|
+
},
|
5769
|
+
"outside_projection": {
|
5770
|
+
"title": "Outside Projection",
|
5771
|
+
"description": "Number for the distance that the frame projects outward from the outside face of the glazing [m]. This is used to calculate shadowing of frame onto glass, solar absorbed by the frame, IR emitted and absorbed by the frame, and convection from frame.",
|
5772
|
+
"default": 0,
|
5773
|
+
"minimum": 0,
|
5774
|
+
"maximum": 0.5,
|
5775
|
+
"type": "number",
|
5776
|
+
"format": "double"
|
5777
|
+
},
|
5778
|
+
"inside_projection": {
|
5779
|
+
"title": "Inside Projection",
|
5780
|
+
"description": "Number for the distance that the frame projects inward from the inside face of the glazing [m]. This is used to calculate solar absorbed by the frame, IR emitted and absorbed by the frame, and convection from frame.",
|
5781
|
+
"default": 0,
|
5782
|
+
"minimum": 0,
|
5783
|
+
"maximum": 0.5,
|
5784
|
+
"type": "number",
|
5785
|
+
"format": "double"
|
5786
|
+
},
|
5787
|
+
"thermal_absorptance": {
|
5788
|
+
"title": "Thermal Absorptance",
|
5789
|
+
"description": "Fraction of incident long wavelength radiation that is absorbed by the frame material.",
|
5790
|
+
"default": 0.9,
|
5791
|
+
"exclusiveMinimum": 0,
|
5792
|
+
"maximum": 0.99999,
|
5793
|
+
"type": "number",
|
5794
|
+
"format": "double"
|
5795
|
+
},
|
5796
|
+
"solar_absorptance": {
|
5797
|
+
"title": "Solar Absorptance",
|
5798
|
+
"description": "Fraction of incident solar radiation absorbed by the frame material.",
|
5799
|
+
"default": 0.7,
|
5800
|
+
"minimum": 0,
|
5801
|
+
"maximum": 1,
|
5802
|
+
"type": "number",
|
5803
|
+
"format": "double"
|
5804
|
+
},
|
5805
|
+
"visible_absorptance": {
|
5806
|
+
"title": "Visible Absorptance",
|
5807
|
+
"description": "Fraction of incident visible wavelength radiation absorbed by the frame material.",
|
5808
|
+
"default": 0.7,
|
5809
|
+
"minimum": 0,
|
5810
|
+
"maximum": 1,
|
5811
|
+
"type": "number",
|
5812
|
+
"format": "double"
|
5813
|
+
}
|
5814
|
+
},
|
5815
|
+
"required": [
|
5816
|
+
"identifier",
|
5817
|
+
"width",
|
5818
|
+
"conductance"
|
5819
|
+
],
|
5820
|
+
"additionalProperties": false
|
5821
|
+
},
|
5652
5822
|
"WindowConstruction": {
|
5653
5823
|
"title": "WindowConstruction",
|
5654
5824
|
"description": "Construction for window objects (Aperture, Door).",
|
@@ -5704,6 +5874,15 @@
|
|
5704
5874
|
"pattern": "^WindowConstruction$",
|
5705
5875
|
"type": "string",
|
5706
5876
|
"readOnly": true
|
5877
|
+
},
|
5878
|
+
"frame": {
|
5879
|
+
"title": "Frame",
|
5880
|
+
"description": "An optional window frame material for the frame that surrounds the window construction.",
|
5881
|
+
"allOf": [
|
5882
|
+
{
|
5883
|
+
"$ref": "#/components/schemas/EnergyWindowFrame"
|
5884
|
+
}
|
5885
|
+
]
|
5707
5886
|
}
|
5708
5887
|
},
|
5709
5888
|
"required": [
|
@@ -5992,7 +6171,7 @@
|
|
5992
6171
|
},
|
5993
6172
|
"diffuse_solar_transmittance": {
|
5994
6173
|
"title": "Diffuse Solar Transmittance",
|
5995
|
-
"description": "The slat transmittance for
|
6174
|
+
"description": "The slat transmittance for hemispherically diffuse solar radiation. Default: 0.",
|
5996
6175
|
"default": 0,
|
5997
6176
|
"exclusiveMaximum": 1,
|
5998
6177
|
"minimum": 0,
|
@@ -6109,7 +6288,7 @@
|
|
6109
6288
|
},
|
6110
6289
|
"top_opening_multiplier": {
|
6111
6290
|
"title": "Top Opening Multiplier",
|
6112
|
-
"description": "The effective area for air flow at the top of the shade, divided by the horizontal area between glass and shade.
|
6291
|
+
"description": "The effective area for air flow at the top of the shade, divided by the horizontal area between glass and shade.",
|
6113
6292
|
"default": 0.5,
|
6114
6293
|
"minimum": 0,
|
6115
6294
|
"maximum": 1,
|
@@ -6118,7 +6297,7 @@
|
|
6118
6297
|
},
|
6119
6298
|
"bottom_opening_multiplier": {
|
6120
6299
|
"title": "Bottom Opening Multiplier",
|
6121
|
-
"description": "The effective area for air flow at the bottom of the shade, divided by the horizontal area between glass and shade.
|
6300
|
+
"description": "The effective area for air flow at the bottom of the shade, divided by the horizontal area between glass and shade.",
|
6122
6301
|
"default": 0.5,
|
6123
6302
|
"minimum": 0,
|
6124
6303
|
"maximum": 1,
|
@@ -6127,7 +6306,7 @@
|
|
6127
6306
|
},
|
6128
6307
|
"left_opening_multiplier": {
|
6129
6308
|
"title": "Left Opening Multiplier",
|
6130
|
-
"description": "The effective area for air flow at the left side of the shade, divided by the vertical area between glass and shade.
|
6309
|
+
"description": "The effective area for air flow at the left side of the shade, divided by the vertical area between glass and shade.",
|
6131
6310
|
"default": 0.5,
|
6132
6311
|
"minimum": 0,
|
6133
6312
|
"maximum": 1,
|
@@ -6136,7 +6315,7 @@
|
|
6136
6315
|
},
|
6137
6316
|
"right_opening_multiplier": {
|
6138
6317
|
"title": "Right Opening Multiplier",
|
6139
|
-
"description": "The effective area for air flow at the right side of the shade, divided by the vertical area between glass and shade.
|
6318
|
+
"description": "The effective area for air flow at the right side of the shade, divided by the vertical area between glass and shade.",
|
6140
6319
|
"default": 0.5,
|
6141
6320
|
"minimum": 0,
|
6142
6321
|
"maximum": 1,
|
@@ -6699,7 +6878,7 @@
|
|
6699
6878
|
"readOnly": true
|
6700
6879
|
},
|
6701
6880
|
"shade_location": {
|
6702
|
-
"description": "Text to indicate where in the window assembly the shade_material is located. Note that the WindowConstruction must have at least one gas gap to use the \"Between\" option. Also note that, for a WindowConstruction with more than one gas gap, the \"Between\" option
|
6881
|
+
"description": "Text to indicate where in the window assembly the shade_material is located. Note that the WindowConstruction must have at least one gas gap to use the \"Between\" option. Also note that, for a WindowConstruction with more than one gas gap, the \"Between\" option defaults to using the inner gap as this is the only option that EnergyPlus supports.",
|
6703
6882
|
"default": "Interior",
|
6704
6883
|
"allOf": [
|
6705
6884
|
{
|
@@ -7152,7 +7331,7 @@
|
|
7152
7331
|
"readOnly": true
|
7153
7332
|
},
|
7154
7333
|
"shade_location": {
|
7155
|
-
"description": "Text to indicate where in the window assembly the shade_material is located. Note that the WindowConstruction must have at least one gas gap to use the \"Between\" option. Also note that, for a WindowConstruction with more than one gas gap, the \"Between\" option
|
7334
|
+
"description": "Text to indicate where in the window assembly the shade_material is located. Note that the WindowConstruction must have at least one gas gap to use the \"Between\" option. Also note that, for a WindowConstruction with more than one gas gap, the \"Between\" option defaults to using the inner gap as this is the only option that EnergyPlus supports.",
|
7156
7335
|
"default": "Interior",
|
7157
7336
|
"allOf": [
|
7158
7337
|
{
|
@@ -8249,7 +8428,8 @@
|
|
8249
8428
|
"Floor",
|
8250
8429
|
"Ceiling",
|
8251
8430
|
"FloorWithCarpet",
|
8252
|
-
"CeilingMetalPanel"
|
8431
|
+
"CeilingMetalPanel",
|
8432
|
+
"FloorWithHardwood"
|
8253
8433
|
],
|
8254
8434
|
"type": "string"
|
8255
8435
|
},
|
@@ -10515,7 +10695,8 @@
|
|
10515
10695
|
"type": "WindowConstructionAbridged",
|
10516
10696
|
"materials": [
|
10517
10697
|
"Generic Clear Glass"
|
10518
|
-
]
|
10698
|
+
],
|
10699
|
+
"frame": null
|
10519
10700
|
},
|
10520
10701
|
{
|
10521
10702
|
"identifier": "Generic Shade",
|
@@ -10648,7 +10829,8 @@
|
|
10648
10829
|
"Generic Low-e Glass",
|
10649
10830
|
"Generic Window Air Gap",
|
10650
10831
|
"Generic Clear Glass"
|
10651
|
-
]
|
10832
|
+
],
|
10833
|
+
"frame": null
|
10652
10834
|
},
|
10653
10835
|
{
|
10654
10836
|
"identifier": "Generic Exterior Door",
|
@@ -10792,6 +10974,9 @@
|
|
10792
10974
|
{
|
10793
10975
|
"$ref": "#/components/schemas/EnergyWindowMaterialGasCustom"
|
10794
10976
|
},
|
10977
|
+
{
|
10978
|
+
"$ref": "#/components/schemas/EnergyWindowFrame"
|
10979
|
+
},
|
10795
10980
|
{
|
10796
10981
|
"$ref": "#/components/schemas/EnergyWindowMaterialBlind"
|
10797
10982
|
},
|
@@ -13468,12 +13653,12 @@
|
|
13468
13653
|
},
|
13469
13654
|
"Color": {
|
13470
13655
|
"title": "Color",
|
13471
|
-
"description": "A
|
13656
|
+
"description": "A RGB color.",
|
13472
13657
|
"type": "object",
|
13473
13658
|
"properties": {
|
13474
13659
|
"r": {
|
13475
13660
|
"title": "R",
|
13476
|
-
"description": "
|
13661
|
+
"description": "Value for red channel.",
|
13477
13662
|
"minimum": 0,
|
13478
13663
|
"maximum": 255,
|
13479
13664
|
"type": "integer",
|
@@ -13481,7 +13666,7 @@
|
|
13481
13666
|
},
|
13482
13667
|
"g": {
|
13483
13668
|
"title": "G",
|
13484
|
-
"description": "
|
13669
|
+
"description": "Value for green channel.",
|
13485
13670
|
"minimum": 0,
|
13486
13671
|
"maximum": 255,
|
13487
13672
|
"type": "integer",
|
@@ -13489,7 +13674,7 @@
|
|
13489
13674
|
},
|
13490
13675
|
"b": {
|
13491
13676
|
"title": "B",
|
13492
|
-
"description": "
|
13677
|
+
"description": "Value for blue channel.",
|
13493
13678
|
"minimum": 0,
|
13494
13679
|
"maximum": 255,
|
13495
13680
|
"type": "integer",
|
@@ -13501,6 +13686,15 @@
|
|
13501
13686
|
"pattern": "^Color$",
|
13502
13687
|
"type": "string",
|
13503
13688
|
"readOnly": true
|
13689
|
+
},
|
13690
|
+
"a": {
|
13691
|
+
"title": "A",
|
13692
|
+
"description": "Value for the alpha channel, which defines the opacity as a number between 0 (fully transparent) and 255 (fully opaque).",
|
13693
|
+
"default": 255,
|
13694
|
+
"minimum": 0,
|
13695
|
+
"maximum": 255,
|
13696
|
+
"type": "integer",
|
13697
|
+
"format": "int32"
|
13504
13698
|
}
|
13505
13699
|
},
|
13506
13700
|
"required": [
|
@@ -13539,6 +13733,7 @@
|
|
13539
13733
|
"type": "array",
|
13540
13734
|
"items": {
|
13541
13735
|
"type": "integer",
|
13736
|
+
"minimum": 0,
|
13542
13737
|
"format": "int32"
|
13543
13738
|
},
|
13544
13739
|
"minItems": 3,
|
@@ -14098,7 +14293,7 @@
|
|
14098
14293
|
"version": {
|
14099
14294
|
"title": "Version",
|
14100
14295
|
"description": "Text string for the current version of the schema.",
|
14101
|
-
"default": "1.
|
14296
|
+
"default": "1.50.5",
|
14102
14297
|
"pattern": "([0-9]+)\\.([0-9]+)\\.([0-9]+)",
|
14103
14298
|
"type": "string",
|
14104
14299
|
"readOnly": true
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
|
3
|
+
# Energy, LLC, Ladybug Tools LLC and other contributors. All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# (1) Redistributions of source code must retain the above copyright notice,
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# (2) Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# (3) Neither the name of the copyright holder nor the names of any contributors
|
16
|
+
# may be used to endorse or promote products derived from this software without
|
17
|
+
# specific prior written permission from the respective party.
|
18
|
+
#
|
19
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
|
20
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
21
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
|
23
|
+
# UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
|
24
|
+
# THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
25
|
+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
26
|
+
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
27
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
28
|
+
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
29
|
+
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
# *******************************************************************************
|
31
|
+
|
32
|
+
require 'honeybee/model_object'
|
33
|
+
|
34
|
+
module Honeybee
|
35
|
+
class EnergyWindowFrame < ModelObject
|
36
|
+
|
37
|
+
def defaults
|
38
|
+
@@schema[:components][:schemas][:EnergyWindowFrame][:properties]
|
39
|
+
end
|
40
|
+
|
41
|
+
end # EnergyWindowFrame
|
42
|
+
end # Honeybee
|
data/lib/honeybee.rb
CHANGED
@@ -61,13 +61,14 @@ require 'honeybee/construction/air'
|
|
61
61
|
require 'honeybee/material/opaque'
|
62
62
|
require 'honeybee/material/opaque_no_mass'
|
63
63
|
require 'honeybee/material/vegetation'
|
64
|
+
require 'honeybee/material/window_simpleglazsys'
|
65
|
+
require 'honeybee/material/window_glazing'
|
66
|
+
require 'honeybee/material/frame'
|
64
67
|
require 'honeybee/material/window_gas'
|
65
68
|
require 'honeybee/material/window_gas_mixture'
|
66
69
|
require 'honeybee/material/window_gas_custom'
|
67
70
|
require 'honeybee/material/window_blind'
|
68
|
-
require 'honeybee/material/window_glazing'
|
69
71
|
require 'honeybee/material/window_shade'
|
70
|
-
require 'honeybee/material/window_simpleglazsys'
|
71
72
|
|
72
73
|
# import the load objects
|
73
74
|
require 'honeybee/load/people'
|
@@ -118,15 +118,25 @@ module Honeybee
|
|
118
118
|
end
|
119
119
|
|
120
120
|
# assign the construction if it exists
|
121
|
-
if @hash[:properties].key?(:energy)
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
121
|
+
if @hash[:properties].key?(:energy)
|
122
|
+
if @hash[:properties][:energy][:construction]
|
123
|
+
construction_identifier = @hash[:properties][:energy][:construction]
|
124
|
+
construction = openstudio_model.getConstructionByName(construction_identifier)
|
125
|
+
if !construction.empty?
|
126
|
+
os_construction = construction.get
|
127
|
+
os_subsurface.setConstruction(os_construction)
|
128
|
+
elsif $window_dynamic_hash[construction_identifier] != nil
|
129
|
+
os_construction = $window_dynamic_hash[construction_identifier].constructions[0]
|
130
|
+
os_subsurface.setConstruction(os_construction)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
if @hash[:properties][:energy][:frame]
|
134
|
+
frame_identifier = @hash[:properties][:energy][:frame]
|
135
|
+
frame = openstudio_model.getWindowPropertyFrameAndDividerByName(frame_identifier)
|
136
|
+
unless frame.empty?
|
137
|
+
os_frame = frame.get
|
138
|
+
os_subsurface.setWindowPropertyFrameAndDivider(os_frame)
|
139
|
+
end
|
130
140
|
end
|
131
141
|
end
|
132
142
|
|
@@ -118,15 +118,25 @@ module Honeybee
|
|
118
118
|
end
|
119
119
|
|
120
120
|
# assign the construction if it exists
|
121
|
-
if @hash[:properties].key?(:energy)
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
121
|
+
if @hash[:properties].key?(:energy)
|
122
|
+
if @hash[:properties][:energy][:construction]
|
123
|
+
construction_identifier = @hash[:properties][:energy][:construction]
|
124
|
+
construction = openstudio_model.getConstructionByName(construction_identifier)
|
125
|
+
if !construction.empty?
|
126
|
+
os_construction = construction.get
|
127
|
+
os_subsurface.setConstruction(os_construction)
|
128
|
+
elsif $window_dynamic_hash[construction_identifier] != nil
|
129
|
+
os_construction = $window_dynamic_hash[construction_identifier].constructions[0]
|
130
|
+
os_subsurface.setConstruction(os_construction)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
if @hash[:properties][:energy][:frame]
|
134
|
+
frame_identifier = @hash[:properties][:energy][:frame]
|
135
|
+
frame = openstudio_model.getWindowPropertyFrameAndDividerByName(frame_identifier)
|
136
|
+
unless frame.empty?
|
137
|
+
os_frame = frame.get
|
138
|
+
os_subsurface.setWindowPropertyFrameAndDivider(os_frame)
|
139
|
+
end
|
130
140
|
end
|
131
141
|
end
|
132
142
|
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
|
3
|
+
# Energy, LLC, Ladybug Tools LLC and other contributors. All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# (1) Redistributions of source code must retain the above copyright notice,
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# (2) Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# (3) Neither the name of the copyright holder nor the names of any contributors
|
16
|
+
# may be used to endorse or promote products derived from this software without
|
17
|
+
# specific prior written permission from the respective party.
|
18
|
+
#
|
19
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
|
20
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
21
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
|
23
|
+
# UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
|
24
|
+
# THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
25
|
+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
26
|
+
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
27
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
28
|
+
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
29
|
+
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
# *******************************************************************************
|
31
|
+
|
32
|
+
require 'honeybee/material/frame'
|
33
|
+
|
34
|
+
require 'to_openstudio/model_object'
|
35
|
+
|
36
|
+
module Honeybee
|
37
|
+
class EnergyWindowFrame < ModelObject
|
38
|
+
|
39
|
+
def find_existing_openstudio_object(openstudio_model)
|
40
|
+
object = openstudio_model.getWindowPropertyFrameAndDividerByName(@hash[:identifier])
|
41
|
+
return object.get if object.is_initialized
|
42
|
+
nil
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_openstudio(openstudio_model)
|
46
|
+
# create frame OpenStudio material
|
47
|
+
os_frame_mat = OpenStudio::Model::WindowPropertyFrameAndDivider.new(openstudio_model)
|
48
|
+
os_frame_mat.setName(@hash[:identifier])
|
49
|
+
unless @hash[:display_name].nil?
|
50
|
+
os_frame_mat.setDisplayName(@hash[:display_name])
|
51
|
+
end
|
52
|
+
os_frame_mat.setFrameWidth(@hash[:width])
|
53
|
+
os_frame_mat.setFrameConductance(@hash[:conductance])
|
54
|
+
|
55
|
+
# assign edge_to_center_ratio if it exists
|
56
|
+
if @hash[:edge_to_center_ratio]
|
57
|
+
os_frame_mat.setRatioOfFrameEdgeGlassConductanceToCenterOfGlassConductance(
|
58
|
+
@hash[:edge_to_center_ratio])
|
59
|
+
else
|
60
|
+
os_frame_mat.setRatioOfFrameEdgeGlassConductanceToCenterOfGlassConductance(
|
61
|
+
defaults[:edge_to_center_ratio][:default])
|
62
|
+
end
|
63
|
+
|
64
|
+
# assign outside_projection if it exists
|
65
|
+
if @hash[:outside_projection]
|
66
|
+
os_frame_mat.setFrameOutsideProjection(@hash[:outside_projection])
|
67
|
+
else
|
68
|
+
os_frame_mat.setFrameOutsideProjection(defaults[:outside_projection][:default])
|
69
|
+
end
|
70
|
+
|
71
|
+
# assign inside_projection if it exists
|
72
|
+
if @hash[:inside_projection]
|
73
|
+
os_frame_mat.setFrameInsideProjection(@hash[:inside_projection])
|
74
|
+
else
|
75
|
+
os_frame_mat.setFrameInsideProjection(defaults[:inside_projection][:default])
|
76
|
+
end
|
77
|
+
|
78
|
+
# assign thermal absorptance if it exists
|
79
|
+
if @hash[:thermal_absorptance]
|
80
|
+
os_frame_mat.setFrameThermalHemisphericalEmissivity(@hash[:thermal_absorptance])
|
81
|
+
else
|
82
|
+
os_frame_mat.setFrameThermalHemisphericalEmissivity(defaults[:thermal_absorptance][:default])
|
83
|
+
end
|
84
|
+
|
85
|
+
# assign solar absorptance if it exists
|
86
|
+
if @hash[:solar_absorptance]
|
87
|
+
os_frame_mat.setFrameSolarAbsorptance(@hash[:solar_absorptance])
|
88
|
+
else
|
89
|
+
os_frame_mat.setFrameSolarAbsorptance(defaults[:solar_absorptance][:default])
|
90
|
+
end
|
91
|
+
|
92
|
+
# assign visible absorptance if it exists
|
93
|
+
if @hash[:visible_absorptance]
|
94
|
+
os_frame_mat.setFrameVisibleAbsorptance(@hash[:visible_absorptance])
|
95
|
+
else
|
96
|
+
os_frame_mat.setFrameVisibleAbsorptance(defaults[:visible_absorptance][:default])
|
97
|
+
end
|
98
|
+
|
99
|
+
os_frame_mat
|
100
|
+
end
|
101
|
+
end # EnergyWindowFrame
|
102
|
+
end # Honeybee
|
data/lib/to_openstudio/model.rb
CHANGED
@@ -233,6 +233,12 @@ module Honeybee
|
|
233
233
|
material_object = EnergyMaterialNoMass.new(material)
|
234
234
|
when 'EnergyMaterialVegetation'
|
235
235
|
material_object = EnergyMaterialVegetation.new(material)
|
236
|
+
when 'EnergyWindowMaterialSimpleGlazSys'
|
237
|
+
material_object = EnergyWindowMaterialSimpleGlazSys.new(material)
|
238
|
+
when 'EnergyWindowMaterialGlazing'
|
239
|
+
material_object = EnergyWindowMaterialGlazing.new(material)
|
240
|
+
when 'EnergyWindowFrame'
|
241
|
+
material_object = EnergyWindowFrame.new(material)
|
236
242
|
when 'EnergyWindowMaterialGas'
|
237
243
|
material_object = EnergyWindowMaterialGas.new(material)
|
238
244
|
$gas_gap_hash[material[:identifier]] = material_object
|
@@ -242,12 +248,8 @@ module Honeybee
|
|
242
248
|
when 'EnergyWindowMaterialGasCustom'
|
243
249
|
material_object = EnergyWindowMaterialGasCustom.new(material)
|
244
250
|
$gas_gap_hash[material[:identifier]] = material_object
|
245
|
-
when 'EnergyWindowMaterialSimpleGlazSys'
|
246
|
-
material_object = EnergyWindowMaterialSimpleGlazSys.new(material)
|
247
251
|
when 'EnergyWindowMaterialBlind'
|
248
252
|
material_object = EnergyWindowMaterialBlind.new(material)
|
249
|
-
when 'EnergyWindowMaterialGlazing'
|
250
|
-
material_object = EnergyWindowMaterialGlazing.new(material)
|
251
253
|
when 'EnergyWindowMaterialShade'
|
252
254
|
material_object = EnergyWindowMaterialShade.new(material)
|
253
255
|
else
|
data/lib/to_openstudio.rb
CHANGED
@@ -61,13 +61,14 @@ require 'to_openstudio/construction/air'
|
|
61
61
|
require 'to_openstudio/material/opaque'
|
62
62
|
require 'to_openstudio/material/opaque_no_mass'
|
63
63
|
require 'to_openstudio/material/vegetation'
|
64
|
+
require 'to_openstudio/material/window_simpleglazsys'
|
65
|
+
require 'to_openstudio/material/window_glazing'
|
64
66
|
require 'to_openstudio/material/window_gas'
|
65
67
|
require 'to_openstudio/material/window_gas_mixture'
|
66
68
|
require 'to_openstudio/material/window_gas_custom'
|
69
|
+
require 'to_openstudio/material/frame'
|
67
70
|
require 'to_openstudio/material/window_blind'
|
68
|
-
require 'to_openstudio/material/window_glazing'
|
69
71
|
require 'to_openstudio/material/window_shade'
|
70
|
-
require 'to_openstudio/material/window_simpleglazsys'
|
71
72
|
|
72
73
|
# extend the load objects
|
73
74
|
require 'to_openstudio/load/people'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: honeybee-openstudio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.33.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tanushree Charan
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2022-09-
|
14
|
+
date: 2022-09-13 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -236,6 +236,7 @@ files:
|
|
236
236
|
- lib/honeybee/load/setpoint_humidistat.rb
|
237
237
|
- lib/honeybee/load/setpoint_thermostat.rb
|
238
238
|
- lib/honeybee/load/ventilation.rb
|
239
|
+
- lib/honeybee/material/frame.rb
|
239
240
|
- lib/honeybee/material/opaque.rb
|
240
241
|
- lib/honeybee/material/opaque_no_mass.rb
|
241
242
|
- lib/honeybee/material/vegetation.rb
|
@@ -318,6 +319,7 @@ files:
|
|
318
319
|
- lib/to_openstudio/load/setpoint_humidistat.rb
|
319
320
|
- lib/to_openstudio/load/setpoint_thermostat.rb
|
320
321
|
- lib/to_openstudio/load/ventilation.rb
|
322
|
+
- lib/to_openstudio/material/frame.rb
|
321
323
|
- lib/to_openstudio/material/opaque.rb
|
322
324
|
- lib/to_openstudio/material/opaque_no_mass.rb
|
323
325
|
- lib/to_openstudio/material/vegetation.rb
|