honeybee-openstudio 2.27.0 → 2.28.1
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/.github/workflows/ci.yaml +2 -2
- data/Gemfile +1 -1
- data/honeybee-openstudio.gemspec +3 -3
- data/lib/files/urbanopt_Gemfile +1 -1
- data/lib/from_openstudio/construction/shade.rb +1 -1
- data/lib/from_openstudio/geometry/aperture.rb +1 -1
- data/lib/from_openstudio/geometry/door.rb +1 -1
- data/lib/from_openstudio/geometry/face.rb +1 -1
- data/lib/from_openstudio/geometry/shade.rb +2 -2
- data/lib/measures/from_honeybee_model_to_gbxml/measure.rb +0 -7
- data/lib/to_openstudio/geometry/aperture.rb +45 -0
- data/lib/to_openstudio/geometry/door.rb +47 -0
- data/lib/to_openstudio/geometry/face.rb +65 -0
- data/lib/to_openstudio/geometry/room.rb +2 -2
- data/lib/to_openstudio/load/service_hot_water.rb +1 -1
- data/lib/to_openstudio/model.rb +21 -6
- data/lib/to_openstudio/simulation/parameter_model.rb +11 -3
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f46d6897c585ff7082971de6ff24b62e1d4213697bb9e3fb08a9b4eefd069a6d
|
4
|
+
data.tar.gz: 4c231dc4b6622e5d9871eddb54e6b6e32ebb5302183372845ea690552f0407f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a9192fca6bf36375576eb5fd7efb3f104e4ed34b2607e8d80c36ce60f272cdd7c62b1badb4a43f1c0daa0e813b63e5dffc407e25032172c045d7523b5f05e7d
|
7
|
+
data.tar.gz: e2533183332b489d8ba275feddf184c56f7cdca3a5bb561ce9ae7ad6af3177b9983b57872a1623c316a1d4b3ddea060dec1ab2714429edbe1a450928c5a5bb01
|
data/.github/workflows/ci.yaml
CHANGED
@@ -15,8 +15,8 @@ jobs:
|
|
15
15
|
run: |
|
16
16
|
echo $(pwd)
|
17
17
|
echo $(ls)
|
18
|
-
docker pull nrel/openstudio:3.
|
19
|
-
docker run --name test --rm -d -t -v $(pwd):/work -w /work nrel/openstudio:3.
|
18
|
+
docker pull nrel/openstudio:3.3.0
|
19
|
+
docker run --name test --rm -d -t -v $(pwd):/work -w /work nrel/openstudio:3.3.0
|
20
20
|
docker exec -t test pwd
|
21
21
|
docker exec -t test ls
|
22
22
|
docker exec -t test bundle update
|
data/Gemfile
CHANGED
@@ -7,7 +7,7 @@ gemspec
|
|
7
7
|
if File.exist?('../OpenStudio-extension-gem') # local development copy
|
8
8
|
gem 'openstudio-extension', path: '../OpenStudio-extension-gem'
|
9
9
|
else # get it from rubygems.org
|
10
|
-
gem 'openstudio-extension', '0.
|
10
|
+
gem 'openstudio-extension', '0.5.1'
|
11
11
|
end
|
12
12
|
|
13
13
|
# coveralls gem is used to generate coverage reports through CI
|
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.28.1'
|
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
|
|
@@ -33,6 +33,6 @@ Gem::Specification.new do |spec|
|
|
33
33
|
end
|
34
34
|
|
35
35
|
spec.add_dependency 'json_pure'
|
36
|
-
spec.add_dependency 'openstudio-extension', '0.
|
37
|
-
spec.add_dependency 'openstudio-standards', '~> 0.2.
|
36
|
+
spec.add_dependency 'openstudio-extension', '0.5.1'
|
37
|
+
spec.add_dependency 'openstudio-standards', '~> 0.2.15'
|
38
38
|
end
|
data/lib/files/urbanopt_Gemfile
CHANGED
@@ -40,7 +40,7 @@ module Honeybee
|
|
40
40
|
hash = {}
|
41
41
|
hash[:type] = 'ShadeConstruction'
|
42
42
|
# set hash values from OpenStudio Object
|
43
|
-
hash[:identifier] = clean_name(construction.nameString)
|
43
|
+
hash[:identifier] = clean_name(construction.nameString) + ' Shade'
|
44
44
|
unless construction.displayName.empty?
|
45
45
|
hash[:display_name] = (construction.displayName.get).force_encoding("UTF-8")
|
46
46
|
end
|
@@ -72,7 +72,7 @@ module Honeybee
|
|
72
72
|
unless sub_surface.isConstructionDefaulted
|
73
73
|
construction = sub_surface.construction
|
74
74
|
if !construction.empty?
|
75
|
-
constr_id =
|
75
|
+
constr_id = clean_name(construction.get.nameString)
|
76
76
|
unless $window_constructions[constr_id].nil?
|
77
77
|
hash[:construction] = constr_id
|
78
78
|
end
|
@@ -72,7 +72,7 @@ module Honeybee
|
|
72
72
|
unless sub_surface.isConstructionDefaulted
|
73
73
|
construction = sub_surface.construction
|
74
74
|
if !construction.empty?
|
75
|
-
constr_id =
|
75
|
+
constr_id = clean_name(construction.get.nameString)
|
76
76
|
if hash[:is_glass] && !$window_constructions[constr_id].nil?
|
77
77
|
hash[:construction] = constr_id
|
78
78
|
elsif !hash[:is_glass] && !$opaque_constructions[constr_id].nil?
|
@@ -74,7 +74,7 @@ module Honeybee
|
|
74
74
|
unless surface.isConstructionDefaulted
|
75
75
|
construction = surface.construction
|
76
76
|
if !construction.empty?
|
77
|
-
constr_id =
|
77
|
+
constr_id = clean_name(construction.get.nameString)
|
78
78
|
unless $opaque_constructions[constr_id].nil?
|
79
79
|
hash[:construction] = constr_id
|
80
80
|
end
|
@@ -62,7 +62,7 @@ module Honeybee
|
|
62
62
|
unless shading_surface.isConstructionDefaulted
|
63
63
|
construction = shading_surface.construction
|
64
64
|
if !construction.empty?
|
65
|
-
const_name =
|
65
|
+
const_name = clean_name(construction.get.nameString) + ' Shade'
|
66
66
|
hash[:construction] = const_name
|
67
67
|
unless $shade_constructions.has_key?(const_name)
|
68
68
|
const_obj = construction.get
|
@@ -74,7 +74,7 @@ module Honeybee
|
|
74
74
|
|
75
75
|
transmittance_schedule = shading_surface.transmittanceSchedule
|
76
76
|
if !transmittance_schedule.empty?
|
77
|
-
trans_sch_name =
|
77
|
+
trans_sch_name = clean_name(transmittance_schedule.get.nameString)
|
78
78
|
# Check whether schedules other than schedule ruleset or schedule fixed interval are
|
79
79
|
# being assigned
|
80
80
|
unless $schedules[trans_sch_name].nil?
|
@@ -91,13 +91,6 @@ class FromHoneybeeModelToGbxml < OpenStudio::Measure::ModelMeasure
|
|
91
91
|
os_model = honeybee_model.to_openstudio_model(model)
|
92
92
|
STDOUT.flush
|
93
93
|
|
94
|
-
# make sure the zone name is different from the space name to comply with gbXML
|
95
|
-
zones = os_model.getThermalZones()
|
96
|
-
zones.each do |zone|
|
97
|
-
zone_name = zone.name.to_s + '_Zone'
|
98
|
-
zone.setName(zone_name)
|
99
|
-
end
|
100
|
-
|
101
94
|
# convert the OpenStudio model into a gbXML Model
|
102
95
|
output_file_path = runner.getStringArgumentValue('output_file_path', user_arguments)
|
103
96
|
if output_file_path && !output_file_path.empty?
|
@@ -160,5 +160,50 @@ module Honeybee
|
|
160
160
|
|
161
161
|
return result
|
162
162
|
end
|
163
|
+
|
164
|
+
def to_openstudio_shade(openstudio_model, shading_surface_group)
|
165
|
+
# get the vertices from the aperture
|
166
|
+
if @hash[:geometry][:vertices].nil?
|
167
|
+
hb_verts = @hash[:geometry][:boundary]
|
168
|
+
else
|
169
|
+
hb_verts = @hash[:geometry][:vertices]
|
170
|
+
end
|
171
|
+
|
172
|
+
# create the openstudio shading surface
|
173
|
+
os_vertices = OpenStudio::Point3dVector.new
|
174
|
+
hb_verts.each do |vertex|
|
175
|
+
os_vertices << OpenStudio::Point3d.new(vertex[0], vertex[1], vertex[2])
|
176
|
+
end
|
177
|
+
reordered_vertices = OpenStudio.reorderULC(os_vertices)
|
178
|
+
|
179
|
+
os_shading_surface = OpenStudio::Model::ShadingSurface.new(reordered_vertices, openstudio_model)
|
180
|
+
os_shading_surface.setName(@hash[:identifier])
|
181
|
+
unless @hash[:display_name].nil?
|
182
|
+
os_shading_surface.setDisplayName(@hash[:display_name])
|
183
|
+
end
|
184
|
+
|
185
|
+
# get the approriate construction id
|
186
|
+
construction_id = nil
|
187
|
+
if @hash[:properties][:energy][:construction]
|
188
|
+
construction_id = @hash[:properties][:energy][:construction]
|
189
|
+
else
|
190
|
+
construction_id = 'Generic Double Pane'
|
191
|
+
end
|
192
|
+
|
193
|
+
# assign the construction
|
194
|
+
unless construction_id.nil?
|
195
|
+
construction = openstudio_model.getConstructionByName(construction_id)
|
196
|
+
unless construction.empty?
|
197
|
+
os_construction = construction.get
|
198
|
+
os_shading_surface.setConstruction(os_construction)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
# add the shade to the group
|
203
|
+
os_shading_surface.setShadingSurfaceGroup(shading_surface_group)
|
204
|
+
|
205
|
+
os_shading_surface
|
206
|
+
end
|
207
|
+
|
163
208
|
end # Aperture
|
164
209
|
end # Honeybee
|
@@ -154,4 +154,51 @@ module Honeybee
|
|
154
154
|
return result
|
155
155
|
end
|
156
156
|
end # Door
|
157
|
+
|
158
|
+
def to_openstudio_shade(openstudio_model, shading_surface_group)
|
159
|
+
# get the vertices from the door
|
160
|
+
if @hash[:geometry][:vertices].nil?
|
161
|
+
hb_verts = @hash[:geometry][:boundary]
|
162
|
+
else
|
163
|
+
hb_verts = @hash[:geometry][:vertices]
|
164
|
+
end
|
165
|
+
|
166
|
+
# create the openstudio shading surface
|
167
|
+
os_vertices = OpenStudio::Point3dVector.new
|
168
|
+
hb_verts.each do |vertex|
|
169
|
+
os_vertices << OpenStudio::Point3d.new(vertex[0], vertex[1], vertex[2])
|
170
|
+
end
|
171
|
+
reordered_vertices = OpenStudio.reorderULC(os_vertices)
|
172
|
+
|
173
|
+
os_shading_surface = OpenStudio::Model::ShadingSurface.new(reordered_vertices, openstudio_model)
|
174
|
+
os_shading_surface.setName(@hash[:identifier])
|
175
|
+
unless @hash[:display_name].nil?
|
176
|
+
os_shading_surface.setDisplayName(@hash[:display_name])
|
177
|
+
end
|
178
|
+
|
179
|
+
# get the approriate construction id
|
180
|
+
construction_id = nil
|
181
|
+
if @hash[:properties][:energy][:construction]
|
182
|
+
construction_id = @hash[:properties][:energy][:construction]
|
183
|
+
elsif @hash[:is_glass] == true
|
184
|
+
construction_id = 'Generic Double Pane'
|
185
|
+
else
|
186
|
+
construction_id = 'Generic Exterior Door'
|
187
|
+
end
|
188
|
+
|
189
|
+
# assign the construction
|
190
|
+
unless construction_id.nil?
|
191
|
+
construction = openstudio_model.getConstructionByName(construction_id)
|
192
|
+
unless construction.empty?
|
193
|
+
os_construction = construction.get
|
194
|
+
os_shading_surface.setConstruction(os_construction)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
# add the shade to the group
|
199
|
+
os_shading_surface.setShadingSurfaceGroup(shading_surface_group)
|
200
|
+
|
201
|
+
os_shading_surface
|
202
|
+
end
|
203
|
+
|
157
204
|
end # Honeybee
|
@@ -184,5 +184,70 @@ module Honeybee
|
|
184
184
|
|
185
185
|
os_surface
|
186
186
|
end
|
187
|
+
|
188
|
+
def to_openstudio_shade(openstudio_model, shading_surface_group)
|
189
|
+
# get the vertices from the face
|
190
|
+
if @hash[:geometry][:vertices].nil?
|
191
|
+
hb_verts = @hash[:geometry][:boundary]
|
192
|
+
else
|
193
|
+
hb_verts = @hash[:geometry][:vertices]
|
194
|
+
end
|
195
|
+
|
196
|
+
# create the openstudio shading surface
|
197
|
+
os_vertices = OpenStudio::Point3dVector.new
|
198
|
+
hb_verts.each do |vertex|
|
199
|
+
os_vertices << OpenStudio::Point3d.new(vertex[0], vertex[1], vertex[2])
|
200
|
+
end
|
201
|
+
reordered_vertices = OpenStudio.reorderULC(os_vertices)
|
202
|
+
|
203
|
+
os_shading_surface = OpenStudio::Model::ShadingSurface.new(reordered_vertices, openstudio_model)
|
204
|
+
os_shading_surface.setName(@hash[:identifier])
|
205
|
+
unless @hash[:display_name].nil?
|
206
|
+
os_shading_surface.setDisplayName(@hash[:display_name])
|
207
|
+
end
|
208
|
+
|
209
|
+
# get the approriate construction id
|
210
|
+
construction_id = nil
|
211
|
+
if @hash[:properties][:energy][:construction]
|
212
|
+
construction_id = @hash[:properties][:energy][:construction]
|
213
|
+
elsif @hash[:face_type] == 'Wall'
|
214
|
+
construction_id = 'Generic Exterior Wall'
|
215
|
+
elsif @hash[:face_type] == 'RoofCeiling'
|
216
|
+
construction_id = 'Generic Roof'
|
217
|
+
elsif @hash[:face_type] == 'Floor'
|
218
|
+
construction_id = 'Generic Exposed Floor'
|
219
|
+
end
|
220
|
+
|
221
|
+
# assign the construction
|
222
|
+
unless construction_id.nil?
|
223
|
+
construction = openstudio_model.getConstructionByName(construction_id)
|
224
|
+
unless construction.empty?
|
225
|
+
os_construction = construction.get
|
226
|
+
os_shading_surface.setConstruction(os_construction)
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
# add the shade to the group
|
231
|
+
os_shading_surface.setShadingSurfaceGroup(shading_surface_group)
|
232
|
+
|
233
|
+
# convert the apertures to shade objects
|
234
|
+
if @hash[:apertures]
|
235
|
+
@hash[:apertures].each do |aperture|
|
236
|
+
hb_aperture = Aperture.new(aperture)
|
237
|
+
os_subsurface_aperture = hb_aperture.to_openstudio_shade(openstudio_model, shading_surface_group)
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
# convert the apertures to shade objects
|
242
|
+
if @hash[:doors]
|
243
|
+
@hash[:doors].each do |door|
|
244
|
+
hb_door = Door.new(door)
|
245
|
+
os_subsurface_door = hb_door.to_openstudio_shade(openstudio_model, shading_surface_group)
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
os_shading_surface
|
250
|
+
end
|
251
|
+
|
187
252
|
end # Face
|
188
253
|
end # Honeybee
|
@@ -39,7 +39,7 @@ module Honeybee
|
|
39
39
|
attr_reader :unique_space_type
|
40
40
|
|
41
41
|
def find_existing_openstudio_object(openstudio_model)
|
42
|
-
model_space = openstudio_model.getSpaceByName(@hash[:identifier])
|
42
|
+
model_space = openstudio_model.getSpaceByName(@hash[:identifier] + '_Space')
|
43
43
|
return model_space.get unless model_space.empty?
|
44
44
|
nil
|
45
45
|
end
|
@@ -75,7 +75,7 @@ module Honeybee
|
|
75
75
|
def to_openstudio(openstudio_model)
|
76
76
|
# create the space and thermal zone
|
77
77
|
os_space = OpenStudio::Model::Space.new(openstudio_model)
|
78
|
-
os_space.setName(@hash[:identifier])
|
78
|
+
os_space.setName(@hash[:identifier] + '_Space')
|
79
79
|
unless @hash[:display_name].nil?
|
80
80
|
os_space.setDisplayName(@hash[:display_name])
|
81
81
|
end
|
@@ -234,7 +234,7 @@ module Honeybee
|
|
234
234
|
# create water use equipment + connection and set identifier
|
235
235
|
os_shw_def = OpenStudio::Model::WaterUseEquipmentDefinition.new(openstudio_model)
|
236
236
|
os_shw = OpenStudio::Model::WaterUseEquipment.new(os_shw_def)
|
237
|
-
unique_id = @hash[:identifier] + '..' + os_space.nameString
|
237
|
+
unique_id = @hash[:identifier] + '..' + os_space.nameString[0...-6]
|
238
238
|
os_shw_def.setName(unique_id)
|
239
239
|
os_shw.setName(unique_id)
|
240
240
|
|
data/lib/to_openstudio/model.rb
CHANGED
@@ -591,28 +591,43 @@ module Honeybee
|
|
591
591
|
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
592
592
|
shading_surface_group.setShadingSurfaceType('Building')
|
593
593
|
@hash[:orphaned_shades].each do |shade|
|
594
|
-
|
595
|
-
|
596
|
-
|
594
|
+
shade_object = Shade.new(shade)
|
595
|
+
openstudio_shade = shade_object.to_openstudio(@openstudio_model)
|
596
|
+
openstudio_shade.setShadingSurfaceGroup(shading_surface_group)
|
597
597
|
end
|
598
598
|
end
|
599
599
|
end
|
600
600
|
|
601
601
|
def create_orphaned_faces
|
602
602
|
if @hash[:orphaned_faces]
|
603
|
-
|
603
|
+
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
604
|
+
shading_surface_group.setShadingSurfaceType('Building')
|
605
|
+
@hash[:orphaned_faces].each do |face|
|
606
|
+
face_object = Face.new(face)
|
607
|
+
openstudio_shade = face_object.to_openstudio_shade(@openstudio_model, shading_surface_group)
|
608
|
+
end
|
604
609
|
end
|
605
610
|
end
|
606
611
|
|
607
612
|
def create_orphaned_apertures
|
608
613
|
if @hash[:orphaned_apertures]
|
609
|
-
|
614
|
+
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
615
|
+
shading_surface_group.setShadingSurfaceType('Building')
|
616
|
+
@hash[:orphaned_apertures].each do |ap|
|
617
|
+
ap_object = Aperture.new(ap)
|
618
|
+
openstudio_shade = ap_object.to_openstudio_shade(@openstudio_model, shading_surface_group)
|
619
|
+
end
|
610
620
|
end
|
611
621
|
end
|
612
622
|
|
613
623
|
def create_orphaned_doors
|
614
624
|
if @hash[:orphaned_doors]
|
615
|
-
|
625
|
+
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
626
|
+
shading_surface_group.setShadingSurfaceType('Building')
|
627
|
+
@hash[:orphaned_doors].each do |dr|
|
628
|
+
dr_object = Door.new(dr)
|
629
|
+
openstudio_shade = dr_object.to_openstudio_shade(@openstudio_model, shading_surface_group)
|
630
|
+
end
|
616
631
|
end
|
617
632
|
end
|
618
633
|
|
@@ -145,13 +145,24 @@ module Honeybee
|
|
145
145
|
os_sizing_par.setCoolingSizingFactor(@hash[:sizing_parameter][:cooling_factor])
|
146
146
|
end
|
147
147
|
# set any design days
|
148
|
+
db_temps = []
|
148
149
|
if @hash[:sizing_parameter][:design_days]
|
149
150
|
@hash[:sizing_parameter][:design_days].each do |des_day|
|
150
151
|
des_day_object = DesignDay.new(des_day)
|
151
152
|
os_des_day = des_day_object.to_openstudio(@openstudio_model)
|
153
|
+
db_temps << des_day[:dry_bulb_condition][:dry_bulb_max]
|
152
154
|
end
|
153
155
|
end
|
154
156
|
end
|
157
|
+
# use the average of design day temperatures to set the water mains temperature
|
158
|
+
os_water_mains = @openstudio_model.getSiteWaterMainsTemperature
|
159
|
+
os_water_mains.setCalculationMethod('Correlation')
|
160
|
+
if db_temps.length > 0
|
161
|
+
os_water_mains.setAnnualAverageOutdoorAirTemperature((db_temps.max + db_temps.min) / 2)
|
162
|
+
else # just use some dummy values so that the simulation does not fail
|
163
|
+
os_water_mains.setAnnualAverageOutdoorAirTemperature(12)
|
164
|
+
end
|
165
|
+
os_water_mains.setMaximumDifferenceInMonthlyAverageOutdoorAirTemperatures(4)
|
155
166
|
|
156
167
|
# set Outputs for the simulation
|
157
168
|
if @hash[:output]
|
@@ -238,9 +249,6 @@ module Honeybee
|
|
238
249
|
os_site.setTerrain(@hash[:terrain_type])
|
239
250
|
end
|
240
251
|
|
241
|
-
# ensure water mains temperatures are written
|
242
|
-
os_water_mains = @openstudio_model.getSiteWaterMainsTemperature
|
243
|
-
os_water_mains.setCalculationMethod('CorrelationFromWeatherFile')
|
244
252
|
end
|
245
253
|
|
246
254
|
end #SimulationParameter
|
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.28.1
|
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-
|
14
|
+
date: 2021-12-06 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -117,28 +117,28 @@ dependencies:
|
|
117
117
|
requirements:
|
118
118
|
- - '='
|
119
119
|
- !ruby/object:Gem::Version
|
120
|
-
version: 0.
|
120
|
+
version: 0.5.1
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
123
|
version_requirements: !ruby/object:Gem::Requirement
|
124
124
|
requirements:
|
125
125
|
- - '='
|
126
126
|
- !ruby/object:Gem::Version
|
127
|
-
version: 0.
|
127
|
+
version: 0.5.1
|
128
128
|
- !ruby/object:Gem::Dependency
|
129
129
|
name: openstudio-standards
|
130
130
|
requirement: !ruby/object:Gem::Requirement
|
131
131
|
requirements:
|
132
132
|
- - "~>"
|
133
133
|
- !ruby/object:Gem::Version
|
134
|
-
version: 0.2.
|
134
|
+
version: 0.2.15
|
135
135
|
type: :runtime
|
136
136
|
prerelease: false
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
139
|
- - "~>"
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version: 0.2.
|
141
|
+
version: 0.2.15
|
142
142
|
description: Library and measures for translating between Honeybee JSON schema and
|
143
143
|
OpenStudio Model schema (OSM).
|
144
144
|
email:
|