openstudio-standards 0.7.1 → 0.8.0.rc1

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 (362) 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 +16 -19
  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.Fan.rb +0 -7
  34. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +36 -18
  35. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +1 -1
  36. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +121 -239
  37. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +179 -151
  38. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +0 -466
  39. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +18 -2
  40. data/lib/openstudio-standards/refrigeration/create_case.rb +125 -0
  41. data/lib/openstudio-standards/refrigeration/create_compressor.rb +78 -0
  42. data/lib/openstudio-standards/refrigeration/create_compressor_rack.rb +48 -0
  43. data/lib/openstudio-standards/refrigeration/create_refrigeration_system.rb +74 -0
  44. data/lib/openstudio-standards/refrigeration/create_typical_refrigeration.rb +161 -0
  45. data/lib/openstudio-standards/refrigeration/create_walkin.rb +116 -0
  46. data/lib/openstudio-standards/refrigeration/data/refrigerated_cases.csv +31 -0
  47. data/lib/openstudio-standards/refrigeration/data/refrigerated_walkins.csv +76 -0
  48. data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +13 -0
  49. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_cases.csv +17 -0
  50. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_walkins.csv +53 -0
  51. data/lib/openstudio-standards/refrigeration/information.rb +130 -0
  52. data/lib/openstudio-standards/schedules/parametric.rb +1 -1
  53. data/lib/openstudio-standards/service_water_heating/create_typical.rb +299 -0
  54. data/lib/openstudio-standards/service_water_heating/create_water_heating_loop.rb +16 -14
  55. data/lib/openstudio-standards/service_water_heating/data/convert_data.rb +119 -0
  56. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.csv +54 -0
  57. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.json +810 -0
  58. data/lib/openstudio-standards/service_water_heating/information.rb +69 -0
  59. data/lib/openstudio-standards/sql_file/fenestration.rb +1 -1
  60. data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +154 -0
  61. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +35 -12
  62. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +110 -61
  63. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +128 -29
  64. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +103 -38
  65. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  66. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +106 -5
  67. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +8 -8
  68. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +44 -17
  69. data/lib/openstudio-standards/standards/Standards.Fan.rb +32 -21
  70. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +45 -18
  71. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +14 -9
  72. data/lib/openstudio-standards/standards/Standards.Model.rb +294 -76
  73. data/lib/openstudio-standards/standards/Standards.Motor.rb +66 -0
  74. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -1
  75. data/lib/openstudio-standards/standards/Standards.Pump.rb +34 -20
  76. data/lib/openstudio-standards/standards/Standards.ServiceWaterHeating.rb +0 -353
  77. data/lib/openstudio-standards/standards/Standards.Space.rb +3 -107
  78. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +2 -57
  79. data/lib/openstudio-standards/standards/Standards.Surface.rb +11 -3
  80. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +1 -120
  81. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.computer_room_acs.json +142 -0
  82. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +1006 -596
  83. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.energy_recovery.json +724 -0
  84. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +1258 -163
  85. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +1070 -140
  86. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +33 -3374
  87. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +1400 -340
  88. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.vrfs.json +769 -0
  89. 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
  90. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.computer_room_acs.json +142 -0
  91. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +1006 -596
  92. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.energy_recovery.json +724 -0
  93. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +1258 -163
  94. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +1070 -140
  95. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +15 -3343
  96. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +1840 -372
  97. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.vrfs.json +769 -0
  98. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +20 -10
  99. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +0 -9
  100. 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
  101. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.computer_room_acs.json +142 -0
  102. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +1006 -628
  103. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +718 -712
  104. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +1438 -163
  105. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +2552 -182
  106. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +14 -3368
  107. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +2348 -352
  108. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.vrfs.json +769 -0
  109. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +47 -61
  110. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +6 -0
  111. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Motor.rb +11 -0
  112. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +0 -9
  113. 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
  114. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.computer_room_acs.json +142 -0
  115. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +1006 -628
  116. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +1358 -1346
  117. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +1438 -163
  118. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +1359 -189
  119. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +19 -3451
  120. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +2176 -616
  121. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.vrfs.json +616 -0
  122. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +47 -61
  123. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +9 -0
  124. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Motor.rb +11 -0
  125. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +0 -9
  126. 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
  127. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.computer_room_acs.json +142 -0
  128. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.economizers.json +1006 -628
  129. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +1188 -1424
  130. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ext_ltg.json +1498 -163
  131. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.motors.json +1769 -189
  132. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +15 -3422
  133. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +1807 -408
  134. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.vrfs.json +1024 -0
  135. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +70 -87
  136. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +9 -0
  137. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Motor.rb +11 -0
  138. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +0 -9
  139. 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
  140. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.computer_room_acs.json +142 -0
  141. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.economizers.json +1006 -628
  142. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +2806 -3296
  143. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ext_ltg.json +1558 -163
  144. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.motors.json +1759 -189
  145. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +16 -3448
  146. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +2758 -422
  147. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.vrfs.json +684 -0
  148. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +14 -3318
  149. 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
  150. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.chillers.json +1 -1
  151. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +953 -207
  152. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.energy_recovery.json +724 -0
  153. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.ext_ltg.json +5 -5
  154. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +11 -2858
  155. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirConditionerVariableRefrigerantFlow.rb +13 -0
  156. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +0 -18
  157. 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
  158. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.chillers.json +0 -51
  159. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +953 -207
  160. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.energy_recovery.json +724 -0
  161. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.ext_ltg.json +5 -5
  162. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +9 -2830
  163. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirConditionerVariableRefrigerantFlow.rb +13 -0
  164. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +0 -18
  165. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.economizers.json +1006 -564
  166. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.energy_recovery.json +1264 -0
  167. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.ext_ltg.json +5 -5
  168. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +0 -1079
  169. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +132 -288
  170. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.HeatExchangerSensLat.rb +44 -20
  171. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +11 -0
  172. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +0 -8
  173. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.economizers.json +1006 -564
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.energy_recovery.json +1264 -0
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ext_ltg.json +5 -5
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +0 -1079
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +137 -288
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +44 -20
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +11 -0
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +0 -9
  181. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +12 -10
  182. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +8 -6
  183. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +8 -6
  184. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +9 -3
  185. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +6 -40
  186. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +30 -337
  187. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +4 -5
  188. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -2
  189. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +56 -3
  190. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +80 -0
  191. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +0 -10
  192. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +35 -0
  193. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.economizers.json +550 -0
  194. 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
  195. 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
  196. 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
  197. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +225 -245
  198. 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
  199. 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
  200. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +19 -3
  201. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac.json +185 -0
  202. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac_doas.json +127 -0
  203. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_building.json +121 -0
  204. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_design_specification_outdoor_air.json +49 -0
  205. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_electric_equipment.json +113 -0
  206. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_exterior_lights.json +120 -0
  207. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_space.json +388 -0
  208. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_spacetype.json +367 -0
  209. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_thermal_zone.json +56 -0
  210. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_connections.json +37 -0
  211. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment.json +69 -0
  212. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment_definition.json +37 -0
  213. data/lib/openstudio-standards/standards/cbes/cbes_pre_1978/data/cbes_pre_1978.ext_ltg.json +5 -5
  214. data/lib/openstudio-standards/standards/cbes/cbes_t24_1978/data/cbes_t24_1978.ext_ltg.json +5 -5
  215. data/lib/openstudio-standards/standards/cbes/cbes_t24_1992/data/cbes_t24_1992.ext_ltg.json +5 -5
  216. data/lib/openstudio-standards/standards/cbes/cbes_t24_2001/data/cbes_t24_2001.ext_ltg.json +5 -5
  217. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/data/cbes_t24_2005.ext_ltg.json +5 -5
  218. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/data/cbes_t24_2008.ext_ltg.json +5 -5
  219. data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/data/comstock_deer_1985.ext_ltg.json +5 -5
  220. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ext_ltg.json +5 -5
  221. data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/data/comstock_deer_1996.ext_ltg.json +5 -5
  222. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ext_ltg.json +5 -5
  223. data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/data/comstock_deer_2003.ext_ltg.json +5 -5
  224. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ext_ltg.json +5 -5
  225. data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/data/comstock_deer_2007.ext_ltg.json +5 -5
  226. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ext_ltg.json +5 -5
  227. data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/data/comstock_deer_2011.ext_ltg.json +5 -5
  228. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ext_ltg.json +5 -5
  229. data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/data/comstock_deer_2014.ext_ltg.json +5 -5
  230. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ext_ltg.json +5 -5
  231. data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/data/comstock_deer_2015.ext_ltg.json +5 -5
  232. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ext_ltg.json +5 -5
  233. data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/data/comstock_deer_2017.ext_ltg.json +5 -5
  234. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ext_ltg.json +5 -5
  235. data/lib/openstudio-standards/standards/deer/deer_2020/comstock_deer_2020/data/comstock_deer_2020.ext_ltg.json +5 -5
  236. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ext_ltg.json +5 -5
  237. data/lib/openstudio-standards/standards/deer/deer_2025/comstock_deer_2025/data/comstock_deer_2025.ext_ltg.json +5 -5
  238. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ext_ltg.json +5 -5
  239. data/lib/openstudio-standards/standards/deer/deer_2030/comstock_deer_2030/data/comstock_deer_2030.ext_ltg.json +5 -5
  240. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ext_ltg.json +5 -5
  241. data/lib/openstudio-standards/standards/deer/deer_2035/comstock_deer_2035/data/comstock_deer_2035.ext_ltg.json +5 -5
  242. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ext_ltg.json +5 -5
  243. data/lib/openstudio-standards/standards/deer/deer_2040/comstock_deer_2040/data/comstock_deer_2040.ext_ltg.json +5 -5
  244. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ext_ltg.json +5 -5
  245. data/lib/openstudio-standards/standards/deer/deer_2045/comstock_deer_2045/data/comstock_deer_2045.ext_ltg.json +5 -5
  246. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ext_ltg.json +5 -5
  247. data/lib/openstudio-standards/standards/deer/deer_2050/comstock_deer_2050/data/comstock_deer_2050.ext_ltg.json +5 -5
  248. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ext_ltg.json +5 -5
  249. data/lib/openstudio-standards/standards/deer/deer_2055/comstock_deer_2055/data/comstock_deer_2055.ext_ltg.json +5 -5
  250. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ext_ltg.json +5 -5
  251. data/lib/openstudio-standards/standards/deer/deer_2060/comstock_deer_2060/data/comstock_deer_2060.ext_ltg.json +5 -5
  252. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ext_ltg.json +5 -5
  253. data/lib/openstudio-standards/standards/deer/deer_2065/comstock_deer_2065/data/comstock_deer_2065.ext_ltg.json +5 -5
  254. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ext_ltg.json +5 -5
  255. data/lib/openstudio-standards/standards/deer/deer_2070/comstock_deer_2070/data/comstock_deer_2070.ext_ltg.json +5 -5
  256. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ext_ltg.json +5 -5
  257. data/lib/openstudio-standards/standards/deer/deer_2075/comstock_deer_2075/data/comstock_deer_2075.ext_ltg.json +5 -5
  258. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ext_ltg.json +5 -5
  259. data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/data/comstock_deer_pre_1975.ext_ltg.json +5 -5
  260. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ext_ltg.json +5 -5
  261. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +10 -1
  262. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/unitary_acs.json +20 -20
  263. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +379 -27
  264. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +1 -4
  265. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +0 -1
  266. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +1 -1
  267. data/lib/openstudio-standards/standards/necb/NECB2011/data/unitary_acs.json +20 -20
  268. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +34 -22
  269. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +76 -23
  270. data/lib/openstudio-standards/standards/necb/NECB2011/necb_shw_calculation.xlsx +0 -0
  271. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -5
  272. data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +6 -2
  273. data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +26 -24
  274. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -1
  275. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +38 -32
  276. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +215 -18
  277. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +190 -15
  278. data/lib/openstudio-standards/standards/necb/common/national_carbon_price_sched_feb_2025.json +60 -0
  279. data/lib/openstudio-standards/standards/necb/common/utility_pricing_2025-02-20.csv +92 -0
  280. data/lib/openstudio-standards/utilities/ruleset_check.rb +204 -0
  281. data/lib/openstudio-standards/version.rb +1 -1
  282. data/lib/openstudio-standards/weather/information.rb +1 -1
  283. data/lib/openstudio-standards.rb +32 -12
  284. metadata +78 -80
  285. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.refrigeration.rb +0 -13
  286. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.refrigeration.rb +0 -13
  287. data/lib/openstudio-standards/prototypes/cbes/cbes.refrigeration.rb +0 -13
  288. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +0 -432
  289. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +0 -11
  290. 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
  291. 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
  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_lnup.json +0 -562
  293. 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
  294. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +0 -11
  295. 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
  296. 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
  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_lnup.json +0 -562
  298. 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
  299. 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
  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_lnup.json +0 -562
  301. 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
  302. 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
  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_lnup.json +0 -562
  304. 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
  305. 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
  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_lnup.json +0 -562
  307. 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
  308. 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
  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_lnup.json +0 -562
  310. 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
  311. 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
  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_lnup.json +0 -562
  313. 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
  314. 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
  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_lnup.json +0 -562
  316. 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
  317. data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +0 -11
  318. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +0 -11
  319. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +0 -11
  320. data/lib/openstudio-standards/standards/deer/deer.Space.rb +0 -20
  321. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_cases.json +0 -1456
  322. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_lnup.json +0 -562
  323. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_cases.json +0 -1456
  324. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_lnup.json +0 -562
  325. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_cases.json +0 -1456
  326. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_lnup.json +0 -562
  327. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_cases.json +0 -1456
  328. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_lnup.json +0 -562
  329. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_cases.json +0 -1456
  330. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_lnup.json +0 -562
  331. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_cases.json +0 -1456
  332. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_lnup.json +0 -562
  333. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_cases.json +0 -1456
  334. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_lnup.json +0 -562
  335. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_cases.json +0 -1456
  336. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_lnup.json +0 -562
  337. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_cases.json +0 -1456
  338. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_lnup.json +0 -562
  339. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_cases.json +0 -1456
  340. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_lnup.json +0 -562
  341. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_cases.json +0 -1456
  342. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_lnup.json +0 -562
  343. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_cases.json +0 -1456
  344. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_lnup.json +0 -562
  345. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_cases.json +0 -1456
  346. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_lnup.json +0 -562
  347. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_cases.json +0 -1456
  348. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_lnup.json +0 -562
  349. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_cases.json +0 -1456
  350. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_lnup.json +0 -562
  351. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_cases.json +0 -1456
  352. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_lnup.json +0 -562
  353. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_cases.json +0 -1456
  354. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_lnup.json +0 -562
  355. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_cases.json +0 -1456
  356. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_lnup.json +0 -562
  357. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_cases.json +0 -1456
  358. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_lnup.json +0 -562
  359. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_cases.json +0 -1456
  360. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_lnup.json +0 -562
  361. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_cases.json +0 -1456
  362. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_lnup.json +0 -562
