honeybee-openstudio 2.35.2 → 2.36.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eadf72cc6184d0f30705481227c69a6bb35a17485856a641a841c797f720bd46
4
- data.tar.gz: cbff4e6067b9be01c1df2b545c4a181f863f9a51a5c5cc4f2c6bd5a301558e19
3
+ metadata.gz: 88803c4452beb43f6431989476914197585fe05db4b17a1d712994b4764e993e
4
+ data.tar.gz: d2cad8b34aa0cb250b4a7c79e17c1b0e7c06109905f3840b7c7799efaa3b9038
5
5
  SHA512:
6
- metadata.gz: 4e91999590b5b8b2f15bca7cc073beafd4d310507064b2eea7e883069fcfb761301d3cf22147ef9cdb1fe11cb6db967d06417d1c82534d7b821ef69cc3dc8300
7
- data.tar.gz: 6c3aaad16d195b28a4434365d2d94dacd6e639f4baba7ff016b53c16bb0d31105157b59c9417ee5c0d2f9b25f5a735fad265751e771a82e131e9a089482323f4
6
+ metadata.gz: 5d81d4a58ef8da8735164d8c6c046c0658c47ac7ab365b289307a576aec1c54425830d3b600e0fbaba480c3430a4b08c989b66f86b08a7b209e94e332d54737b
7
+ data.tar.gz: 6f6907e98c147e0abc5982e5c98d97c718c09f37d1b524eb46acbb2142679aec570e497411d3a1d9eeca4ec81cc097094bc1ccf8aeb1cb949a7336af7d831044
@@ -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.35.2'
7
+ spec.version = '2.36.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.50.5",
6
+ "version": "1.53.4",
7
7
  "title": "Honeybee Model Schema",
8
8
  "contact": {
9
9
  "name": "Ladybug Tools",
@@ -144,6 +144,11 @@
144
144
  "x-displayName": "DaylightingControl",
145
145
  "description": "<SchemaDefinition schemaRef=\"#/components/schemas/DaylightingControl\" />\n"
146
146
  },
147
+ {
148
+ "name": "detailedhvac_model",
149
+ "x-displayName": "DetailedHVAC",
150
+ "description": "<SchemaDefinition schemaRef=\"#/components/schemas/DetailedHVAC\" />\n"
151
+ },
147
152
  {
148
153
  "name": "door_model",
149
154
  "x-displayName": "Door",
@@ -769,6 +774,26 @@
769
774
  "x-displayName": "ShadeLocation",
770
775
  "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ShadeLocation\" />\n"
771
776
  },
777
+ {
778
+ "name": "shademesh_model",
779
+ "x-displayName": "ShadeMesh",
780
+ "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ShadeMesh\" />\n"
781
+ },
782
+ {
783
+ "name": "shademeshenergypropertiesabridged_model",
784
+ "x-displayName": "ShadeMeshEnergyPropertiesAbridged",
785
+ "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ShadeMeshEnergyPropertiesAbridged\" />\n"
786
+ },
787
+ {
788
+ "name": "shademeshpropertiesabridged_model",
789
+ "x-displayName": "ShadeMeshPropertiesAbridged",
790
+ "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ShadeMeshPropertiesAbridged\" />\n"
791
+ },
792
+ {
793
+ "name": "shademeshradiancepropertiesabridged_model",
794
+ "x-displayName": "ShadeMeshRadiancePropertiesAbridged",
795
+ "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ShadeMeshRadiancePropertiesAbridged\" />\n"
796
+ },
772
797
  {
773
798
  "name": "shademodifierset_model",
774
799
  "x-displayName": "ShadeModifierSet",
@@ -1003,6 +1028,7 @@
1003
1028
  "constructionsetabridged_model",
1004
1029
  "controltype_model",
1005
1030
  "daylightingcontrol_model",
1031
+ "detailedhvac_model",
1006
1032
  "door_model",
1007
1033
  "doorconstructionset_model",
1008
1034
  "doorconstructionsetabridged_model",
@@ -1126,6 +1152,10 @@
1126
1152
  "shadeconstruction_model",
1127
1153
  "shadeenergypropertiesabridged_model",
1128
1154
  "shadelocation_model",
1155
+ "shademesh_model",
1156
+ "shademeshenergypropertiesabridged_model",
1157
+ "shademeshpropertiesabridged_model",
1158
+ "shademeshradiancepropertiesabridged_model",
1129
1159
  "shademodifierset_model",
1130
1160
  "shademodifiersetabridged_model",
1131
1161
  "shadepropertiesabridged_model",
@@ -1365,8 +1395,7 @@
1365
1395
  {
1366
1396
  "type": "number",
1367
1397
  "minimum": 0,
1368
- "maximum": 1,
1369
- "format": "double"
1398
+ "maximum": 1
1370
1399
  }
1371
1400
  ]
1372
1401
  }
@@ -1447,8 +1476,7 @@
1447
1476
  "$ref": "#/components/schemas/Autocalculate"
1448
1477
  },
1449
1478
  {
1450
- "type": "number",
1451
- "format": "double"
1479
+ "type": "number"
1452
1480
  }
1453
1481
  ]
1454
1482
  }
@@ -2461,8 +2489,7 @@
2461
2489
  {
2462
2490
  "type": "number",
2463
2491
  "minimum": 0,
2464
- "maximum": 1,
2465
- "format": "double"
2492
+ "maximum": 1
2466
2493
  }
2467
2494
  ]
2468
2495
  }
@@ -3596,6 +3623,252 @@
3596
3623
  ],
3597
3624
  "additionalProperties": false
3598
3625
  },
