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
@@ -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