@@ -26,42 +26,17 @@ class ZEAEDGMultifamily < ASHRAE901
26
26
  OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name} no economizer")
27
27
  return [nil, nil, nil]
28
28
  when 'FixedDryBulb'
29
- case climate_zone
30
- when 'ASHRAE 169-2006-0B',
31
- 'ASHRAE 169-2006-1B',
32
- 'ASHRAE 169-2006-2B',
33
- 'ASHRAE 169-2006-3B',
34
- 'ASHRAE 169-2006-3C',
35
- 'ASHRAE 169-2006-4B',
36
- 'ASHRAE 169-2006-4C',
37
- 'ASHRAE 169-2006-5B',
38
- 'ASHRAE 169-2006-5C',
39
- 'ASHRAE 169-2006-6B',
40
- 'ASHRAE 169-2006-7A',
41
- 'ASHRAE 169-2006-7B',
42
- 'ASHRAE 169-2006-8A',
43
- 'ASHRAE 169-2006-8B',
44
- 'ASHRAE 169-2013-0B',
45
- 'ASHRAE 169-2013-1B',
46
- 'ASHRAE 169-2013-2B',
47
- 'ASHRAE 169-2013-3B',
48
- 'ASHRAE 169-2013-3C',
49
- 'ASHRAE 169-2013-4B',
50
- 'ASHRAE 169-2013-4C',
51
- 'ASHRAE 169-2013-5B',
52
- 'ASHRAE 169-2013-5C',
53
- 'ASHRAE 169-2013-6B',
54
- 'ASHRAE 169-2013-7A',
55
- 'ASHRAE 169-2013-7B',
56
- 'ASHRAE 169-2013-8A',
57
- 'ASHRAE 169-2013-8B'
58
- drybulb_limit_f = 75.0
59
- when 'ASHRAE 169-2006-5A',
60
- 'ASHRAE 169-2006-6A',
61
- 'ASHRAE 169-2013-5A',
62
- 'ASHRAE 169-2013-6A'
63
- drybulb_limit_f = 70.0
64
- end
29
+ # Process climate zone:
30
+ # Moisture regime is not needed for climate zone 8
31
+ climate_zone = climate_zone.split('-')[-1]
32
+ climate_zone = '8' if climate_zone.include?('8')
33
+
34
+ search_criteria = {
35
+ 'template' => template,
36
+ 'climate_zone' => climate_zone
37
+ }
38
+ econ_limits = model_find_object(standards_data['economizers'], search_criteria)
39
+ drybulb_limit_f = econ_limits['fixed_dry_bulb_high_limit_shutoff_temp']
65
40
  when 'FixedEnthalpy'
