honeybee-openstudio 2.19.1 → 2.20.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0eef1a93d808c013a2940a86c57362e8eaf8351b3f17be46472b3bf4369fa96
4
- data.tar.gz: 7d0cc499fa57dba16782d3b36e6ab2ec84fbd6e83c2b50e90f7f8552441ff272
3
+ metadata.gz: 033a258c4b365b57e5985771e4b9c78b565f43e042ef0fe5e37ee378458842f0
4
+ data.tar.gz: 35df9c37614ef5bb2846475cd79a29490835808e156d8a570aaa12352dcb5205
5
5
  SHA512:
6
- metadata.gz: 94773eda8ad2683003c60a8c3bf55dae393a91c6f131620f190d82afeaf22f3a04605fd6acc32565df51b626a0528fe48be7e9d3f5f0fe0736198bec16eb55e1
7
- data.tar.gz: 202bee1bd7374d2b6a682b4457b218c4a6b3da7ae570377b0823ae4a0efbdd9426de237264b4c75a0b4b03084c35e94d1d7f4b9807c7ba5b48df06a397d08af0
6
+ metadata.gz: 575891d5a88970749d0177c9463db77529cd37e1a118940f8dd68f0a77ee33bd6ade3fe291ec07d655dddb1b0342ef9dede96139b397759d3442a54008a5e3c3
7
+ data.tar.gz: faf995c65be826b73ca7140fd77a7f6c55f87e2150abbe48b0374063329fc9a6d8ba58ab04cb79f60e8fc2b6115aa1f96570e3c8de880dc07835f6f352958d0c
@@ -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.19.1'
7
+ spec.version = '2.20.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
 
@@ -35,6 +35,7 @@ require 'honeybee'
35
35
  # extend the compound objects that house the other objects
36
36
  require 'from_openstudio/model'
37
37
  require 'from_openstudio/model_object'
38
+ require 'from_openstudio/construction_set'
38
39
 
39
40
  # extend the geometry objects
40
41
  require 'from_openstudio/geometry/aperture'
@@ -0,0 +1,141 @@
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/construction_set'
33
+ require 'from_openstudio/model_object'
34
+
35
+ module Honeybee
36
+ class ConstructionSetAbridged < ModelObject
37
+
38
+ def self.from_construction_set(construction_set)
39
+ # create an empty hash
40
+ hash = {}
41
+ hash[:type] = 'ConstructionSetAbridged'
42
+ # set hash values from OpenStudio Object
43
+ hash[:identifier] = construction_set.nameString
44
+ hash[:wall_set] = {}
45
+ hash[:floor_set] = {}
46
+ hash[:aperture_set] = {}
47
+ hash[:door_set] = {}
48
+ hash[:roof_ceiling_set] = {}
49
+
50
+ # get interior surface constructions
51
+ unless construction_set.defaultInteriorSurfaceConstructions.empty?
52
+ int_surf_construction = construction_set.defaultInteriorSurfaceConstructions.get
53
+ # get interior wall construction
54
+ unless int_surf_construction.wallConstruction.empty?
55
+ int_wall_const = int_surf_construction.wallConstruction.get
56
+ hash[:wall_set][:interior_construction] = int_wall_const.nameString
57
+ end
58
+ # get interior floor construction
59
+ unless int_surf_construction.floorConstruction.empty?
60
+ int_floor_const = int_surf_construction.floorConstruction.get
61
+ hash[:floor_set][:interior_construction] = int_floor_const.nameString
62
+ end
63
+ # get interior roofceiling construction
64
+ unless int_surf_construction.roofCeilingConstruction.empty?
65
+ int_roof_const = int_surf_construction.roofCeilingConstruction.get
66
+ hash[:roof_ceiling_set][:interior_construction] = int_roof_const.nameString
67
+ end
68
+ end
69
+
70
+ # get interior subsurface constructions
71
+ unless construction_set.defaultInteriorSubSurfaceConstructions.empty?
72
+ int_subsurf_const = construction_set.defaultInteriorSubSurfaceConstructions.get
73
+ # TODO: check outdoor boundary condition for fixed window and operable window and assign to
74
+ # interior_construction for aperture
75
+ # get interior fixed window construction
76
+ unless int_subsurf_const.fixedWindowConstruction.empty?
77
+ int_wind_const = int_subsurf_const.fixedWindowConstruction.get
78
+ hash[:aperture_set][:window_construction] = int_wind_const.nameString
79
+ end
80
+ # get interior door construction
81
+ unless int_subsurf_const.doorConstruction.empty?
82
+ int_door_const = int_subsurf_const.doorConstruction.get
83
+ hash[:door_set][:interior_construction] = int_door_const.nameString
84
+ end
85
+ # get interior glass door construction
86
+ unless int_subsurf_const.glassDoorConstruction.empty?
87
+ int_glass_door_const = int_subsurf_const.glassDoorConstruction.get
88
+ hash[:door_set][:interior_glass_construction] = int_glass_door_const.nameString
89
+ end
90
+ end
91
+
92
+ # get exterior surface constructions
93
+ unless construction_set.defaultExteriorSurfaceConstructions.empty?
94
+ ext_surf_const = construction_set.defaultExteriorSurfaceConstructions.get
95
+ # get exterior wall construction
96
+ unless ext_surf_const.wallConstruction.empty?
97
+ ext_wall_const = ext_surf_const.wallConstruction.get
98
+ hash[:wall_set][:exterior_construction] = ext_wall_const.nameString
99
+ end
100
+ # get exterior floor construction
101
+ unless ext_surf_const.floorConstruction.empty?
102
+ ext_floor_const = ext_surf_const.floorConstruction.get
103
+ hash[:floor_set][:exterior_construction] = ext_floor_const.nameString
104
+ end
105
+ # get exterior roofceiling construction
106
+ unless ext_surf_const.roofCeilingConstruction.empty?
107
+ ext_roof_const = ext_surf_const.roofCeilingConstruction.get
108
+ hash[:roof_ceiling_set][:exterior_construction] = ext_roof_const.nameString
109
+ end
110
+ end
111
+
112
+ # get exterior subsurface construction
113
+ unless construction_set.defaultExteriorSubSurfaceConstructions.empty?
114
+ ext_subsurf_const = construction_set.defaultExteriorSubSurfaceConstructions.get
115
+ # get exterior operable window construction
116
+ unless ext_subsurf_const.operableWindowConstruction.empty?
117
+ ext_wind_const = ext_subsurf_const.operableWindowConstruction.get
118
+ hash[:aperture_set][:operable_construction] = ext_wind_const.nameString
119
+ end
120
+ # get exterior skylight construction
121
+ unless ext_subsurf_const.skylightConstruction.empty?
122
+ ext_skylight_const = ext_subsurf_const.skylightConstruction.get
123
+ hash[:aperture_set][:skylight_construction] = ext_skylight_const.nameString
124
+ end
125
+ # get exterior door construction
126
+ unless ext_subsurf_const.doorConstruction.empty?
127
+ ext_door_const = ext_subsurf_const.doorConstruction.get
128
+ hash[:door_set][:exterior_construction] = ext_door_const.nameString
129
+ end
130
+ # get exterior overhead door construction
131
+ unless ext_subsurf_const.overheadDoorConstruction.empty?
132
+ ext_ovhd_door_const = ext_subsurf_const.overheadDoorConstruction.get
133
+ hash[:door_set][:overhead_construction] = ext_ovhd_door_const.nameString
134
+ end
135
+ end
136
+
137
+ hash
138
+
139
+ end
140
+ end # ConstructionSetAbridged
141
+ end # Honeybee
@@ -45,6 +45,7 @@ require 'from_openstudio/construction/air'
45
45
  require 'from_openstudio/construction/opaque'
