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
@@ -30,7 +30,7 @@ module ASHRAEPRMCoilDX
30
30
  when 'PTHP'
31
31
  sub_category = 'PTHP'
32
32
  when 'PTAC'
33
- sub_category = 'PTAC'
33
+ sub_category = nil
34
34
  when 'PSZ_HP'
35
35
  if capacity < 65000
36
36
  sub_category = 'Single Package'
@@ -38,7 +38,7 @@ module ASHRAEPRMCoilDX
38
38
  sub_category = 'Split-system and single package'
39
39
  end
40
40
  else
41
- sub_category = 'Split-system and single package'
41
+ sub_category = 'Single Package'
42
42
  end
43
43
  end
44
44
 
@@ -64,7 +64,13 @@ module ASHRAEPRMCoilDX
64
64
  end
65
65
 
66
66
  if coil_dx.iddObjectType.valueName.to_s != 'OS_Coil_Heating_DX_SingleSpeed'
67
- search_criteria['heating_type'] = 'All Other'
67
+ search_criteria['heating_type'] = 'Any'
68
+ end
69
+
70
+ if sys_type == 'PTAC'
71
+ search_criteria['equipment_type'] = sys_type
72
+ elsif sys_type == 'PSZ_AC'
73
+ search_criteria['equipment_type'] = 'Air Conditioners'
68
74
  end
69
75
 
70
76
  return search_criteria
@@ -3,7 +3,7 @@
3
3
  module ASHRAE901PRMFan
4
4
  # Determines the minimum fan motor efficiency and nominal size for a given motor bhp.
5
5
  # This should be the total brake horsepower with any desired safety factor already included.
6
- # This method picks the next nominal motor catgory larger than the required brake horsepower,
6
+ # This method picks the next nominal motor category larger than the required brake horsepower,
7
7
  # and the efficiency is based on that size.
8
8
  # For example, if the bhp = 6.3, the nominal size will be 7.5HP and the efficiency
9
9
  # for 90.1-2010 will be 91.7% from Table 10.8B.
@@ -15,7 +15,6 @@ module ASHRAE901PRMFan
15
15
  # @return [Array<Double>] minimum motor efficiency (0.0 to 1.0), nominal horsepower
16
16
  def fan_standard_minimum_motor_efficiency_and_size(fan, motor_bhp)
17
17
  fan_motor_eff = 0.85
18
- nominal_hp = motor_bhp
19
18
 
20
19
  # Don't attempt to look up motor efficiency
21
20
  # for zero-hp fans, which may occur when there is no
@@ -26,47 +25,14 @@ module ASHRAE901PRMFan
26
25
 
27
26
  # Lookup the minimum motor efficiency
28
27
  motors = standards_data['motors']
29
-
30
- # Assuming all fan motors are 4-pole ODP
31
- search_criteria = {
32
- 'template' => template,
33
- 'number_of_poles' => 4.0,
34
- 'type' => 'Enclosed'
35
- }
36
-
37
- # Exception for small fans, including
38
- # zone exhaust, fan coil, and fan powered terminals.
39
- # In this case, use the 0.5 HP for the lookup.
40
- if fan_small_fan?(fan)
41
- nominal_hp = 0.5
42
- else
43
- motor_properties = model_find_object(motors, search_criteria, capacity = nil, date = nil, area = nil, num_floors = nil, fan_motor_bhp = motor_bhp)
44
- if motor_properties.nil?
45
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Fan', "For #{fan.name}, could not find motor properties using search criteria: #{search_criteria}, motor_bhp = #{motor_bhp} hp.")
46
- return [fan_motor_eff, nominal_hp]
47
- end
48
-
49
- # If the biggest fan motor size is hit, use the highest category efficiency
50
- if nominal_hp > 9998.0
51
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Fan', "For #{fan.name}, there is no greater nominal HP. Use the efficiency of the largest motor category.")
52
- nominal_hp = motor_bhp
53
- end
54
-
55
- # Round to nearest whole HP for niceness
56
- if nominal_hp >= 2
57
- nominal_hp = nominal_hp.round
58
- end
59
- end
60
-
61
- # Get the efficiency based on the nominal horsepower
62
- motor_properties = model_find_object(motors, search_criteria, fan_motor_bhp = motor_bhp)
63
-
28
+ motor_properties = model_find_object(motors, {}, capacity = nil, date = nil, area = nil, num_floors = nil, fan_motor_bhp = motor_bhp)
64
29
  if motor_properties.nil?
