openstudio-standards 0.7.1 → 0.8.0.rc2

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.
Files changed (363) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAE90120162019LargeHotel.json +58 -13
  3. data/data/geometry/ASHRAELargeHotel.json +58 -13
  4. data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
  5. data/data/standards/export_OpenStudio_libraries.rb +2 -2
  6. data/data/standards/manage_OpenStudio_Standards.rb +6 -6
  7. data/data/standards/openstudio_standards_duplicates_log.csv +7961 -1
  8. data/data/standards/test_performance_expected_dd_results.csv +2016 -2004
  9. data/lib/openstudio-standards/btap/fileio.rb +171 -5
  10. data/lib/openstudio-standards/constructions/create.rb +38 -4
  11. data/lib/openstudio-standards/constructions/modify.rb +10 -3
  12. data/lib/openstudio-standards/create_typical/create_typical.rb +42 -28
  13. data/lib/openstudio-standards/create_typical/space_type_information.rb +160 -0
  14. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +22 -21
  15. data/lib/openstudio-standards/exterior_lighting/create.rb +454 -0
  16. data/lib/openstudio-standards/exterior_lighting/data/entryways.csv +52 -0
  17. data/lib/openstudio-standards/exterior_lighting/data/parking.csv +54 -0
  18. data/lib/openstudio-standards/exterior_lighting/data/typical_exterior_lighting.json +37 -0
  19. data/lib/openstudio-standards/exterior_lighting/information.rb +202 -0
  20. data/lib/openstudio-standards/geometry/information.rb +49 -2
  21. data/lib/openstudio-standards/hvac/components/create.rb +169 -0
  22. data/lib/openstudio-standards/hvac/components/modify.rb +42 -0
  23. data/lib/openstudio-standards/hvac/exhaust/create_exhaust_fan.rb +108 -0
  24. data/lib/openstudio-standards/hvac/exhaust/data/convert_data.rb +86 -0
  25. data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.csv +18 -0
  26. data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.json +89 -0
  27. data/lib/openstudio-standards/infiltration/nist_infiltration.rb +25 -13
  28. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +0 -64
  29. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +0 -25
  30. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +0 -25
  31. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +1 -11
  32. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +5 -1
  33. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +1 -1
  34. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -7
  35. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +36 -18
  36. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +1 -1
  37. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +121 -239
  38. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +179 -151
  39. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +0 -466
  40. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +18 -2
  41. data/lib/openstudio-standards/refrigeration/create_case.rb +125 -0
  42. data/lib/openstudio-standards/refrigeration/create_compressor.rb +78 -0
  43. data/lib/openstudio-standards/refrigeration/create_compressor_rack.rb +48 -0
  44. data/lib/openstudio-standards/refrigeration/create_refrigeration_system.rb +74 -0
  45. data/lib/openstudio-standards/refrigeration/create_typical_refrigeration.rb +161 -0
  46. data/lib/openstudio-standards/refrigeration/create_walkin.rb +116 -0
  47. data/lib/openstudio-standards/refrigeration/data/refrigerated_cases.csv +31 -0
  48. data/lib/openstudio-standards/refrigeration/data/refrigerated_walkins.csv +76 -0
  49. data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +13 -0
  50. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_cases.csv +17 -0
  51. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_walkins.csv +53 -0
  52. data/lib/openstudio-standards/refrigeration/information.rb +130 -0
  53. data/lib/openstudio-standards/schedules/parametric.rb +1 -1
  54. data/lib/openstudio-standards/service_water_heating/create_typical.rb +299 -0
  55. data/lib/openstudio-standards/service_water_heating/create_water_heating_loop.rb +16 -14
  56. data/lib/openstudio-standards/service_water_heating/data/convert_data.rb +119 -0
  57. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.csv +54 -0
  58. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.json +810 -0
  59. data/lib/openstudio-standards/service_water_heating/information.rb +69 -0
  60. data/lib/openstudio-standards/sql_file/fenestration.rb +1 -1
  61. data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +154 -0
  62. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +35 -12
  63. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +110 -61
  64. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +128 -29
  65. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +103 -38
  66. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  67. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +106 -5
  68. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +8 -8
  69. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +44 -17
  70. data/lib/openstudio-standards/standards/Standards.Fan.rb +32 -21
  71. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +45 -18
  72. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +14 -9
  73. data/lib/openstudio-standards/standards/Standards.Model.rb +294 -76
  74. data/lib/openstudio-standards/standards/Standards.Motor.rb +66 -0
  75. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -1
  76. data/lib/openstudio-standards/standards/Standards.Pump.rb +34 -20
  77. data/lib/openstudio-standards/standards/Standards.ServiceWaterHeating.rb +0 -353
  78. data/lib/openstudio-standards/standards/Standards.Space.rb +3 -107
  79. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +2 -57
  80. data/lib/openstudio-standards/standards/Standards.Surface.rb +11 -3
  81. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +1 -120
  82. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.computer_room_acs.json +142 -0
  83. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +1006 -596
  84. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.energy_recovery.json +724 -0
  85. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +1258 -163
  86. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +1070 -140
  87. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +33 -3374
  88. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +1400 -340
  89. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.vrfs.json +769 -0
  90. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +2 -5338
  91. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.computer_room_acs.json +142 -0
  92. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +1006 -596
  93. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.energy_recovery.json +724 -0
  94. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +1258 -163
  95. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +1070 -140
  96. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +15 -3343
  97. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +1840 -372
  98. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.vrfs.json +769 -0
  99. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +20 -10
  100. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +0 -9
  101. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +0 -5382
  102. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.computer_room_acs.json +142 -0
  103. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +1006 -628
  104. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +718 -712
  105. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +1438 -163
  106. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +2552 -182
  107. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +14 -3368
  108. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +2348 -352
  109. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.vrfs.json +769 -0
  110. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +47 -61
  111. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +6 -0
  112. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Motor.rb +11 -0
  113. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +0 -9
  114. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +2 -5522
  115. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.computer_room_acs.json +142 -0
  116. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +1006 -628
  117. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +1358 -1346
  118. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +1438 -163
  119. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +1359 -189
  120. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +19 -3451
  121. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +2176 -616
  122. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.vrfs.json +616 -0
  123. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +47 -61
  124. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +9 -0
  125. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Motor.rb +11 -0
  126. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +0 -9
  127. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +8 -6055
  128. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.computer_room_acs.json +142 -0
  129. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.economizers.json +1006 -628
  130. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +1188 -1424
  131. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ext_ltg.json +1498 -163
  132. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.motors.json +1769 -189
  133. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +15 -3422
  134. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +1807 -408
  135. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.vrfs.json +1024 -0
  136. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +70 -87
  137. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +9 -0
  138. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Motor.rb +11 -0
  139. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +0 -9
  140. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +8 -6080
  141. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.computer_room_acs.json +142 -0
  142. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.economizers.json +1006 -628
  143. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +2806 -3296
  144. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ext_ltg.json +1558 -163
  145. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.motors.json +1759 -189
  146. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +16 -3448
  147. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +2758 -422
  148. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.vrfs.json +684 -0
  149. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +14 -3318
  150. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +2 -4786
  151. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.chillers.json +1 -1
  152. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +953 -207
  153. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.energy_recovery.json +724 -0
  154. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.ext_ltg.json +5 -5
  155. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +11 -2858
  156. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirConditionerVariableRefrigerantFlow.rb +13 -0
  157. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +0 -18
  158. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +1 -4739
  159. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.chillers.json +0 -51
  160. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +953 -207
  161. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.energy_recovery.json +724 -0
  162. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.ext_ltg.json +5 -5
  163. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +9 -2830
  164. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirConditionerVariableRefrigerantFlow.rb +13 -0
  165. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +0 -18
  166. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.economizers.json +1006 -564
  167. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.energy_recovery.json +1264 -0
  168. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.ext_ltg.json +5 -5
  169. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +0 -1079
  170. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +132 -288
  171. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.HeatExchangerSensLat.rb +44 -20
  172. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +11 -0
  173. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +0 -8
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.economizers.json +1006 -564
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.energy_recovery.json +1264 -0
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ext_ltg.json +5 -5
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +0 -1079
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +137 -288
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +44 -20
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +11 -0
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +0 -9
  182. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +12 -10
  183. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +8 -6
  184. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +8 -6
  185. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +9 -3
  186. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +6 -40
  187. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +30 -337
  188. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +4 -5
  189. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -2
  190. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +56 -3
  191. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +80 -0
  192. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +0 -10
  193. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +35 -0
  194. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.economizers.json +550 -0
  195. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.energy_recovery.json +724 -0
  196. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.ext_ltg.json +1216 -0
  197. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps.json +5 -5
  198. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +225 -245
  199. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.unitary_acs.json +174 -78
  200. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.water_heaters.json +354 -317
  201. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +19 -3
  202. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac.json +185 -0
  203. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac_doas.json +127 -0
  204. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_building.json +121 -0
  205. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_design_specification_outdoor_air.json +49 -0
  206. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_electric_equipment.json +113 -0
  207. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_exterior_lights.json +120 -0
  208. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_space.json +388 -0
  209. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_spacetype.json +367 -0
  210. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_thermal_zone.json +56 -0
  211. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_connections.json +37 -0
  212. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment.json +69 -0
  213. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment_definition.json +37 -0
  214. data/lib/openstudio-standards/standards/cbes/cbes_pre_1978/data/cbes_pre_1978.ext_ltg.json +5 -5
  215. data/lib/openstudio-standards/standards/cbes/cbes_t24_1978/data/cbes_t24_1978.ext_ltg.json +5 -5
  216. data/lib/openstudio-standards/standards/cbes/cbes_t24_1992/data/cbes_t24_1992.ext_ltg.json +5 -5
  217. data/lib/openstudio-standards/standards/cbes/cbes_t24_2001/data/cbes_t24_2001.ext_ltg.json +5 -5
  218. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/data/cbes_t24_2005.ext_ltg.json +5 -5
  219. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/data/cbes_t24_2008.ext_ltg.json +5 -5
  220. data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/data/comstock_deer_1985.ext_ltg.json +5 -5
  221. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ext_ltg.json +5 -5
  222. data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/data/comstock_deer_1996.ext_ltg.json +5 -5
  223. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ext_ltg.json +5 -5
  224. data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/data/comstock_deer_2003.ext_ltg.json +5 -5
  225. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ext_ltg.json +5 -5
  226. data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/data/comstock_deer_2007.ext_ltg.json +5 -5
  227. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ext_ltg.json +5 -5
  228. data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/data/comstock_deer_2011.ext_ltg.json +5 -5
  229. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ext_ltg.json +5 -5
  230. data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/data/comstock_deer_2014.ext_ltg.json +5 -5
  231. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ext_ltg.json +5 -5
  232. data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/data/comstock_deer_2015.ext_ltg.json +5 -5
  233. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ext_ltg.json +5 -5
  234. data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/data/comstock_deer_2017.ext_ltg.json +5 -5
  235. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ext_ltg.json +5 -5
  236. data/lib/openstudio-standards/standards/deer/deer_2020/comstock_deer_2020/data/comstock_deer_2020.ext_ltg.json +5 -5
  237. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ext_ltg.json +5 -5
  238. data/lib/openstudio-standards/standards/deer/deer_2025/comstock_deer_2025/data/comstock_deer_2025.ext_ltg.json +5 -5
  239. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ext_ltg.json +5 -5
  240. data/lib/openstudio-standards/standards/deer/deer_2030/comstock_deer_2030/data/comstock_deer_2030.ext_ltg.json +5 -5
  241. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ext_ltg.json +5 -5
  242. data/lib/openstudio-standards/standards/deer/deer_2035/comstock_deer_2035/data/comstock_deer_2035.ext_ltg.json +5 -5
  243. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ext_ltg.json +5 -5
  244. data/lib/openstudio-standards/standards/deer/deer_2040/comstock_deer_2040/data/comstock_deer_2040.ext_ltg.json +5 -5
  245. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ext_ltg.json +5 -5
  246. data/lib/openstudio-standards/standards/deer/deer_2045/comstock_deer_2045/data/comstock_deer_2045.ext_ltg.json +5 -5
  247. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ext_ltg.json +5 -5
  248. data/lib/openstudio-standards/standards/deer/deer_2050/comstock_deer_2050/data/comstock_deer_2050.ext_ltg.json +5 -5
  249. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ext_ltg.json +5 -5
  250. data/lib/openstudio-standards/standards/deer/deer_2055/comstock_deer_2055/data/comstock_deer_2055.ext_ltg.json +5 -5
  251. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ext_ltg.json +5 -5
  252. data/lib/openstudio-standards/standards/deer/deer_2060/comstock_deer_2060/data/comstock_deer_2060.ext_ltg.json +5 -5
  253. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ext_ltg.json +5 -5
  254. data/lib/openstudio-standards/standards/deer/deer_2065/comstock_deer_2065/data/comstock_deer_2065.ext_ltg.json +5 -5
  255. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ext_ltg.json +5 -5
  256. data/lib/openstudio-standards/standards/deer/deer_2070/comstock_deer_2070/data/comstock_deer_2070.ext_ltg.json +5 -5
  257. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ext_ltg.json +5 -5
  258. data/lib/openstudio-standards/standards/deer/deer_2075/comstock_deer_2075/data/comstock_deer_2075.ext_ltg.json +5 -5
  259. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ext_ltg.json +5 -5
  260. data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/data/comstock_deer_pre_1975.ext_ltg.json +5 -5
  261. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ext_ltg.json +5 -5
  262. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +10 -1
  263. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/unitary_acs.json +20 -20
  264. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +379 -27
  265. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +1 -4
  266. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +0 -1
  267. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +1 -1
  268. data/lib/openstudio-standards/standards/necb/NECB2011/data/unitary_acs.json +20 -20
  269. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +34 -22
  270. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +76 -23
  271. data/lib/openstudio-standards/standards/necb/NECB2011/necb_shw_calculation.xlsx +0 -0
  272. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -5
  273. data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +6 -2
  274. data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +26 -24
  275. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -1
  276. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +38 -32
  277. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +215 -18
  278. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +190 -15
  279. data/lib/openstudio-standards/standards/necb/common/national_carbon_price_sched_feb_2025.json +60 -0
  280. data/lib/openstudio-standards/standards/necb/common/utility_pricing_2025-02-20.csv +92 -0
  281. data/lib/openstudio-standards/utilities/ruleset_check.rb +204 -0
  282. data/lib/openstudio-standards/version.rb +1 -1
  283. data/lib/openstudio-standards/weather/information.rb +1 -1
  284. data/lib/openstudio-standards.rb +32 -12
  285. metadata +78 -80
  286. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.refrigeration.rb +0 -13
  287. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.refrigeration.rb +0 -13
  288. data/lib/openstudio-standards/prototypes/cbes/cbes.refrigeration.rb +0 -13
  289. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +0 -432
  290. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +0 -11
  291. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ext_ltg.json +0 -169
  292. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ref_cases.json +0 -1456
  293. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ref_lnup.json +0 -562
  294. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.spc_typ.json +0 -20804
  295. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +0 -11
  296. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ext_ltg.json +0 -169
  297. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ref_cases.json +0 -1456
  298. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ref_lnup.json +0 -562
  299. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ext_ltg.json +0 -169
  300. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ref_cases.json +0 -1456
  301. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ref_lnup.json +0 -562
  302. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ext_ltg.json +0 -169
  303. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ref_cases.json +0 -1456
  304. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ref_lnup.json +0 -562
  305. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ext_ltg.json +0 -169
  306. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ref_cases.json +0 -763
  307. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ref_lnup.json +0 -562
  308. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ext_ltg.json +0 -169
  309. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ref_cases.json +0 -763
  310. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ref_lnup.json +0 -562
  311. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ext_ltg.json +0 -169
  312. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ref_cases.json +0 -1456
  313. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ref_lnup.json +0 -562
  314. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ext_ltg.json +0 -169
  315. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ref_cases.json +0 -1456
  316. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ref_lnup.json +0 -562
  317. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_economizers.json +0 -213
  318. data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +0 -11
  319. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +0 -11
  320. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +0 -11
  321. data/lib/openstudio-standards/standards/deer/deer.Space.rb +0 -20
  322. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_cases.json +0 -1456
  323. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_lnup.json +0 -562
  324. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_cases.json +0 -1456
  325. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_lnup.json +0 -562
  326. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_cases.json +0 -1456
  327. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_lnup.json +0 -562
  328. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_cases.json +0 -1456
  329. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_lnup.json +0 -562
  330. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_cases.json +0 -1456
  331. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_lnup.json +0 -562
  332. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_cases.json +0 -1456
  333. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_lnup.json +0 -562
  334. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_cases.json +0 -1456
  335. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_lnup.json +0 -562
  336. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_cases.json +0 -1456
  337. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_lnup.json +0 -562
  338. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_cases.json +0 -1456
  339. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_lnup.json +0 -562
  340. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_cases.json +0 -1456
  341. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_lnup.json +0 -562
  342. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_cases.json +0 -1456
  343. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_lnup.json +0 -562
  344. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_cases.json +0 -1456
  345. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_lnup.json +0 -562
  346. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_cases.json +0 -1456
  347. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_lnup.json +0 -562
  348. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_cases.json +0 -1456
  349. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_lnup.json +0 -562
  350. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_cases.json +0 -1456
  351. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_lnup.json +0 -562
  352. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_cases.json +0 -1456
  353. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_lnup.json +0 -562
  354. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_cases.json +0 -1456
  355. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_lnup.json +0 -562
  356. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_cases.json +0 -1456
  357. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_lnup.json +0 -562
  358. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_cases.json +0 -1456
  359. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_lnup.json +0 -562
  360. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_cases.json +0 -1456
  361. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_lnup.json +0 -562
  362. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_cases.json +0 -1456
  363. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_lnup.json +0 -562