66
41
  enthalpy_limit_btu_per_lb = 28.0
67
42
  when 'FixedDewPointAndDryBulb'
@@ -493,226 +468,53 @@ class ZEAEDGMultifamily < ASHRAE901
493
468
  avail_sch = avail_sch.to_ScheduleRuleset.get
494
469
  ann_op_hrs = OpenstudioStandards::Schedules.schedule_ruleset_get_hours_above_value(avail_sch, 0.0)
495
470
  else
496
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: could not determine annual operating hours. Assuming less than 8,000 for ERV determination.")
471
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.ze_aedg_multifamily.AirLoopHVAC', "For #{air_loop_hvac.name}: could not determine annual operating hours. Assuming less than 8,000 for ERV determination.")
497
472
  end
498
473
 
474
+ # Process climate zone:
475
+ # Moisture regime is not needed for climate zone 8
476
+ climate_zone = climate_zone.split('-')[-1]
477
+ climate_zone = '8' if climate_zone.include?('8')
478
+
479
+ # Check annual operating hours
499
480
  if ann_op_hrs < 8000.0
500
- # Table 6.5.6.1-1, less than 8000 hrs
501
- case climate_zone
502
- when 'ASHRAE 169-2006-3B',
503
- 'ASHRAE 169-2006-3C',
504
- 'ASHRAE 169-2006-4B',
505
- 'ASHRAE 169-2006-4C',
506
- 'ASHRAE 169-2006-5B',
507
- 'ASHRAE 169-2013-3B',
508
- 'ASHRAE 169-2013-3C',
509
- 'ASHRAE 169-2013-4B',
510
- 'ASHRAE 169-2013-4C',
511
- 'ASHRAE 169-2013-5B'
512
- erv_cfm = nil
513
- when 'ASHRAE 169-2006-0B',
514
- 'ASHRAE 169-2006-1B',
515
- 'ASHRAE 169-2006-2B',
516
- 'ASHRAE 169-2006-5C',
517
- 'ASHRAE 169-2013-0B',
518
- 'ASHRAE 169-2013-1B',
519
- 'ASHRAE 169-2013-2B',
520
- 'ASHRAE 169-2013-5C'
521
- if pct_oa < 0.5
522
- erv_cfm = nil
523
- elsif pct_oa >= 0.5 && pct_oa < 0.6
524
- erv_cfm = 26_000
525
- elsif pct_oa >= 0.6 && pct_oa < 0.7
526
- erv_cfm = 12_000
527
- elsif pct_oa >= 0.7 && pct_oa < 0.8
528
- erv_cfm = 5000
529
- elsif pct_oa >= 0.8
530
- erv_cfm = 4000
531
- end
532
- when 'ASHRAE 169-2006-6B',
533
- 'ASHRAE 169-2013-6B'
534
- if pct_oa < 0.1
535
- erv_cfm = nil
536
- elsif pct_oa >= 0.1 && pct_oa < 0.2
537
- erv_cfm = 28_000
538
- elsif pct_oa >= 0.2 && pct_oa < 0.3
539
- erv_cfm = 26_500
540
- elsif pct_oa >= 0.3 && pct_oa < 0.4
541
- erv_cfm = 11_000
542
- elsif pct_oa >= 0.4 && pct_oa < 0.5
543
- erv_cfm = 5500
544
- elsif pct_oa >= 0.5 && pct_oa < 0.6
545
- erv_cfm = 4500
546
- elsif pct_oa >= 0.6 && pct_oa < 0.7
547
- erv_cfm = 3500
548
- elsif pct_oa >= 0.7 && pct_oa < 0.8
549
- erv_cfm = 2500
550
- elsif pct_oa >= 0.8
551
- erv_cfm = 1500
552
- end
553
- when 'ASHRAE 169-2006-0A',
554
- 'ASHRAE 169-2006-1A',
555
- 'ASHRAE 169-2006-2A',
556
- 'ASHRAE 169-2006-3A',
557
- 'ASHRAE 169-2006-4A',
558
- 'ASHRAE 169-2006-5A',
559
- 'ASHRAE 169-2006-6A',
560
- 'ASHRAE 169-2013-0A',
561
- 'ASHRAE 169-2013-1A',
562
- 'ASHRAE 169-2013-2A',
563
- 'ASHRAE 169-2013-3A',
564
- 'ASHRAE 169-2013-4A',
565
- 'ASHRAE 169-2013-5A',
566
- 'ASHRAE 169-2013-6A'
567
- if pct_oa < 0.1
568
- erv_cfm = nil
569
- elsif pct_oa >= 0.1 && pct_oa < 0.2
570
- erv_cfm = 26_000
571
- elsif pct_oa >= 0.2 && pct_oa < 0.3
572
- erv_cfm = 16_000
573
- elsif pct_oa >= 0.3 && pct_oa < 0.4
574
- erv_cfm = 5500
575
- elsif pct_oa >= 0.4 && pct_oa < 0.5
576
- erv_cfm = 4500
577
- elsif pct_oa >= 0.5 && pct_oa < 0.6
578
- erv_cfm = 3500
579
- elsif pct_oa >= 0.6 && pct_oa < 0.7
580
- erv_cfm = 2000
581
- elsif pct_oa >= 0.7 && pct_oa < 0.8
582
- erv_cfm = 1000
583
- elsif pct_oa >= 0.8
584
- erv_cfm = 120
585
- end
586
- when 'ASHRAE 169-2006-7A',
587
- 'ASHRAE 169-2006-7B',
588
- 'ASHRAE 169-2006-8A',
589
- 'ASHRAE 169-2006-8B',
590
- 'ASHRAE 169-2013-7A',
591
- 'ASHRAE 169-2013-7B',
592
- 'ASHRAE 169-2013-8A',
593
- 'ASHRAE 169-2013-8B'
594
- if pct_oa < 0.1
595
- erv_cfm = nil
596
- elsif pct_oa >= 0.1 && pct_oa < 0.2
597
- erv_cfm = 4500
598
- elsif pct_oa >= 0.2 && pct_oa < 0.3
599
- erv_cfm = 4000
600
- elsif pct_oa >= 0.3 && pct_oa < 0.4
601
- erv_cfm = 2500
602
- elsif pct_oa >= 0.4 && pct_oa < 0.5
603
- erv_cfm = 1000
604
- elsif pct_oa >= 0.5 && pct_oa < 0.6
605
- erv_cfm = 140
606
- elsif pct_oa >= 0.6 && pct_oa < 0.7
607
- erv_cfm = 120
608
- elsif pct_oa >= 0.7 && pct_oa < 0.8
609
- erv_cfm = 100
610
- elsif pct_oa >= 0.8
611
- erv_cfm = 80
612
- end
613
- end
481
+ under_8000_hours = true
482
+ string_for_log = 'under'
614
483
  else
