honeybee-openstudio 2.31.9 → 2.31.10

Sign up to get free protection for your applications and to get access to all the features.
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