65
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Fan', "For #{fan.name}, could not find nominal motor properties using search criteria: #{search_criteria}, motor_hp = #{nominal_hp} hp.")
66
- return [fan_motor_eff, nominal_hp]
30
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Fan', "For #{fan.name}, could not find motor properties using search criteria: motor_bhp = #{motor_bhp} bhp. Use #{fan_motor_eff} as a placeholder.")
31
+ return [fan_motor_eff, motor_bhp.round]
67
32
  end
33
+
34
+ nominal_hp = motor_properties['maximum_capacity'].round
68
35
  fan_motor_eff = motor_properties['nominal_full_load_efficiency']
69
- nominal_hp = motor_properties['maximum_capacity'].round(1)
70
36
 
71
37
  return [fan_motor_eff, nominal_hp]
72
38
  end
@@ -1,6 +1,12 @@
1
1
  class ASHRAE901PRM < Standard
2
2
  # @!group Model
3
3
 
4
+ # Returns the PRM building envelope infiltration rate at a pressure differential of 75 Pa in cfm per ft^2
5
+ # @return [Double] infiltration rate in cfm per ft^2 at 75 Pa
6
+ def prm_building_envelope_infiltration_rate
7
+ return 1.0
8
+ end
9
+
4
10
  # Determines which system number is used for the baseline system.
5
11
  # @param model [OpenStudio::Model::Model] OpenStudio model object
6
12
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
@@ -104,36 +110,11 @@ class ASHRAE901PRM < Standard
104
110
  return fan_type
105
111
  end
106
112
 
107
- # Calculate the building envelope area according to the 90.1 definition
108
- #
109
- # @param model [OpenStudio::Model::Model] OpenStudio model object
110
- # @return [Double] Building envelope area in m2
111
- def model_building_envelope_area(model)
112
- # Get the space building envelope area
113
- # According to the 90.1 definition, building envelope include:
114
- # - "the elements of a building that separate conditioned spaces from the exterior"
115
- # - "the elements of a building that separate conditioned space from unconditioned
116
- # space or that enclose semiheated spaces through which thermal energy may be
117
- # transferred to or from the exterior, to or from unconditioned spaces or to or
118
- # from conditioned spaces."
119
- building_envelope_area_m2 = 0
120
- model.getSpaces.each do |space|
121
- building_envelope_area_m2 += OpenstudioStandards::Geometry.space_get_envelope_area(space)
122
- end
123
- if building_envelope_area_m2 < 0.01
124
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', 'Calculated building envelope area is 0 m2, no infiltration will be added.')
125
- return 0.0
126
- end
127
-
128
- return building_envelope_area_m2
129
- end
130
-
131
- # This method creates customized infiltration objects for each
132
- # space and removes the SpaceType-level infiltration objects.
113
+ # This method creates customized infiltration objects for each space and removes the SpaceType-level infiltration objects.
133
114
  # @param model [OpenStudio::Model::Model] openstudio model
134
- # @param specific_space_infiltration_rate_75_pa [Double] space infiltration rate at a pressure differential of 75 Pa
115
+ # @param infiltration_rate [Double] space infiltration rate at a pressure differential of 75 Pa in cfm per ft^2
135
116
  # @return [Boolean] true if successful, false if not
136
- def model_apply_standard_infiltration(model, specific_space_infiltration_rate_75_pa = nil)
117
+ def model_apply_standard_infiltration(model, infiltration_rate: prm_building_envelope_infiltration_rate)
137
118
  # Model shouldn't use SpaceInfiltrationEffectiveLeakageArea
138
119
  # Excerpt from the EnergyPlus Input/Output reference manual:
139
120
  # "This model is based on work by Sherman and Grimsrud (1980)
@@ -148,16 +129,15 @@ class ASHRAE901PRM < Standard
148
129
  end
149
130
 
150
131
  # Get the space building envelope area
151
- building_envelope_area_m2 = model_building_envelope_area(model)
132
+ building_envelope_area_m2 = OpenstudioStandards::Geometry.model_get_envelope_area(model)
152
133
  prm_raise(building_envelope_area_m2 > 0.0, @sizing_run_dir, 'Calculated building envelope area is 0 m2, Please check model inputs.')