615
- # Table 6.5.6.1-2, above 8000 hrs
616
- case climate_zone
617
- when 'ASHRAE 169-2006-3C',
618
- 'ASHRAE 169-2013-3C'
619
- erv_cfm = nil
620
- when 'ASHRAE 169-2006-0B',
621
- 'ASHRAE 169-2006-1B',
622
- 'ASHRAE 169-2006-2B',
623
- 'ASHRAE 169-2006-3B',
624
- 'ASHRAE 169-2006-4C',
625
- 'ASHRAE 169-2006-5C',
626
- 'ASHRAE 169-2013-0B',
627
- 'ASHRAE 169-2013-1B',
628
- 'ASHRAE 169-2013-2B',
629
- 'ASHRAE 169-2013-3B',
630
- 'ASHRAE 169-2013-4C',
631
- 'ASHRAE 169-2013-5C'
632
- if pct_oa < 0.2
633
- erv_cfm = nil
634
- elsif pct_oa >= 0.2 && pct_oa < 0.3
635
- erv_cfm = 19_500
636
- elsif pct_oa >= 0.3 && pct_oa < 0.4
637
- erv_cfm = 9000
638
- elsif pct_oa >= 0.4 && pct_oa < 0.5
639
- erv_cfm = 5000
640
- elsif pct_oa >= 0.5 && pct_oa < 0.6
641
- erv_cfm = 4000
642
- elsif pct_oa >= 0.6 && pct_oa < 0.7
643
- erv_cfm = 3000
644
- elsif pct_oa >= 0.7 && pct_oa < 0.8
645
- erv_cfm = 1500
646
- elsif pct_oa >= 0.8
647
- erv_cfm = 120
648
- end
649
- when 'ASHRAE 169-2006-0A',
650
- 'ASHRAE 169-2006-1A',
651
- 'ASHRAE 169-2006-2A',
652
- 'ASHRAE 169-2006-3A',
653
- 'ASHRAE 169-2006-4B',
654
- 'ASHRAE 169-2006-5B',
655
- 'ASHRAE 169-2013-0A',
656
- 'ASHRAE 169-2013-1A',
657
- 'ASHRAE 169-2013-2A',
658
- 'ASHRAE 169-2013-3A',
659
- 'ASHRAE 169-2013-4B',
660
- 'ASHRAE 169-2013-5B'
661
- if pct_oa < 0.1
662
- erv_cfm = nil
663
- elsif pct_oa >= 0.1 && pct_oa < 0.2
664
- erv_cfm = 2500
665
- elsif pct_oa >= 0.2 && pct_oa < 0.3
666
- erv_cfm = 2000
667
- elsif pct_oa >= 0.3 && pct_oa < 0.4
668
- erv_cfm = 1000
669
- elsif pct_oa >= 0.4 && pct_oa < 0.5
670
- erv_cfm = 500
671
- elsif pct_oa >= 0.5 && pct_oa < 0.6
672
- erv_cfm = 140
673
- elsif pct_oa >= 0.6 && pct_oa < 0.7
674
- erv_cfm = 120
675
- elsif pct_oa >= 0.7 && pct_oa < 0.8
676
- erv_cfm = 100
677
- elsif pct_oa >= 0.8
678
- erv_cfm = 80
679
- end
680
- when 'ASHRAE 169-2006-4A',
681
- 'ASHRAE 169-2006-5A',
682
- 'ASHRAE 169-2006-6A',
683
- 'ASHRAE 169-2006-6B',
684
- 'ASHRAE 169-2006-7A',
685
- 'ASHRAE 169-2006-7B',
686
- 'ASHRAE 169-2006-8A',
687
- 'ASHRAE 169-2006-8B',
688
- 'ASHRAE 169-2013-4A',
689
- 'ASHRAE 169-2013-5A',
690
- 'ASHRAE 169-2013-6A',
691
- 'ASHRAE 169-2013-6B',
692
- 'ASHRAE 169-2013-7A',
693
- 'ASHRAE 169-2013-7B',
694
- 'ASHRAE 169-2013-8A',
695
- 'ASHRAE 169-2013-8B'
696
- if pct_oa < 0.1
697
- erv_cfm = nil
698
- elsif pct_oa >= 0.1 && pct_oa < 0.2
699
- erv_cfm = 200
700
- elsif pct_oa >= 0.2 && pct_oa < 0.3
701
- erv_cfm = 130
702
- elsif pct_oa >= 0.3 && pct_oa < 0.4
703
- erv_cfm = 100
704
- elsif pct_oa >= 0.4 && pct_oa < 0.5
705
- erv_cfm = 80
706
- elsif pct_oa >= 0.5 && pct_oa < 0.6
707
- erv_cfm = 70
708
- elsif pct_oa >= 0.6 && pct_oa < 0.7
709
- erv_cfm = 60
710
- elsif pct_oa >= 0.7 && pct_oa < 0.8
711
- erv_cfm = 50
712
- elsif pct_oa >= 0.8
713
- erv_cfm = 40
714
- end
715
- end
484
+ under_8000_hours = false
485
+ string_for_log = 'over'
486
+ end
487
+
488
+ # Search database
489
+ search_criteria = {
490
+ 'template' => template,
491
+ 'climate_zone' => climate_zone,
492
+ 'under_8000_hours' => under_8000_hours
493
+ }
494
+ energy_recovery_limits = model_find_object(standards_data['energy_recovery'], search_criteria)
495
+ if energy_recovery_limits.nil?
496
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.ashrae_90_1_2013.AirLoopHVAC', "Cannot find energy recovery limits for template '#{template}', climate zone '#{climate_zone}', and #{string_for_log} 8000 hours, assuming no energy recovery required.")
497
+ return nil
498
+ end
499
+
500
+ if pct_oa < 0.1
501
+ erv_cfm = nil
502
+ elsif pct_oa >= 0.1 && pct_oa < 0.2
503
+ erv_cfm = energy_recovery_limits['percent_oa_10_to_20']
504
+ elsif pct_oa >= 0.2 && pct_oa < 0.3
505
+ erv_cfm = energy_recovery_limits['percent_oa_20_to_30']
506
+ elsif pct_oa >= 0.3 && pct_oa < 0.4
507
+ erv_cfm = energy_recovery_limits['percent_oa_30_to_40']
508
+ elsif pct_oa >= 0.4 && pct_oa < 0.5
509
+ erv_cfm = energy_recovery_limits['percent_oa_40_to_50']
510
+ elsif pct_oa >= 0.5 && pct_oa < 0.6
511
+ erv_cfm = energy_recovery_limits['percent_oa_50_to_60']
512
+ elsif pct_oa >= 0.6 && pct_oa < 0.7
513
+ erv_cfm = energy_recovery_limits['percent_oa_60_to_70']
514
+ elsif pct_oa >= 0.7 && pct_oa < 0.8
515
+ erv_cfm = energy_recovery_limits['percent_oa_70_to_80']
516
+ elsif pct_oa >= 0.8
517
+ erv_cfm = energy_recovery_limits['percent_oa_greater_than_80']
716
518
  end
