openstudio-standards 0.3.1.rc1 → 0.3.1.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAELargeOffice.json +4 -4
  3. data/data/standards/test_performance_expected_dd_results.csv +1890 -2016
  4. data/lib/openstudio-standards/btap/fileio.rb +1 -0
  5. data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +8 -3
  6. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +6 -6
  7. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +7 -5
  8. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +1 -1
  9. data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +3 -3
  10. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +5 -5
  11. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +4 -4
  12. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +23 -23
  13. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +3 -3
  14. data/lib/openstudio-standards/standards/Standards.Fan.rb +6 -6
  15. data/lib/openstudio-standards/standards/Standards.Model.rb +20 -14
  16. data/lib/openstudio-standards/standards/Standards.Pump.rb +21 -19
  17. data/lib/openstudio-standards/standards/Standards.Space.rb +25 -18
  18. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +2 -2
  19. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +3 -3
  20. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +3 -3
  21. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +3 -3
  22. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +6 -6
  23. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +45 -45
  24. data/lib/openstudio-standards/version.rb +1 -1
  25. metadata +2 -2
@@ -1333,17 +1333,17 @@ class ECMS
1333
1333
  # There is an error in EnergyPlus in the estimated capacity of the coil "CoilCoolingDXVariableSpeed".
1334
1334
  # Here the capacity reported by OS is adjusted to estimate an appropriate capacity for the cooling coil.
1335
1335
  # The autosized capacity is corrected for the actual fan flow rate and fan power.
1336
- if supply_fan.autosizedMaximumFlowRate.is_initialized
1337
- fan_max_afr = supply_fan.autosizedMaximumFlowRate.to_f
1338
- elsif supply_fan.maximumFlowRate.is_initialized
1336
+ if supply_fan.maximumFlowRate.is_initialized
1339
1337
  fan_max_afr = supply_fan.maximumFlowRate.to_f
1338
+ elsif supply_fan.autosizedMaximumFlowRate.is_initialized
1339
+ fan_max_afr = supply_fan.autosizedMaximumFlowRate.to_f
1340
1340
  else
1341
1341
  raise "Fan flow rate is undefined for fan #{supply_fan.name.to_s}"
1342
1342
  end
1343
- if clg_dx_coil.autosizedRatedAirFlowRateAtSelectedNominalSpeedLevel.is_initialized
1343
+ if clg_dx_coil.ratedAirFlowRateAtSelectedNominalSpeedLevel.is_initialized
1344
+ clg_dx_coil_afr = clg_dx_coil.ratedAirFlowRateAtSelectedNominalSpeedLevel.to_f
1345
+ elsif clg_dx_coil.autosizedRatedAirFlowRateAtSelectedNominalSpeedLevel.is_initialized
1344
1346
  clg_dx_coil_afr = clg_dx_coil.autosizedRatedAirFlowRateAtSelectedNominalSpeedLevel.to_f
1345
- elsif clg_dx_coil.ratedAirFlowRateAtSelectedNominalSpeedLevel.is_initialized
1346
- clg_dx_coil_afr = clg_dx_coil.ratedAirFlowRateAtSelectedNominalSpeedLevel.to_f
1347
1347
  else
1348
1348
  raise "Rated air flow rate at selected nominal speed level is undefined for coil #{clg_dx_coil.name.to_s}"
1349
1349
  end
@@ -1357,10 +1357,10 @@ class ECMS
1357
1357
  end
1358
1358
  htg_dx_coil_init_name = get_hvac_comp_init_name(htg_dx_coil, false)
1359
1359
  htg_dx_coil.setName(htg_dx_coil_init_name)
1360
- if backup_coil.autosizedNominalCapacity.is_initialized
1360
+ if backup_coil.nominalCapacity.is_initialized
1361
+ backup_coil_cap = backup_coil.nominalCapacity.to_f
1362
+ elsif backup_coil.autosizedNominalCapacity.is_initialized
1361
1363
  backup_coil_cap = backup_coil.autosizedNominalCapacity.to_f
1362
- elsif backup_coil.nominalCapacity.is_initialized
1363
- backup_coil_cap = backup_coil.nominalCapacity.to_f
1364
1364
  else
1365
1365
  raise "Nominal capacity is undefiled for coil #{backup_coil.name.to_s}"
