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
@@ -285,20 +285,19 @@ module OpenstudioStandards
285
285
  hash['Toilet'] = { ratio: 0.0193, space_type_gen: true, default: false }
286
286
  hash['Undeveloped'] = { ratio: 0.0835, space_type_gen: false, default: false }
287
287
  hash['Xray'] = { ratio: 0.0220, space_type_gen: true, default: false }
288
- when 'SuperMarket'
289
- # @todo populate ratios for SuperMarket
290
- hash['Bakery'] = { ratio: 0.99, space_type_gen: true, default: false }
291
- hash['Deli'] = { ratio: 0.99, space_type_gen: true, default: false }
292
- hash['DryStorage'] = { ratio: 0.99, space_type_gen: true, default: false }
293
- hash['Office'] = { ratio: 0.99, space_type_gen: true, default: false }
294
- hash['Produce'] = { ratio: 0.99, space_type_gen: true, default: true }
295
- hash['Sales'] = { ratio: 0.99, space_type_gen: true, default: true }
296
- hash['Corridor'] = { ratio: 0.99, space_type_gen: true, default: true }
297
- hash['Dining'] = { ratio: 0.99, space_type_gen: true, default: true }
298
- hash['Elec/MechRoom'] = { ratio: 0.99, space_type_gen: true, default: true }
299
- hash['Meeting'] = { ratio: 0.99, space_type_gen: true, default: true }
300
- hash['Restroom'] = { ratio: 0.99, space_type_gen: true, default: true }
301
- hash['Vestibule'] = { ratio: 0.99, space_type_gen: true, default: true }
288
+ when 'SuperMarket', 'GroceryStore'
289
+ hash['Bakery'] = { ratio: 0.05, space_type_gen: true, default: false }
290
+ hash['Deli'] = { ratio: 0.0537, space_type_gen: true, default: false }
291
+ hash['DryStorage'] = { ratio: 0.1010, space_type_gen: true, default: false }
292
+ hash['Office'] = { ratio: 0.0067, space_type_gen: true, default: false }
293
+ hash['Produce'] = { ratio: 0.1701, space_type_gen: true, default: true }
294
+ hash['Sales'] = { ratio: 0.5495, space_type_gen: true, default: true }
295
+ hash['Corridor'] = { ratio: 0.0118, space_type_gen: true, default: true }
296
+ hash['Dining'] = { ratio: 0.0111, space_type_gen: true, default: true }
297
+ hash['Elec/MechRoom'] = { ratio: 0.0133, space_type_gen: true, default: true }
298
+ hash['Meeting'] = { ratio: 0.0111, space_type_gen: true, default: true }
299
+ hash['Restroom'] = { ratio: 0.0150, space_type_gen: true, default: true }
300
+ hash['Vestibule'] = { ratio: 0.0067, space_type_gen: true, default: true }
302
301
  when 'Laboratory'
303
302
  hash['Office'] = { ratio: 0.50, space_type_gen: true, default: true }
304
303
  hash['Open lab'] = { ratio: 0.35, space_type_gen: true, default: true }
@@ -384,11 +383,9 @@ module OpenstudioStandards
384
383
  hash['FacMaint'] = { ratio: 0.08, space_type_gen: true, default: false }
385
384
  hash['DormitoryRoom'] = { ratio: 0.1699, space_type_gen: true, default: false }
386
385
  when 'Gro'
387
- hash['GrocSales'] = { ratio: 0.8002, space_type_gen: true, default: true }
388
- hash['RefWalkInCool'] = { ratio: 0.0312, space_type_gen: true, default: false }
389
- hash['OfficeGeneral'] = { ratio: 0.07, space_type_gen: true, default: false }
390
- hash['RefFoodPrep'] = { ratio: 0.0253, space_type_gen: true, default: false }
391
- hash['RefWalkInFreeze'] = { ratio: 0.0162, space_type_gen: true, default: false }
386
+ hash['GrocSales'] = { ratio: 0.800, space_type_gen: true, default: true }
387
+ hash['OfficeGeneral'] = { ratio: 0.070, space_type_gen: true, default: false }
388
+ hash['RefFoodPrep'] = { ratio: 0.073, space_type_gen: true, default: false }
392
389
  hash['IndLoadDock'] = { ratio: 0.057, space_type_gen: true, default: false }
393
390
  when 'Hsp'