717
519
 
718
520
  return erv_cfm
@@ -775,49 +577,96 @@ class ZEAEDGMultifamily < ASHRAE901
775
577
  # @param heat_exchanger_type [String] heat exchanger type Rotary or Plate
776
578
  # @return [OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent] erv to apply efficiency values
777
579
  def air_loop_hvac_apply_energy_recovery_ventilator_efficiency(erv, erv_type: 'ERV', heat_exchanger_type: 'Rotary')
778
- if heat_exchanger_type == 'Plate'
779
- # based on Zehnder ComfoAir
780
- if erv_type == 'HRV'
781
- erv.setSensibleEffectivenessat100HeatingAirFlow(0.865)
782
- erv.setLatentEffectivenessat100HeatingAirFlow(0.0)
783
- erv.setSensibleEffectivenessat75HeatingAirFlow(0.887)
784
- erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
785
- erv.setSensibleEffectivenessat100CoolingAirFlow(0.865)
786
- erv.setLatentEffectivenessat100CoolingAirFlow(0.0)
787
- erv.setSensibleEffectivenessat75CoolingAirFlow(0.887)
788
- erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
580
+ if erv.model.version < OpenStudio::VersionString.new('3.8.0')
581
+ if heat_exchanger_type == 'Plate'
582
+ # based on Zehnder ComfoAir
583
+ if erv_type == 'HRV'
584
+ erv.setSensibleEffectivenessat100HeatingAirFlow(0.865)
585
+ erv.setLatentEffectivenessat100HeatingAirFlow(0.0)
586
+ erv.setSensibleEffectivenessat75HeatingAirFlow(0.887)
587
+ erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
588
+ erv.setSensibleEffectivenessat100CoolingAirFlow(0.865)
589
+ erv.setLatentEffectivenessat100CoolingAirFlow(0.0)
590
+ erv.setSensibleEffectivenessat75CoolingAirFlow(0.887)
591
+ erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
592
+ else
593
+ erv.setSensibleEffectivenessat100HeatingAirFlow(0.755)
594
+ erv.setLatentEffectivenessat100HeatingAirFlow(0.564)
595
+ erv.setSensibleEffectivenessat75HeatingAirFlow(0.791)
596
+ erv.setLatentEffectivenessat75HeatingAirFlow(0.625)
597
+ erv.setSensibleEffectivenessat100CoolingAirFlow(0.755)
598
+ erv.setLatentEffectivenessat100CoolingAirFlow(0.564)
599
+ erv.setSensibleEffectivenessat75CoolingAirFlow(0.791)
600
+ erv.setLatentEffectivenessat75CoolingAirFlow(0.625)
601
+ end
789
602
  else