@@ -364,17 +364,13 @@ class Standard
364
364
  end
365
365
 
366
366
  # check for existence of condenser_water_loop if WaterCooled
367
- if chiller_cooling_type == 'WaterCooled'
368
- if condenser_water_loop.nil?
369
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.Model.Model', 'Requested chiller is WaterCooled but no condenser loop specified.')
370
- end
367
+ if chiller_cooling_type == 'WaterCooled' && condenser_water_loop.nil?
368
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.Model.Model', 'Requested chiller is WaterCooled but no condenser loop specified.')
371
369
  end
372
370
 
373
371
  # check for non-existence of condenser_water_loop if AirCooled
374
- if chiller_cooling_type == 'AirCooled'
375
- unless condenser_water_loop.nil?
376
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.Model.Model', 'Requested chiller is AirCooled but condenser loop specified.')
377
- end
372
+ if chiller_cooling_type == 'AirCooled' && !condenser_water_loop.nil?
373
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.Model.Model', 'Requested chiller is AirCooled but condenser loop specified.')
378
374
  end
379
375
 
380
376
  if cooling_fuel == 'DistrictCooling'
@@ -1464,23 +1460,21 @@ class Standard
1464
1460
  oa_system = air_loop.airLoopHVACOutdoorAirSystem.get
1465
1461
 
1466
1462
  # create the ERV and set its properties
1467
- erv = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(model)
1468
- erv.addToNode(oa_system.outboardOANode.get)
1469
- erv.setHeatExchangerType('Rotary')
1470
1463
  # @todo come up with scheme for estimating power of ERV motor wheel which might require knowing airflow.
1471
1464
  # erv.setNominalElectricPower(value_new)
1472
- erv.setEconomizerLockout(true)
1473
- erv.setSupplyAirOutletTemperatureControl(false)
1474
-
1475
- erv.setSensibleEffectivenessat100HeatingAirFlow(0.76)
1476
- erv.setSensibleEffectivenessat75HeatingAirFlow(0.81)
1477
- erv.setLatentEffectivenessat100HeatingAirFlow(0.68)
1478
- erv.setLatentEffectivenessat75HeatingAirFlow(0.73)
1479
-
1480
- erv.setSensibleEffectivenessat100CoolingAirFlow(0.76)
1481
- erv.setSensibleEffectivenessat75CoolingAirFlow(0.81)
1482
- erv.setLatentEffectivenessat100CoolingAirFlow(0.68)
1483
- erv.setLatentEffectivenessat75CoolingAirFlow(0.73)
1465
+ erv = OpenstudioStandards::HVAC.create_hx_air_to_air_sensible_and_latent(model,
1466
+ name: "#{zone.name} ERV HX",
1467
+ type: "Rotary",
1468
+ economizer_lockout: true,
1469
+ sensible_heating_100_eff: 0.76,
1470
+ sensible_heating_75_eff: 0.81,
1471
+ latent_heating_100_eff: 0.68,
1472
+ latent_heating_75_eff: 0.73,
1473
+ sensible_cooling_100_eff: 0.76,
1474
+ sensible_cooling_75_eff: 0.81,
1475
+ latent_cooling_100_eff: 0.68,
1476
+ latent_cooling_75_eff: 0.73)
1477
+ erv.addToNode(oa_system.outboardOANode.get)
1484
1478
 