153
134
 
154
135
  # Calculate current model air leakage rate @ 75 Pa and report it
155
136
  curr_tot_infil_m3_per_s_per_envelope_area = model_current_building_envelope_infiltration_at_75pa(model, building_envelope_area_m2)
156
137
  OpenStudio.logFree(OpenStudio::Info, 'prm.log', "The model's I_75Pa is estimated to be #{curr_tot_infil_m3_per_s_per_envelope_area} m3/s per m2 of total building envelope.")
157
138
 
158
- # Calculate building adjusted building envelope
159
- # air infiltration following the 90.1 PRM rules
160
- tot_infil_m3_per_s = model_adjusted_building_envelope_infiltration(building_envelope_area_m2, specific_space_infiltration_rate_75_pa)
139
+ # Calculate building adjusted building envelope air infiltration following the 90.1 PRM rules
140
+ tot_infil_m3_per_s = model_adjusted_building_envelope_infiltration(building_envelope_area_m2, infiltration_rate: infiltration_rate)
161
141
 
162
142
  # Find infiltration method used in the model, if any.
163
143
  #
@@ -193,7 +173,7 @@ class ASHRAE901PRM < Standard
193
173
  unless space.spaceInfiltrationDesignFlowRates.empty?
194
174
  old_infil = space.spaceInfiltrationDesignFlowRates[0]
195
175
  old_infil_method = old_infil.designFlowRateCalculationMethod.to_s
196
- # Return flow per space floor area if method is inconsisten in proposed model
176
+ # Return flow per space floor area if method is inconsistent in proposed model
197
177
  return 'Flow/Area' if infil_method != old_infil_method && !infil_method.nil?
198
178
 
199
179
  infil_method = old_infil_method
@@ -236,7 +216,7 @@ class ASHRAE901PRM < Standard
236
216
  vel = old_infil.velocityTermCoefficient
237
217
  vel_2 = old_infil.velocitySquaredTermCoefficient
238
218
  old_infil_coeffs = [cst, temp, vel, vel_2] if !(cst.nil? && temp.nil? && vel.nil? && vel_2.nil?)