790
- erv.setSensibleEffectivenessat100HeatingAirFlow(0.755)
791
- erv.setLatentEffectivenessat100HeatingAirFlow(0.564)
792
- erv.setSensibleEffectivenessat75HeatingAirFlow(0.791)
793
- erv.setLatentEffectivenessat75HeatingAirFlow(0.625)
794
- erv.setSensibleEffectivenessat100CoolingAirFlow(0.755)
795
- erv.setLatentEffectivenessat100CoolingAirFlow(0.564)
796
- erv.setSensibleEffectivenessat75CoolingAirFlow(0.791)
797
- erv.setLatentEffectivenessat75CoolingAirFlow(0.625)
603
+ if erv_type == 'HRV'
604
+ erv.setSensibleEffectivenessat100HeatingAirFlow(0.75)
605
+ erv.setLatentEffectivenessat100HeatingAirFlow(0.0)
606
+ erv.setSensibleEffectivenessat75HeatingAirFlow(0.79)
607
+ erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
608
+ erv.setSensibleEffectivenessat100CoolingAirFlow(0.75)
609
+ erv.setLatentEffectivenessat100CoolingAirFlow(0.0)
610
+ erv.setSensibleEffectivenessat75CoolingAirFlow(0.78)
611
+ erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
612
+ else
613
+ erv.setSensibleEffectivenessat100HeatingAirFlow(0.75)
614
+ erv.setLatentEffectivenessat100HeatingAirFlow(0.74)
615
+ erv.setSensibleEffectivenessat75HeatingAirFlow(0.79)
616
+ erv.setLatentEffectivenessat75HeatingAirFlow(0.79)
617
+ erv.setSensibleEffectivenessat100CoolingAirFlow(0.75)
618
+ erv.setLatentEffectivenessat100CoolingAirFlow(0.74)
619
+ erv.setSensibleEffectivenessat75CoolingAirFlow(0.78)
620
+ erv.setLatentEffectivenessat75CoolingAirFlow(0.78)
621
+ end
798
622
  end
799
623
  else