1366
1366
  end
@@ -1492,19 +1492,19 @@ class ECMS
1492
1492
  if clg_dx_coil && htg_dx_coil && backup_coil && fan
1493
1493
  clg_dx_coil_init_name = get_hvac_comp_init_name(clg_dx_coil, false)
1494
1494
  clg_dx_coil.setName(clg_dx_coil_init_name)
1495
- if clg_dx_coil.autosizedRatedTotalCoolingCapacity.is_initialized
1496
- clg_dx_coil_cap = clg_dx_coil.autosizedRatedTotalCoolingCapacity.to_f
1497
- elsif clg_dx_coil.ratedTotalCoolingCapacity.is_initialized
1495
+ if clg_dx_coil.ratedTotalCoolingCapacity.is_initialized
1498
1496
  clg_dx_coil_cap = clg_dx_coil.ratedTotalCoolingCapacity.to_f
1497
+ elsif clg_dx_coil.autosizedRatedTotalCoolingCapacity.is_initialized
1498
+ clg_dx_coil_cap = clg_dx_coil.autosizedRatedTotalCoolingCapacity.to_f
1499
1499
  else
1500
1500
  raise "The total cooling capacity is undefined for coil #{clg_dx_coil_cap.name.to_s}"
1501
1501
  end
1502
1502
  htg_dx_coil_init_name = get_hvac_comp_init_name(htg_dx_coil, true)
1503
1503
  htg_dx_coil.setName(htg_dx_coil_init_name)
1504
- if backup_coil.autosizedNominalCapacity.is_initialized
1505
- backup_coil_cap = backup_coil.autosizedNominalCapacity.to_f
1506
- elsif backup_coil.nominalCapacity.is_initialized
1504
+ if backup_coil.nominalCapacity.is_initialized
1507
1505
  backup_coil_cap = backup_coil.nominalCapacity.to_f
1506
+ elsif backup_coil.autosizedNominalCapacity.is_initialized
1507
+ backup_coil_cap = backup_coil.autosizedNominalCapacity.to_f
1508
1508
  else
1509
1509
  raise "The nominal capacity is undefined for coil #{backup_coil.name.to_s}"
1510
1510
  end
@@ -1653,19 +1653,19 @@ class ECMS
1653
1653
  # update names of dx coils
1654
1654
  clg_dx_coil_init_name = get_hvac_comp_init_name(clg_dx_coil, false)
1655
1655
  clg_dx_coil.setName(clg_dx_coil_init_name)
1656
- if clg_dx_coil.autosizedRatedTotalCoolingCapacity.is_initialized
1657
- clg_dx_coil_cap = clg_dx_coil.autosizedRatedTotalCoolingCapacity.to_f
1658
- elsif clg_dx_coil.ratedTotalCoolingCapacity.is_initialized
1656
+ if clg_dx_coil.ratedTotalCoolingCapacity.is_initialized
1659
1657
  clg_dx_coil_cap = clg_dx_coil.ratedTotalCoolingCapacity.to_f
1658
+ elsif clg_dx_coil.autosizedRatedTotalCoolingCapacity.is_initialized
1659
+ clg_dx_coil_cap = clg_dx_coil.autosizedRatedTotalCoolingCapacity.to_f
1660
1660
  else
1661
1661
  raise "Rated total cooling capacity is undefined for coil #{clg_dx_coil.name.to_s}"
1662
1662
  end
1663
1663
  htg_dx_coil_init_name = get_hvac_comp_init_name(htg_dx_coil, true)
1664
1664
  htg_dx_coil.setName(htg_dx_coil_init_name)
1665
- if backup_coil.autosizedNominalCapacity.is_initialized
1666
- backup_coil_cap = backup_coil.autosizedNominalCapacity.to_f
1667
- elsif backup_coil.nominalCapacity.is_initialized
1665
+ if backup_coil.nominalCapacity.is_initialized
1668
1666
  backup_coil_cap = backup_coil.nominalCapacity.to_f
1667
+ elsif backup_coil.autosizedNominalCapacity.is_initialized
1668
+ backup_coil_cap = backup_coil.autosizedNominalCapacity.to_f
1669
1669
  else
1670
1670
  raise "Nominal capacity is undefined for coil #{backup_coil.name.to_s}"
1671
1671
  end
@@ -1919,18 +1919,18 @@ class ECMS
1919
1919
  cw_loop = model.getPlantLoops.select {|loop| loop.sizingPlant.loopType.to_s.downcase == 'condenser'}[0]
1920
1920
  # condenser flow rate is set based on heating loop flow rate and cooling loop flow rate (adjusted for sizing factors)
1921
1921
  cw_loop_max_flow = 0.0
1922
- if hw_heatpump_loop.autosizedMaximumLoopFlowRate.is_initialized
1923
- cw_loop_max_flow += heatpump_siz_f*hw_heatpump_loop.autosizedMaximumLoopFlowRate.to_f
1924
- elsif hw_heatpump_loop.maximumLoopFlowRate.is_initialized
1922
+ if hw_heatpump_loop.maximumLoopFlowRate.is_initialized
1925
1923
  cw_loop_max_flow += heatpump_siz_f*hw_heatpump_loop.maximumLoopFlowRate.to_f
1924
+ elsif hw_heatpump_loop.autosizedMaximumLoopFlowRate.is_initialized
1925
+ cw_loop_max_flow += heatpump_siz_f*hw_heatpump_loop.autosizedMaximumLoopFlowRate.to_f
1926
1926
  else
1927
1927
  raise("apply_efficiency_ecm_hs14_cgshp_fancoils: heating loop #{hw_heatpump_loop.name.to_s} flow rate is not defined")
1928
1928
  end
1929
1929
  chw_loop = model.getPlantLoops.select {|loop| loop.sizingPlant.loopType.to_s.downcase == 'cooling'}[0]
1930
- if chw_loop.autosizedMaximumLoopFlowRate.is_initialized
1931
- cw_loop_max_flow += chiller_siz_f*chw_loop.autosizedMaximumLoopFlowRate.to_f
1932
- elsif chw_loop.maximumLoopFlowRate.is_initialized
1930
+ if chw_loop.maximumLoopFlowRate.is_initialized
1933
1931
  cw_loop_max_flow += chiller_siz_f*chw_loop.maximumLoopFlowRate.to_f
1932
+ elsif chw_loop.autosizedMaximumLoopFlowRate.is_initialized
1933
+ cw_loop_max_flow += chiller_siz_f*chw_loop.autosizedMaximumLoopFlowRate.to_f
1934
1934
  else
1935
1935
  raise("apply_efficiency_ecm_hs14_cgshp_fancoils: cooling loop #{chw_loop.name.to_s} is not defined")
1936
1936
  end
@@ -1938,10 +1938,10 @@ class ECMS
1938
1938
  cw_loop_pump = cw_loop.supplyComponents.select {|comp| comp.to_PumpVariableSpeed.is_initialized}[0].to_PumpVariableSpeed.get
1939
1939
  cw_loop_pump.setRatedFlowRate(cw_loop_max_flow)
1940
1940
  # set heating capacity of water-source heat pump
1941
- if hw_heatpump.autosizedRatedHeatingCapacity.is_initialized
1942
- cap = hw_heatpump.autosizedRatedHeatingCapacity.to_f
1943
- elsif hw_heatpump.ratedHeatingCapacity.is_initialized
1941
+ if hw_heatpump.ratedHeatingCapacity.is_initialized
1944
1942
  cap = hw_heatpump.ratedHeatingCapacity.to_f
1943
+ elsif hw_heatpump.autosizedRatedHeatingCapacity.is_initialized
1944
+ cap = hw_heatpump.autosizedRatedHeatingCapacity.to_f
1945
1945
  else
1946
1946
  raise("apply_efficiency_ecm_hs14_cgshp_fancoils: capacity of water-source heat pump #{hw_heatpump.name.to_s} is not defined")
1947
1947
  end
@@ -1957,10 +1957,10 @@ class ECMS
1957
1957
  end
1958
1958
  end
1959
1959
  raise("apply_efficiency_ecm_hs14_cgshp_fancoils: no water-cooled chiller found in cooling loop #{chw_loop.name.to_s}") if chiller_water_cooled.nil?