239
- # Return flow per space floor area if method is inconsisten in proposed model
219
+ # Return flow per space floor area if method is inconsistent in proposed model
240
220
  return [0.0, 0.0, 0.224, 0.0] if infil_coeffs != old_infil_coeffs && !(infil_coeffs[0].nil? &&
241
221
  infil_coeffs[1].nil? &&
242
222
  infil_coeffs[2].nil? &&
@@ -246,7 +226,7 @@ class ASHRAE901PRM < Standard
246
226
  end
247
227
 
248
228
  # Infiltration at the space type level
249
- if infil_coeffs == [nil, nil, nil, nil] && space.spaceType.is_initialized
229
+ if (infil_coeffs == [nil, nil, nil, nil]) && space.spaceType.is_initialized
250
230
  space_type = space.spaceType.get
251
231
  unless space_type.spaceInfiltrationDesignFlowRates.empty?
252
232
  old_infil = space_type.spaceInfiltrationDesignFlowRates[0]
@@ -255,7 +235,7 @@ class ASHRAE901PRM < Standard
255
235
  vel = old_infil.velocityTermCoefficient
256
236
  vel_2 = old_infil.velocitySquaredTermCoefficient
257
237
  old_infil_coeffs = [cst, temp, vel, vel_2] if !(cst.nil? && temp.nil? && vel.nil? && vel_2.nil?)
258
- # Return flow per space floor area if method is inconsisten in proposed model
238
+ # Return flow per space floor area if method is inconsistent in proposed model
259
239
  return [0.0, 0.0, 0.224, 0.0] unless infil_coeffs != old_infil_coeffs && !(infil_coeffs[0].nil? &&
260
240
  infil_coeffs[1].nil? &&
261
241
  infil_coeffs[2].nil? &&
@@ -308,32 +288,22 @@ class ASHRAE901PRM < Standard
308
288
  bldg_air_leakage_rate += model_get_space_air_leakage(space)
309
289
  end
310
290
 
311
- # adjust_infiltration_to_prototype_building_conditions(1) corresponds
312
- # to the 0.112 shown in G3.1.1.4
291
+ # adjust_infiltration_to_prototype_building_conditions(1) corresponds to the 0.112 shown in G3.1.1.4
313
292
  curr_tot_infil_m3_per_s_per_envelope_area = bldg_air_leakage_rate / OpenstudioStandards::Infiltration.adjust_infiltration_to_prototype_building_conditions(1) / building_envelope_area_m2
314
293
  return curr_tot_infil_m3_per_s_per_envelope_area
315
294
  end
316
295
 
317
- # This method calculates the building envelope infiltration,
318
- # this approach uses the 90.1 PRM rules
296
+ # Determine the total building baseline infiltration rate in cfm per ft2 of the building envelope at 75 Pa per the 90.1 PRM rules.
319
297
  #
320
298
  # @param building_envelope_area_m2 [Double] Building envelope area as per 90.1 in m^2
321
- # @param specific_space_infiltration_rate_75_pa [Double] Specific space infiltration rate at 75 pa
299
+ # @param infiltration_rate [Double] Specific space infiltration rate at 75 pa in cfm per ft2
322
300
  # @return [Double] building envelope infiltration
323
- def model_adjusted_building_envelope_infiltration(building_envelope_area_m2, specific_space_infiltration_rate_75_pa = nil)
324
- # Determine the total building baseline infiltration rate in cfm per ft2 of the building envelope at 75 Pa
325
- if specific_space_infiltration_rate_75_pa.nil?
326
- basic_infil_rate_cfm_per_ft2 = space_infiltration_rate_75_pa
327
- else
328
- basic_infil_rate_cfm_per_ft2 = specific_space_infiltration_rate_75_pa
329
- end
330
-
301
+ def model_adjusted_building_envelope_infiltration(building_envelope_area_m2, infiltration_rate: prm_building_envelope_infiltration_rate)
331
302
  # Conversion factor
332
303
  conv_fact = OpenStudio.convert(1.0, 'm^3/s', 'ft^3/min').get / OpenStudio.convert(1.0, 'm^2', 'ft^2').get
333
304
 
334
305
  # Adjust the infiltration rate to the average pressure for the prototype buildings.
335
- # adj_infil_rate_cfm_per_ft2 = 0.112 * basic_infil_rate_cfm_per_ft2
336
- adj_infil_rate_cfm_per_ft2 = OpenstudioStandards::Infiltration.adjust_infiltration_to_prototype_building_conditions(basic_infil_rate_cfm_per_ft2)
306
+ adj_infil_rate_cfm_per_ft2 = OpenstudioStandards::Infiltration.adjust_infiltration_to_prototype_building_conditions(infiltration_rate)
337
307
  adj_infil_rate_m3_per_s_per_m2 = adj_infil_rate_cfm_per_ft2 / conv_fact
338
308
 
339
309
  # Calculate the total infiltration
@@ -342,286 +312,6 @@ class ASHRAE901PRM < Standard
342
312
  return tot_infil_m3_per_s
343
313
  end
344
314
 
345
- # Apply the standard construction to each surface in the model, based on the construction type currently assigned.
346
- #
347
- # @param model [OpenStudio::Model::Model] OpenStudio model object
348
- # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
349
- # @param wwr_building_type [String] building type used for defining window to wall ratio, e.g. 'Office > 50,000 sq ft'
350
- # @param wwr_info [Hash] A map that maps each building area type to its correspondent wwr.
351
- # @return [Boolean] returns true if successful, false if not
352
- def model_apply_standard_constructions(model, climate_zone, wwr_building_type: nil, wwr_info: {})
353
- types_to_modify = []
354
-
355
- # Possible boundary conditions are
356
- # Adiabatic
357
- # Surface
358
- # Outdoors
359
- # Ground
360
- # Foundation
361
- # GroundFCfactorMethod
362
- # OtherSideCoefficients
363
- # OtherSideConditionsModel
364
- # GroundSlabPreprocessorAverage
365
- # GroundSlabPreprocessorCore
366
- # GroundSlabPreprocessorPerimeter
367
- # GroundBasementPreprocessorAverageWall
368
- # GroundBasementPreprocessorAverageFloor
369
- # GroundBasementPreprocessorUpperWall
370
- # GroundBasementPreprocessorLowerWall
371
-
372
- # Possible surface types are
373
- # Floor
374
- # Wall
375
- # RoofCeiling
376
- # FixedWindow
377
- # OperableWindow
378
- # Door
379
- # GlassDoor
380
- # OverheadDoor
381
- # Skylight
382
- # TubularDaylightDome
383
- # TubularDaylightDiffuser
384
-
385
- # Create an array of surface types
386
- types_to_modify << ['Outdoors', 'Floor']
387
- types_to_modify << ['Outdoors', 'Wall']
388
- types_to_modify << ['Outdoors', 'RoofCeiling']
389
- types_to_modify << ['Outdoors', 'FixedWindow']
390
- types_to_modify << ['Outdoors', 'OperableWindow']
391
- types_to_modify << ['Outdoors', 'Door']
392
- types_to_modify << ['Outdoors', 'GlassDoor']
393
- types_to_modify << ['Outdoors', 'OverheadDoor']
394
- types_to_modify << ['Outdoors', 'Skylight']
395
- types_to_modify << ['Surface', 'Floor']
396
- types_to_modify << ['Surface', 'Wall']
397
- types_to_modify << ['Surface', 'RoofCeiling']
398
- types_to_modify << ['Surface', 'FixedWindow']
399
- types_to_modify << ['Surface', 'OperableWindow']
400
- types_to_modify << ['Surface', 'Door']
401
- types_to_modify << ['Surface', 'GlassDoor']
402
- types_to_modify << ['Surface', 'OverheadDoor']
403
- types_to_modify << ['Ground', 'Floor']
404
- types_to_modify << ['Ground', 'Wall']
405
- types_to_modify << ['Foundation', 'Wall']
406
- types_to_modify << ['GroundFCfactorMethod', 'Wall']
407
- types_to_modify << ['OtherSideCoefficients', 'Wall']
408
- types_to_modify << ['OtherSideConditionsModel', 'Wall']
409
- types_to_modify << ['GroundBasementPreprocessorAverageWall', 'Wall']
410
- types_to_modify << ['GroundBasementPreprocessorUpperWall', 'Wall']
411
- types_to_modify << ['GroundBasementPreprocessorLowerWall', 'Wall']
412
- types_to_modify << ['Foundation', 'Floor']
413
- types_to_modify << ['GroundFCfactorMethod', 'Floor']
414
- types_to_modify << ['OtherSideCoefficients', 'Floor']
415
- types_to_modify << ['OtherSideConditionsModel', 'Floor']
416
- types_to_modify << ['GroundSlabPreprocessorAverage', 'Floor']
417
- types_to_modify << ['GroundSlabPreprocessorCore', 'Floor']
418
- types_to_modify << ['GroundSlabPreprocessorPerimeter', 'Floor']
419
-
420
- # Find just those surfaces
421
- surfaces_to_modify = []
422
- surface_category = {}
423
- org_surface_boundary_conditions = {}
424
- types_to_modify.each do |boundary_condition, surface_type|
425
- # Surfaces
426
- model.getSurfaces.sort.each do |surf|
427
- next unless surf.outsideBoundaryCondition == boundary_condition
428
- next unless surf.surfaceType == surface_type
429
-
430
- # Check if surface is adjacent to an unenclosed or unconditioned space (e.g. attic or parking garage)
431
- if surf.outsideBoundaryCondition == 'Surface'
432
- adj_space = surf.adjacentSurface.get.space.get
433
- adj_space_cond_type = space_conditioning_category(adj_space)
434
- if adj_space_cond_type == 'Unconditioned'
435
- # Get adjacent surface
436
- adjacent_surf = surf.adjacentSurface.get
437
-
438
- # Store original boundary condition type
439
- org_surface_boundary_conditions[surf.name.to_s] = adjacent_surf
440
-
441
- # Identify this surface as exterior
442
- surface_category[surf] = 'ExteriorSurface'
443
-
444
- # Temporary change the surface's boundary condition to 'Outdoors' so it can be assigned a baseline construction
445
- surf.setOutsideBoundaryCondition('Outdoors')
446
- adjacent_surf.setOutsideBoundaryCondition('Outdoors')
447
- end
448
- end
449
-
450
- if boundary_condition == 'Outdoors'
451
- surface_category[surf] = 'ExteriorSurface'
452
- elsif ['Ground', 'Foundation', 'GroundFCfactorMethod', 'OtherSideCoefficients', 'OtherSideConditionsModel', 'GroundSlabPreprocessorAverage', 'GroundSlabPreprocessorCore', 'GroundSlabPreprocessorPerimeter', 'GroundBasementPreprocessorAverageWall', 'GroundBasementPreprocessorAverageFloor', 'GroundBasementPreprocessorUpperWall', 'GroundBasementPreprocessorLowerWall'].include?(boundary_condition)
453
- surface_category[surf] = 'GroundSurface'
454
- else
455
- surface_category[surf] = 'NA'
456
- end
457
- surfaces_to_modify << surf
458
- end
459
-
460
- # SubSurfaces
461
- model.getSubSurfaces.sort.each do |surf|
462
- next unless surf.outsideBoundaryCondition == boundary_condition
463
- next unless surf.subSurfaceType == surface_type
464
-
465
- surface_category[surf] = 'ExteriorSubSurface'
466
- surfaces_to_modify << surf
467
- end
468
- end
469
-
470
- # Modify these surfaces
471
- prev_created_consts = {}
472
- surfaces_to_modify.sort.each do |surf|
473
- # Get space conditioning
474
- space = surf.space.get
475
- space_cond_type = space_conditioning_category(space)
476
-
477
- # Do not modify constructions for unconditioned spaces
478
- prev_created_consts = planar_surface_apply_standard_construction(surf, climate_zone, prev_created_consts, wwr_building_type, wwr_info, surface_category[surf]) unless space_cond_type == 'Unconditioned'
479
-
480
- # Reset boundary conditions to original if they were temporary modified
481
- if org_surface_boundary_conditions.include?(surf.name.to_s)
482
- surf.setAdjacentSurface(org_surface_boundary_conditions[surf.name.to_s])
483
- end
484
- end
485
-
486
- # List the unique array of constructions
487
- if prev_created_consts.empty?
488
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', 'None of the constructions in your proposed model have both Intended Surface Type and Standards Construction Type')
489
- else
490
- prev_created_consts.each do |surf_type, construction|
491
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "For #{surf_type.join(' ')}, applied #{construction.name}.")
492
- end
493
- end
494
-
495
- return true
496
- end
497
-
498
- # Go through the default construction sets and hard-assigned constructions.
499
- # Clone the existing constructions and set their intended surface type and standards construction type per the PRM.
500
- # For some standards, this will involve making modifications. For others, it will not.
501
- # 90.1-2019
502
- # @param model [OpenStudio::Model::Model] OpenStudio model object
503
- # @return [Boolean] returns true if successful, false if not
504
- def model_apply_prm_construction_types(model)
505
- types_to_modify = []
506
-
507
- # Possible boundary conditions are
508
- # Adiabatic
509
- # Surface
510
- # Outdoors
511
- # Ground
512
- # Foundation
513
- # GroundFCfactorMethod
514
- # OtherSideCoefficients
515
- # OtherSideConditionsModel
516
- # GroundSlabPreprocessorAverage
517
- # GroundSlabPreprocessorCore
518
- # GroundSlabPreprocessorPerimeter
519
- # GroundBasementPreprocessorAverageWall
520
- # GroundBasementPreprocessorAverageFloor
521
- # GroundBasementPreprocessorUpperWall
522
- # GroundBasementPreprocessorLowerWall
523
-
524
- # Possible surface types are
525
- # AtticFloor
526
- # AtticWall
527
- # AtticRoof
528
- # DemisingFloor
529
- # DemisingWall
530
- # DemisingRoof
531
- # ExteriorFloor
532
- # ExteriorWall
533
- # ExteriorRoof
534
- # ExteriorWindow
535
- # ExteriorDoor
536
- # GlassDoor
537
- # GroundContactFloor
538
- # GroundContactWall
539
- # GroundContactRoof
540
- # InteriorFloor
541
- # InteriorWall
542
- # InteriorCeiling
543
- # InteriorPartition
544
- # InteriorWindow
545
- # InteriorDoor
546
- # OverheadDoor
547
- # Skylight
548
- # TubularDaylightDome
549
- # TubularDaylightDiffuser
550
-
551
- # Possible standards construction types
552
- # Mass
553
- # SteelFramed
554
- # WoodFramed
555
- # IEAD
556
- # View
557
- # Daylight
558
- # Swinging
559
- # NonSwinging
560
- # Heated
561
- # Unheated
562
- # RollUp
563
- # Sliding
564
- # Metal
565
- # Nonmetal framing (all)
566
- # Metal framing (curtainwall/storefront)
567
- # Metal framing (entrance door)
568
- # Metal framing (all other)
569
- # Metal Building
570
- # Attic and Other
571
- # Glass with Curb
572
- # Plastic with Curb
573
- # Without Curb
574
-
575
- # Create an array of types
576
- types_to_modify << ['Outdoors', 'ExteriorWall', 'SteelFramed']
577
- types_to_modify << ['Outdoors', 'ExteriorRoof', 'IEAD']
578
- types_to_modify << ['Outdoors', 'ExteriorFloor', 'SteelFramed']
579
- types_to_modify << ['Outdoors', 'ExteriorWindow', 'Any Vertical Glazing']
580
- types_to_modify << ['Outdoors', 'GlassDoor', 'Any Vertical Glazing']
581
- types_to_modify << ['Outdoors', 'ExteriorDoor', 'NonSwinging']
582
- types_to_modify << ['Outdoors', 'ExteriorDoor', 'Swinging']
583
- types_to_modify << ['Ground', 'GroundContactFloor', 'Unheated']
584
- types_to_modify << ['Ground', 'GroundContactWall', 'Mass']
585
-
586
- # Foundation
587
- types_to_modify << ['Foundation', 'GroundContactFloor', 'Unheated']
588
- types_to_modify << ['Foundation', 'GroundContactWall', 'Mass']
589
-
590
- # F/C-Factor methods
591
- types_to_modify << ['GroundFCfactorMethod', 'GroundContactFloor', 'Unheated']
592
- types_to_modify << ['GroundFCfactorMethod', 'GroundContactWall', 'Mass']
593
-
594
- # Other side coefficients
595
- types_to_modify << ['OtherSideCoefficients', 'GroundContactFloor', 'Unheated']
596
- types_to_modify << ['OtherSideConditionsModel', 'GroundContactFloor', 'Unheated']
597
- types_to_modify << ['OtherSideCoefficients', 'GroundContactWall', 'Mass']
598
- types_to_modify << ['OtherSideConditionsModel', 'GroundContactWall', 'Mass']
599
-
600
- # Slab preprocessor
601
- types_to_modify << ['GroundSlabPreprocessorAverage', 'GroundContactFloor', 'Unheated']
602
- types_to_modify << ['GroundSlabPreprocessorCore', 'GroundContactFloor', 'Unheated']
603
- types_to_modify << ['GroundSlabPreprocessorPerimeter', 'GroundContactFloor', 'Unheated']
604
-
605
- # Basement preprocessor
606
- types_to_modify << ['GroundBasementPreprocessorAverageWall', 'GroundContactWall', 'Mass']
607
- types_to_modify << ['GroundBasementPreprocessorAverageFloor', 'GroundContactFloor', 'Unheated']
608
- types_to_modify << ['GroundBasementPreprocessorUpperWall', 'GroundContactWall', 'Mass']
609
- types_to_modify << ['GroundBasementPreprocessorLowerWall', 'GroundContactWall', 'Mass']
610
-
611
- # Modify all constructions of each type
612
- types_to_modify.each do |boundary_cond, surf_type, const_type|
613
- constructions = OpenstudioStandards::Constructions.model_get_constructions(model, boundary_cond, surf_type)
614
-
615
- constructions.sort.each do |const|
616
- standards_info = const.standardsInformation
617
- standards_info.setIntendedSurfaceType(surf_type)
618
- standards_info.setStandardsConstructionType(const_type)
619
- end
620
- end
621
-
622
- return true
623
- end
624
-
625
315
  # Reduces the SRR to the values specified by the PRM. SRR reduction will be done by shrinking vertices toward the centroid.
626
316
  #
627
317
  # @param model [OpenStudio::Model::Model] OpenStudio model object
@@ -756,8 +446,7 @@ class ASHRAE901PRM < Standard
756
446
  elevator_counter_weight_of_car = elevator_weight_of_car + (0.4 * elevator_rated_load)
757
447
  end
758
448
  search_criteria = {
759
- 'template' => template,
760
- 'type' => 'Any'
449
+ 'template' => template
761
450
  }
762
451
  end
763
452
  elevator_motor_bhp = (elevator_weight_of_car + elevator_rated_load - elevator_counter_weight_of_car) * elevator_speed_of_car / (33000 * elevator_mech_eff) # Lookup the minimum motor efficiency
@@ -1230,7 +919,7 @@ class ASHRAE901PRM < Standard
1230
919
  standards_data['userdata_airloop_hvac'].each do |row|
1231
920
  next unless row['name'].to_s.downcase.strip == air_loop_hvac.name.to_s.downcase.strip
1232
921
 
1233
- if row['dcv_exception_airloop'].to_s.upcase.strip == 'TRUE'
922
+ if row['dcv_exception_airloop']
1234
923
  dcv_airloop_user_exception = true
1235
924
  break
1236
925
  end
@@ -1251,7 +940,7 @@ class ASHRAE901PRM < Standard
1251
940
  standards_data['userdata_thermal_zone'].each do |row|
1252
941
  next unless row['name'].to_s.downcase.strip == thermal_zone.name.to_s.downcase.strip
1253
942
 
1254
- if row['dcv_exception_thermal_zone'].to_s.upcase.strip == 'TRUE'
943
+ if row['dcv_exception_thermal_zone']
1255
944
  dcv_zone_user_exception = true
1256
945
  break
1257
946
  end
@@ -2312,10 +2001,10 @@ class ASHRAE901PRM < Standard
2312
2001
  'prm.log',
2313
2002
  "User data in the userdata_building.csv indicate building #{building_name} is exempted from rotation. Update the run to a single orientation PRM generation.")
2314
2003
  # @todo need to use user data enums later.
2315
- run_orients_flag = user_buildings[user_building_index]['is_exempt_from_rotations'].casecmp('False') == 0
2004
+ run_orients_flag = user_buildings[user_building_index]['is_exempt_from_rotations']
2316
2005
  end
2317
2006
  end
2318
- return run_orients_flag
2007
+ run_orients_flag
2319
2008
  end
2320
2009
 
2321
2010
  # Function that extract the total fenestration area from a model by orientations.
@@ -3342,6 +3031,10 @@ class ASHRAE901PRM < Standard
3342
3031
  return heat_type_props['heat_type']
3343
3032
  end
3344
3033
 
3034
+ def has_space_conditioning_category
3035
+ true
3036
+ end
3037
+
3345
3038
  private
3346
3039
 
3347
3040
  # Check if the PRM process uses user data. The function returns a hash when
@@ -87,11 +87,10 @@ class ASHRAE901PRM < Standard
87
87
  infiltration.setFlowperSpaceFloorArea(adj_infil_flow_area.round(13)) if space.exteriorArea > 0
88
88
  end
89
89
  infiltration.setSchedule(infil_sch)
90
- infiltration.setConstantTermCoefficient(infil_coefficients[0])
91
- infiltration.setTemperatureTermCoefficient(infil_coefficients[1])
92
- infiltration.setVelocityTermCoefficient(infil_coefficients[2])
93
- infiltration.setVelocitySquaredTermCoefficient(infil_coefficients[3])
94
-
90
+ infiltration.setConstantTermCoefficient(infil_coefficients[0]) unless infil_coefficients[0].nil?
91
+ infiltration.setTemperatureTermCoefficient(infil_coefficients[1]) unless infil_coefficients[1].nil?
92
+ infiltration.setVelocityTermCoefficient(infil_coefficients[2]) unless infil_coefficients[2].nil?
93
+ infiltration.setVelocitySquaredTermCoefficient(infil_coefficients[3]) unless infil_coefficients[3].nil?
95
94
  infiltration.setSpace(space)
96
95
  end
97
96
 
@@ -17,9 +17,8 @@ class ASHRAE901PRM < Standard
17
17
  # @param set_electric_equipment [Boolean] if true, set the electric equipment density
18
18
  # @param set_gas_equipment [Boolean] if true, set the gas equipment density
19
19
  # @param set_ventilation [Boolean] if true, set the ventilation rates (per-person and per-area)
20
- # @param set_infiltration [Boolean] if true, set the infiltration rates
21
20
  # @return [Boolean] returns true if successful, false if not
22
- def space_type_apply_internal_loads(space_type, set_people, set_lights, set_electric_equipment, set_gas_equipment, set_ventilation, set_infiltration)
21
+ def space_type_apply_internal_loads(space_type, set_people, set_lights, set_electric_equipment, set_gas_equipment, set_ventilation)
23
22
  # Skip plenums
24
23
  # Check if the space type name
25
24
  # contains the word plenum.