800
- if erv_type == 'HRV'
801
- erv.setSensibleEffectivenessat100HeatingAirFlow(0.75)
802
- erv.setLatentEffectivenessat100HeatingAirFlow(0.0)
803
- erv.setSensibleEffectivenessat75HeatingAirFlow(0.79)
804
- erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
805
- erv.setSensibleEffectivenessat100CoolingAirFlow(0.75)
806
- erv.setLatentEffectivenessat100CoolingAirFlow(0.0)
807
- erv.setSensibleEffectivenessat75CoolingAirFlow(0.78)
808
- erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
624
+ values = Hash.new{ |hash, key| hash[key] = {} }
625
+ if heat_exchanger_type == 'Plate'
626
+ if erv_type == 'HRV'
627
+ values['Sensible Heating'][0.75] = 0.887
628
+ values['Sensible Heating'][1.0] = 0.865
629
+ values['Latent Heating'][0.75] = 0.0
630
+ values['Latent Heating'][1.0] = 0.0
631
+ values['Sensible Cooling'][0.75] = 0.887
632
+ values['Sensible Cooling'][1.0] = 0.865
633
+ values['Latent Cooling'][0.75] = 0.0
634
+ values['Latent Cooling'][1.0] = 0.0
635
+ else
636
+ values['Sensible Heating'][0.75] = 0.791
637
+ values['Sensible Heating'][1.0] = 0.755
638
+ values['Latent Heating'][0.75] = 0.625
639
+ values['Latent Heating'][1.0] = 0.564
640
+ values['Sensible Cooling'][0.75] = 0.791
641
+ values['Sensible Cooling'][1.0] = 0.755
642
+ values['Latent Cooling'][0.75] = 0.625
643
+ values['Latent Cooling'][1.0] = 0.564
644
+ end
809
645
  else
810
- erv.setSensibleEffectivenessat100HeatingAirFlow(0.75)
811
- erv.setLatentEffectivenessat100HeatingAirFlow(0.74)
812
- erv.setSensibleEffectivenessat75HeatingAirFlow(0.79)
813
- erv.setLatentEffectivenessat75HeatingAirFlow(0.79)
814
- erv.setSensibleEffectivenessat100CoolingAirFlow(0.75)
815
- erv.setLatentEffectivenessat100CoolingAirFlow(0.74)
816
- erv.setSensibleEffectivenessat75CoolingAirFlow(0.78)
817
- erv.setLatentEffectivenessat75CoolingAirFlow(0.78)
646
+ if erv_type == 'HRV'
647
+ values['Sensible Heating'][0.75] = 0.79
648
+ values['Sensible Heating'][1.0] = 0.75
649
+ values['Latent Heating'][0.75] = 0.0
650
+ values['Latent Heating'][1.0] = 0.0
651
+ values['Sensible Cooling'][0.75] = 0.78
652
+ values['Sensible Cooling'][1.0] = 0.75
653
+ values['Latent Cooling'][0.75] = 0.0
654
+ values['Latent Cooling'][1.0] = 0.0
655
+ else
656
+ values['Sensible Heating'][0.75] = 0.79
657
+ values['Sensible Heating'][1.0] = 0.75
658
+ values['Latent Heating'][0.75] = 0.74
659
+ values['Latent Heating'][1.0] = 0.79
660
+ values['Sensible Cooling'][0.75] = 0.78
661
+ values['Sensible Cooling'][1.0] = 0.75
662
+ values['Latent Cooling'][0.75] = 0.78
663
+ values['Latent Cooling'][1.0] = 0.74
664
+ end
818
665
  end
666
+ OpenstudioStandards::HVAC.heat_exchanger_air_to_air_set_effectiveness_values(erv, defaults: false, values: values)
819
667
  end
820
668
 
669
+
821
670
  return erv
822
671
  end
823
672
  end
@@ -5,26 +5,50 @@ class ZEAEDGMultifamily < ASHRAE901
5
5
  def heat_exchanger_air_to_air_sensible_and_latent_apply_effectiveness(heat_exchanger_air_to_air_sensible_and_latent)
6
6
  # Assumed to be sensible and latent at all flow
7
7
  heat_exchanger_type = heat_exchanger_air_to_air_sensible_and_latent.heatExchangerType
8
-
9
- if heat_exchanger_type == 'Plate'
10
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(0.755)
11
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(0.564)
12
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(0.791)
13
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(0.625)
14
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(0.755)
15
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(0.564)
16
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(0.791)
17
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(0.625)
18
- heat_exchanger_air_to_air_sensible_and_latent.setNominalElectricPower(0.0)
19
- else # Rotary
20
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(0.75)
21
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(0.74)
22
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(0.79)
23
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(0.79)
24
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(0.75)
25
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(0.74)
26
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(0.78)
27
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(0.78)
8
+ if heat_exchanger_air_to_air_sensible_and_latent.model.version < OpenStudio::VersionString.new('3.8.0')
9
+ if heat_exchanger_type == 'Plate'
10
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(0.755)
11
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(0.564)
12
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(0.791)
13
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(0.625)
14
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(0.755)
15
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(0.564)
16
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(0.791)
17
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(0.625)
18
+ heat_exchanger_air_to_air_sensible_and_latent.setNominalElectricPower(0.0)
19
+ else # Rotary
20
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(0.75)
21
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(0.74)
22
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(0.79)
23
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(0.79)
24
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(0.75)
25
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(0.74)
26
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(0.78)
27
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(0.78)
28
+ end
29
+ else
30
+ values = Hash.new{|hash, key| hash[key] = Hash.new}
31
+ if heat_exchanger_type == 'Plate'
32
+ values['Sensible Heating'][0.75] = 0.791
33
+ values['Sensible Heating'][1.0] = 0.755
34
+ values['Latent Heating'][0.75] = 0.625
35
+ values['Latent Heating'][1.0] = 0.564
36
+ values['Sensible Cooling'][0.75] = 0.791
37
+ values['Sensible Cooling'][1.0] = 0.755
38
+ values['Latent Cooling'][0.75] = 0.625
39
+ values['Latent Cooling'][1.0] = 0.564
40
+ heat_exchanger_air_to_air_sensible_and_latent.setNominalElectricPower(0.0)
41
+ else
42
+ values['Sensible Heating'][0.75] = 0.79
43
+ values['Sensible Heating'][1.0] = 0.75
44
+ values['Latent Heating'][0.75] = 0.79
45
+ values['Latent Heating'][1.0] = 0.74
46
+ values['Sensible Cooling'][0.75] = 0.78
47
+ values['Sensible Cooling'][1.0] = 0.75
48
+ values['Latent Cooling'][0.75] = 0.78
49
+ values['Latent Cooling'][1.0] = 0.74
50
+ end
51
+ OpenstudioStandards::HVAC.heat_exchanger_air_to_air_set_effectiveness_values(heat_exchanger_air_to_air_sensible_and_latent, defaults: false, values: values)
28
52
  end