46
46
  require 'from_openstudio/construction/window'
47
47
  require 'from_openstudio/construction/shade'
48
+ require 'from_openstudio/construction_set'
48
49
 
49
50
  require 'openstudio'
50
51
 
@@ -65,6 +66,7 @@ module Honeybee
65
66
  $opaque_constructions = {}
66
67
  $window_constructions = {}
67
68
  $shade_constructions = {}
69
+
68
70
  hash[:properties] = properties_from_model(openstudio_model)
69
71
 
70
72
  rooms = rooms_from_model(openstudio_model)
@@ -127,7 +129,9 @@ module Honeybee
127
129
  hash[:constructions] = []
128
130
  hash[:constructions] = constructions_from_model(openstudio_model)
129
131
  hash[:materials] = materials_from_model(openstudio_model)
130
-
132
+ hash[:construction_sets] = []
133
+ hash[:construction_sets] = constructionsets_from_model(openstudio_model)
134
+
131
135
  hash
132
136
  end
133
137
 
@@ -239,6 +243,17 @@ module Honeybee
239
243
  result
240
244
  end
241
245
 
246
+ # Create HB ConstructionSets from OpenStudio Construction Set
247
+ def self.constructionsets_from_model(openstudio_model)
248
+ result = []
249
+
250
+ openstudio_model.getDefaultConstructionSets.each do |construction_set|
251
+ result << ConstructionSetAbridged.from_construction_set(construction_set)
252
+ end
253
+
254
+ result
255
+ end
256
+
242
257
  def self.shade_constructions_from_model(shade_constructions)
243
258
  result = []
244
259
 
@@ -34,7 +34,7 @@ require 'honeybee/model_object'
34
34
  module Honeybee
35
35
  class ConstructionSetAbridged < ModelObject
36
36
 
37
- def defaults
37
+ def self.defaults
38
38
  @@schema[:components][:schemas][:ConstructionSetAbridged][:properties]
39
39
  end
40
40
 
@@ -140,6 +140,8 @@ module Honeybee
140
140
  @hash[:aperture_set][:window_construction])
141
141
  unless window_ref.empty?
142
142
  window_aperture = window_ref.get
143
+ #TODO: This looks wrong, it should be set to interior subsurface construction since
144
+ #window_construction apertures have a surface boundary condition.
143
145
  ext_subsurf_const.setFixedWindowConstruction(window_aperture)
144
146
  end
145
147
  end
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.19.1
4
+ version: 2.20.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: 2021-06-22 00:00:00.000000000 Z
14
+ date: 2021-07-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -172,6 +172,7 @@ files:
172
172
  - lib/from_openstudio/construction/opaque.rb
173
173
  - lib/from_openstudio/construction/shade.rb
174
174
  - lib/from_openstudio/construction/window.rb
175
+ - lib/from_openstudio/construction_set.rb
175
176
  - lib/from_openstudio/geometry/aperture.rb
176
177
  - lib/from_openstudio/geometry/door.rb
177
178
  - lib/from_openstudio/geometry/face.rb