1485
1479
  # increase fan static pressure to account for ERV
1486
1480
  erv_pressure_rise = OpenStudio.convert(1.0, 'inH_{2}O', 'Pa').get
@@ -5699,19 +5693,19 @@ class Standard
5699
5693
  # erv_controller.setTimeofDayEconomizerFlowControlSchedule(self.alwaysOnDiscreteSchedule)
5700
5694
  # erv_controller.setHighHumidityControlFlag(false)
5701
5695
 
5702
- heat_exchanger = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(model)
5703
- heat_exchanger.setName("#{zone.name} ERV HX")
5704
- heat_exchanger.setHeatExchangerType('Plate')
5705
- heat_exchanger.setEconomizerLockout(false)
5706
- heat_exchanger.setSupplyAirOutletTemperatureControl(false)
5707
- heat_exchanger.setSensibleEffectivenessat100HeatingAirFlow(0.76)
5708
- heat_exchanger.setSensibleEffectivenessat75HeatingAirFlow(0.81)
5709
- heat_exchanger.setLatentEffectivenessat100HeatingAirFlow(0.68)
5710
- heat_exchanger.setLatentEffectivenessat75HeatingAirFlow(0.73)
5711
- heat_exchanger.setSensibleEffectivenessat100CoolingAirFlow(0.76)
5712
- heat_exchanger.setSensibleEffectivenessat75CoolingAirFlow(0.81)
5713
- heat_exchanger.setLatentEffectivenessat100CoolingAirFlow(0.68)
5714
- heat_exchanger.setLatentEffectivenessat75CoolingAirFlow(0.73)
5696
+ heat_exchanger = OpenstudioStandards::HVAC.create_hx_air_to_air_sensible_and_latent(model,
5697
+ name: "#{zone.name} ERV HX",
5698
+ type: "Plate",
5699
+ economizer_lockout: false,
5700
+ supply_air_outlet_temperature_control: false,
5701
+ sensible_heating_100_eff: 0.76,
5702
+ sensible_heating_75_eff: 0.81,
5703
+ latent_heating_100_eff: 0.68,
5704
+ latent_heating_75_eff: 0.73,
5705
+ sensible_cooling_100_eff: 0.76,
5706
+ sensible_cooling_75_eff: 0.81,
5707
+ latent_cooling_100_eff: 0.68,
5708
+ latent_cooling_75_eff: 0.73)
5715
5709
 