3626
+ "Color": {
3627
+ "title": "Color",
3628
+ "description": "A RGB color.",
3629
+ "type": "object",
3630
+ "properties": {
3631
+ "r": {
3632
+ "title": "R",
3633
+ "description": "Value for red channel.",
3634
+ "minimum": 0,
3635
+ "maximum": 255,
3636
+ "type": "integer",
3637
+ "format": "int32"
3638
+ },
3639
+ "g": {
3640
+ "title": "G",
3641
+ "description": "Value for green channel.",
3642
+ "minimum": 0,
3643
+ "maximum": 255,
3644
+ "type": "integer",
3645
+ "format": "int32"
3646
+ },
3647
+ "b": {
3648
+ "title": "B",
3649
+ "description": "Value for blue channel.",
3650
+ "minimum": 0,
3651
+ "maximum": 255,
3652
+ "type": "integer",
3653
+ "format": "int32"
3654
+ },
3655
+ "type": {
3656
+ "title": "Type",
3657
+ "default": "Color",
3658
+ "pattern": "^Color$",
3659
+ "type": "string",
3660
+ "readOnly": true
3661
+ },
3662
+ "a": {
3663
+ "title": "A",
3664
+ "description": "Value for the alpha channel, which defines the opacity as a number between 0 (fully transparent) and 255 (fully opaque).",
3665
+ "default": 255,
3666
+ "minimum": 0,
3667
+ "maximum": 255,
3668
+ "type": "integer",
3669
+ "format": "int32"
3670
+ }
3671
+ },
3672
+ "required": [
3673
+ "r",
3674
+ "g",
3675
+ "b"
3676
+ ],
3677
+ "additionalProperties": false
3678
+ },
3679
+ "Mesh3D": {
3680
+ "title": "Mesh3D",
3681
+ "description": "A mesh in 3D space.",
3682
+ "type": "object",
3683
+ "properties": {
3684
+ "vertices": {
3685
+ "title": "Vertices",
3686
+ "description": "A list of points representing the vertices of the mesh. The list should include at least 3 points and each point should be a list of 3 (x, y, z) values.",
3687
+ "minItems": 3,
3688
+ "type": "array",
3689
+ "items": {
3690
+ "type": "array",
3691
+ "items": {
3692
+ "type": "number",
3693
+ "format": "double"
3694
+ },
3695
+ "minItems": 3,
3696
+ "maxItems": 3
3697
+ }
3698
+ },
3699
+ "faces": {
3700
+ "title": "Faces",
3701
+ "description": "A list of lists with each sub-list having either 3 or 4 integers. These integers correspond to indices within the list of vertices.",
3702
+ "minItems": 1,
3703
+ "type": "array",
3704
+ "items": {
3705
+ "type": "array",
3706
+ "items": {
3707
+ "type": "integer",
3708
+ "minimum": 0,
3709
+ "format": "int32"
3710
+ },
3711
+ "minItems": 3,
3712
+ "maxItems": 4
3713
+ }
3714
+ },
3715
+ "type": {
3716
+ "title": "Type",
3717
+ "default": "Mesh3D",
3718
+ "pattern": "^Mesh3D$",
3719
+ "type": "string",
3720
+ "readOnly": true
3721
+ },
3722
+ "colors": {
3723
+ "title": "Colors",
3724
+ "description": "An optional list of colors that correspond to either the faces of the mesh or the vertices of the mesh.",
3725
+ "type": "array",
3726
+ "items": {
3727
+ "$ref": "#/components/schemas/Color"
3728
+ }
3729
+ }
3730
+ },
3731
+ "required": [
3732
+ "vertices",
3733
+ "faces"
3734
+ ],
3735
+ "additionalProperties": false
3736
+ },
3737
+ "ShadeMeshEnergyPropertiesAbridged": {
3738
+ "title": "ShadeMeshEnergyPropertiesAbridged",
3739
+ "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.",
3740
+ "type": "object",
3741
+ "properties": {
3742
+ "type": {
3743
+ "title": "Type",
3744
+ "default": "ShadeMeshEnergyPropertiesAbridged",
3745
+ "pattern": "^ShadeMeshEnergyPropertiesAbridged$",
3746
+ "type": "string",
3747
+ "readOnly": true
3748
+ },
3749
+ "construction": {
3750
+ "title": "Construction",
3751
+ "description": "Identifier of a ShadeConstruction to set the reflectance and specularity of the Shade. If None, it will be a generic context construction that is completely diffuse with 0.2 visible and solar reflectance. Unless it is building attached, in which case it will be set by the default generic ConstructionSet.",
3752
+ "maxLength": 100,
3753
+ "minLength": 1,
3754
+ "type": "string"
3755
+ },
3756
+ "transmittance_schedule": {
3757
+ "title": "Transmittance Schedule",
3758
+ "description": "Identifier of a schedule to set the transmittance of the shade, which can vary throughout the simulation. If None, the shade will be completely opaque.",
3759
+ "maxLength": 100,
3760
+ "minLength": 1,
3761
+ "type": "string"
3762
+ }
3763
+ },
3764
+ "additionalProperties": false
3765
+ },
3766
+ "ShadeMeshRadiancePropertiesAbridged": {
3767
+ "title": "ShadeMeshRadiancePropertiesAbridged",
3768
+ "description": "Radiance Properties for Honeybee ShadeMesh Abridged.",
3769
+ "type": "object",
3770
+ "properties": {
3771
+ "modifier": {
3772
+ "title": "Modifier",
3773
+ "description": "A string for a Honeybee Radiance Modifier (default: None).",
3774
+ "type": "string"
3775
+ },
3776
+ "modifier_blk": {
3777
+ "title": "Modifier Blk",
3778
+ "description": "A string for a Honeybee Radiance Modifier to be used in direct solar simulations and in isolation studies (assessingthe contribution of individual objects) (default: None).",
3779
+ "type": "string"
3780
+ },
3781
+ "type": {
3782
+ "title": "Type",
3783
+ "default": "ShadeMeshRadiancePropertiesAbridged",
3784
+ "pattern": "^ShadeMeshRadiancePropertiesAbridged$",
3785
+ "type": "string",
3786
+ "readOnly": true
3787
+ }
3788
+ },
3789
+ "additionalProperties": false
3790
+ },
3791
+ "ShadeMeshPropertiesAbridged": {
3792
+ "title": "ShadeMeshPropertiesAbridged",
3793
+ "type": "object",
3794
+ "properties": {
3795
+ "type": {
3796
+ "title": "Type",
3797
+ "default": "ShadeMeshPropertiesAbridged",
3798
+ "pattern": "^ShadeMeshPropertiesAbridged$",
3799
+ "type": "string",
3800
+ "readOnly": true
3801
+ },
3802
+ "energy": {
3803
+ "$ref": "#/components/schemas/ShadeMeshEnergyPropertiesAbridged"
3804
+ },
3805
+ "radiance": {
3806
+ "$ref": "#/components/schemas/ShadeMeshRadiancePropertiesAbridged"
3807
+ }
3808
+ }
3809
+ },
3810
+ "ShadeMesh": {
3811
+ "title": "ShadeMesh",
3812
+ "description": "Base class for all objects requiring a identifiers acceptable for all engines.",
3813
+ "type": "object",
3814
+ "properties": {
3815
+ "identifier": {
3816
+ "title": "Identifier",
3817
+ "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, rad). This identifier is also used to reference the object across a Model. It must be < 100 characters and not contain any spaces or special characters.",
3818
+ "maxLength": 100,
3819
+ "minLength": 1,
3820
+ "pattern": "^[.A-Za-z0-9_-]+$",
3821
+ "type": "string"
3822
+ },
3823
+ "geometry": {
3824
+ "title": "Geometry",
3825
+ "description": "A Mesh3D for the geometry.",
3826
+ "allOf": [
3827
+ {
3828
+ "$ref": "#/components/schemas/Mesh3D"
3829
+ }
3830
+ ]
3831
+ },
3832
+ "properties": {
3833
+ "title": "Properties",
3834
+ "description": "Extension properties for particular simulation engines (Radiance, EnergyPlus).",
3835
+ "allOf": [
3836
+ {
3837
+ "$ref": "#/components/schemas/ShadeMeshPropertiesAbridged"
3838
+ }
3839
+ ]
3840
+ },
3841
+ "display_name": {
3842
+ "title": "Display Name",
3843
+ "description": "Display name of the object with no character restrictions.",
3844
+ "type": "string"
3845
+ },
3846
+ "user_data": {
3847
+ "title": "User Data",
3848
+ "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).",
3849
+ "type": "object"
3850
+ },
3851
+ "type": {
3852
+ "title": "Type",
3853
+ "default": "ShadeMesh",
3854
+ "pattern": "^ShadeMesh$",
3855
+ "type": "string",
3856
+ "readOnly": true
3857
+ },
3858
+ "is_detached": {
3859
+ "title": "Is Detached",
3860
+ "description": "Boolean to note whether this shade is detached from any of the other geometry in the model. Cases where this should be True include shade representing surrounding buildings or context.",
3861
+ "default": true,
3862
+ "type": "boolean"
3863
+ }
3864
+ },
3865
+ "required": [
3866
+ "identifier",
3867
+ "geometry",
3868
+ "properties"
3869
+ ],
3870
+ "additionalProperties": false
3871
+ },
3599
3872
  "Units": {
3600
3873
  "title": "Units",
3601
3874
  "description": "An enumeration.",
@@ -3872,7 +4145,8 @@
3872
4145
  },
3873
4146
  {
3874
4147
  "type": "number",
3875
- "format": "double"
4148
+ "minimum": 0,
4149
+ "maximum": 1
3876
4150
  }
3877
4151
  ]
3878
4152
  },
@@ -3907,8 +4181,7 @@
3907
4181
  {
3908
4182
  "type": "number",
3909
4183
  "minimum": 0,
3910
- "maximum": 1,
3911
- "format": "double"
4184
+ "maximum": 1
3912
4185
  }
3913
4186
  ]
3914
4187
  },
@@ -4649,7 +4922,7 @@
4649
4922
  "user_data": null,
4650
4923
  "type": "EnergyMaterial",
4651
4924
  "roughness": "MediumRough",
