honeybee-openstudio 2.38.7 → 2.38.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/honeybee-openstudio.gemspec +1 -1
- data/lib/to_openstudio/geometry/aperture.rb +1 -4
- data/lib/to_openstudio/geometry/door.rb +1 -4
- data/lib/to_openstudio/geometry/face.rb +0 -19
- data/lib/to_openstudio/hvac/radiant.rb +11 -112
- data/lib/to_openstudio/model.rb +5 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2f2bfb60c9779aff40ac4d86c6d2d3416fd1c34722b5378874b6b85cceaf8cd
|
4
|
+
data.tar.gz: e1638526a3701c0035efdb8695fdbb026364ecc85c42a38e262de43e9beb729f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 619bfa717c81e91aea5f481a6f86f538fb7c1cb4a508b4e8fa1695826096bde37e892de9fae98b3df71036c295b1ba2aed9f5f008a154e8ecfee2b6643e8b9e8
|
7
|
+
data.tar.gz: 22b5002543933e86a89192ae2fb6e0780306ca94308fd808651c93135f0f9f67145894e04f6188ac330d4345fb13ea49c8709dff26869af4eb6ea08548d77267
|
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.38.
|
7
|
+
spec.version = '2.38.9'
|
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
|
|
@@ -170,7 +170,7 @@ module Honeybee
|
|
170
170
|
return result
|
171
171
|
end
|
172
172
|
|
173
|
-
def to_openstudio_shade(openstudio_model
|
173
|
+
def to_openstudio_shade(openstudio_model)
|
174
174
|
# get the vertices from the aperture
|
175
175
|
if @hash[:geometry][:vertices].nil?
|
176
176
|
hb_verts = @hash[:geometry][:boundary]
|
@@ -217,9 +217,6 @@ module Honeybee
|
|
217
217
|
end
|
218
218
|
end
|
219
219
|
|
220
|
-
# add the shade to the group
|
221
|
-
os_shading_surface.setShadingSurfaceGroup(shading_surface_group)
|
222
|
-
|
223
220
|
os_shading_surface
|
224
221
|
end
|
225
222
|
|
@@ -163,7 +163,7 @@ module Honeybee
|
|
163
163
|
return result
|
164
164
|
end
|
165
165
|
|
166
|
-
def to_openstudio_shade(openstudio_model
|
166
|
+
def to_openstudio_shade(openstudio_model)
|
167
167
|
# get the vertices from the door
|
168
168
|
if @hash[:geometry][:vertices].nil?
|
169
169
|
hb_verts = @hash[:geometry][:boundary]
|
@@ -212,9 +212,6 @@ module Honeybee
|
|
212
212
|
end
|
213
213
|
end
|
214
214
|
|
215
|
-
# add the shade to the group
|
216
|
-
os_shading_surface.setShadingSurfaceGroup(shading_surface_group)
|
217
|
-
|
218
215
|
os_shading_surface
|
219
216
|
end
|
220
217
|
|
@@ -248,25 +248,6 @@ module Honeybee
|
|
248
248
|
end
|
249
249
|
end
|
250
250
|
|
251
|
-
# add the shade to the group
|
252
|
-
os_shading_surface.setShadingSurfaceGroup(shading_surface_group)
|
253
|
-
|
254
|
-
# convert the apertures to shade objects
|
255
|
-
if @hash[:apertures]
|
256
|
-
@hash[:apertures].each do |aperture|
|
257
|
-
hb_aperture = Aperture.new(aperture)
|
258
|
-
os_subsurface_aperture = hb_aperture.to_openstudio_shade(openstudio_model, shading_surface_group)
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
# convert the apertures to shade objects
|
263
|
-
if @hash[:doors]
|
264
|
-
@hash[:doors].each do |door|
|
265
|
-
hb_door = Door.new(door)
|
266
|
-
os_subsurface_door = hb_door.to_openstudio_shade(openstudio_model, shading_surface_group)
|
267
|
-
end
|
268
|
-
end
|
269
|
-
|
270
251
|
os_shading_surface
|
271
252
|
end
|
272
253
|
|
@@ -128,20 +128,12 @@ class OpenStudio::Model::Model
|
|
128
128
|
end
|
129
129
|
|
130
130
|
# get the various controls for the radiant system
|
131
|
-
if rad_props[:minimum_operation_time]
|
132
|
-
minimum_operation = rad_props[:minimum_operation_time]
|
133
|
-
else
|
134
|
-
minimum_operation = 1
|
135
|
-
end
|
136
131
|
if rad_props[:switch_over_time]
|
137
132
|
switch_over_time = rad_props[:switch_over_time]
|
138
133
|
else
|
139
134
|
switch_over_time = 24
|
140
135
|
end
|
141
136
|
|
142
|
-
# get the start and end hour from the input zones
|
143
|
-
start_hour, end_hour = start_end_hour_from_zones_occupancy(zones)
|
144
|
-
|
145
137
|
# add radiant system to the conditioned zones
|
146
138
|
include_carpet = false
|
147
139
|
control_strategy = 'proportional_control'
|
@@ -162,9 +154,6 @@ class OpenStudio::Model::Model
|
|
162
154
|
radiant_type: radiant_type,
|
163
155
|
control_strategy: control_strategy,
|
164
156
|
include_carpet: include_carpet,
|
165
|
-
model_occ_hr_start: start_hour,
|
166
|
-
model_occ_hr_end: end_hour,
|
167
|
-
minimum_operation: minimum_operation,
|
168
157
|
switch_over_time: switch_over_time,
|
169
158
|
cz_mult: cz_mult)
|
170
159
|
|
@@ -175,93 +164,6 @@ class OpenStudio::Model::Model
|
|
175
164
|
|
176
165
|
end
|
177
166
|
|
178
|
-
# get the start and end hour from the occupancy schedules of thermal zones
|
179
|
-
def start_end_hour_from_zones_occupancy(thermal_zones, threshold: 0.1)
|
180
|
-
# set the default start and end hour in the event there's no occupancy
|
181
|
-
start_hour = 12
|
182
|
-
end_hour = 12
|
183
|
-
# loop through the occupancy schedules and get the lowest start hour; highest end hour
|
184
|
-
thermal_zones.each do |zone|
|
185
|
-
zone.spaces.each do |space|
|
186
|
-
# gather all of the people objects assigned to the sapce
|
187
|
-
peoples = []
|
188
|
-
unless space.spaceType.empty?
|
189
|
-
space_type = space.spaceType.get
|
190
|
-
unless space_type.people.empty?
|
191
|
-
space_type.people.each do |ppl|
|
192
|
-
peoples << ppl
|
193
|
-
end
|
194
|
-
end
|
195
|
-
end
|
196
|
-
space.people.each do |ppl|
|
197
|
-
peoples << ppl
|
198
|
-
end
|
199
|
-
# loop through the pople and gather all occupancy schedules
|
200
|
-
peoples.each do |people|
|
201
|
-
occupancy_sch_opt = people.numberofPeopleSchedule
|
202
|
-
unless occupancy_sch_opt.empty?
|
203
|
-
occupancy_sch = occupancy_sch_opt.get
|
204
|
-
if occupancy_sch.to_ScheduleRuleset.is_initialized
|
205
|
-
occupancy_sch = occupancy_sch.to_ScheduleRuleset.get
|
206
|
-
# gather all of the day schedules across the schedule ruleset
|
207
|
-
schedule_days, day_ids = [], []
|
208
|
-
required_days = [
|
209
|
-
occupancy_sch.defaultDaySchedule,
|
210
|
-
occupancy_sch.summerDesignDaySchedule,
|
211
|
-
occupancy_sch.winterDesignDaySchedule,
|
212
|
-
occupancy_sch.holidaySchedule
|
213
|
-
]
|
214
|
-
required_days.each do |day_sch|
|
215
|
-
unless day_ids.include? day_sch.nameString
|
216
|
-
schedule_days << day_sch
|
217
|
-
day_ids << day_sch.nameString
|
218
|
-
end
|
219
|
-
end
|
220
|
-
occupancy_sch.scheduleRules.each do |schedule_rule|
|
221
|
-
day_sch = schedule_rule.daySchedule
|
222
|
-
unless day_ids.include? day_sch.nameString
|
223
|
-
schedule_days << day_sch
|
224
|
-
day_ids << day_sch.nameString
|
225
|
-
end
|
226
|
-
end
|
227
|
-
# loop through the day schedules and see if the start and end hours should be changed
|
228
|
-
schedule_days.each do |day_sch|
|
229
|
-
time_until = [1]
|
230
|
-
day_sch.times.each do |time|
|
231
|
-
time_until << time.hours
|
232
|
-
end
|
233
|
-
final_time = time_until[-2]
|
234
|
-
day_sch.values.zip(time_until).each do |value, time|
|
235
|
-
if value > threshold
|
236
|
-
if time < start_hour
|
237
|
-
start_hour = time
|
238
|
-
end
|
239
|
-
if time > end_hour
|
240
|
-
end_hour = time
|
241
|
-
end
|
242
|
-
if time == final_time
|
243
|
-
start_hour = 1
|
244
|
-
end_hour = 24
|
245
|
-
end
|
246
|
-
end
|
247
|
-
end
|
248
|
-
end
|
249
|
-
end
|
250
|
-
end
|
251
|
-
end
|
252
|
-
end
|
253
|
-
end
|
254
|
-
|
255
|
-
# if no values were set, just set the system to be on all of the time
|
256
|
-
if start_hour == 12 or start_hour == 0
|
257
|
-
start_hour = 1
|
258
|
-
end
|
259
|
-
if end_hour == 12
|
260
|
-
end_hour = 24
|
261
|
-
end
|
262
|
-
return start_hour, end_hour
|
263
|
-
end
|
264
|
-
|
265
167
|
def model_add_low_temp_radiant(std,
|
266
168
|
thermal_zones,
|
267
169
|
hot_water_loop,
|
@@ -273,9 +175,6 @@ class OpenStudio::Model::Model
|
|
273
175
|
model_occ_hr_end: 24.0,
|
274
176
|
control_strategy: 'proportional_control',
|
275
177
|
proportional_gain: 0.3,
|
276
|
-
minimum_operation: 1,
|
277
|
-
weekend_temperature_reset: 2,
|
278
|
-
early_reset_out_arg: 20,
|
279
178
|
switch_over_time: 24.0,
|
280
179
|
cz_mult: 4)
|
281
180
|
|
@@ -598,18 +497,18 @@ class OpenStudio::Model::Model
|
|
598
497
|
# rename nodes before adding EMS code
|
599
498
|
std.rename_plant_loop_nodes(self)
|
600
499
|
|
500
|
+
# TODO: Un-comment this once these controls are fixed (Matt made a lot of changes for OpenStudio 3.8)
|
601
501
|
# set radiant loop controls
|
602
|
-
if control_strategy == 'proportional_control'
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
end
|
502
|
+
#if control_strategy == 'proportional_control'
|
503
|
+
# std.model_add_radiant_proportional_controls(self, zone, radiant_loop,
|
504
|
+
# radiant_temperature_control_type: 'SurfaceFaceTemperature',
|
505
|
+
# use_zone_occupancy_for_control: true,
|
506
|
+
# occupied_percentage_threshold: 0.10,
|
507
|
+
# model_occ_hr_start: model_occ_hr_start,
|
508
|
+
# model_occ_hr_end: model_occ_hr_end,
|
509
|
+
# proportional_gain: proportional_gain,
|
510
|
+
# switch_over_time: switch_over_time)
|
511
|
+
#end
|
613
512
|
end
|
614
513
|
|
615
514
|
return radiant_loops
|
data/lib/to_openstudio/model.rb
CHANGED
@@ -649,7 +649,7 @@ module Honeybee
|
|
649
649
|
end
|
650
650
|
@hash[:orphaned_faces].each do |face|
|
651
651
|
face_object = Face.new(face)
|
652
|
-
openstudio_shade = face_object.to_openstudio_shade(@openstudio_model
|
652
|
+
openstudio_shade = face_object.to_openstudio_shade(@openstudio_model)
|
653
653
|
if $orphan_groups
|
654
654
|
openstudio_shade.setShadingSurfaceGroup(shading_surface_group)
|
655
655
|
end
|
@@ -663,9 +663,9 @@ module Honeybee
|
|
663
663
|
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
664
664
|
shading_surface_group.setShadingSurfaceType('Building')
|
665
665
|
end
|
666
|
-
|
666
|
+
@hash[:orphaned_apertures].each do |ap|
|
667
667
|
ap_object = Aperture.new(ap)
|
668
|
-
openstudio_shade = ap_object.to_openstudio_shade(@openstudio_model
|
668
|
+
openstudio_shade = ap_object.to_openstudio_shade(@openstudio_model)
|
669
669
|
if $orphan_groups
|
670
670
|
openstudio_shade.setShadingSurfaceGroup(shading_surface_group)
|
671
671
|
end
|
@@ -679,9 +679,9 @@ module Honeybee
|
|
679
679
|
shading_surface_group = OpenStudio::Model::ShadingSurfaceGroup.new(@openstudio_model)
|
680
680
|
shading_surface_group.setShadingSurfaceType('Building')
|
681
681
|
end
|
682
|
-
|
682
|
+
@hash[:orphaned_doors].each do |dr|
|
683
683
|
dr_object = Door.new(dr)
|
684
|
-
openstudio_shade = dr_object.to_openstudio_shade(@openstudio_model
|
684
|
+
openstudio_shade = dr_object.to_openstudio_shade(@openstudio_model)
|
685
685
|
if $orphan_groups
|
686
686
|
openstudio_shade.setShadingSurfaceGroup(shading_surface_group)
|
687
687
|
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.38.
|
4
|
+
version: 2.38.9
|
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: 2024-
|
14
|
+
date: 2024-05-24 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: json_pure
|