5716
5710
  zone_hvac = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator.new(model, heat_exchanger, supply_fan, exhaust_fan)
5717
5711
  zone_hvac.setName("#{zone.name} ERV")
@@ -5931,43 +5925,58 @@ class Standard
5931
5925
  # Add a residential ERV: standalone ERV that operates to provide OA,
5932
5926
  # used in conjuction with a system that having mechanical cooling and a heating coil
5933
5927
  #
5934
- # @param model [OpenStudio::Model::Model] OpenStudio Model object
5935
- # @param thermal_zone [OpenStudio::Model::ThermalZone] OpenStudio ThermalZone object
5936
- # @return [OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator] Standalone ERV
5928
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
5929
+ # @param thermal_zones [Array<OpenStudio::Model::ThermalZone>] array of zones to enable ideal air loads
5930
+ # @return [Array<OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator>] an array of zone ERVs
5937
5931
  def model_add_residential_erv(model,
5938
- thermal_zone,
5932
+ thermal_zones,
5939
5933
  min_oa_flow_m3_per_s_per_m2 = nil)
5940
-
5941
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone ERV for #{thermal_zone.name}.")
5942
-
5943
5934
  # Determine ERR and design basis when energy recovery is required
5944
- #
5945
5935
  # enthalpy_recovery_ratio = nil will trigger an ERV with no effectiveness that only provides OA
5946
5936
  enthalpy_recovery_ratio = nil
5937
+
5938
+ # Process climate zone:
5939
+ # Moisture regime is not needed for climate zone 7 and 8
5947
5940
  climate_zone = OpenstudioStandards::Weather.model_get_climate_zone(model)
5941
+ climate_zone_code = climate_zone.split('-')[-1]
5942
+ climate_zone_code = 7 if ['7A', '7B'].include? climate_zone_code
5943
+ climate_zone_code = 8 if ['8A', '8B'].include? climate_zone_code
5944
+
5948
5945
  case template
5949
- when '90.1-2019'
5946
+ when '90.1-2019', '90.1-2016'
5950
5947
  search_criteria = {
5951
5948
  'template' => template,
5952
- 'climate_zone' => climate_zone,
5949
+ 'climate_zone' => climate_zone_code,
5953
5950
  'under_8000_hours' => false,
5954
5951
  'nontransient_dwelling' => true
5955
5952
  }
5953
+ metric = 'enthalpy_recovery_ratio'
5956
5954
  else
5957
5955
  search_criteria = {
5958
5956
  'template' => template,
5959
- 'climate_zone' => climate_zone,
5957
+ 'climate_zone' => climate_zone_code,
5960
5958
  'under_8000_hours' => false
5961
5959
  }
5960
+ metric = 'energy_recovery_effectiveness'
5962
5961
  end
5963
5962
 