1960
- if chiller_water_cooled.autosizedReferenceCapacity.is_initialized
1961
- cap = chiller_water_cooled.autosizedReferenceCapacity.to_f
1962
- elsif chiller_water_cooled.referenceCapacity.is_initialized
1960
+ if chiller_water_cooled.referenceCapacity.is_initialized
1963
1961
  cap = chiller_water_cooled.referenceCapacity.to_f
1962
+ elsif chiller_water_cooled.autosizedReferenceCapacity.is_initialized
1963
+ cap = chiller_water_cooled.autosizedReferenceCapacity.to_f
1964
1964
  else
1965
1965
  raise("apply_efficiency_ecm_hs14_cgshp_fancoils: cooling capacity of chiller #{chiller_water_cooled.name.to_s} is not defined")
1966
1966
  end
@@ -3120,14 +3120,14 @@ class ECMS
3120
3120
  raise "There was a problem setting the boiler part load curve named #{part_load_curve_name} for #{component.name}. Please ensure that the curve is entered and referenced correctly in the ECMS class curves.json and boiler_set.json files." unless part_load_curve
3121
3121
 
3122
3122
  component.setNormalizedBoilerEfficiencyCurve(part_load_curve)
3123
- if component.isNominalCapacityAutosized
3124
- boiler_size_W = component.autosizedNominalCapacity.get
3125
- else
3126
- boiler_size_W = component.nominalCapacity.to_f
3123
+ if component.nominalCapacity.is_initialized
3124
+ boiler_size_w = component.nominalCapacity.to_f
3125
+ elsif component.isNominalCapacityAutosized
3126
+ boiler_size_w = component.autosizedNominalCapacity.get
3127
3127
  end
3128
- boiler_size_kbtu_per_hour = OpenStudio.convert(boiler_size_W, 'W', 'kBtu/h').get
3128
+ boiler_size_kbtu_per_hour = OpenStudio.convert(boiler_size_w, 'W', 'kBtu/h').get
3129
3129
  boiler_primacy = 'Primary '
3130
- if boiler_size_W < 1.0
3130
+ if boiler_size_w < 1.0
3131
3131
  boiler_primacy = 'Secondary '
3132
3132
  end
3133
3133
  if eff['name'].nil?
@@ -3295,17 +3295,17 @@ class ECMS
3295
3295
 
3296
3296
  component.setPartLoadFactorCurve(part_load_curve)
3297
3297
  # Get the volume and capacity of the SHW tank.
3298
- if component.isTankVolumeAutosized
3299
- shw_vol_gal = 'auto_size'
3300
- else
3298
+ if component.tankVolume.is_initialized
3301
3299
  shw_vol_m3 = component.tankVolume.to_f
3302
3300
  shw_vol_gal = OpenStudio.convert(shw_vol_m3, 'm^3', 'gal').get.to_f.round(0)
3301
+ elsif component.isTankVolumeAutosized
3302
+ shw_vol_gal = 'auto_size'
3303
3303
  end
3304
- if component.isHeaterMaximumCapacityAutosized
3305
- shw_capacity_kBtu_hr = 'auto_cap'
3306
- else
3304
+ if component.heaterMaximumCapacity.is_initialized
3307
3305
  shw_capacity_W = component.heaterMaximumCapacity.to_f
3308
3306
  shw_capacity_kBtu_hr = OpenStudio.convert(shw_capacity_W, 'W', 'kBtu/h').get.to_f.round(0)
3307
+ elsif component.isHeaterMaximumCapacityAutosized
3308
+ shw_capacity_kBtu_hr = 'auto_cap'
3309
3309
  end
3310
3310
  # Set a default revised shw tank name if no name is present in the eff hash.
3311
3311
  if eff['name'].nil?
@@ -13,5 +13,5 @@ module OpenstudioStandards
13
13
  end
14
14
  return 'git-not-found-on-this-system'
15
15
  end
16
- VERSION = '0.3.1.rc1'.freeze
16
+ VERSION = '0.3.1.rc2'.freeze
17
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio-standards
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1.rc1
4
+ version: 0.3.1.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Parker
@@ -28,7 +28,7 @@ authors:
28
28
  autorequire:
29
29
  bindir: bin
30
30
  cert_chain: []
31
- date: 2023-03-17 00:00:00.000000000 Z
31
+ date: 2023-04-03 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: minitest-reporters