29
53
 
30
54
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.ze_aedg_multifamily.HeatExchangerAirToAirSensibleAndLatent', "For #{heat_exchanger_air_to_air_sensible_and_latent.name}, set sensible and latent effectiveness to #{heat_exchanger_type} values.")
@@ -80,4 +80,15 @@ class ZEAEDGMultifamily < ASHRAE901
80
80
 
81
81
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.ze_aedg_multifamily.Model', "Finished applying HVAC efficiency standards for #{template} template.")
82
82
  end
83
+
84
+ # Default 5-sided (exterior walls and roof) airtightness design value (m^3/h-m^2) from a building pressurization test at 75 Pascals.
85
+ def default_airtightness
86
+ airtightness_value = 5.0
87
+ return airtightness_value
88
+ end
89
+
90
+ # Buildings built to this standard are assumed to have an air barrier
91
+ def default_air_barrier
92
+ return true
93
+ end
83
94
  end
@@ -136,13 +136,4 @@ class ZEAEDGMultifamily < ASHRAE901
136
136
 
137
137
  return [sensor_1_frac, sensor_2_frac, sensor_1_window, sensor_2_window]
138
138
  end
139
-
140
- # Determine the base infiltration rate at 75 Pa.
141
- #
142
- # @return [Double] the baseline infiltration rate, in cfm/ft^2
143
- # defaults to no infiltration.
144
- def space_infiltration_rate_75_pa(space = nil)
145
- basic_infil_rate_cfm_per_ft2 = 0.5 # Half of 90.1-2013
146
- return basic_infil_rate_cfm_per_ft2
147
- end
148
139
  end
@@ -594,20 +594,22 @@ class ASHRAE901PRM < Standard
594
594
  when 'NoEconomizer'
595
595
  return [nil, nil, nil]
596
596
  when 'FixedDryBulb'
597
- climate_zone_code = climate_zone.split('-')[-1]
598
- climate_zone_code = 7 if ['7A', '7B'].include? climate_zone_code
599
- climate_zone_code = 8 if ['8A', '8B'].include? climate_zone_code
597
+ # Process climate zone:
598
+ # Moisture regime is not needed for climate zone 8
599
+ climate_zone = climate_zone.split('-')[-1]
600
+ climate_zone = '8' if climate_zone.include?('8')
601
+
600
602
  search_criteria = {
601
- 'template' => template,
602
- 'climate_id' => climate_zone_code
603
+ 'climate_zone' => climate_zone,
604
+ 'data_center' => false,
603
605
  }
604
- econ_limits = model_find_object(standards_data['prm_economizers'], search_criteria)
605
- drybulb_limit_f = econ_limits['high_limit_shutoff']
606
+ econ_limits = model_find_object(standards_data['economizers'], search_criteria)
607
+ drybulb_limit_f = econ_limits['fixed_dry_bulb_high_limit_shutoff_temp']
606
608
  when 'FixedEnthalpy'
607
- enthalpy_limit_btu_per_lb = 28
609
+ enthalpy_limit_btu_per_lb = 28.0
608
610
  when 'FixedDewPointAndDryBulb'
609
- drybulb_limit_f = 75
610
- dewpoint_limit_f = 55
611
+ drybulb_limit_f = 75.0
612
+ dewpoint_limit_f = 55.0
611
613
  end
612
614
 
613
615
  return [drybulb_limit_f, enthalpy_limit_btu_per_lb, dewpoint_limit_f]
@@ -84,11 +84,13 @@ class ASHRAE901PRM < Standard
84
84
 
85
85
  # Lookup efficiencies depending on whether it is a unitary AC or a heat pump
86
86
  ac_props = nil
87
- ac_props = if sys_type == 'PSZ_HP' || sys_type == 'PTHP'
88
- model_find_object(standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
89
- else
90
- model_find_object(standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
91
- end
87
+ if sys_type == 'PSZ_HP' || sys_type == 'PTHP'
88
+ ac_props = model_find_object(standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
89
+ eff_key = 'copnfcooling'
90
+ else
91
+ ac_props = model_find_object(standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
92
+ eff_key = 'minimum_coefficient_of_performance_no_fan_cooling'
93
+ end
92
94
 
93
95
  # Get the minimum efficiency standards
94
96
  cop = nil
@@ -99,7 +101,7 @@ class ASHRAE901PRM < Standard
99
101
  return cop # value of nil
100
102
  end
101
103
 
102
- cop = ac_props['copnfcooling']
104
+ cop = ac_props[eff_key]
103
105
  new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_btu_per_hr.round}Btu/hr #{cop}COP"
104
106
 
105
107
  # Rename
@@ -51,11 +51,13 @@ class ASHRAE901PRM < Standard
51
51
 
52
52
  # Lookup efficiencies depending on whether it is a unitary AC or a heat pump
53
53
  ac_props = nil
54
- ac_props = if sys_type == 'PSZ_HP' || sys_type == 'PTHP'
55
- model_find_object(standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
56
- else
57
- model_find_object(standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
58
- end
54
+ if sys_type == 'PSZ_HP' || sys_type == 'PTHP'
55
+ ac_props = model_find_object(standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
56
+ eff_key = 'copnfcooling'
57
+ else
58
+ ac_props = model_find_object(standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
59
+ eff_key = 'minimum_coefficient_of_performance_no_fan_cooling'
60
+ end
59
61
 
60
62
  # Get the minimum efficiency standards
61
63
  cop = nil
@@ -66,7 +68,7 @@ class ASHRAE901PRM < Standard
66
68
  return cop # value of nil
67
69
  end
68
70
 
69
- cop = ac_props['copnfcooling']
71
+ cop = ac_props[eff_key]
70
72
  new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_btu_per_hr.round}Btu/hr #{cop}COP"
71
73
 
72
74
  # Rename