5964
- erv_enthalpy_recovery_ratio = model_find_object(standards_data['energy_recovery'], search_criteria)
5963
+ # Pick the most stringent of the heating or cooling Enthalpy Recovery Ratio (ERR)
5964
+ # or Energy Recovery Effectiveness (ERE); ERR and ERE are virtually the same metrics
5965
+ erv_enthalpy_recovery_ratio = nil
5966
+ erv_enthalpy_recovery_ratios = model_find_objects(standards_data['energy_recovery'], search_criteria)
5967
+ erv_enthalpy_recovery_ratios.each do |erv_data|
5968
+ if erv_enthalpy_recovery_ratio.nil?
5969
+ erv_enthalpy_recovery_ratio = erv_data
5970
+ end
5971
+ if !erv_data[metric].nil? && (erv_enthalpy_recovery_ratio[metric] <= erv_data[metric])
5972
+ erv_enthalpy_recovery_ratio = erv_data
5973
+ end
5974
+ end
5965
5975
 
5966
- # Extract ERR from data lookup
5976
+ # Extract ERR/ERE from data lookup
5967
5977
  if !erv_enthalpy_recovery_ratio.nil?
5968
- if erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio'].nil? & erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].nil?
5969
- # If not included in the data, an enthalpy
5970
- # recovery ratio (ERR) of 50% is used
5978
+ if erv_enthalpy_recovery_ratio[metric].nil? & erv_enthalpy_recovery_ratio['design_conditions'].nil?
5979
+ # If not included in the data, an ERR of 50% is used
5971
5980
  enthalpy_recovery_ratio = 0.5
5972
5981
  case climate_zone
5973
5982
  when 'ASHRAE 169-2006-6B',
@@ -5985,118 +5994,130 @@ class Standard
5985
5994
  design_conditions = 'cooling'
5986
5995
  end
5987
5996
  else
5988
- design_conditions = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].downcase
5989
- enthalpy_recovery_ratio = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio']
5997
+ design_conditions = erv_enthalpy_recovery_ratio['design_conditions'].downcase
5998
+ enthalpy_recovery_ratio = erv_enthalpy_recovery_ratio[metric]
5990
5999
  end
5991
6000
  end
5992
6001
 
5993
- # # Fan power with energy recovery = 0.934 W/cfm
5994
- supply_fan = create_fan_by_name(model,
5995
- 'ERV_Supply_Fan',
5996
- fan_name: "#{thermal_zone.name} ERV Supply Fan")
5997
- exhaust_fan = create_fan_by_name(model,
5998
- 'ERV_Supply_Fan',
5999
- fan_name: "#{thermal_zone.name} ERV Exhaust Fan")
6000
- supply_fan.setMotorEfficiency(0.48)
6001
- exhaust_fan.setMotorEfficiency(0.48)
6002
- supply_fan.setFanTotalEfficiency(0.303158)
6003
- exhaust_fan.setFanTotalEfficiency(0.303158)
6004
- supply_fan.setPressureRise(270.64755)
6005
- exhaust_fan.setPressureRise(270.64755)
6006
-
6007
-
6008
- # Create ERV Controller
6009
- erv_controller = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilatorController.new(model)
6010
- erv_controller.setName("#{thermal_zone.name} ERV Controller")
6011
- erv_controller.setControlHighIndoorHumidityBasedonOutdoorHumidityRatio(false)
6012
-
6013
- # Create heat exchanger
6014
- heat_exchanger = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(model)
6015
- heat_exchanger.setName("#{thermal_zone.name} ERV HX")
6016
- heat_exchanger.setSupplyAirOutletTemperatureControl(false)
6017
- heat_exchanger.setHeatExchangerType('Rotary')
6018
- heat_exchanger.setEconomizerLockout(false)
6019
- heat_exchanger.setFrostControlType('ExhaustOnly')
6020
- heat_exchanger.setThresholdTemperature(-23.3)
6021
- heat_exchanger.setInitialDefrostTimeFraction(0.167)
6022
- heat_exchanger.setRateofDefrostTimeFractionIncrease(1.44)
6023
- heat_exchanger.setAvailabilitySchedule(model_add_schedule(model, 'Always On - No Design Day'))
6024
- heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_efficiency_enthalpy_recovery_ratio(heat_exchanger, enthalpy_recovery_ratio, design_conditions, climate_zone)
6025
-
6026
- erv = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator.new(model, heat_exchanger, supply_fan, exhaust_fan)
6027
- erv.setName("#{thermal_zone.name} ERV")
6028
-
6029
- erv.setController(erv_controller)
6030
- erv.addToThermalZone(thermal_zone)
6031
-
6032
- # Set OA requirements; Assumes a default of 55 cfm
6033
- if min_oa_flow_m3_per_s_per_m2.nil?
6034
- erv.setSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
6035
- erv.setExhaustAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
6036
- else
6037
- erv.setVentilationRateperUnitFloorArea(min_oa_flow_m3_per_s_per_m2)
6038
- end
6039
- erv.setVentilationRateperOccupant(0.0)
6002
+ zone_ervs = []
6003
+ thermal_zones.each do |thermal_zone|
6004
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone ERV for #{thermal_zone.name}.")
6005
+
6006
+ # Fan power with energy recovery = 0.934 W/cfm
6007
+ supply_fan = create_fan_by_name(model,
6008
+ 'ERV_Supply_Fan',
6009
+ fan_name: "#{thermal_zone.name} ERV Supply Fan")
6010
+ exhaust_fan = create_fan_by_name(model,
6011
+ 'ERV_Supply_Fan',
6012
+ fan_name: "#{thermal_zone.name} ERV Exhaust Fan")
6013
+ supply_fan.setMotorEfficiency(0.48)
6014
+ exhaust_fan.setMotorEfficiency(0.48)
6015
+ supply_fan.setFanTotalEfficiency(0.303158)
6016
+ exhaust_fan.setFanTotalEfficiency(0.303158)
6017
+ supply_fan.setPressureRise(270.64755)
6018
+ exhaust_fan.setPressureRise(270.64755)
6019
+
6020
+ # Create heat exchanger
6021
+ heat_exchanger = OpenstudioStandards::HVAC.create_hx_air_to_air_sensible_and_latent(model,
6022
+ name: "#{thermal_zone.name} ERV HX",
6023
+ type: 'Rotary',
6024
+ economizer_lockout: false,
6025
+ supply_air_outlet_temperature_control: false,
6026
+ frost_control_type: 'ExhaustOnly')
6027
+ heat_exchanger.setThresholdTemperature(-23.3)
6028
+ heat_exchanger.setInitialDefrostTimeFraction(0.167)
6029
+ heat_exchanger.setRateofDefrostTimeFractionIncrease(1.44)
6030
+ heat_exchanger.setAvailabilitySchedule(model_add_schedule(model, 'Always On - No Design Day'))
6031
+ heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_efficiency_enthalpy_recovery_ratio(heat_exchanger, enthalpy_recovery_ratio, design_conditions, climate_zone)
6032
+
6033
+ # Create ERV Controller
6034
+ erv_controller = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilatorController.new(model)
6035
+ erv_controller.setName("#{thermal_zone.name} ERV Controller")
6036
+ erv_controller.setControlHighIndoorHumidityBasedonOutdoorHumidityRatio(false)
6037
+
6038
+ # Create ERV
6039
+ erv = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator.new(model, heat_exchanger, supply_fan, exhaust_fan)
6040
+ erv.setName("#{thermal_zone.name} ERV")
6041
+ erv.setController(erv_controller)
6042
+ erv.addToThermalZone(thermal_zone)
6043
+
6044
+ # Set OA requirements; Assumes a default of 55 cfm
6045
+ if min_oa_flow_m3_per_s_per_m2.nil?
6046
+ erv.setSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
6047
+ erv.setExhaustAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
6048
+ else
6049
+ erv.setVentilationRateperUnitFloorArea(min_oa_flow_m3_per_s_per_m2)
6050
+ end
6051
+ erv.setVentilationRateperOccupant(0.0)
6040
6052
 
