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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9cfa9e82e9efaedde24e6ccfe30c4d7fe6cbd4259a81d36de9b8a9936b8259b
4
- data.tar.gz: 6c47a045cf0684fdc33521ca96b6bd1fe3f27a52658fe774a6f76165ab3c87b0
3
+ metadata.gz: 68e54c322a55fb8dcd87429be85e573fac7de1a66f7b01acb798efaa27ce5a63
4
+ data.tar.gz: d80b9e57fee33f88ef05ae16412cbc57334d37623eae28e7e1d97d39d8a58fc4
5
5
  SHA512:
6
- metadata.gz: ceefaa71ad6fe18240c21b2738ddf5741fc9620dcf63088c67511a0fedb132f1ea063879527183624f88a196826f7a58bef62ac9211e605f815264ae3add17c4
7
- data.tar.gz: 4b6e648afaa694daa0e2246f4f5f6cf6c5dadb714e4b4fa7681919447fa24a37cb9bba9e6edbbb77a216e04005a0d23b5da7c8f38df07c60ad2ed2543767ad7d
6
+ metadata.gz: e036f52b5fa2be11caec2a56db9c60d913901cf00be345dddaf932c5fe340128981fe28999bf0cbba1bf9a3d73fc0dce756050dab0675d18eacc9e68c982ee6f
7
+ data.tar.gz: 83e6a415c18c5f0062498358fee7ac5b04d11b414c536dd9b129eb9bb505183fa5efa52c9d00009269fe574b21b05a9111ae0b6e033a85a4e00ac7e01543aabc
@@ -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.9'
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 = OpenStudio::Model::StandardOpaqueMaterial.new(self, 'MediumSmooth', 0.003175, 30, 7680, 418)
291
- metal_mat.setName('Radiant Metal Layer - 0.125 in')
292
- air_gap_map = OpenStudio::Model::MasslessOpaqueMaterial.new(self, 'Smooth', 0.004572)
293
- air_gap_map.setName('Generic Ceiling Air Gap - R 0.025')
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
- layers = []
335
- layers << mat_slab_insulation
336
- layers << mat_concrete_3_5in
337
- layers << mat_concrete_1_5in
338
- layers << mat_thin_carpet_tile if include_carpet
339
- radiant_ground_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
340
- radiant_ground_slab_construction.setName('Radiant Ground Slab Construction')
341
- radiant_ground_slab_construction.setSourcePresentAfterLayerNumber(2)
342
- radiant_ground_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(3)
343
- radiant_ground_slab_construction.setTubeSpacing(0.2286) # 9 inches
344
-
345
- layers = []
346
- layers << mat_ext_insulation
347
- layers << mat_concrete_3_5in
348
- layers << mat_concrete_1_5in
349
- layers << mat_thin_carpet_tile if include_carpet
350
- radiant_exterior_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
351
- radiant_exterior_slab_construction.setName('Radiant Exterior Slab Construction')
352
- radiant_exterior_slab_construction.setSourcePresentAfterLayerNumber(2)
353
- radiant_exterior_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(3)
354
- radiant_exterior_slab_construction.setTubeSpacing(0.2286) # 9 inches
355
-
356
- layers = []
357
- layers << mat_concrete_3_5in
358
- layers << mat_concrete_1_5in
359
- layers << mat_thin_carpet_tile if include_carpet
360
- radiant_interior_floor_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
361
- radiant_interior_floor_slab_construction.setName('Radiant Interior Floor Slab Construction')
362
- radiant_interior_floor_slab_construction.setSourcePresentAfterLayerNumber(1)
363
- radiant_interior_floor_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(2)
364
- radiant_interior_floor_slab_construction.setTubeSpacing(0.2286) # 9 inches
365
-
366
- layers = []
367
- layers << mat_thin_carpet_tile if include_carpet
368
- layers << mat_concrete_3_5in
369
- layers << mat_concrete_1_5in
370
- radiant_interior_ceiling_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
371
- radiant_interior_ceiling_slab_construction.setName('Radiant Interior Ceiling Slab Construction')
372
- slab_src_loc = include_carpet ? 2 : 1
373
- radiant_interior_ceiling_slab_construction.setSourcePresentAfterLayerNumber(slab_src_loc)
374
- radiant_interior_ceiling_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(slab_src_loc + 1)
375
- radiant_interior_ceiling_slab_construction.setTubeSpacing(0.2286) # 9 inches
376
-
377
- layers = []
378
- layers << mat_refl_roof_membrane
379
- layers << mat_roof_insulation
380
- layers << mat_concrete_3_5in
381
- layers << mat_concrete_1_5in
382
- radiant_ceiling_slab_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
383
- radiant_ceiling_slab_construction.setName('Radiant Exterior Ceiling Slab Construction')
384
- radiant_ceiling_slab_construction.setSourcePresentAfterLayerNumber(3)
385
- radiant_ceiling_slab_construction.setTemperatureCalculationRequestedAfterLayerNumber(4)
386
- radiant_ceiling_slab_construction.setTubeSpacing(0.2286) # 9 inches
387
-
388
- layers = []
389
- layers << mat_concrete_3_5in
390
- layers << air_gap_map
391
- layers << metal_mat
392
- layers << metal_mat
393
- radiant_interior_ceiling_metal_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
394
- radiant_interior_ceiling_metal_construction.setName('Radiant Interior Ceiling Metal Construction')
395
- radiant_interior_ceiling_metal_construction.setSourcePresentAfterLayerNumber(3)
396
- radiant_interior_ceiling_metal_construction.setTemperatureCalculationRequestedAfterLayerNumber(4)
397
- radiant_interior_ceiling_metal_construction.setTubeSpacing(0.1524) # 6 inches
398
-
399
- layers = []
400
- layers << mat_refl_roof_membrane
401
- layers << mat_roof_insulation
402
- layers << mat_concrete_3_5in
403
- layers << air_gap_map
404
- layers << metal_mat
405
- layers << metal_mat
406
- radiant_ceiling_metal_construction = OpenStudio::Model::ConstructionWithInternalSource.new(layers)
407
- radiant_ceiling_metal_construction.setName('Radiant Ceiling Metal Construction')
408
- radiant_ceiling_metal_construction.setSourcePresentAfterLayerNumber(5)
409
- radiant_ceiling_metal_construction.setTemperatureCalculationRequestedAfterLayerNumber(6)
410
- radiant_ceiling_metal_construction.setTubeSpacing(0.1524) # 6 inches
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.9
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-26 00:00:00.000000000 Z
14
+ date: 2022-05-27 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler