openstudio-standards 0.7.0 → 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 (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 +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 +5 -5
  283. data/lib/openstudio-standards.rb +32 -12
  284. metadata +79 -81
  285. data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
  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