6041
- # Ensure the ERV takes priority, so ventilation load is included when treated by other zonal systems
6042
- # From EnergyPlus I/O reference:
6043
- # "For situations where one or more equipment types has limited capacity or limited control capability, order the
6044
- # sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
6045
- # system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
6046
- # Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
6047
- # is added to the zone."
6048
- thermal_zone.setCoolingPriority(erv.to_ModelObject.get, 1)
6049
- thermal_zone.setHeatingPriority(erv.to_ModelObject.get, 1)
6053
+ # Ensure the ERV takes priority, so ventilation load is included when treated by other zonal systems
6054
+ # From EnergyPlus I/O reference:
6055
+ # "For situations where one or more equipment types has limited capacity or limited control capability, order the
6056
+ # sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
6057
+ # system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
6058
+ # Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
6059
+ # is added to the zone."
6060
+ thermal_zone.setCoolingPriority(erv.to_ModelObject.get, 1)
6061
+ thermal_zone.setHeatingPriority(erv.to_ModelObject.get, 1)
6062
+
6063
+ zone_ervs << erv
6064
+ end
6050
6065
 
6051
- return erv
6066
+ return zone_ervs
6052
6067
  end
6053
6068
 
6054
6069
  # Add a residential ventilation: standalone unit ventilation and zone exhaust that operates to provide OA,
6055
6070
  # used in conjuction with a system that having mechanical cooling and a heating coil
6056
6071
  #
6057
- # @param model [OpenStudio::Model::Model] OpenStudio Model object
6058
- # @param thermal_zone [OpenStudio::Model::ThermalZone] OpenStudio ThermalZone object
6059
- # @return [OpenStudio::Model::ZoneHVACUnitVentilator] Standalone Unit Ventilator
6072
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
6073
+ # @param thermal_zones [Array<OpenStudio::Model::ThermalZone>] array of zones to enable ideal air loads
6074
+ # @return [Array<OpenStudio::Model::ZoneHVACUnitVentilator>] an array of zone Unit Ventilators
6060
6075
  def model_add_residential_ventilator(model,
6061
- thermal_zone,
6076
+ thermal_zones,
6062
6077
  min_oa_flow_m3_per_s_per_m2 = nil)
6078
+ unit_ventilators = []
6079
+ thermal_zones.each do |thermal_zone|
6080
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone unit ventilator for #{thermal_zone.name}.")
6063
6081
 
6064
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone unit ventilator for #{thermal_zone.name}.")
6082
+ # Fan power with no energy recovery = 0.806 W/cfm
6083
+ supply_fan = create_fan_by_name(model,
6084
+ 'ERV_Supply_Fan',
6085
+ fan_name: "#{thermal_zone.name} Ventilator Supply Fan")
6086
+ supply_fan.setMotorEfficiency(0.48)
6087
+ supply_fan.setFanTotalEfficiency(0.303158)
6088
+ supply_fan.setPressureRise(233.6875)
6089
+
6090
+ unit_ventilator = OpenStudio::Model::ZoneHVACUnitVentilator.new(model, supply_fan)
6091
+ unit_ventilator.setName("#{thermal_zone.name} Unit Ventilator")
6092
+ unit_ventilator.addToThermalZone(thermal_zone)
6093
+ fan_zone_exhaust = create_fan_zone_exhaust(model,
6094
+ fan_name: "#{thermal_zone.name} Exhaust Fan",
6095
+ fan_efficiency: 0.303158,
6096
+ pressure_rise: 233.6875)
6097
+
6098
+ # Set OA requirements; Assumes a default of 55 cfm
6099
+ if min_oa_flow_m3_per_s_per_m2.nil?
6100
+ unit_ventilator.setMaximumSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
6101
+ fan_zone_exhaust.setMaximumFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
6102
+ else
6103
+ unit_ventilator.setMaximumSupplyAirFlowRate(min_oa_flow_m3_per_s_per_m2)
6104
+ fan_zone_exhaust.setMaximumFlowRate(min_oa_flow_m3_per_s_per_m2)
6105
+ end
6065
6106
 
6066
- # Fan power with no energy recovery = 0.806 W/cfm
6067
- supply_fan = create_fan_by_name(model,
6068
- 'ERV_Supply_Fan',
6069
- fan_name: "#{thermal_zone.name} Ventilator Supply Fan")
6070
- supply_fan.setMotorEfficiency(0.48)
6071
- supply_fan.setFanTotalEfficiency(0.303158)
6072
- supply_fan.setPressureRise(233.6875)
6073
-
6074
- unit_ventilator = OpenStudio::Model::ZoneHVACUnitVentilator.new(model, supply_fan)
6075
- unit_ventilator.setName("#{thermal_zone.name} Unit Ventilator")
6076
- unit_ventilator.addToThermalZone(thermal_zone)
6077
- fan_zone_exhaust = create_fan_zone_exhaust(model,
6078
- fan_name: "#{thermal_zone.name} Exhaust Fan",
6079
- fan_efficiency: 0.303158,
6080
- pressure_rise: 233.6875)
6081
-
6082
- # Set OA requirements; Assumes a default of 55 cfm
6083
- if min_oa_flow_m3_per_s_per_m2.nil?
6084
- unit_ventilator.setMaximumSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
6085
- fan_zone_exhaust.setMaximumFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
6086
- else
6087
- unit_ventilator.setMaximumSupplyAirFlowRate(min_oa_flow_m3_per_s_per_m2)
6088
- fan_zone_exhaust.setMaximumFlowRate(min_oa_flow_m3_per_s_per_m2)
6089
- end
6090
-
6091
- # Ensure the unit ventilator takes priority, so ventilation load is included when treated by other zonal systems
6092
- # From EnergyPlus I/O reference:
6093
- # "For situations where one or more equipment types has limited capacity or limited control capability, order the
6094
- # sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
6095
- # system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
6096
- # Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
6097
- # is added to the zone."
6098
- thermal_zone.setCoolingPriority(unit_ventilator.to_ModelObject.get, 1)
6099
- thermal_zone.setHeatingPriority(unit_ventilator.to_ModelObject.get, 1)
6107
+ # Ensure the unit ventilator takes priority, so ventilation load is included when treated by other zonal systems
6108
+ # From EnergyPlus I/O reference:
6109
+ # "For situations where one or more equipment types has limited capacity or limited control capability, order the
6110
+ # sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
6111
+ # system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
6112
+ # Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
6113
+ # is added to the zone."
6114
+ thermal_zone.setCoolingPriority(unit_ventilator.to_ModelObject.get, 1)
6115
+ thermal_zone.setHeatingPriority(unit_ventilator.to_ModelObject.get, 1)
6116
+
6117
+ unit_ventilators << unit_ventilator
6118
+ end
6119
+
6120
+ return unit_ventilators
6100
6121
  end
6101
6122
 
6102
6123
  # Adds an exhaust fan to each zone.
@@ -6133,7 +6154,7 @@ class Standard
6133
6154
  # input the flow rate as a number (assign directly) or from an array (assign each flow rate to each zone)
6134
6155
  if flow_rate.is_a? Numeric
6135
6156
  fan.setMaximumFlowRate(flow_rate)
6136
- elsif flow_rate.class.to_s == 'Array'
6157
+ elsif flow_rate.instance_of?(::Array)
6137
6158
  index = thermal_zones.index(zone)
6138
6159
  flow_rate_zone = flow_rate[index]
6139
6160
  fan.setMaximumFlowRate(flow_rate_zone)
@@ -6261,6 +6282,7 @@ class Standard
6261
6282
  if chilled_water_loop_cooling_type == 'AirCooled'
6262
6283
  chilled_water_loop = model_add_chw_loop(model,
6263
6284
  chw_pumping_type: 'const_pri',
6285
+ chiller_cooling_type: 'AirCooled',
6264
6286
  cooling_fuel: cool_fuel)
6265
6287
  else
6266
6288
  fan_type = model_cw_loop_cooling_tower_fan_type(model)
@@ -7410,6 +7432,12 @@ class Standard
7410
7432
  when 'ERVs'
7411
7433
  model_add_zone_erv(model, zones)
7412
7434
 
7435
+ when 'Residential ERVs'
7436
+ model_add_residential_erv(model, zones)
7437
+
7438
+ when 'Residential Ventilators'
7439
+ model_add_residential_ventilator(model, zones)
7440
+
7413
7441
  when 'Evaporative Cooler'
7414
7442
  model_add_evap_cooler(model, zones)
7415
7443