openstudio-standards 0.7.1 → 0.8.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAE90120162019LargeHotel.json +58 -13
  3. data/data/geometry/ASHRAELargeHotel.json +58 -13
  4. data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
  5. data/data/standards/export_OpenStudio_libraries.rb +2 -2
  6. data/data/standards/manage_OpenStudio_Standards.rb +6 -6
  7. data/data/standards/openstudio_standards_duplicates_log.csv +7961 -1
  8. data/data/standards/test_performance_expected_dd_results.csv +2016 -2004
  9. data/lib/openstudio-standards/btap/fileio.rb +171 -5
  10. data/lib/openstudio-standards/constructions/create.rb +38 -4
  11. data/lib/openstudio-standards/constructions/modify.rb +10 -3
  12. data/lib/openstudio-standards/create_typical/create_typical.rb +42 -28
  13. data/lib/openstudio-standards/create_typical/space_type_information.rb +160 -0
  14. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +16 -19
  15. data/lib/openstudio-standards/exterior_lighting/create.rb +454 -0
  16. data/lib/openstudio-standards/exterior_lighting/data/entryways.csv +52 -0
  17. data/lib/openstudio-standards/exterior_lighting/data/parking.csv +54 -0
  18. data/lib/openstudio-standards/exterior_lighting/data/typical_exterior_lighting.json +37 -0
  19. data/lib/openstudio-standards/exterior_lighting/information.rb +202 -0
  20. data/lib/openstudio-standards/geometry/information.rb +49 -2
  21. data/lib/openstudio-standards/hvac/components/create.rb +169 -0
  22. data/lib/openstudio-standards/hvac/components/modify.rb +42 -0
  23. data/lib/openstudio-standards/hvac/exhaust/create_exhaust_fan.rb +108 -0
  24. data/lib/openstudio-standards/hvac/exhaust/data/convert_data.rb +86 -0
  25. data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.csv +18 -0
  26. data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.json +89 -0
  27. data/lib/openstudio-standards/infiltration/nist_infiltration.rb +25 -13
  28. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +0 -64
  29. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +0 -25
  30. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +0 -25
  31. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +1 -11
  32. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +5 -1
  33. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -7
  34. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +36 -18
  35. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +1 -1
  36. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +121 -239
  37. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +179 -151
  38. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +0 -466
  39. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +18 -2
  40. data/lib/openstudio-standards/refrigeration/create_case.rb +125 -0
  41. data/lib/openstudio-standards/refrigeration/create_compressor.rb +78 -0
  42. data/lib/openstudio-standards/refrigeration/create_compressor_rack.rb +48 -0
  43. data/lib/openstudio-standards/refrigeration/create_refrigeration_system.rb +74 -0
  44. data/lib/openstudio-standards/refrigeration/create_typical_refrigeration.rb +161 -0
  45. data/lib/openstudio-standards/refrigeration/create_walkin.rb +116 -0
  46. data/lib/openstudio-standards/refrigeration/data/refrigerated_cases.csv +31 -0
  47. data/lib/openstudio-standards/refrigeration/data/refrigerated_walkins.csv +76 -0
  48. data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +13 -0
  49. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_cases.csv +17 -0
  50. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_walkins.csv +53 -0
  51. data/lib/openstudio-standards/refrigeration/information.rb +130 -0
  52. data/lib/openstudio-standards/schedules/parametric.rb +1 -1
  53. data/lib/openstudio-standards/service_water_heating/create_typical.rb +299 -0
  54. data/lib/openstudio-standards/service_water_heating/create_water_heating_loop.rb +16 -14
  55. data/lib/openstudio-standards/service_water_heating/data/convert_data.rb +119 -0
  56. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.csv +54 -0
  57. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.json +810 -0
  58. data/lib/openstudio-standards/service_water_heating/information.rb +69 -0
  59. data/lib/openstudio-standards/sql_file/fenestration.rb +1 -1
  60. data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +154 -0
  61. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +35 -12
  62. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +110 -61
  63. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +128 -29
  64. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +103 -38
  65. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  66. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +106 -5
  67. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +8 -8
  68. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +44 -17
  69. data/lib/openstudio-standards/standards/Standards.Fan.rb +32 -21
  70. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +45 -18
  71. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +14 -9
  72. data/lib/openstudio-standards/standards/Standards.Model.rb +294 -76
  73. data/lib/openstudio-standards/standards/Standards.Motor.rb +66 -0
  74. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -1
  75. data/lib/openstudio-standards/standards/Standards.Pump.rb +34 -20
  76. data/lib/openstudio-standards/standards/Standards.ServiceWaterHeating.rb +0 -353
  77. data/lib/openstudio-standards/standards/Standards.Space.rb +3 -107
  78. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +2 -57
  79. data/lib/openstudio-standards/standards/Standards.Surface.rb +11 -3
  80. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +1 -120
  81. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.computer_room_acs.json +142 -0
  82. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +1006 -596
  83. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.energy_recovery.json +724 -0
  84. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +1258 -163
  85. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +1070 -140
  86. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +33 -3374
  87. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +1400 -340
  88. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.vrfs.json +769 -0
  89. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +2 -5338
  90. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.computer_room_acs.json +142 -0
  91. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +1006 -596
  92. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.energy_recovery.json +724 -0
  93. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +1258 -163
  94. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +1070 -140
  95. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +15 -3343
  96. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +1840 -372
  97. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.vrfs.json +769 -0
  98. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +20 -10
  99. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +0 -9
  100. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +0 -5382
  101. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.computer_room_acs.json +142 -0
  102. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +1006 -628
  103. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +718 -712
  104. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +1438 -163
  105. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +2552 -182
  106. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +14 -3368
  107. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +2348 -352
  108. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.vrfs.json +769 -0
  109. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +47 -61
  110. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +6 -0
  111. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Motor.rb +11 -0
  112. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +0 -9
  113. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +2 -5522
  114. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.computer_room_acs.json +142 -0
  115. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +1006 -628
  116. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +1358 -1346
  117. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +1438 -163
  118. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +1359 -189
  119. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +19 -3451
  120. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +2176 -616
  121. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.vrfs.json +616 -0
  122. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +47 -61
  123. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +9 -0
  124. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Motor.rb +11 -0
  125. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +0 -9
  126. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +8 -6055
  127. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.computer_room_acs.json +142 -0
  128. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.economizers.json +1006 -628
  129. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +1188 -1424
  130. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ext_ltg.json +1498 -163
  131. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.motors.json +1769 -189
  132. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +15 -3422
  133. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +1807 -408
  134. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.vrfs.json +1024 -0
  135. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +70 -87
  136. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +9 -0
  137. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Motor.rb +11 -0
  138. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +0 -9
  139. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +8 -6080
  140. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.computer_room_acs.json +142 -0
  141. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.economizers.json +1006 -628
  142. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +2806 -3296
  143. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ext_ltg.json +1558 -163
  144. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.motors.json +1759 -189
  145. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +16 -3448
  146. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +2758 -422
  147. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.vrfs.json +684 -0
  148. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +14 -3318
  149. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +2 -4786
  150. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.chillers.json +1 -1
  151. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +953 -207
  152. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.energy_recovery.json +724 -0
  153. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.ext_ltg.json +5 -5
  154. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +11 -2858
  155. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirConditionerVariableRefrigerantFlow.rb +13 -0
  156. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +0 -18
  157. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +1 -4739
  158. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.chillers.json +0 -51
  159. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +953 -207
  160. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.energy_recovery.json +724 -0
  161. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.ext_ltg.json +5 -5
  162. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +9 -2830
  163. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirConditionerVariableRefrigerantFlow.rb +13 -0
  164. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +0 -18
  165. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.economizers.json +1006 -564
  166. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.energy_recovery.json +1264 -0
  167. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.ext_ltg.json +5 -5
  168. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +0 -1079
  169. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +132 -288
  170. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.HeatExchangerSensLat.rb +44 -20
  171. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +11 -0
  172. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +0 -8
  173. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.economizers.json +1006 -564
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.energy_recovery.json +1264 -0
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ext_ltg.json +5 -5
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +0 -1079
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +137 -288
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +44 -20
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +11 -0
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +0 -9
  181. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +12 -10
  182. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +8 -6
  183. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +8 -6
  184. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +9 -3
  185. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +6 -40
  186. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +30 -337
  187. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +4 -5
  188. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -2
  189. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +56 -3
  190. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +80 -0
  191. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +0 -10
  192. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +35 -0
  193. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.economizers.json +550 -0
  194. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.energy_recovery.json +724 -0
  195. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.ext_ltg.json +1216 -0
  196. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps.json +5 -5
  197. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +225 -245
  198. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.unitary_acs.json +174 -78
  199. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.water_heaters.json +354 -317
  200. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +19 -3
  201. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac.json +185 -0
  202. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac_doas.json +127 -0
  203. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_building.json +121 -0
  204. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_design_specification_outdoor_air.json +49 -0
  205. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_electric_equipment.json +113 -0
  206. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_exterior_lights.json +120 -0
  207. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_space.json +388 -0
  208. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_spacetype.json +367 -0
  209. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_thermal_zone.json +56 -0
  210. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_connections.json +37 -0
  211. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment.json +69 -0
  212. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment_definition.json +37 -0
  213. data/lib/openstudio-standards/standards/cbes/cbes_pre_1978/data/cbes_pre_1978.ext_ltg.json +5 -5
  214. data/lib/openstudio-standards/standards/cbes/cbes_t24_1978/data/cbes_t24_1978.ext_ltg.json +5 -5
  215. data/lib/openstudio-standards/standards/cbes/cbes_t24_1992/data/cbes_t24_1992.ext_ltg.json +5 -5
  216. data/lib/openstudio-standards/standards/cbes/cbes_t24_2001/data/cbes_t24_2001.ext_ltg.json +5 -5
  217. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/data/cbes_t24_2005.ext_ltg.json +5 -5
  218. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/data/cbes_t24_2008.ext_ltg.json +5 -5
  219. data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/data/comstock_deer_1985.ext_ltg.json +5 -5
  220. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ext_ltg.json +5 -5
  221. data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/data/comstock_deer_1996.ext_ltg.json +5 -5
  222. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ext_ltg.json +5 -5
  223. data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/data/comstock_deer_2003.ext_ltg.json +5 -5
  224. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ext_ltg.json +5 -5
  225. data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/data/comstock_deer_2007.ext_ltg.json +5 -5
  226. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ext_ltg.json +5 -5
  227. data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/data/comstock_deer_2011.ext_ltg.json +5 -5
  228. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ext_ltg.json +5 -5
  229. data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/data/comstock_deer_2014.ext_ltg.json +5 -5
  230. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ext_ltg.json +5 -5
  231. data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/data/comstock_deer_2015.ext_ltg.json +5 -5
  232. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ext_ltg.json +5 -5
  233. data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/data/comstock_deer_2017.ext_ltg.json +5 -5
  234. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ext_ltg.json +5 -5
  235. data/lib/openstudio-standards/standards/deer/deer_2020/comstock_deer_2020/data/comstock_deer_2020.ext_ltg.json +5 -5
  236. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ext_ltg.json +5 -5
  237. data/lib/openstudio-standards/standards/deer/deer_2025/comstock_deer_2025/data/comstock_deer_2025.ext_ltg.json +5 -5
  238. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ext_ltg.json +5 -5
  239. data/lib/openstudio-standards/standards/deer/deer_2030/comstock_deer_2030/data/comstock_deer_2030.ext_ltg.json +5 -5
  240. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ext_ltg.json +5 -5
  241. data/lib/openstudio-standards/standards/deer/deer_2035/comstock_deer_2035/data/comstock_deer_2035.ext_ltg.json +5 -5
  242. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ext_ltg.json +5 -5
  243. data/lib/openstudio-standards/standards/deer/deer_2040/comstock_deer_2040/data/comstock_deer_2040.ext_ltg.json +5 -5
  244. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ext_ltg.json +5 -5
  245. data/lib/openstudio-standards/standards/deer/deer_2045/comstock_deer_2045/data/comstock_deer_2045.ext_ltg.json +5 -5
  246. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ext_ltg.json +5 -5
  247. data/lib/openstudio-standards/standards/deer/deer_2050/comstock_deer_2050/data/comstock_deer_2050.ext_ltg.json +5 -5
  248. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ext_ltg.json +5 -5
  249. data/lib/openstudio-standards/standards/deer/deer_2055/comstock_deer_2055/data/comstock_deer_2055.ext_ltg.json +5 -5
  250. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ext_ltg.json +5 -5
  251. data/lib/openstudio-standards/standards/deer/deer_2060/comstock_deer_2060/data/comstock_deer_2060.ext_ltg.json +5 -5
  252. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ext_ltg.json +5 -5
  253. data/lib/openstudio-standards/standards/deer/deer_2065/comstock_deer_2065/data/comstock_deer_2065.ext_ltg.json +5 -5
  254. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ext_ltg.json +5 -5
  255. data/lib/openstudio-standards/standards/deer/deer_2070/comstock_deer_2070/data/comstock_deer_2070.ext_ltg.json +5 -5
  256. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ext_ltg.json +5 -5
  257. data/lib/openstudio-standards/standards/deer/deer_2075/comstock_deer_2075/data/comstock_deer_2075.ext_ltg.json +5 -5
  258. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ext_ltg.json +5 -5
  259. data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/data/comstock_deer_pre_1975.ext_ltg.json +5 -5
  260. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ext_ltg.json +5 -5
  261. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +10 -1
  262. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/unitary_acs.json +20 -20
  263. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +379 -27
  264. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +1 -4
  265. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +0 -1
  266. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +1 -1
  267. data/lib/openstudio-standards/standards/necb/NECB2011/data/unitary_acs.json +20 -20
  268. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +34 -22
  269. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +76 -23
  270. data/lib/openstudio-standards/standards/necb/NECB2011/necb_shw_calculation.xlsx +0 -0
  271. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -5
  272. data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +6 -2
  273. data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +26 -24
  274. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -1
  275. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +38 -32
  276. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +215 -18
  277. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +190 -15
  278. data/lib/openstudio-standards/standards/necb/common/national_carbon_price_sched_feb_2025.json +60 -0
  279. data/lib/openstudio-standards/standards/necb/common/utility_pricing_2025-02-20.csv +92 -0
  280. data/lib/openstudio-standards/utilities/ruleset_check.rb +204 -0
  281. data/lib/openstudio-standards/version.rb +1 -1
  282. data/lib/openstudio-standards/weather/information.rb +1 -1
  283. data/lib/openstudio-standards.rb +32 -12
  284. metadata +78 -80
  285. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.refrigeration.rb +0 -13
  286. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.refrigeration.rb +0 -13
  287. data/lib/openstudio-standards/prototypes/cbes/cbes.refrigeration.rb +0 -13
  288. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +0 -432
  289. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +0 -11
  290. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ext_ltg.json +0 -169
  291. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ref_cases.json +0 -1456
  292. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ref_lnup.json +0 -562
  293. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.spc_typ.json +0 -20804
  294. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +0 -11
  295. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ext_ltg.json +0 -169
  296. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ref_cases.json +0 -1456
  297. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ref_lnup.json +0 -562
  298. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ext_ltg.json +0 -169
  299. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ref_cases.json +0 -1456
  300. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ref_lnup.json +0 -562
  301. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ext_ltg.json +0 -169
  302. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ref_cases.json +0 -1456
  303. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ref_lnup.json +0 -562
  304. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ext_ltg.json +0 -169
  305. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ref_cases.json +0 -763
  306. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ref_lnup.json +0 -562
  307. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ext_ltg.json +0 -169
  308. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ref_cases.json +0 -763
  309. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ref_lnup.json +0 -562
  310. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ext_ltg.json +0 -169
  311. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ref_cases.json +0 -1456
  312. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ref_lnup.json +0 -562
  313. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ext_ltg.json +0 -169
  314. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ref_cases.json +0 -1456
  315. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ref_lnup.json +0 -562
  316. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_economizers.json +0 -213
  317. data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +0 -11
  318. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +0 -11
  319. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +0 -11
  320. data/lib/openstudio-standards/standards/deer/deer.Space.rb +0 -20
  321. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_cases.json +0 -1456
  322. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_lnup.json +0 -562
  323. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_cases.json +0 -1456
  324. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_lnup.json +0 -562
  325. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_cases.json +0 -1456
  326. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_lnup.json +0 -562
  327. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_cases.json +0 -1456
  328. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_lnup.json +0 -562
  329. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_cases.json +0 -1456
  330. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_lnup.json +0 -562
  331. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_cases.json +0 -1456
  332. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_lnup.json +0 -562
  333. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_cases.json +0 -1456
  334. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_lnup.json +0 -562
  335. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_cases.json +0 -1456
  336. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_lnup.json +0 -562
  337. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_cases.json +0 -1456
  338. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_lnup.json +0 -562
  339. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_cases.json +0 -1456
  340. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_lnup.json +0 -562
  341. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_cases.json +0 -1456
  342. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_lnup.json +0 -562
  343. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_cases.json +0 -1456
  344. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_lnup.json +0 -562
  345. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_cases.json +0 -1456
  346. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_lnup.json +0 -562
  347. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_cases.json +0 -1456
  348. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_lnup.json +0 -562
  349. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_cases.json +0 -1456
  350. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_lnup.json +0 -562
  351. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_cases.json +0 -1456
  352. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_lnup.json +0 -562
  353. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_cases.json +0 -1456
  354. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_lnup.json +0 -562
  355. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_cases.json +0 -1456
  356. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_lnup.json +0 -562
  357. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_cases.json +0 -1456
  358. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_lnup.json +0 -562
  359. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_cases.json +0 -1456
  360. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_lnup.json +0 -562
  361. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_cases.json +0 -1456
  362. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_lnup.json +0 -562
@@ -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.