394
391
  hash['HspSurgOutptLab'] = { ratio: 0.2317, space_type_gen: true, default: false }
@@ -0,0 +1,454 @@
1
+ module OpenstudioStandards
2
+ # The Exterior Lighting module provides methods create, modify, and get information about model exterior lighting
3
+ module ExteriorLighting
4
+ # @!group Create
5
+
6
+ # create an ExtertiorLights object from inputs
7
+ #
8
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
9
+ # @param name [String] the name of the exterior lights
10
+ # @param power [Double] the watts value, can be watts or watts per area or length
11
+ # @param units [String] units for the power, either 'W', 'W/ft' or 'W/ft^2'
12
+ # @param multiplier [Double] the multiplier for the lighting, representing ft or ft^2
13
+ # @param schedule [OpenStudio::Model::Schedule] OpenStudio Schedule object. If nil, will default to always on.
14
+ # @param control_option [String] Options are 'ScheduleNameOnly' and 'AstronomicalClock'.
15
+ # 'ScheduleNameOnly' will follow the schedule. 'AstronomicalClock' will follow the schedule, but turn off lights when the sun is up.
16
+ # @return [OpenStudio::Model::ExteriorLights] OpenStudio ExteriorLights object
17
+ def self.model_create_exterior_lights(model,
18
+ name: nil,
19
+ power: 1.0,
20
+ units: 'W',
21
+ multiplier: 1.0,
22
+ schedule: nil,
23
+ control_option: 'AstronomicalClock')
24
+ # default name
25
+ if name.nil?
26
+ name = "Exterior Lights #{power.round(2)} #{units}"
27
+ else
28
+ end_use_category = name
29
+ name = "#{name} #{power.round(2)} #{units}"
30
+ end
31
+
32
+ # warn if incorrect control option
33
+ unless OpenStudio::Model::ExteriorLights::validControlOptionValues.include? control_option
34
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ExteriorLighting', "Invalid control option #{control_option}. Use either ScheduleNameOnly' or 'AstronomicalClock'. Defaulting to 'AstronomicalClock'.")
35
+ control_option = 'AstronomicalClock'
36
+ end
37
+
38
+ # default schedule
39
+ schedule = model.alwaysOnDiscreteSchedule if schedule.nil?
40
+
41
+ # create exterior light definition
42
+ exterior_lights_definition = OpenStudio::Model::ExteriorLightsDefinition.new(model)
43
+ exterior_lights_definition.setName("#{name} Def (#{units})")
44
+ exterior_lights_definition.setDesignLevel(power)
45
+
46
+ # creating exterior lights object
47
+ exterior_lights = OpenStudio::Model::ExteriorLights.new(exterior_lights_definition, schedule)
48
+ exterior_lights.setMultiplier(multiplier)
49
+ exterior_lights.setName(name)
50
+ exterior_lights.setControlOption(control_option)
51
+ exterior_lights.setEndUseSubcategory(end_use_category)
52
+
53
+ return exterior_lights
54
+ end
55
+
56
+ # Create typical exterior lighting in a model
57
+ #
58
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
59
+ # @param standard [Standard] standard object to use for lighting properties. If set, will override lighting_generation.
60
+ # @param lighting_generation [String] lighting generation to use for lighting properties. Currently defaulted to a mix of Metal Halide, High Pressure Sodium, and LEDs.
61
+ # @param lighting_zone [Integer] exterior lighting zone number, 0-4
62
+ # @param onsite_parking_fraction [Double] onsite parking fraction, 0-1
63
+ # @param add_base_site_allowance [Boolean] whether to include the base site allowance
64
+ # @param use_model_for_entries_and_canopies [Boolean] use building geometry for number of entries and canopy size
65
+ # @param control_option [String] Options are 'ScheduleNameOnly' and 'AstronomicalClock'.
66
+ # 'ScheduleNameOnly' will follow the schedule. 'AstronomicalClock' will follow the schedule, but turn off lights when the sun is up.
67
+ # @return [Array<OpenStudio::Model::ExteriorLights>] Array of OpenStudio ExteriorLights object
68
+ def self.model_create_typical_exterior_lighting(model,
69
+ standard: nil,
70
+ lighting_generation: 'default',
71
+ lighting_zone: 3,
72
+ onsite_parking_fraction: 1.0,
73
+ add_base_site_allowance: false,
74
+ use_model_for_entries_and_canopies: false,
75
+ control_option: 'AstronomicalClock')
76
+ exterior_lights = []
77
+ installed_power = 0.0
78
+ # get the exterior lighting properties from standard or the lighting_generation
79
+ if standard.nil?
80
+ exterior_lighting_properties = OpenstudioStandards::ExteriorLighting.model_get_exterior_lighting_properties(lighting_generation: lighting_generation)
81
+ lookup_key = lighting_generation
82
+ else
83
+ lookup_key = standard.template
84
+ if ['90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013', '90.1-2016', '90.1-2019 PRM'].include?(lookup_key)
85
+ exterior_lighting_properties = {}
86
+ else
87
+ search_criteria = {
88
+ 'lighting_zone' => lighting_zone
89
+ }
90
+ exterior_lighting_properties = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
91
+ end
92
+ end
93
+
94
+ # make sure lighting properties were found
95
+ if exterior_lighting_properties.nil?
96
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ExteriorLighting', "Exterior lighting properties not found for #{lookup_key}, ext lighting zone #{lighting_zone}, none will be added to model.")
97
+ return exterior_lights
98
+ end
99
+
100
+ # get model specific areas to for exterior lighting
101
+ area_length_count_hash = OpenstudioStandards::ExteriorLighting.model_get_exterior_lighting_sizes(model)
102
+
103
+ # create schedules for exterior lighting objects using midnight to 6am setback or shutdown
104
+ start_setback_shutoff = { hr: 24, min: 0 }
105
+ end_setback_shutoff = { hr: 6, min: 0 }
106
+ shuttoff = false
107
+ setback = false
108
+
109
+ if exterior_lighting_properties.has_key?('building_facade_and_landscape_automatic_shut_off')
110
+ if exterior_lighting_properties['building_facade_and_landscape_automatic_shut_off'] == 1
111
+ facade_automatic_shut_off = true
112
+ else
113
+ facade_automatic_shut_off = false
114
+ end
115
+ else
116
+ search_criteria = {
117
+ 'template' => lookup_key,
118
+ 'lighting_zone' => lighting_zone,
119
+ 'allowance_type' => 'building facades'
120
+ }
121
+ exterior_lighting_building_facade_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
122
+ if exterior_lighting_building_facade_req['daylight_off_control'] == 'REQ'
123
+ facade_automatic_shut_off = true
124
+ else
125
+ facade_automatic_shut_off = false
126
+ end
127
+ end
128
+
129
+ if facade_automatic_shut_off
130
+ ext_lights_sch_facade_and_landscape = OpenStudio::Model::ScheduleRuleset.new(model)
131
+ default_day = ext_lights_sch_facade_and_landscape.defaultDaySchedule
132
+ default_day.addValue(OpenStudio::Time.new(0, end_setback_shutoff[:hr], end_setback_shutoff[:min], 0), 0.0)
133
+ default_day.addValue(OpenStudio::Time.new(0, start_setback_shutoff[:hr], start_setback_shutoff[:min], 0), 1.0)
134
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Facade and Landscape exterior lights shut off from #{start_setback_shutoff} to #{end_setback_shutoff}")
135
+ else
136
+ ext_lights_sch_facade_and_landscape = model.alwaysOnDiscreteSchedule
137
+ end
138
+
139
+
140
+ occupancy_setback_reduction = 0.0
141
+ if exterior_lighting_properties.has_key?('occupancy_setback_reduction')
142
+ if !exterior_lighting_properties['occupancy_setback_reduction'].nil? && (exterior_lighting_properties['occupancy_setback_reduction'] > 0.0)
143
+ occupancy_setback_reduction = exterior_lighting_properties['occupancy_setback_reduction']
144
+ end
145
+ else
146
+ unless ['90.1-2004', '90.1-2007', 'DOE Ref Pre-1980', 'DOE Ref 1980-2004', 'DEER 1985', 'DEER 1996', 'DEER 2003', 'DEER 2007', 'DEER Pre-1975'].include?(lookup_key)
147
+ occupancy_setback_reduction = 0.3
148
+ end
149
+ end
150
+
151
+ if occupancy_setback_reduction > 0
152
+ ext_lights_sch_other = OpenStudio::Model::ScheduleRuleset.new(model)
153
+ setback_value = 1.0 - occupancy_setback_reduction
154
+ default_day = ext_lights_sch_other.defaultDaySchedule
155
+ default_day.addValue(OpenStudio::Time.new(0, end_setback_shutoff[:hr], end_setback_shutoff[:min], 0), setback_value)
156
+ default_day.addValue(OpenStudio::Time.new(0, start_setback_shutoff[:hr], start_setback_shutoff[:min], 0), 1.0)
157
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Non Facade and Landscape lights reduce by #{occupancy_setback_reduction * 100} % from #{start_setback_shutoff} to #{end_setback_shutoff}")
158
+ else
159
+ ext_lights_sch_other = model.alwaysOnDiscreteSchedule
160
+ end
161
+
162
+ # add exterior lights for parking area
163
+ if !area_length_count_hash[:parking_area_and_drives_area].nil? && area_length_count_hash[:parking_area_and_drives_area] > 0
164
+ # lighting values
165
+ multiplier = area_length_count_hash[:parking_area_and_drives_area] * onsite_parking_fraction
166
+
167
+ # get power
168
+ if exterior_lighting_properties.has_key?('parking_areas_and_drives')
169
+ power = exterior_lighting_properties['parking_areas_and_drives']
170
+ else
171
+ search_criteria = {
172
+ 'template' => lookup_key,
173
+ 'lighting_zone' => lighting_zone,
174
+ 'allowance_type' => 'parking lots and drives'
175
+ }
176
+ exterior_lighting_parking_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
177
+ power = exterior_lighting_parking_req['allowance']
178
+ end
179
+
180
+ # create exterior lights
181
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Added #{power.round(2)} W/ft^2 of lighting for #{multiplier} ft^2 of parking area.")
182
+ ext_lights = OpenstudioStandards::ExteriorLighting.model_create_exterior_lights(model,
183
+ name: 'Parking Areas and Drives',
184
+ power: power,
185
+ units: 'W/ft^2',
186
+ multiplier: multiplier,
187
+ schedule: ext_lights_sch_other,
188
+ control_option: control_option)
189
+ exterior_lights << ext_lights
190
+ installed_power += power * multiplier
191
+ end
192
+
193
+ # add exterior lights for facades
194
+ if !area_length_count_hash[:building_facades].nil? && area_length_count_hash[:building_facades] > 0
195
+ # lighting values
196
+ multiplier = area_length_count_hash[:building_facades]
197
+
198
+ # get power
199
+ if exterior_lighting_properties.has_key?('building_facades')
200
+ power = exterior_lighting_properties['building_facades']
201
+ else
202
+ search_criteria = {
203
+ 'template' => lookup_key,
204
+ 'lighting_zone' => lighting_zone,
205
+ 'allowance_type' => 'building facades',
206
+ 'allowance_unit' => 'W/ft2'
207
+ }
208
+ exterior_lighting_facade_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
209
+ power = exterior_lighting_facade_req['allowance']
210
+ end
211
+
212
+ # create exterior lights
213
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Added #{power.round(2)} W/ft^2 of lighting for #{multiplier} ft^2 of building facade area.")
214
+ ext_lights = OpenstudioStandards::ExteriorLighting.model_create_exterior_lights(model,
215
+ name: 'Building Facades',
216
+ power: power,
217
+ units: 'W/ft^2',
218
+ multiplier: multiplier,
219
+ schedule: ext_lights_sch_facade_and_landscape,
220
+ control_option: control_option)
221
+ exterior_lights << ext_lights
222
+ installed_power += power * multiplier
223
+ end
224
+
225
+ # add exterior lights for main entries
226
+ if !area_length_count_hash[:main_entries].nil? && area_length_count_hash[:main_entries] > 0
227
+ # lighting values
228
+ multiplier = area_length_count_hash[:main_entries]
229
+
230
+ # get power
231
+ if exterior_lighting_properties.has_key?('main_entries')
232
+ power = exterior_lighting_properties['main_entries']
233
+ else
234
+ search_criteria = {
235
+ 'template' => lookup_key,
236
+ 'lighting_zone' => lighting_zone,
237
+ 'allowance_type' => 'main entries'
238
+ }
239
+ exterior_lighting_entries_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
240
+ # change of reference for 90.1-2019 and onwards
241
+ if exterior_lighting_entries_req.nil?
242
+ search_criteria = {
243
+ 'template' => lookup_key,
244
+ 'lighting_zone' => lighting_zone,
245
+ 'allowance_type' => 'pedestrian and vehicular entrances and exists'
246
+ }
247
+ exterior_lighting_entries_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
248
+ end
249
+ power = exterior_lighting_entries_req['allowance']
250
+ end
251
+
252
+ # create exterior lights
253
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Added #{power.round(2)} W/ft of lighting for #{multiplier} ft of main entry length.")
254
+ ext_lights = OpenstudioStandards::ExteriorLighting.model_create_exterior_lights(model,
255
+ name: 'Main Entries',
256
+ power: power,
257
+ units: 'W/ft',
258
+ multiplier: multiplier,
259
+ schedule: ext_lights_sch_other,
260
+ control_option: control_option)
261
+ exterior_lights << ext_lights
262
+ installed_power += power * multiplier
263
+ end
264
+
265
+ # add exterior lights for other doors
266
+ if !area_length_count_hash[:other_doors].nil? && area_length_count_hash[:other_doors] > 0
267
+ # lighting values
268
+ multiplier = area_length_count_hash[:other_doors]
269
+
270
+ # get power
271
+ if exterior_lighting_properties.has_key?('other_doors')
272
+ power = exterior_lighting_properties['other_doors']
273
+ else
274
+ search_criteria = {
275
+ 'template' => lookup_key,
276
+ 'lighting_zone' => lighting_zone,
277
+ 'allowance_type' => 'other doors'
278
+ }
279
+ exterior_lighting_doors_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
280
+ # change of reference for 90.1-2019 and onwards
281
+ if exterior_lighting_doors_req.nil?
282
+ search_criteria = {
283
+ 'template' => lookup_key,
284
+ 'lighting_zone' => lighting_zone,
285
+ 'allowance_type' => 'pedestrian and vehicular entrances and exists'
286
+ }
287
+ exterior_lighting_doors_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
288
+ end
289
+ power = exterior_lighting_doors_req['allowance']
290
+ end
291
+
292
+ # create exterior lights
293
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Added #{power.round(2)} W/ft of lighting for #{multiplier} ft of other doors.")
294
+ ext_lights = OpenstudioStandards::ExteriorLighting.model_create_exterior_lights(model,
295
+ name: 'Other Doors',
296
+ power: power,
297
+ units: 'W/ft',
298
+ multiplier: multiplier,
299
+ schedule: ext_lights_sch_other,
300
+ control_option: control_option)
301
+ exterior_lights << ext_lights
302
+ installed_power += power * multiplier
303
+ end
304
+
305
+ # add exterior lights for entry canopies
306
+ if !area_length_count_hash[:canopy_entry_area].nil? && area_length_count_hash[:canopy_entry_area] > 0
307
+ # lighting values
308
+ multiplier = area_length_count_hash[:canopy_entry_area]
309
+
310
+ # get power
311
+ if exterior_lighting_properties.has_key?('entry_canopies')
312
+ power = exterior_lighting_properties['entry_canopies']
313
+ else
314
+ search_criteria = {
315
+ 'template' => lookup_key,
316
+ 'lighting_zone' => lighting_zone,
317
+ 'allowance_type' => 'canopies'
318
+ }
319
+ exterior_lighting_canopies_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
320
+ # change of reference for 90.1-2010 and onwards
321
+ if exterior_lighting_parking_req.nil?
322
+ search_criteria = {
323
+ 'template' => lookup_key,
324
+ 'lighting_zone' => lighting_zone,
325
+ 'allowance_type' => 'entry canopies'
326
+ }
327
+ exterior_lighting_canopies_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
328
+ end
329
+ power = exterior_lighting_canopies_req['allowance']
330
+ end
331
+
332
+ # create exterior lights
333
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Added #{power} W/ft^2 of lighting for #{multiplier} ft^2 of building entry canopies.")
334
+ ext_lights = OpenstudioStandards::ExteriorLighting.model_create_exterior_lights(model,
335
+ name: 'Entry Canopies',
336
+ power: power,
337
+ units: 'W/ft^2',
338
+ multiplier: multiplier,
339
+ schedule: ext_lights_sch_other,
340
+ control_option: control_option)
341
+ exterior_lights << ext_lights
342
+ installed_power += power * multiplier
343
+ end
344
+
345
+ # add exterior lights for emergency canopies
346
+ if !area_length_count_hash[:canopy_emergency_area].nil? && area_length_count_hash[:canopy_emergency_area] > 0
347
+ # lighting values
348
+ multiplier = area_length_count_hash[:canopy_emergency_area]
349
+
350
+ # get power
351
+ if exterior_lighting_properties.has_key?('loading_areas_for_emergency_vehicles')
352
+ power = exterior_lighting_properties['loading_areas_for_emergency_vehicles']
353
+ else
354
+ search_criteria = {
355
+ 'template' => lookup_key,
356
+ 'lighting_zone' => lighting_zone,
357
+ 'allowance_type' => 'loading areas for law enforcement, fire, ambulance and other emergency service vehicles (uncovered)'
358
+ }
359
+ exterior_lighting_emergency_canopies_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
360
+ power = exterior_lighting_emergency_canopies_req['allowance']
361
+ end
362
+
363
+ # create exterior lights
364
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Added #{power} W/ft^2 of lighting for #{multiplier} ft^2 of building emergency canopies.")
365
+ ext_lights = OpenstudioStandards::ExteriorLighting.model_create_exterior_lights(model,
366
+ name: 'Emergency Canopies',
367
+ power: power,
368
+ units: 'W/ft^2',
369
+ multiplier: multiplier,
370
+ schedule: ext_lights_sch_other,
371
+ control_option: control_option)
372
+ exterior_lights << ext_lights
373
+ installed_power += power * multiplier
374
+ end
375
+
376
+ # add exterior lights for drive through windows
377
+ if !area_length_count_hash[:drive_through_windows].nil? && area_length_count_hash[:drive_through_windows] > 0
378
+ # lighting values
379
+ multiplier = area_length_count_hash[:drive_through_windows]
380
+
381
+ # get power
382
+ if exterior_lighting_properties.has_key?('drive_through_windows_and_doors')
383
+ power = exterior_lighting_properties['drive_through_windows_and_doors']
384
+ else
385
+ search_criteria = {
386
+ 'template' => lookup_key,
387
+ 'lighting_zone' => lighting_zone,
388
+ 'allowance_type' => 'drive-up windows at fast food restaurant'
389
+ }
390
+ exterior_lighting_emergency_drive_through_req = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
391
+ power = exterior_lighting_emergency_drive_through_req['allowance']
392
+ end
393
+
394
+ # create exterior lights
395
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Added #{power} W/drive through window of lighting for #{multiplier} drive through windows.")
396
+ ext_lights = OpenstudioStandards::ExteriorLighting.model_create_exterior_lights(model,
397
+ name: 'Drive Through Windows',
398
+ power: power,
399
+ units: 'W/ft^2',
400
+ multiplier: multiplier,
401
+ schedule: ext_lights_sch_other,
402
+ control_option: control_option)
403
+ exterior_lights << ext_lights
404
+ installed_power += power * multiplier
405
+ end
406
+
407
+ # add base site allowance
408
+ if add_base_site_allowance
409
+ # lighting values
410
+ if exterior_lighting_properties.has_key?('base_site_allowance_power')
411
+ if !exterior_lighting_properties['base_site_allowance_power'].nil?
412
+ power = exterior_lighting_properties['base_site_allowance_power']
413
+ elsif !exterior_lighting_properties['base_site_allowance_fraction'].nil?
414
+ power = exterior_lighting_properties['base_site_allowance_fraction'] * installed_power # should be of allowed vs. installed, but hard to calculate
415
+ else
416
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', 'Cannot determine target base site allowance power, will set to 0 W.')
417
+ power = 0.0
418
+ end
419
+ else
420
+ search_criteria = {
421
+ 'template' => lookup_key,
422
+ 'lighting_zone' => lighting_zone,
423
+ 'allowance_type' => 'base site allowance'
424
+ }
425
+ exterior_lighting_base_allowance = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
426
+ power = exterior_lighting_base_allowance['allowance']
427
+
428
+ search_criteria = {
429
+ 'template' => lookup_key,
430
+ 'lighting_zone' => lighting_zone,
431
+ 'allowance_type' => 'additional unrestricted allowance'
432
+ }
433
+ exterior_lighting_add_base_allowance = standard.standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
434
+ if !exterior_lighting_add_base_allowance.nil?
435
+ power += exterior_lighting_add_base_allowance['allowance'] * installed_power / 100.0 # should be of allowed vs. installed, but hard to calculate
436
+ end
437
+ end
438
+
439
+ # create exterior lights
440
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ExteriorLighting', "Added #{power} W of non landscape tradable exterior lighting. Will follow occupancy setback reduction.")
441
+ ext_lights = OpenstudioStandards::ExteriorLighting.model_create_exterior_lights(model,
442
+ name: 'Base Site Allowance',
443
+ power: power,
444
+ units: 'W',
445
+ multiplier: 1.0,
446
+ schedule: ext_lights_sch_other,
447
+ control_option: control_option)
448
+ exterior_lights << ext_lights
449
+ end
450
+
451
+ return exterior_lights
452
+ end
453
+ end
454
+ end
@@ -0,0 +1,52 @@
1
+ building_type,rollup_doors_per_10000_ft2,entrance_doors_per_10000_ft2,other_doors_per_10000_ft2,entrance_canopies,emergency_canopies,canopy_size,floor_area_per_drive_through_window,notes
2
+ SmallOffice,0.47,2,2,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
3
+ MediumOffice,0.13,1,3,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
4
+ LargeOffice,0,1,3,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
5
+ Retail,1.84,1,2.93,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
6
+ StripMall,0.05,6,6.6,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
7
+ PrimarySchool,0.07,2,3.3,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
8
+ SecondarySchool,0.1,2,2.45,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
9
+ Outpatient,0.1,1,5.19,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
10
+ Hospital,0.03,2,3.8,,1,720,,"No source for canopy size, Table 5.41. Exterior Lighting Savings Summary for Addendum 90.1-07i doesn't indicate canopy lighting. Section 5.4.2 Exterior Lights in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock shows their use."
11
+ SmallHotel,0,2,28.91,1,,720,,"SmallHotel appears to have exterior entries for all units, No source for canopy size, Table 5.41. Exterior Lighting Savings Summary for Addendum 90.1-07i doesn't indicate canopy lighting. Section 5.4.2 Exterior Lights in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock shows their use."
12
+ LargeHotel,0,2,2.27,1,,1620,,"No source for canopy size, Table 5.41. Exterior Lighting Savings Summary for Addendum 90.1-07i doesn't indicate canopy lighting. Section 5.4.2 Exterior Lights in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock shows their use."
13
+ Warehouse,3.67,1,2,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
14
+ QuickServiceRestaurant,0,2,1,,,,2500,"No source for drive through count, Table 5.41. Exterior Lighting Savings Summary for Addendum 90.1-07i doesn't indicate drive through lighting. Section 5.4.2 Exterior Lights in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock shows their use."
15
+ FullServiceRestaurant,0,1,3,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
16
+ MidriseApartment,0,1,1.13,,,,,"Midrise not in table 4.18, using half of values from LargeHotel."
17
+ HighriseApartment,0,1,1.13,,,,,"Highrise not in table 4.18, using half of values from LargeHotel."
18
+ SuperMarket,1.84,1,2.93,,,,,"SuperMarket not in table 4.18, using values from RetailStandAlone. Consistant with SuperMarket parking area used in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock report."
19
+ Courthouse,0,1,3,,,,,match MediumOffice
20
+ College,0,2,2.45,,,,,match SecondarySchool
21
+ Laboratory,0,2,2.45,,,,,match SecondarySchool
22
+ SmallDataCenterLowITE,0,1,3,,,,,match MediumOffice
23
+ SmallDataCenterHighITE,0,1,3,,,,,match MediumOffice
24
+ LargeDataCenterLowITE,0,1,3,,,,,match MediumOffice
25
+ LargeDataCenterHighITE,0,1,3,,,,,match MediumOffice
26
+ SmallOfficeDetailed,0.47,2,2,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
27
+ MediumOfficeDetailed,0.13,1,3,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
28
+ LargeOfficeDetailed,0,1,3,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
29
+ Asm,0.1,2,2.45,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
30
+ ECC,0.1,2,2.45,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
31
+ EPr,0.07,2,3.3,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
32
+ ERC,0,1,0,,,,,Relocatable classrooms typically have 1 door based on engineering judgement
33
+ ESe,0.1,2,2.45,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
34
+ EUn,0.1,2,2.45,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
35
+ Gro,1.84,1,2.93,,,,,"SuperMarket not in table 4.18, using values from RetailStandAlone. Consistant with SuperMarket parking area used in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock report."
36
+ Hsp,0.03,0.67,3.8,,1,720,,"No source for canopy size, Table 5.41. Exterior Lighting Savings Summary for Addendum 90.1-07i doesn't indicate canopy lighting. Section 5.4.2 Exterior Lights in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock shows their use."
37
+ Htl,0,0.67,2.27,1,,1620,,"No source for canopy size, Table 5.41. Exterior Lighting Savings Summary for Addendum 90.1-07i doesn't indicate canopy lighting. Section 5.4.2 Exterior Lights in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock shows their use."
38
+ MBT,3.67,1,2,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
39
+ MFm,0,1,1.13,,,,,"Midrise not in table 4.18, using half of values from LargeHotel."
40
+ MLI,3.67,1,2,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
41
+ Mtl,0,2,28.91,,,,,"Assuming no canopy; this is different from the DOE SmallHotel prototype. The DOE SmallHotel appears to have exterior entries for all units, No source for canopy size, Table 5.41. Exterior Lighting Savings Summary for Addendum 90.1-07i doesn't indicate canopy lighting. Section 5.4.2 Exterior Lights in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock shows their use."
42
+ Nrs,0,1,1.13,,,,,"Nursing home not in table 4.18, using half of values from LargeHotel."
43
+ OfL,0,1,3,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
44
+ OfS,0.47,2,2,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
45
+ RFF,0,2,1,,,,2500,"No source for drive through count, Table 5.41. Exterior Lighting Savings Summary for Addendum 90.1-07i doesn't indicate drive through lighting. Section 5.4.2 Exterior Lights in U.S. Department of Energy Commercial Reference Building Models of the National Building Stock shows their use."
46
+ RSD,0,1,3,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
47
+ Rt3,1.84,1,2.93,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
48
+ RtL,1.84,1,2.93,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
49
+ RtS,0.05,6,6.6,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
50
+ SCn,3.67,0.2,0.2,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
51
+ SUn,3.67,0.2,0.2,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
52
+ WRf,3.67,0.2,0.2,,,,,Based on Table 4.18 Number of Doors by Door Type from Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010
@@ -0,0 +1,54 @@
1
+ building_type,building_area_per_spot,units_per_spot,students_per_spot,beds_per_spot,parking_area_per_spot
2
+ SmallOffice,250,,,,405
3
+ MediumOffice,250,,,,405
4
+ LargeOffice,620,,,,405
5
+ Retail,285.7,,,,405
6
+ StripMall,215,,,,405
7
+ PrimarySchool,,,17,,405
8
+ SecondarySchool,,,8,,405
9
+ Outpatient,200,,,,405
10
+ Hospital,,,,0.83,405
11
+ SmallHotel,,1,,,405
12
+ LargeHotel,,1,,,405
13
+ Warehouse,1000,,,,405
14
+ QuickServiceRestaurant,100,,,,405
15
+ FullServiceRestaurant,100,,,,405
16
+ MidriseApartment,,0.45,,,405
17
+ HighriseApartment,,0.45,,,405
18
+ SuperMarket,285.7,,,,405
19
+ Parking surface,,,,,405
20
+ Parking garage,,,,,486
21
+ SmallDataCenterLowITE,0,,,,405
22
+ SmallDataCenterHighITE,0,,,,405
23
+ LargeDataCenterLowITE,0,,,,405
24
+ LargeDataCenterHighITE,0,,,,405
25
+ SmallOfficeDetailed,250,,,,405
26
+ MediumOfficeDetailed,250,,,,405
27
+ LargeOfficeDetailed,620,,,,405
28
+ Courthouse,250,,,,405
29
+ College,250,,,,405
30
+ Laboratory,250,,,,405
31
+ Asm,285.7,,,,405
32
+ ECC,,,8,,405
33
+ EPr,,,17,,405
34
+ ERC,,,8,,405
35
+ ESe,,,8,,405
36
+ EUn,,,30,,405
37
+ Gro,285.7,,,,405
38
+ Hsp,,,,0.83,405
39
+ Htl,,1,,,405
40
+ MBT,1000,,,,405
41
+ MFm,,0.45,,,405
42
+ MLI,1000,,,,405
43
+ Mtl,,1,,,405
44
+ Nrs,,1,,,405
45
+ OfL,250,,,,405
46
+ OfS,250,,,,405
47
+ RFF,100,,,,405
48
+ RSD,100,,,,405
49
+ Rt3,285.7,,,,405
50
+ RtL,285.7,,,,405
51
+ RtS,285.7,,,,405
52
+ SCn,1000,,,,405
53
+ SUn,1000,,,,405
54
+ WRf,1000,,,,405