honeybee-openstudio 2.31.9 → 2.31.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/honeybee-openstudio.gemspec +1 -1
- data/lib/to_openstudio/hvac/radiant.rb +152 -82
- data/lib/to_openstudio/hvac/template.rb +4 -6
- 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: 68e54c322a55fb8dcd87429be85e573fac7de1a66f7b01acb798efaa27ce5a63
|
4
|
+
data.tar.gz: d80b9e57fee33f88ef05ae16412cbc57334d37623eae28e7e1d97d39d8a58fc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e036f52b5fa2be11caec2a56db9c60d913901cf00be345dddaf932c5fe340128981fe28999bf0cbba1bf9a3d73fc0dce756050dab0675d18eacc9e68c982ee6f
|
7
|
+
data.tar.gz: 83e6a415c18c5f0062498358fee7ac5b04d11b414c536dd9b129eb9bb505183fa5efa52c9d00009269fe574b21b05a9111ae0b6e033a85a4e00ac7e01543aabc
|
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.31.
|
7
|
+
spec.version = '2.31.10'
|
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
|
|
@@ -150,7 +150,7 @@ class OpenStudio::Model::Model
|
|
150
150
|
if radiant_type == 'floorwithcarpet'
|
151
151
|
radiant_type = 'floor'
|
152
152
|
include_carpet = true
|
153
|
-
elsif radiant_type == 'ceilingmetalpanel'
|
153
|
+
elsif radiant_type == 'ceilingmetalpanel' || radiant_type == 'floorwithhardwood'
|
154
154
|
control_strategy = 'default'
|
155
155
|
end
|
156
156
|
else
|
@@ -251,6 +251,7 @@ class OpenStudio::Model::Model
|
|
251
251
|
end
|
252
252
|
end
|
253
253
|
end
|
254
|
+
|
254
255
|
# if no values were set, just set the system to be on all of the time
|
255
256
|
if start_hour == 12 or start_hour == 0
|
256
257
|
start_hour = 1
|
@@ -282,15 +283,30 @@ class OpenStudio::Model::Model
|
|
282
283
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.Model.Model', "Replacing constructions with new radiant slab constructions.")
|
283
284
|
|
284
285
|
# create materials
|
286
|
+
# concrete slab materials
|
285
287
|
mat_concrete_3_5in = OpenStudio::Model::StandardOpaqueMaterial.new(self, 'MediumRough', 0.0889, 2.31, 2322, 832)
|
286
288
|
mat_concrete_3_5in.setName('Radiant Slab Concrete - 3.5 in.')
|
287
289
|
mat_concrete_1_5in = OpenStudio::Model::StandardOpaqueMaterial.new(self, 'MediumRough', 0.0381, 2.31, 2322, 832)
|
288
290
|
mat_concrete_1_5in.setName('Radiant Slab Concrete - 1.5 in')
|
289
291
|
|
290
|
-
metal_mat =
|
291
|
-
|
292
|
-
|
293
|
-
|
292
|
+
metal_mat = nil
|
293
|
+
air_gap_mat = nil
|
294
|
+
wood_mat = nil
|
295
|
+
wood_floor_insulation = nil
|
296
|
+
gypsum_ceiling_mat = nil
|
297
|
+
if radiant_type == 'ceilingmetalpanel'
|
298
|
+
metal_mat = OpenStudio::Model::StandardOpaqueMaterial.new(self, 'MediumSmooth', 0.003175, 30, 7680, 418)
|
299
|
+
metal_mat.setName('Radiant Metal Layer - 0.125 in')
|
300
|
+
air_gap_mat = OpenStudio::Model::MasslessOpaqueMaterial.new(self, 'Smooth', 0.004572)
|
301
|
+
air_gap_mat.setName('Generic Ceiling Air Gap - R 0.025')
|
302
|
+
elsif radiant_type == 'floorwithhardwood'
|
303
|
+
wood_mat = OpenStudio::Model::StandardOpaqueMaterial.new(self, 'MediumSmooth', 0.01905, 0.15, 608, 1629)
|
304
|
+
wood_mat.setName('Radiant Hardwood Flooring - 0.75 in')
|
305
|
+
wood_floor_insulation = OpenStudio::Model::StandardOpaqueMaterial.new(self, 'Rough', 0.0508, 0.02, 56.06, 1210)
|
306
|
+
wood_floor_insulation.setName('Radiant Subfloor Insulation - 4.0 in')
|
307
|
+
gypsum_ceiling_mat = OpenStudio::Model::StandardOpaqueMaterial.new(self, 'Smooth', 0.0127, 0.16, 800, 1089)
|
308
|
+
gypsum_ceiling_mat.setName('Gypsum Ceiling for Radiant Hardwood Flooring - 0.5 in')
|
309
|
+
end
|
294
310
|
|
295
311
|
mat_refl_roof_membrane = self.getStandardOpaqueMaterialByName('Roof Membrane - Highly Reflective')
|
296
312
|
if mat_refl_roof_membrane.is_initialized
|
@@ -331,83 +347,125 @@ class OpenStudio::Model::Model
|
|
331
347
|
# create radiant internal source constructions
|
332
348
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.Model.Model', 'New constructions exclude the metal deck, as high thermal diffusivity materials cause errors in EnergyPlus internal source construction calculations.')
|
333
349
|
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
350
|
+
radiant_ground_slab_construction = nil
|
351
|
+
radiant_exterior_slab_construction = nil
|
352
|
+
radiant_interior_floor_slab_construction = nil
|
353
|
+
radiant_interior_ceiling_slab_construction = nil
|
354
|
+
radiant_ceiling_slab_construction = nil
|
355
|
+
radiant_interior_ceiling_metal_construction = nil
|
356
|
+
radiant_ceiling_metal_construction = nil
|
357
|
+
|
358
|
+
if radiant_type == 'floor'
|
359
|
+
layers = []
|
360
|
+
layers << mat_slab_insulation
|
361
|
+
layers << mat_concrete_3_5in
|
362
|
+
layers << mat_concrete_1_5in
|
363
|
+
layers << mat_thin_carpet_tile if include_carpet
|
364
|
+
radiant_ground_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
365
|
+
radiant_ground_slab_construction.setName('Radiant Ground Slab Construction')
|
366
|
+
radiant_ground_slab_construction.setSourcePresentAfterLayerNumber(2)
|
367
|
+
radiant_ground_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(3)
|
368
|
+
radiant_ground_slab_construction.setTubeSpacing(0.2286) # 9 inches
|
369
|
+
|
370
|
+
layers = []
|
371
|
+
layers << mat_ext_insulation
|
372
|
+
layers << mat_concrete_3_5in
|
373
|
+
layers << mat_concrete_1_5in
|
374
|
+
layers << mat_thin_carpet_tile if include_carpet
|
375
|
+
radiant_exterior_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
376
|
+
radiant_exterior_slab_construction.setName('Radiant Exterior Slab Construction')
|
377
|
+
radiant_exterior_slab_construction.setSourcePresentAfterLayerNumber(2)
|
378
|
+
radiant_exterior_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(3)
|
379
|
+
radiant_exterior_slab_construction.setTubeSpacing(0.2286) # 9 inches
|
380
|
+
|
381
|
+
layers = []
|
382
|
+
layers << mat_concrete_3_5in
|
383
|
+
layers << mat_concrete_1_5in
|
384
|
+
layers << mat_thin_carpet_tile if include_carpet
|
385
|
+
radiant_interior_floor_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
386
|
+
radiant_interior_floor_slab_construction.setName('Radiant Interior Floor Slab Construction')
|
387
|
+
radiant_interior_floor_slab_construction.setSourcePresentAfterLayerNumber(1)
|
388
|
+
radiant_interior_floor_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(2)
|
389
|
+
radiant_interior_floor_slab_construction.setTubeSpacing(0.2286) # 9 inches
|
390
|
+
elsif radiant_type == 'ceiling'
|
391
|
+
layers = []
|
392
|
+
layers << mat_thin_carpet_tile if include_carpet
|
393
|
+
layers << mat_concrete_3_5in
|
394
|
+
layers << mat_concrete_1_5in
|
395
|
+
radiant_interior_ceiling_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
396
|
+
radiant_interior_ceiling_slab_construction.setName('Radiant Interior Ceiling Slab Construction')
|
397
|
+
slab_src_loc = include_carpet ? 2 : 1
|
398
|
+
radiant_interior_ceiling_slab_construction.setSourcePresentAfterLayerNumber(slab_src_loc)
|
399
|
+
radiant_interior_ceiling_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(slab_src_loc + 1)
|
400
|
+
radiant_interior_ceiling_slab_construction.setTubeSpacing(0.2286) # 9 inches
|
401
|
+
|
402
|
+
layers = []
|
403
|
+
layers << mat_refl_roof_membrane
|
404
|
+
layers << mat_roof_insulation
|
405
|
+
layers << mat_concrete_3_5in
|
406
|
+
layers << mat_concrete_1_5in
|
407
|
+
radiant_ceiling_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
408
|
+
radiant_ceiling_slab_construction.setName('Radiant Exterior Ceiling Slab Construction')
|
409
|
+
radiant_ceiling_slab_construction.setSourcePresentAfterLayerNumber(3)
|
410
|
+
radiant_ceiling_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(4)
|
411
|
+
radiant_ceiling_slab_construction.setTubeSpacing(0.2286) # 9 inches
|
412
|
+
elsif radiant_type == 'ceilingmetalpanel'
|
413
|
+
layers = []
|
414
|
+
layers << mat_concrete_3_5in
|
415
|
+
layers << air_gap_mat
|
416
|
+
layers << metal_mat
|
417
|
+
layers << metal_mat
|
418
|
+
radiant_interior_ceiling_metal_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
419
|
+
radiant_interior_ceiling_metal_construction.setName('Radiant Interior Ceiling Metal Construction')
|
420
|
+
radiant_interior_ceiling_metal_construction.setSourcePresentAfterLayerNumber(3)
|
421
|
+
radiant_interior_ceiling_metal_construction.setTemperatureCalculationRequestedAfterLayerNumber(4)
|
422
|
+
radiant_interior_ceiling_metal_construction.setTubeSpacing(0.1524) # 6 inches
|
423
|
+
|
424
|
+
layers = []
|
425
|
+
layers << mat_refl_roof_membrane
|
426
|
+
layers << mat_roof_insulation
|
427
|
+
layers << mat_concrete_3_5in
|
428
|
+
layers << air_gap_mat
|
429
|
+
layers << metal_mat
|
430
|
+
layers << metal_mat
|
431
|
+
radiant_ceiling_metal_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
432
|
+
radiant_ceiling_metal_construction.setName('Radiant Ceiling Metal Construction')
|
433
|
+
radiant_ceiling_metal_construction.setSourcePresentAfterLayerNumber(5)
|
434
|
+
radiant_ceiling_metal_construction.setTemperatureCalculationRequestedAfterLayerNumber(6)
|
435
|
+
radiant_ceiling_metal_construction.setTubeSpacing(0.1524) # 6 inches
|
436
|
+
elsif radiant_type == 'floorwithhardwood'
|
437
|
+
layers = []
|
438
|
+
layers << mat_slab_insulation
|
439
|
+
layers << mat_concrete_3_5in
|
440
|
+
layers << wood_mat
|
441
|
+
layers << mat_thin_carpet_tile if include_carpet
|
442
|
+
radiant_ground_wood_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
443
|
+
radiant_ground_wood_construction.setName('Radiant Ground Slab Wood Floor Construction')
|
444
|
+
radiant_ground_wood_construction.setSourcePresentAfterLayerNumber(2)
|
445
|
+
radiant_ground_wood_construction.setTemperatureCalculationRequestedAfterLayerNumber(3)
|
446
|
+
radiant_ground_wood_construction.setTubeSpacing(0.2286) # 9 inches
|
447
|
+
|
448
|
+
layers = []
|
449
|
+
layers << mat_ext_insulation
|
450
|
+
layers << wood_mat
|
451
|
+
layers << mat_thin_carpet_tile if include_carpet
|
452
|
+
radiant_exterior_wood_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
453
|
+
radiant_exterior_wood_construction.setName('Radiant Exterior Wood Floor Construction')
|
454
|
+
radiant_exterior_wood_construction.setSourcePresentAfterLayerNumber(1)
|
455
|
+
radiant_exterior_wood_construction.setTemperatureCalculationRequestedAfterLayerNumber(2)
|
456
|
+
radiant_exterior_wood_construction.setTubeSpacing(0.2286) # 9 inches
|
457
|
+
|
458
|
+
layers = []
|
459
|
+
layers << gypsum_ceiling_mat
|
460
|
+
layers << wood_floor_insulation
|
461
|
+
layers << wood_mat
|
462
|
+
layers << mat_thin_carpet_tile if include_carpet
|
463
|
+
radiant_interior_wood_floor_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
|
464
|
+
radiant_interior_wood_floor_construction.setName('Radiant Interior Wooden Floor Construction')
|
465
|
+
radiant_interior_wood_floor_construction.setSourcePresentAfterLayerNumber(2)
|
466
|
+
radiant_interior_wood_floor_construction.setTemperatureCalculationRequestedAfterLayerNumber(3)
|
467
|
+
radiant_interior_wood_floor_construction.setTubeSpacing(0.2286) # 9 inches
|
468
|
+
end
|
411
469
|
|
412
470
|
# default temperature controls for radiant system
|
413
471
|
zn_radiant_htg_dsgn_temp_f = 68.0
|
@@ -488,6 +546,16 @@ class OpenStudio::Model::Model
|
|
488
546
|
surface.setConstruction(radiant_interior_ceiling_metal_construction)
|
489
547
|
end
|
490
548
|
end
|
549
|
+
elsif radiant_type == 'floorwithhardwood'
|
550
|
+
if surface.surfaceType == 'Floor'
|
551
|
+
if surface.outsideBoundaryCondition == 'Ground'
|
552
|
+
surface.setConstruction(radiant_ground_wood_construction)
|
553
|
+
elsif surface.outsideBoundaryCondition == 'Outdoors'
|
554
|
+
surface.setConstruction(radiant_exterior_wood_construction)
|
555
|
+
else # interior floor
|
556
|
+
surface.setConstruction(radiant_interior_wood_floor_construction)
|
557
|
+
end
|
558
|
+
end
|
491
559
|
end
|
492
560
|
end
|
493
561
|
end
|
@@ -500,6 +568,8 @@ class OpenStudio::Model::Model
|
|
500
568
|
radiant_loop.setRadiantSurfaceType('Ceilings')
|
501
569
|
elsif radiant_type == 'ceilingmetalpanel'
|
502
570
|
radiant_loop.setRadiantSurfaceType('Ceilings')
|
571
|
+
elsif radiant_type == 'floorwithhardwood'
|
572
|
+
radiant_loop.setRadiantSurfaceType('Floors')
|
503
573
|
end
|
504
574
|
|
505
575
|
# radiant loop layout details
|
@@ -260,6 +260,10 @@ module Honeybee
|
|
260
260
|
h_stat = zone.zoneControlHumidistat
|
261
261
|
unless h_stat.empty?
|
262
262
|
humidistat_exists = true
|
263
|
+
if equipment_type.to_s.include? 'DOAS'
|
264
|
+
z_sizing = zone.sizingZone
|
265
|
+
z_sizing.setDedicatedOutdoorAirSystemControlStrategy('NeutralDehumidifiedSupplyAir')
|
266
|
+
end
|
263
267
|
end
|
264
268
|
end
|
265
269
|
if humidistat_exists
|
@@ -269,12 +273,6 @@ module Honeybee
|
|
269
273
|
end
|
270
274
|
end
|
271
275
|
|
272
|
-
# set all plants to non-coincident sizing to avoid simualtion control issues on design days
|
273
|
-
openstudio_model.getPlantLoops.each do |loop|
|
274
|
-
sizing = loop.sizingPlant
|
275
|
-
sizing.setSizingOption('NonCoincident')
|
276
|
-
end
|
277
|
-
|
278
276
|
end
|
279
277
|
|
280
278
|
private
|
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.31.
|
4
|
+
version: 2.31.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tanushree Charan
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2022-05-
|
14
|
+
date: 2022-05-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|