4652
- "thickness": 0.05,
4925
+ "thickness": 0.025,
4653
4926
  "conductivity": 0.03,
4654
4927
  "density": 43.0,
4655
4928
  "specific_heat": 1210.0,
@@ -4728,6 +5001,15 @@
4728
5001
  "visible_reflectance": 0.35,
4729
5002
  "is_specular": false
4730
5003
  },
5004
+ {
5005
+ "identifier": "Generic Context",
5006
+ "display_name": null,
5007
+ "user_data": null,
5008
+ "type": "ShadeConstruction",
5009
+ "solar_reflectance": 0.2,
5010
+ "visible_reflectance": 0.2,
5011
+ "is_specular": false
5012
+ },
4731
5013
  {
4732
5014
  "identifier": "Generic Interior Ceiling",
4733
5015
  "display_name": null,
@@ -4969,11 +5251,18 @@
4969
5251
  },
4970
5252
  "shade_construction": {
4971
5253
  "title": "Shade Construction",
4972
- "description": "Global Honeybee Construction for Shades.",
5254
+ "description": "Global Honeybee Construction for building-attached Shades.",
4973
5255
  "default": "Generic Shade",
4974
5256
  "readOnly": true,
4975
5257
  "type": "string"
4976
5258
  },
5259
+ "context_construction": {
5260
+ "title": "Context Construction",
5261
+ "description": "Global Honeybee Construction for context Shades.",
5262
+ "default": "Generic Context",
5263
+ "readOnly": true,
5264
+ "type": "string"
5265
+ },
4977
5266
  "air_boundary_construction": {
4978
5267
  "title": "Air Boundary Construction",
4979
5268
  "description": "Global Honeybee Construction for AirBoundary Faces.",
@@ -6597,8 +6886,7 @@
6597
6886
  "$ref": "#/components/schemas/NoLimit"
6598
6887
  },
6599
6888
  {
6600
- "type": "number",
6601
- "format": "double"
6889
+ "type": "number"
6602
6890
  }
6603
6891
  ]
6604
6892
  },
@@ -6613,8 +6901,7 @@
6613
6901
  "$ref": "#/components/schemas/NoLimit"
6614
6902
  },
6615
6903
  {
6616
- "type": "number",
6617
- "format": "double"
6904
+ "type": "number"
6618
6905
  }
6619
6906
  ]
6620
6907
  },
@@ -6944,7 +7231,7 @@
6944
7231
  },
6945
7232
  "schedule": {
6946
7233
  "title": "Schedule",
6947
- "description": "A control schedule that dictates which constructions are active at given times throughout the simulation. The values of the schedule should be intergers and range from 0 to one less then the number of constructions. Zero indicates that the first construction is active, one indicates that the second on is active, etc. The schedule type limits of this schedule should be \"Control Level.\" If building custom schedule type limits that describe a particular range of states, the type limits should be \"Discrete\" and the unit type should be \"Mode,\" \"Control,\" or some other fractional unit.",
7234
+ "description": "A control schedule that dictates which constructions are active at given times throughout the simulation. The values of the schedule should be integers and range from 0 to one less then the number of constructions. Zero indicates that the first construction is active, one indicates that the second on is active, etc. The schedule type limits of this schedule should be \"Control Level.\" If building custom schedule type limits that describe a particular range of states, the type limits should be \"Discrete\" and the unit type should be \"Mode,\" \"Control,\" or some other fractional unit.",
6948
7235
  "anyOf": [
6949
7236
  {
6950
7237
  "$ref": "#/components/schemas/ScheduleRuleset"
@@ -7392,7 +7679,7 @@
7392
7679
  },
7393
7680
  "schedule": {
7394
7681
  "title": "Schedule",
7395
- "description": "An identifier for a control schedule that dictates which constructions are active at given times throughout the simulation. The values of the schedule should be intergers and range from 0 to one less then the number of constructions. Zero indicates that the first construction is active, one indicates that the second on is active, etc. The schedule type limits of this schedule should be \"Control Level.\" If building custom schedule type limits that describe a particular range of states, the type limits should be \"Discrete\" and the unit type should be \"Mode,\" \"Control,\" or some other fractional unit.",
7682
+ "description": "An identifier for a control schedule that dictates which constructions are active at given times throughout the simulation. The values of the schedule should be integers and range from 0 to one less then the number of constructions. Zero indicates that the first construction is active, one indicates that the second on is active, etc. The schedule type limits of this schedule should be \"Control Level.\" If building custom schedule type limits that describe a particular range of states, the type limits should be \"Discrete\" and the unit type should be \"Mode,\" \"Control,\" or some other fractional unit.",
7396
7683
  "maxLength": 100,
7397
7684
  "minLength": 1,
7398
7685
  "type": "string"
@@ -7543,8 +7830,7 @@
7543
7830
  },
7544
7831
  {
7545
7832
  "type": "number",
7546
- "minimum": 0,
7547
- "format": "double"
7833
+ "minimum": 0
7548
7834
  }
7549
7835
  ]
7550
7836
  },
@@ -7563,8 +7849,7 @@
7563
7849
  },
7564
7850
  {
7565
7851
  "type": "number",
7566
- "minimum": 0,
7567
- "format": "double"
7852
+ "minimum": 0
7568
7853
  }
7569
7854
  ]
7570
7855
  },
@@ -7641,7 +7926,7 @@
7641
7926
  },
7642
7927
  "VAV": {
7643
7928
  "title": "VAV",
7644
- "description": "Variable Air Volume (VAV) HVAC system.",
7929
+ "description": "Variable Air Volume (VAV) HVAC system (aka. System 7 or 8).\n\nAll rooms/zones are connected to a central air loop that is kept at a constant\ncentral temperature of 12.8C (55F). The central temperature is maintained by a\ncooling coil, which runs whenever the combination of return air and fresh outdoor\nair is greater than 12.8C, as well as a heating coil, which runs whenever\nthe combination of return air and fresh outdoor air is less than 12.8C.\n\nEach air terminal for the connected rooms/zones contains its own reheat coil,\nwhich runs whenever the room is not in need of the cooling supplied by the 12.8C\ncentral air.\n\nThe central cooling coil is always a chilled water coil, which is connected to a\nchilled water loop operating at 6.7C (44F). All heating coils are hot water coils\nexcept when Gas Coil equipment_type is used (in which case coils are gas)\nor when Parallel Fan-Powered (PFP) boxes equipment_type is used (in which case\ncoils are electric resistance). Hot water temperature is 82C (180F) for\nboiler/district heating and 49C (120F) when ASHP is used.\n\nVAV systems are the traditional baseline system for commercial buildings\ntaller than 5 stories or larger than 14,000 m2 (150,000 ft2) of floor area.",
7645
7930
  "type": "object",
7646
7931
  "properties": {
7647
7932
  "identifier": {
@@ -7740,7 +8025,7 @@
7740
8025
  },
7741
8026
  "PVAV": {
7742
8027
  "title": "PVAV",
7743
- "description": "Packaged Variable Air Volume (PVAV) HVAC system.",
8028
+ "description": "Packaged Variable Air Volume (PVAV) HVAC system (aka. System 5 or 6).\n\nAll rooms/zones are connected to a central air loop that is kept at a constant\ncentral temperature of 12.8C (55F). The central temperature is maintained by a\ncooling coil, which runs whenever the combination of return air and fresh outdoor\nair is greater than 12.8C, as well as a heating coil, which runs whenever\nthe combination of return air and fresh outdoor air is less than 12.8C.\n\nEach air terminal for the connected rooms/zones contains its own reheat coil,\nwhich runs whenever the room is not in need of the cooling supplied by the 12.8C\ncentral air.\n\nThe central cooling coil is always a two-speed direct expansion (DX) coil.\nAll heating coils are hot water coils except when Gas Coil equipment_type is\nused (in which case the central coil is gas and all reheat is electric)\nor when Parallel Fan-Powered (PFP) boxes equipment_type is used (in which case\ncoils are electric resistance). Hot water temperature is 82C (180F) for\nboiler/district heating and 49C (120F) when ASHP is used.\n\nPVAV systems are the traditional baseline system for commercial buildings\nwith than 4-5 stories or between 2,300 m2 and 14,000 m2 (25,000 ft2 and\n150,000 ft2) of floor area.",
7744
8029
  "type": "object",
7745
8030
  "properties": {
7746
8031
  "identifier": {
@@ -7854,7 +8139,7 @@
7854
8139
  },
7855
8140
  "PSZ": {
7856
8141
  "title": "PSZ",
7857
- "description": "Packaged Single-Zone (PSZ) HVAC system.",
8142
+ "description": "Packaged Single-Zone (PSZ) HVAC system (aka. System 3 or 4).\n\nEach room/zone receives its own air loop with its own single-speed direct expansion\n(DX) cooling coil, which will condition the supply air to a value in between\n12.8C (55F) and 50C (122F) depending on the heating/cooling needs of the room/zone.\nAs long as a Baseboard equipment_type is NOT selected, heating will be supplied\nby a heating coil in the air loop. Otherwise, heating is accomplished with\nbaseboards and the air loop only supplies cooling and ventilation air.\nFans are constant volume.\n\nPSZ systems are the traditional baseline system for commercial buildings\nwith less than 4 stories or less than 2,300 m2 (25,000 ft2) of floor area.\nThey are also the default for all retail with less than 3 stories and all public\nassembly spaces.",
7858
8143
  "type": "object",
7859
8144
  "properties": {
7860
8145
  "identifier": {
@@ -7959,7 +8244,7 @@
7959
8244
  },
7960
8245
  "PTAC": {
7961
8246
  "title": "PTAC",
7962
- "description": "Packaged Terminal Air Conditioning (PTAC) or Heat Pump (PTHP) HVAC system.",
8247
+ "description": "Packaged Terminal Air Conditioning (PTAC/HP) HVAC system. (aka. System 1 or 2).\n\nEach room/zone receives its own packaged unit that supplies heating, cooling\nand ventilation. Cooling is always done via a single-speed direct expansion (DX)\ncooling coil. Heating can be done via a heating coil in the unit or via an\nexternal baseboard. Fans are constant volume.\n\nPTAC/HP systems are the traditional baseline system for residential buildings.",
7963
8248
  "type": "object",
7964
8249
  "properties": {
7965
8250
  "identifier": {
@@ -8015,13 +8300,14 @@
8015
8300
  "title": "FurnaceEquipmentType",
8016
8301
  "description": "An enumeration.",
8017
8302
  "enum": [
8018
- "Furnace"
8303
+ "Furnace",
8304
+ "Furnace_Electric"
8019
8305
  ],
8020
8306
  "type": "string"
8021
8307
  },
8022
8308
  "ForcedAirFurnace": {
8023
8309
  "title": "ForcedAirFurnace",
8024
- "description": "Forced Air Furnace HVAC system. Intended for spaces only requiring heating.",
8310
+ "description": "Forced Air Furnace HVAC system (aka. System 9 or 10).\n\nForced air furnaces are intended only for spaces only requiring heating and\nventilation. Each room/zone receives its own air loop with its own gas heating\ncoil, which will supply air at a temperature up to 50C (122F) to meet the\nheating needs of the room/zone. Fans are constant volume.\n\nForcedAirFurnace systems are the traditional baseline system for storage\nspaces that only require heating.",
8025
8311
  "type": "object",
8026
8312
  "properties": {
8027
8313
  "identifier": {
@@ -8051,39 +8337,6 @@
8051
8337
  }
8052
8338
  ]
8053
8339
  },
8054
- "economizer_type": {
8055
- "description": "Text to indicate the type of air-side economizer used on the system (from the AllAirEconomizerType enumeration).",
8056
- "default": "NoEconomizer",
8057
- "allOf": [
8058
- {
8059
- "$ref": "#/components/schemas/AllAirEconomizerType"
8060
- }
8061
- ]
8062
- },
8063
- "sensible_heat_recovery": {
8064
- "title": "Sensible Heat Recovery",
8065
- "description": "A number between 0 and 1 for the effectiveness of sensible heat recovery within the system.",
8066
- "default": 0,
8067
- "minimum": 0,
8068
- "maximum": 1,
8069
- "type": "number",
8070
- "format": "double"
8071
- },
8072
- "latent_heat_recovery": {
8073
- "title": "Latent Heat Recovery",
8074
- "description": "A number between 0 and 1 for the effectiveness of latent heat recovery within the system.",
8075
- "default": 0,
8076
- "minimum": 0,
8077
- "maximum": 1,
8078
- "type": "number",
8079
- "format": "double"
8080
- },
8081
- "demand_controlled_ventilation": {
8082
- "title": "Demand Controlled Ventilation",
8083
- "description": "Boolean to note whether demand controlled ventilation should be used on the system, which will vary the amount of ventilation air according to the occupancy schedule of the Rooms.",
8084
- "default": false,
8085
- "type": "boolean"
8086
- },
8087
8340
  "type": {
8088
8341
  "title": "Type",
8089
8342
  "default": "ForcedAirFurnace",
@@ -8133,7 +8386,7 @@
8133
8386
  },
8134
8387
  "FCUwithDOASAbridged": {
8135
8388
  "title": "FCUwithDOASAbridged",
8136
- "description": "Fan Coil Unit (FCU) with DOAS HVAC system.",
8389
+ "description": "Fan Coil Unit (FCU) with DOAS HVAC system.\n\nAll rooms/zones in the system are connected to a Dedicated Outdoor Air System\n(DOAS) that supplies a constant volume of ventilation air at the same temperature\nto all rooms/zones. The ventilation air temperature will vary from 21.1C (70F)\nto 15.5C (60F) depending on the outdoor air temperature (the DOAS supplies cooler air\nwhen outdoor conditions are warmer). The ventilation air temperature is maintained\nby a chilled water cooling coil and a heating coil. The heating coil is a hot\nwater coil except when electric baseboards or gas heaters are specified, in\nwhich case the heating coil is a single-speed direct expansion (DX) heat pump\nwith a backup electrical resistance coil.\n\nEach room/zone also receives its own Fan Coil Unit (FCU), which meets the heating\nand cooling loads of the space. The cooling coil in the FCU is always chilled\nwater cooling coil, which is connected to a chilled water loop operating\nat 6.7C (44F). The heating coil is a hot water coil except when when electric\nbaseboards or gas heaters are specified. Hot water temperature is 82C (180F) for\nboiler/district heating and 49C (120F) when ASHP is used.\n\nThe FCU with DOAS template is relatively close in performance to active chilled\nbeams (ACBs). When using this template to represent ACBs, care must be taken\nto ensure that the DOAS ventilation air requirement is sufficient to extract\nthe heating cooling from the ACB. If so, then this FCUwithDOAS template can be\nused but with the energy use of the FCU fans ignored.",
8137
8390
  "type": "object",
8138
8391
  "properties": {
8139
8392
  "identifier": {
@@ -8229,7 +8482,7 @@
8229
8482
  },
8230
8483
  "WSHPwithDOASAbridged": {
8231
8484
  "title": "WSHPwithDOASAbridged",
8232
- "description": "Water Source Heat Pump (WSHP) with DOAS HVAC system.",
8485
+ "description": "Water Source Heat Pump (WSHP) with DOAS HVAC system.\n\nAll rooms/zones in the system are connected to a Dedicated Outdoor Air System\n(DOAS) that supplies a constant volume of ventilation air at the same temperature\nto all rooms/zones. The ventilation air temperature will vary from 21.1C (70F)\nto 15.5C (60F) depending on the outdoor air temperature (the DOAS supplies cooler air\nwhen outdoor conditions are warmer). The ventilation air temperature is maintained\nby a chilled water cooling coil and a hot water heating coil except when the\nground source heat pump (GSHP) option is selected. In this case, the ventilation\nair temperature is maintained by a two-speed direct expansion (DX) cooling coil\nand a single-speed DX heating coil with backup electrical resistance heat.\n\nEach room/zone also receives its own Water Source Heat Pump (WSHP), which meets\nthe heating and cooling loads of the space. All WSHPs are connected to the\nsame water condenser loop, which has its temperature maintained by the\nequipment_type (eg. Boiler with Cooling Tower).",
8233
8486
  "type": "object",
8234
8487
  "properties": {
8235
8488
  "identifier": {
@@ -8322,7 +8575,7 @@
8322
8575
  },
8323
8576
  "VRFwithDOASAbridged": {
8324
8577
  "title": "VRFwithDOASAbridged",
8325
- "description": "Variable Refrigerant Flow (VRF) with DOAS HVAC system.",
8578
+ "description": "Variable Refrigerant Flow (VRF) with DOAS HVAC system.\n\nAll rooms/zones in the system are connected to a Dedicated Outdoor Air System\n(DOAS) that supplies a constant volume of ventilation air at the same temperature\nto all rooms/zones. The ventilation air temperature will vary from 21.1C (70F)\nto 15.5C (60F) depending on the outdoor air temperature (the DOAS supplies cooler air\nwhen outdoor conditions are warmer). The ventilation air temperature is maintained\nby a single speed direct expansion (DX) cooling coil along with a single-speed\ndirect expansion (DX) heat pump with a backup electrical resistance coil.\n\nEach room/zone also receives its own Variable Refrigerant Flow (VRF) terminal,\nwhich meets the heating and cooling loads of the space. All room/zone terminals\nare connected to the same outdoor unit, meaning that either all rooms must be\nin cooling or heating mode together.",
8326
8579
  "type": "object",
8327
8580
  "properties": {
8328
8581
  "identifier": {
@@ -8435,7 +8688,7 @@
8435
8688
  },
8436
8689
  "RadiantwithDOASAbridged": {
8437
8690
  "title": "RadiantwithDOASAbridged",
8438
- "description": "Low Temperature Radiant with DOAS HVAC system.",
8691
+ "description": "Low Temperature Radiant with DOAS HVAC system.\n\nThis HVAC template will change the floor and/or ceiling constructions\nof the Rooms that it is applied to, replacing them with a construction that\naligns with the radiant_type property (eg. CeilingMetalPanel).\n\nAll rooms/zones in the system are connected to a Dedicated Outdoor Air System\n(DOAS) that supplies a constant volume of ventilation air at the same temperature\nto all rooms/zones. The ventilation air temperature will vary from 21.1C (70F)\nto 15.5C (60F) depending on the outdoor air temperature (the DOAS supplies cooler air\nwhen outdoor conditions are warmer). The ventilation air temperature is maintained\nby a two-speed direct expansion (DX) cooling coil and a single-speed DX\nheating coil with backup electrical resistance heat.\n\nThe heating and cooling needs of the space are met with the radiant constructions,\nwhich use chilled water at 12.8C (55F) and a hot water temperature somewhere\nbetween 32.2C (90F) and 49C (120F) (warmer temperatures are used in colder\nclimate zones).\n\nNote that radiant systems are particularly limited in cooling capacity and\nusing them may result in many unmet hours. To reduce unmet hours, one can\nremove carpets, reduce internal loads, reduce solar and envelope gains during\npeak times, add thermal mass, and use an expanded comfort range.",
8439
8692
  "type": "object",
8440
8693
  "properties": {
8441
8694
  "identifier": {
@@ -8570,7 +8823,7 @@
8570
8823
  },
8571
8824
  "FCU": {
8572
8825
  "title": "FCU",
8573
- "description": "Fan Coil Unit (FCU) heating/cooling system (with no ventilation).",
8826
+ "description": "Fan Coil Unit (FCU) heating/cooling system (with no ventilation).\n\nEach room/zone receives its own Fan Coil Unit (FCU), which meets the heating\nand cooling loads of the space. The cooling coil in the FCU is always chilled\nwater cooling coil, which is connected to a chilled water loop operating\nat 6.7C (44F). The heating coil is a hot water coil except when when electric\nbaseboards or gas heaters are specified. Hot water temperature is 82C (180F) for\nboiler/district heating and 49C (120F) when ASHP is used.",
8574
8827
  "type": "object",
8575
8828
  "properties": {
8576
8829
  "identifier": {
@@ -8635,7 +8888,7 @@
8635
8888
  },
8636
8889
  "WSHP": {
8637
8890
  "title": "WSHP",
8638
- "description": "Direct evaporative cooling systems (with optional heating).",
8891
+ "description": "Water Source Heat Pump (WSHP) heating/cooling system (with no ventilation).\n\nEach room/zone receives its own Water Source Heat Pump (WSHP), which meets\nthe heating and cooling loads of the space. All WSHPs are connected to the\nsame water condenser loop, which has its temperature maintained by the\nequipment_type (eg. Boiler with Cooling Tower).",
8639
8892
  "type": "object",
8640
8893
  "properties": {
8641
8894
  "identifier": {
@@ -8697,7 +8950,7 @@
8697
8950
  },
8698
8951
  "VRF": {
8699
8952
  "title": "VRF",
8700
- "description": "Variable Refrigerant Flow (VRF) heating/cooling system (with no ventilation).",
8953
+ "description": "Variable Refrigerant Flow (VRF) heating/cooling system (with no ventilation).\n\nEach room/zone receives its own Variable Refrigerant Flow (VRF) terminal,\nwhich meets the heating and cooling loads of the space. All room/zone terminals\nare connected to the same outdoor unit, meaning that either all rooms must be\nin cooling or heating mode together.",
8701
8954
  "type": "object",
8702
8955
  "properties": {
8703
8956
  "identifier": {
@@ -8762,7 +9015,7 @@
8762
9015
  },
8763
9016
  "Baseboard": {
8764
9017
  "title": "Baseboard",
8765
- "description": "Baseboard heating system. Intended for spaces only requiring heating.",
9018
+ "description": "Baseboard heating system.\n\nBaseboard systems are intended for spaces only requiring heating and\nno ventilation or cooling. Each room/zone will get its own baseboard\nheating unit that satisfies the heating load.",
8766
9019
  "type": "object",
8767
9020
  "properties": {
8768
9021
  "identifier": {
@@ -8830,7 +9083,7 @@
8830
9083
  },
8831
9084
  "EvaporativeCooler": {
8832
9085
  "title": "EvaporativeCooler",
8833
- "description": "Direct evaporative cooling systems (with optional heating).",
9086
+ "description": "Direct evaporative cooling systems (with optional heating).\n\nEach room/zone will receive its own air loop sized to meet the sensible load,\nwhich contains an evaporative cooler that directly adds humidity to the room\nair to cool it. The loop contains an outdoor air mixer, which is used whenever\nthe outdoor air has a lower wet bulb temperature than the return air from\nthe room. In the event that the combination of outdoor and room return air\nair is too humid, a backup single-speed direct expansion (DX) cooling coil\nwill be used. Heating loads can be met with various options, including\nseveral types of baseboards, a furnace, or gas unit heaters.",
8834
9087
  "type": "object",
8835
9088
  "properties": {
8836
9089
  "identifier": {
@@ -8900,7 +9153,7 @@
8900
9153
  },
8901
9154
  "Residential": {
8902
9155
  "title": "Residential",
8903
- "description": "Residential Air Conditioning, Heat Pump or Furnace system.",
9156
+ "description": "Residential Air Conditioning, Heat Pump or Furnace system.\n\nResidential HVAC systems are intended primarily for single-family homes and\ninclude a wide variety of options. In all cases, each room/zone will receive\nits own air loop WITHOUT an outdoor air inlet (air is simply being recirculated\nthrough the loop). Residential air conditioning (AC) systems are modeled\nusing a unitary system with a single-speed direct expansion (DX) cooling\ncoil in the loop. Residential heat pump (HP) systems use a single-speed DX\nheating coil in the unitary system and the residential furnace option uses\na gas coil in the unitary system. In all cases, the properties of these coils\nare set to reflect a typical residential system.",
8904
9157
  "type": "object",
8905
9158
  "properties": {
8906
9159
  "identifier": {
@@ -8968,7 +9221,7 @@
8968
9221
  },
8969
9222
  "WindowAC": {
8970
9223
  "title": "WindowAC",
8971
- "description": "Window Air Conditioning cooling system (with optional heating).",
9224
+ "description": "Window Air Conditioning cooling system (with optional heating).\n\nEach room/zone will receive its own Packaged Terminal Air Conditioner (PTAC)\nwith properties set to reflect a typical window air conditioning (AC) unit.\nNo ventilation air is supplied by the unit and the cooling coil within the\nunit is a single-speed direct expansion (DX) cooling coil. Heating loads\ncan be met with various options, including several types of baseboards,\na furnace, or gas unit heaters.",
8972
9225
  "type": "object",
8973
9226
  "properties": {
8974
9227
  "identifier": {
@@ -9030,7 +9283,7 @@
9030
9283
  },
9031
9284
  "GasUnitHeater": {
9032
9285
  "title": "GasUnitHeater",
9033
- "description": "Gas unit heating system. Intended for spaces only requiring heating.",
9286
+ "description": "Gas unit heating system.\n\nGas unit systems are intended for spaces only requiring heating and no\nventilation or cooling. Each room/zone will get its own gaa heating unit\nthat satisfies the heating load.",
9034
9287
  "type": "object",
9035
9288
  "properties": {
9036
9289
  "identifier": {
@@ -9100,7 +9353,7 @@
9100
9353
  },
9101
9354
  "Radiant": {
9102
9355
  "title": "Radiant",
9103
- "description": "Low Temperature Radiant system.",
9356
+ "description": "Low temperature radiant HVAC system.\n\nThis HVAC template will change the floor and/or ceiling constructions\nof the Rooms that it is applied to, replacing them with a construction that\naligns with the radiant_type property (eg. CeilingMetalPanel).\n\nThe heating and cooling needs of the space are met with the radiant constructions,\nwhich use chilled water at 12.8C (55F) and a hot water temperature somewhere\nbetween 32.2C (90F) and 49C (120F) (warmer temperatures are used in colder\nclimate zones).\n\nNote that radiant systems are particularly limited in cooling capacity and\nusing them may result in many unmet hours. To reduce unmet hours, one can\nremove carpets, reduce internal loads, reduce solar and envelope gains during\npeak times, add thermal mass, and use an expanded comfort range.",
9104
9357
  "type": "object",
9105
9358
  "properties": {
9106
9359
  "identifier": {
@@ -9177,6 +9430,48 @@
9177
9430
  ],
9178
9431
  "additionalProperties": false
9179
9432
  },
9433
+ "DetailedHVAC": {
9434
+ "title": "DetailedHVAC",
9435
+ "description": "Detailed HVAC system object defined using IronBug or OpenStudio .NET bindings.",
9436
+ "type": "object",
9437
+ "properties": {
9438
+ "identifier": {
9439
+ "title": "Identifier",
9440
+ "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).",
9441
+ "maxLength": 100,
9442
+ "minLength": 1,
9443
+ "pattern": "^[^,;!\\n\\t]+$",
9444
+ "type": "string"
9445
+ },
9446
+ "specification": {
9447
+ "title": "Specification",
9448
+ "description": "A JSON-serializable dictionary representing the full specification of the detailed system. This can be obtained by calling the ToJson() method on any IronBug HVAC system and then serializing the resulting JSON string into a Python dictionary using the native Python json package. Note that the Rooms that the HVAC is assigned to must be specified as ThermalZones under this specification in order for the resulting Model this HVAC is a part of to be valid.",
9449
+ "type": "object"
9450
+ },
9451
+ "display_name": {
9452
+ "title": "Display Name",
9453
+ "description": "Display name of the object with no character restrictions.",
9454
+ "type": "string"
9455
+ },
9456
+ "user_data": {
9457
+ "title": "User Data",
9458
+ "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).",
9459
+ "type": "object"
9460
+ },
9461
+ "type": {
9462
+ "title": "Type",
9463
+ "default": "DetailedHVAC",
9464
+ "pattern": "^DetailedHVAC$",
9465
+ "type": "string",
9466
+ "readOnly": true
9467
+ }
9468
+ },
9469
+ "required": [
9470
+ "identifier",
9471
+ "specification"
9472
+ ],
9473
+ "additionalProperties": false
9474
+ },
9180
9475
  "SHWEquipmentType": {
9181
9476
  "title": "SHWEquipmentType",
9182
9477
  "description": "An enumeration.",
@@ -9237,8 +9532,7 @@
9237
9532
  "anyOf": [
9238
9533
  {
9239
9534
  "type": "number",
9240
- "exclusiveMinimum": 0,
9241
- "format": "double"
9535
+ "exclusiveMinimum": 0
9242
9536
  },
9243
9537
  {
9244
9538
  "$ref": "#/components/schemas/Autocalculate"
@@ -9251,8 +9545,7 @@
9251
9545
  "default": 22,
9252
9546
  "anyOf": [
9253
9547
  {
9254
- "type": "number",
9255
- "format": "double"
9548
+ "type": "number"
9256
9549
  },
9257
9550
  {
9258
9551
  "type": "string"
@@ -9463,8 +9756,7 @@
9463
9756
  {
9464
9757
  "type": "number",
9465
9758
  "minimum": 0,
9466
- "maximum": 1,
9467
- "format": "double"
9759
+ "maximum": 1
9468
9760
  }
9469
9761
  ]
9470
9762
  }
@@ -10650,7 +10942,7 @@
10650
10942
  "user_data": null,
10651
10943
  "type": "EnergyMaterial",
10652
10944
  "roughness": "MediumRough",
10653
- "thickness": 0.05,
10945
+ "thickness": 0.025,
10654
10946
  "conductivity": 0.03,
10655
10947
  "density": 43.0,
10656
10948
  "specific_heat": 1210.0,
@@ -10707,6 +10999,15 @@
10707
10999
  "visible_reflectance": 0.35,
10708
11000
  "is_specular": false
10709
11001
  },
11002
+ {
11003
+ "identifier": "Generic Context",
11004
+ "display_name": null,
11005
+ "user_data": null,
11006
+ "type": "ShadeConstruction",
11007
+ "solar_reflectance": 0.2,
11008
+ "visible_reflectance": 0.2,
11009
+ "is_specular": false
11010
+ },
10710
11011
  {
10711
11012
  "identifier": "Generic Interior Ceiling",
10712
11013
  "display_name": null,
@@ -10878,6 +11179,7 @@
10878
11179
  "interior_glass_construction": "Generic Single Pane"
10879
11180
  },
10880
11181
  "shade_construction": "Generic Shade",
11182
+ "context_construction": "Generic Context",
10881
11183
  "air_boundary_construction": "Generic Air Boundary"
10882
11184
  },
10883
11185
  "readOnly": true,
@@ -11048,6 +11350,9 @@
11048
11350
  },
11049
11351
  {
11050
11352
  "$ref": "#/components/schemas/Radiant"
11353
+ },
11354
+ {
11355
+ "$ref": "#/components/schemas/DetailedHVAC"
11051
11356
  }
11052
11357
  ]
11053
11358
  }
@@ -12595,6 +12900,18 @@
12595
12900
  "specularity": 0.0,
12596
12901
  "roughness": 0.0
12597
12902
  },
12903
+ {
12904
+ "identifier": "generic_context_0.20",
12905
+ "display_name": null,
12906
+ "type": "Plastic",
12907
+ "modifier": null,
12908
+ "dependencies": [],
12909
+ "r_reflectance": 0.2,
12910
+ "g_reflectance": 0.2,
12911
+ "b_reflectance": 0.2,
12912
+ "specularity": 0.0,
12913
+ "roughness": 0.0
12914
+ },
12598
12915
  {
12599
12916
  "identifier": "generic_interior_window_vis_0.88",
12600
12917
  "display_name": null,
@@ -12749,6 +13066,13 @@
12749
13066
  "default": "air_boundary",
12750
13067
  "readOnly": true,
12751
13068
  "type": "string"
13069
+ },
13070
+ "context_modifier": {
13071
+ "title": "Context Modifier",
13072
+ "description": "Global Honeybee Modifier for context Shades.",
13073
+ "default": "generic_context_0.20",
13074
+ "readOnly": true,
13075
+ "type": "string"
12752
13076
  }
12753
13077
  },
12754
13078
  "additionalProperties": false
@@ -13651,117 +13975,6 @@
13651
13975
  ],
13652
13976
  "additionalProperties": false
13653
13977
  },
13654
- "Color": {
13655
- "title": "Color",
13656
- "description": "A RGB color.",
13657
- "type": "object",
13658
- "properties": {
13659
- "r": {
13660
- "title": "R",
13661
- "description": "Value for red channel.",
13662
- "minimum": 0,
13663
- "maximum": 255,
13664
- "type": "integer",
13665
- "format": "int32"
13666
- },
13667
- "g": {
13668
- "title": "G",
13669
- "description": "Value for green channel.",
13670
- "minimum": 0,
13671
- "maximum": 255,
13672
- "type": "integer",
13673
- "format": "int32"
13674
- },
13675
- "b": {
13676
- "title": "B",
13677
- "description": "Value for blue channel.",
13678
- "minimum": 0,
13679
- "maximum": 255,
13680
- "type": "integer",
13681
- "format": "int32"
13682
- },
13683
- "type": {
13684
- "title": "Type",
13685
- "default": "Color",
13686
- "pattern": "^Color$",
13687
- "type": "string",
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"
13698
- }
13699
- },
13700
- "required": [
13701
- "r",
13702
- "g",
13703
- "b"
13704
- ],
13705
- "additionalProperties": false
13706
- },
13707
- "Mesh3D": {
13708
- "title": "Mesh3D",
13709
- "description": "A mesh in 3D space.",
13710
- "type": "object",
13711
- "properties": {
13712
- "vertices": {
13713
- "title": "Vertices",
13714
- "description": "A list of points representing the vertices of the mesh. The list should include at least 3 points and each point should be a list of 3 (x, y, z) values.",
13715
- "minItems": 3,
13716
- "type": "array",
13717
- "items": {
13718
- "type": "array",
13719
- "items": {
13720
- "type": "number",
13721
- "format": "double"
13722
- },
13723
- "minItems": 3,
13724
- "maxItems": 3
13725
- }
13726
- },
13727
- "faces": {
13728
- "title": "Faces",
13729
- "description": "A list of lists with each sub-list having either 3 or 4 integers. These integers correspond to indices within the list of vertices.",
13730
- "minItems": 1,
13731
- "type": "array",
13732
- "items": {
13733
- "type": "array",
13734
- "items": {
13735
- "type": "integer",
13736
- "minimum": 0,
13737
- "format": "int32"
13738
- },
13739
- "minItems": 3,
13740
- "maxItems": 4
13741
- }
13742
- },
13743
- "type": {
13744
- "title": "Type",
13745
- "default": "Mesh3D",
13746
- "pattern": "^Mesh3D$",
13747
- "type": "string",
13748
- "readOnly": true
13749
- },
13750
- "colors": {
13751
- "title": "Colors",
13752
- "description": "An optional list of colors that correspond to either the faces of the mesh or the vertices of the mesh.",
13753
- "type": "array",
13754
- "items": {
13755
- "$ref": "#/components/schemas/Color"
13756
- }
13757
- }
13758
- },
13759
- "required": [
13760
- "vertices",
13761
- "faces"
13762
- ],
13763
- "additionalProperties": false
13764
- },
13765
13978
  "SensorGrid": {
13766
13979
  "title": "SensorGrid",
13767
13980
  "description": "A grid of sensors.",
@@ -14081,6 +14294,18 @@
14081
14294
  "specularity": 0.0,
14082
14295
  "roughness": 0.0
14083
14296
  },
14297
+ {
14298
+ "identifier": "generic_context_0.20",
14299
+ "display_name": null,
14300
+ "type": "Plastic",
14301
+ "modifier": null,
14302
+ "dependencies": [],
14303
+ "r_reflectance": 0.2,
14304
+ "g_reflectance": 0.2,
14305
+ "b_reflectance": 0.2,
14306
+ "specularity": 0.0,
14307
+ "roughness": 0.0
14308
+ },
14084
14309
  {
14085
14310
  "identifier": "generic_interior_window_vis_0.88",
14086
14311
  "display_name": null,
@@ -14153,7 +14378,8 @@
14153
14378
  "interior_modifier": "generic_interior_shade_0.50",
14154
14379
  "type": "ShadeModifierSetAbridged"
14155
14380
  },
14156
- "air_boundary_modifier": "air_boundary"
14381
+ "air_boundary_modifier": "air_boundary",
14382
+ "context_modifier": "generic_context_0.20"
14157
14383
  },
14158
14384
  "readOnly": true,
14159
14385
  "allOf": [
@@ -14293,7 +14519,7 @@
14293
14519
  "version": {
14294
14520
  "title": "Version",
14295
14521
  "description": "Text string for the current version of the schema.",
14296
- "default": "1.50.5",
14522
+ "default": "1.53.4",
14297
14523
  "pattern": "([0-9]+)\\.([0-9]+)\\.([0-9]+)",
14298
14524
  "type": "string",
14299
14525
  "readOnly": true
@@ -14338,6 +14564,14 @@
14338
14564
  "$ref": "#/components/schemas/Door"
14339
14565
  }
14340
14566
  },
14567
+ "shade_meshes": {
14568
+ "title": "Shade Meshes",
14569
+ "description": "A list of ShadeMesh in the model.",
14570
+ "type": "array",
14571
+ "items": {
14572
+ "$ref": "#/components/schemas/ShadeMesh"
14573
+ }
14574
+ },
14341
14575
  "units": {
14342
14576
  "description": "Text indicating the units in which the model geometry exists. This is used to scale the geometry to the correct units for simulation engines like EnergyPlus, which requires all geometry be in meters.",
14343
14577
  "default": "Meters",
@@ -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 ShadeMesh < ModelObject
36
+
37
+ def defaults
38
+ @@schema[:components][:schemas][:ShadeMeshEnergyPropertiesAbridged][:properties]
39
+ end
40
+
41
+ end #ShadeMesh
42
+ end #Honeybee
@@ -106,15 +106,21 @@ module Honeybee
106
106
  raise 'defaults not implemented for ModelObject, override in your class'
107
107
  end
108
108
 
109
+ def self.truncate(string, max)
110
+ string.length > max ? "#{string[0...max]}..." : string
111
+ end
112
+
109
113
  # remove illegal characters in identifier
110
114
  def self.clean_name(str)
111
115
  ascii = str.encode(Encoding.find('ASCII'), **@@encoding_options)
116
+ ascii = truncate(ascii, 97)
112
117
  end
113
118
 
114
119
  # remove illegal characters in identifier
115
120
  def self.clean_identifier(str)
116
121
  encode_str = str.encode(Encoding.find('ASCII'), **@@encoding_options)
117
122
  encode_str.gsub(/[^.A-Za-z0-9_-]/, '_').gsub(' ', '_')
123
+ encode_str = truncate(encode_str, 97)
118
124
  end
119
125
 
120
126
  # Create methods to get and set display name
data/lib/honeybee.rb CHANGED
@@ -44,6 +44,7 @@ require 'honeybee/geometry/door'
44
44
  require 'honeybee/geometry/aperture'
45
45
  require 'honeybee/geometry/face'
46
46
  require 'honeybee/geometry/room'
47
+ require 'honeybee/geometry/shademesh'
47
48
 
48
49
  # import the HVAC objects
49
50
  require 'honeybee/hvac/ideal_air'
@@ -56,12 +56,14 @@ module Honeybee
56
56
  os_vertices << OpenStudio::Point3d.new(vertex[0], vertex[1], vertex[2])
57
57
  end
58
58
 
59
- # create the openstudio surface and assign the type
59
+ # create the openstudio surface
60
60
  os_surface = OpenStudio::Model::Surface.new(os_vertices, openstudio_model)
61
61
  os_surface.setName(@hash[:identifier])
62
62
  unless @hash[:display_name].nil?
63
63
  os_surface.setDisplayName(@hash[:display_name])
64
64
  end
65
+
66
+ # assign the type
65
67
  os_surface.setSurfaceType(@hash[:face_type])
66
68
 
67
69
  if @hash[:properties].key?(:energy)
@@ -219,6 +219,28 @@ module Honeybee
219
219
  end
220
220
  end
221
221
 
222
+ # overwrite the face type if E+ is going to flip the surface on us and make the geometry incorrect
223
+ face_tilt = os_surface.tilt
224
+ if face[:face_type] == 'RoofCeiling' && face_tilt > 1.57079632679
225
+ if !face[:properties][:energy][:construction]
226
+ orig_construction = os_surface.construction
227
+ unless orig_construction.empty?
228
+ orig_construction = orig_construction.get
229
+ os_surface.setConstruction(orig_construction)
230
+ end
231
+ end
232
+ os_surface.setSurfaceType('Wall')
233
+ elsif face[:face_type] == 'Floor' && face_tilt < 1.57079632679
234
+ if !face[:properties][:energy][:construction]
235
+ orig_construction = os_surface.construction
236
+ unless orig_construction.empty?
237
+ orig_construction = orig_construction.get
238
+ os_surface.setConstruction(orig_construction)
239
+ end
240
+ end
241
+ os_surface.setSurfaceType('Wall')
242
+ end
243
+
222
244
  # assign air boundaries
223
245
  if face[:face_type] == 'AirBoundary'
224
246
  # assign default air boundary construction for AirBoundary face types
@@ -0,0 +1,91 @@
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/geometry/shademesh'
33
+
34
+ require 'to_openstudio/model_object'
35
+
36
+ module Honeybee
37
+ class ShadeMesh
38
+
39
+ def to_openstudio(openstudio_model)
40
+ # get the vertices from the face
41
+ hb_verts = @hash[:geometry][:vertices]
42
+ hb_faces = @hash[:geometry][:faces]
43
+
44
+ # loop through each mesh face and make it a shading surface
45
+ os_shading_surfaces = []
46
+ hb_faces.each_with_index do |face_indices, index|
47
+ # ensure that vertices are correctly ordered with the upper-left corner
48
+ os_vertices = OpenStudio::Point3dVector.new
49
+ face_indices.each do |vertex_index|
50
+ vertex = hb_verts[vertex_index]
51
+ os_vertices << OpenStudio::Point3d.new(vertex[0], vertex[1], vertex[2])
52
+ end
53
+ os_vertices = OpenStudio.reorderULC(os_vertices)
54
+
55
+ # create the openstudio shading surface
56
+ os_shading_surface = OpenStudio::Model::ShadingSurface.new(os_vertices, openstudio_model)
57
+ os_shading_surface.setName(@hash[:identifier] + "..#{index}")
58
+ unless @hash[:display_name].nil?
59
+ os_shading_surface.setDisplayName(@hash[:display_name])
60
+ end
61
+
62
+ if @hash[:properties].key?(:energy)
63
+ # assign the construction if it exists
64
+ if @hash[:properties][:energy][:construction]
65
+ construction_identifier = @hash[:properties][:energy][:construction]
66
+ construction = openstudio_model.getConstructionByName(construction_identifier)
67
+ unless construction.empty?
68
+ os_construction = construction.get
69
+ os_shading_surface.setConstruction(os_construction)
70
+ end
71
+ end
72
+
73
+ # assign the transmittance schedule if it exists
74
+ if @hash[:properties][:energy][:transmittance_schedule]
75
+ schedule_identifier = @hash[:properties][:energy][:transmittance_schedule]
76
+ schedule = openstudio_model.getScheduleByName(schedule_identifier)
77
+ unless schedule.empty?
78
+ os_schedule = schedule.get
79
+ os_shading_surface.setTransmittanceSchedule(os_schedule)
80
+ end
81
+ end
82
+ end
83
+
84
+ os_shading_surfaces << os_shading_surface
85
+ end
86
+
87
+ os_shading_surfaces
88
+ end
89
+
90
+ end #ShadeMesh
91
+ end #Honeybee
@@ -216,6 +216,7 @@ module Honeybee
216
216
  create_orphaned_faces
217
217
  create_orphaned_apertures
218
218
  create_orphaned_doors
219
+ create_shade_meshes
219
220
  end
220
221
 
221
222
  def create_materials(material_dicts, check_existing=false)
@@ -673,6 +674,27 @@ module Honeybee
673
674
  end
674
675
  end
675
676
 
677
+ def create_shade_meshes
678
+ if @hash[:shade_meshes]
679
+ @hash[:shade_meshes].each do |shade_mesh|
680
+ shade_mesh_object = ShadeMesh.new(shade_mesh)
681
+ openstudio_shades = shade_mesh_object.to_openstudio(@openstudio_model)
682
+
683
+ if $orphan_groups
684
+ shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
685
+ shading_surface_group.setShadingSurfaceType('Building')
686
+ shading_surface_group.setName(shade_mesh[:identifier])
687
+ unless shade_mesh[:display_name].nil?
688
+ shading_surface_group.setDisplayName(shade_mesh[:display_name])
689
+ end
690
+ openstudio_shades.each do |openstudio_shade|
691
+ openstudio_shade.setShadingSurfaceGroup(shading_surface_group)
692
+ end
693
+ end
694
+ end
695
+ end
696
+ end
697
+
676
698
  #TODO: create runlog for errors.
677
699
 
678
700
  end # Model
data/lib/to_openstudio.rb CHANGED
@@ -44,6 +44,7 @@ require 'to_openstudio/geometry/door'
44
44
  require 'to_openstudio/geometry/aperture'
45
45
  require 'to_openstudio/geometry/face'
46
46
  require 'to_openstudio/geometry/room'
47
+ require 'to_openstudio/geometry/shademesh'
47
48
 
48
49
  # extend the HVAC objects
49
50
  require 'to_openstudio/hvac/ideal_air'
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.35.2
4
+ version: 2.36.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: 2023-11-10 00:00:00.000000000 Z
14
+ date: 2023-11-26 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: json_pure
@@ -138,6 +138,7 @@ files:
138
138
  - lib/honeybee/geometry/face.rb
139
139
  - lib/honeybee/geometry/room.rb
140
140
  - lib/honeybee/geometry/shade.rb
141
+ - lib/honeybee/geometry/shademesh.rb
141
142
  - lib/honeybee/hvac/ideal_air.rb
142
143
  - lib/honeybee/hvac/template.rb
143
144
  - lib/honeybee/internalmass.rb
@@ -229,6 +230,7 @@ files:
229
230
  - lib/to_openstudio/geometry/face.rb
230
231
  - lib/to_openstudio/geometry/room.rb
231
232
  - lib/to_openstudio/geometry/shade.rb
233
+ - lib/to_openstudio/geometry/shademesh.rb
232
234
  - lib/to_openstudio/hvac/Model.hvac.rb
233
235
  - lib/to_openstudio/hvac/ideal_air.rb
234
236
  - lib/to_openstudio/hvac/radiant.rb