openstudio-standards 0.7.1 → 0.8.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAE90120162019LargeHotel.json +58 -13
  3. data/data/geometry/ASHRAELargeHotel.json +58 -13
  4. data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
  5. data/data/standards/export_OpenStudio_libraries.rb +2 -2
  6. data/data/standards/manage_OpenStudio_Standards.rb +6 -6
  7. data/data/standards/openstudio_standards_duplicates_log.csv +7961 -1
  8. data/data/standards/test_performance_expected_dd_results.csv +2016 -2004
  9. data/lib/openstudio-standards/btap/fileio.rb +171 -5
  10. data/lib/openstudio-standards/constructions/create.rb +38 -4
  11. data/lib/openstudio-standards/constructions/modify.rb +10 -3
  12. data/lib/openstudio-standards/create_typical/create_typical.rb +42 -28
  13. data/lib/openstudio-standards/create_typical/space_type_information.rb +160 -0
  14. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +22 -21
  15. data/lib/openstudio-standards/exterior_lighting/create.rb +454 -0
  16. data/lib/openstudio-standards/exterior_lighting/data/entryways.csv +52 -0
  17. data/lib/openstudio-standards/exterior_lighting/data/parking.csv +54 -0
  18. data/lib/openstudio-standards/exterior_lighting/data/typical_exterior_lighting.json +37 -0
  19. data/lib/openstudio-standards/exterior_lighting/information.rb +202 -0
  20. data/lib/openstudio-standards/geometry/information.rb +49 -2
  21. data/lib/openstudio-standards/hvac/components/create.rb +169 -0
  22. data/lib/openstudio-standards/hvac/components/modify.rb +42 -0
  23. data/lib/openstudio-standards/hvac/exhaust/create_exhaust_fan.rb +108 -0
  24. data/lib/openstudio-standards/hvac/exhaust/data/convert_data.rb +86 -0
  25. data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.csv +18 -0
  26. data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.json +89 -0
  27. data/lib/openstudio-standards/infiltration/nist_infiltration.rb +25 -13
  28. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +0 -64
  29. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +0 -25
  30. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +0 -25
  31. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +1 -11
  32. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +5 -1
  33. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +1 -1
  34. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -7
  35. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +36 -18
  36. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +1 -1
  37. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +121 -239
  38. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +179 -151
  39. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +0 -466
  40. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +18 -2
  41. data/lib/openstudio-standards/refrigeration/create_case.rb +125 -0
  42. data/lib/openstudio-standards/refrigeration/create_compressor.rb +78 -0
  43. data/lib/openstudio-standards/refrigeration/create_compressor_rack.rb +48 -0
  44. data/lib/openstudio-standards/refrigeration/create_refrigeration_system.rb +74 -0
  45. data/lib/openstudio-standards/refrigeration/create_typical_refrigeration.rb +161 -0
  46. data/lib/openstudio-standards/refrigeration/create_walkin.rb +116 -0
  47. data/lib/openstudio-standards/refrigeration/data/refrigerated_cases.csv +31 -0
  48. data/lib/openstudio-standards/refrigeration/data/refrigerated_walkins.csv +76 -0
  49. data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +13 -0
  50. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_cases.csv +17 -0
  51. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_walkins.csv +53 -0
  52. data/lib/openstudio-standards/refrigeration/information.rb +130 -0
  53. data/lib/openstudio-standards/schedules/parametric.rb +1 -1
  54. data/lib/openstudio-standards/service_water_heating/create_typical.rb +299 -0
  55. data/lib/openstudio-standards/service_water_heating/create_water_heating_loop.rb +16 -14
  56. data/lib/openstudio-standards/service_water_heating/data/convert_data.rb +119 -0
  57. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.csv +54 -0
  58. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.json +810 -0
  59. data/lib/openstudio-standards/service_water_heating/information.rb +69 -0
  60. data/lib/openstudio-standards/sql_file/fenestration.rb +1 -1
  61. data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +154 -0
  62. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +35 -12
  63. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +110 -61
  64. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +128 -29
  65. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +103 -38
  66. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  67. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +106 -5
  68. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +8 -8
  69. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +44 -17
  70. data/lib/openstudio-standards/standards/Standards.Fan.rb +32 -21
  71. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +45 -18
  72. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +14 -9
  73. data/lib/openstudio-standards/standards/Standards.Model.rb +294 -76
  74. data/lib/openstudio-standards/standards/Standards.Motor.rb +66 -0
  75. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -1
  76. data/lib/openstudio-standards/standards/Standards.Pump.rb +34 -20
  77. data/lib/openstudio-standards/standards/Standards.ServiceWaterHeating.rb +0 -353
  78. data/lib/openstudio-standards/standards/Standards.Space.rb +3 -107
  79. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +2 -57
  80. data/lib/openstudio-standards/standards/Standards.Surface.rb +11 -3
  81. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +1 -120
  82. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.computer_room_acs.json +142 -0
  83. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +1006 -596
  84. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.energy_recovery.json +724 -0
  85. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +1258 -163
  86. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +1070 -140
  87. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +33 -3374
  88. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +1400 -340
  89. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.vrfs.json +769 -0
  90. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +2 -5338
  91. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.computer_room_acs.json +142 -0
  92. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +1006 -596
  93. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.energy_recovery.json +724 -0
  94. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +1258 -163
  95. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +1070 -140
  96. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +15 -3343
  97. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +1840 -372
  98. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.vrfs.json +769 -0
  99. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +20 -10
  100. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +0 -9
  101. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +0 -5382
  102. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.computer_room_acs.json +142 -0
  103. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +1006 -628
  104. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +718 -712
  105. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +1438 -163
  106. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +2552 -182
  107. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +14 -3368
  108. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +2348 -352
  109. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.vrfs.json +769 -0
  110. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +47 -61
  111. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +6 -0
  112. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Motor.rb +11 -0
  113. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +0 -9
  114. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +2 -5522
  115. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.computer_room_acs.json +142 -0
  116. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +1006 -628
  117. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +1358 -1346
  118. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +1438 -163
  119. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +1359 -189
  120. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +19 -3451
  121. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +2176 -616
  122. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.vrfs.json +616 -0
  123. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +47 -61
  124. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +9 -0
  125. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Motor.rb +11 -0
  126. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +0 -9
  127. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +8 -6055
  128. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.computer_room_acs.json +142 -0
  129. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.economizers.json +1006 -628
  130. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +1188 -1424
  131. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ext_ltg.json +1498 -163
  132. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.motors.json +1769 -189
  133. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +15 -3422
  134. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +1807 -408
  135. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.vrfs.json +1024 -0
  136. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +70 -87
  137. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +9 -0
  138. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Motor.rb +11 -0
  139. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +0 -9
  140. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +8 -6080
  141. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.computer_room_acs.json +142 -0
  142. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.economizers.json +1006 -628
  143. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +2806 -3296
  144. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ext_ltg.json +1558 -163
  145. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.motors.json +1759 -189
  146. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +16 -3448
  147. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +2758 -422
  148. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.vrfs.json +684 -0
  149. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +14 -3318
  150. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +2 -4786
  151. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.chillers.json +1 -1
  152. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +953 -207
  153. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.energy_recovery.json +724 -0
  154. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.ext_ltg.json +5 -5
  155. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +11 -2858
  156. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirConditionerVariableRefrigerantFlow.rb +13 -0
  157. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +0 -18
  158. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +1 -4739
  159. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.chillers.json +0 -51
  160. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +953 -207
  161. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.energy_recovery.json +724 -0
  162. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.ext_ltg.json +5 -5
  163. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +9 -2830
  164. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirConditionerVariableRefrigerantFlow.rb +13 -0
  165. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +0 -18
  166. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.economizers.json +1006 -564
  167. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.energy_recovery.json +1264 -0
  168. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.ext_ltg.json +5 -5
  169. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +0 -1079
  170. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +132 -288
  171. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.HeatExchangerSensLat.rb +44 -20
  172. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +11 -0
  173. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +0 -8
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.economizers.json +1006 -564
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.energy_recovery.json +1264 -0
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ext_ltg.json +5 -5
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +0 -1079
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +137 -288
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +44 -20
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +11 -0
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +0 -9
  182. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +12 -10
  183. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +8 -6
  184. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +8 -6
  185. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +9 -3
  186. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +6 -40
  187. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +30 -337
  188. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +4 -5
  189. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -2
  190. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +56 -3
  191. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +80 -0
  192. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +0 -10
  193. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +35 -0
  194. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.economizers.json +550 -0
  195. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.energy_recovery.json +724 -0
  196. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.ext_ltg.json +1216 -0
  197. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps.json +5 -5
  198. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +225 -245
  199. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.unitary_acs.json +174 -78
  200. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.water_heaters.json +354 -317
  201. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +19 -3
  202. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac.json +185 -0
  203. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac_doas.json +127 -0
  204. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_building.json +121 -0
  205. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_design_specification_outdoor_air.json +49 -0
  206. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_electric_equipment.json +113 -0
  207. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_exterior_lights.json +120 -0
  208. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_space.json +388 -0
  209. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_spacetype.json +367 -0
  210. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_thermal_zone.json +56 -0
  211. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_connections.json +37 -0
  212. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment.json +69 -0
  213. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment_definition.json +37 -0
  214. data/lib/openstudio-standards/standards/cbes/cbes_pre_1978/data/cbes_pre_1978.ext_ltg.json +5 -5
  215. data/lib/openstudio-standards/standards/cbes/cbes_t24_1978/data/cbes_t24_1978.ext_ltg.json +5 -5
  216. data/lib/openstudio-standards/standards/cbes/cbes_t24_1992/data/cbes_t24_1992.ext_ltg.json +5 -5
  217. data/lib/openstudio-standards/standards/cbes/cbes_t24_2001/data/cbes_t24_2001.ext_ltg.json +5 -5
  218. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/data/cbes_t24_2005.ext_ltg.json +5 -5
  219. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/data/cbes_t24_2008.ext_ltg.json +5 -5
  220. data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/data/comstock_deer_1985.ext_ltg.json +5 -5
  221. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ext_ltg.json +5 -5
  222. data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/data/comstock_deer_1996.ext_ltg.json +5 -5
  223. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ext_ltg.json +5 -5
  224. data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/data/comstock_deer_2003.ext_ltg.json +5 -5
  225. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ext_ltg.json +5 -5
  226. data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/data/comstock_deer_2007.ext_ltg.json +5 -5
  227. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ext_ltg.json +5 -5
  228. data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/data/comstock_deer_2011.ext_ltg.json +5 -5
  229. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ext_ltg.json +5 -5
  230. data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/data/comstock_deer_2014.ext_ltg.json +5 -5
  231. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ext_ltg.json +5 -5
  232. data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/data/comstock_deer_2015.ext_ltg.json +5 -5
  233. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ext_ltg.json +5 -5
  234. data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/data/comstock_deer_2017.ext_ltg.json +5 -5
  235. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ext_ltg.json +5 -5
  236. data/lib/openstudio-standards/standards/deer/deer_2020/comstock_deer_2020/data/comstock_deer_2020.ext_ltg.json +5 -5
  237. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ext_ltg.json +5 -5
  238. data/lib/openstudio-standards/standards/deer/deer_2025/comstock_deer_2025/data/comstock_deer_2025.ext_ltg.json +5 -5
  239. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ext_ltg.json +5 -5
  240. data/lib/openstudio-standards/standards/deer/deer_2030/comstock_deer_2030/data/comstock_deer_2030.ext_ltg.json +5 -5
  241. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ext_ltg.json +5 -5
  242. data/lib/openstudio-standards/standards/deer/deer_2035/comstock_deer_2035/data/comstock_deer_2035.ext_ltg.json +5 -5
  243. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ext_ltg.json +5 -5
  244. data/lib/openstudio-standards/standards/deer/deer_2040/comstock_deer_2040/data/comstock_deer_2040.ext_ltg.json +5 -5
  245. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ext_ltg.json +5 -5
  246. data/lib/openstudio-standards/standards/deer/deer_2045/comstock_deer_2045/data/comstock_deer_2045.ext_ltg.json +5 -5
  247. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ext_ltg.json +5 -5
  248. data/lib/openstudio-standards/standards/deer/deer_2050/comstock_deer_2050/data/comstock_deer_2050.ext_ltg.json +5 -5
  249. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ext_ltg.json +5 -5
  250. data/lib/openstudio-standards/standards/deer/deer_2055/comstock_deer_2055/data/comstock_deer_2055.ext_ltg.json +5 -5
  251. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ext_ltg.json +5 -5
  252. data/lib/openstudio-standards/standards/deer/deer_2060/comstock_deer_2060/data/comstock_deer_2060.ext_ltg.json +5 -5
  253. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ext_ltg.json +5 -5
  254. data/lib/openstudio-standards/standards/deer/deer_2065/comstock_deer_2065/data/comstock_deer_2065.ext_ltg.json +5 -5
  255. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ext_ltg.json +5 -5
  256. data/lib/openstudio-standards/standards/deer/deer_2070/comstock_deer_2070/data/comstock_deer_2070.ext_ltg.json +5 -5
  257. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ext_ltg.json +5 -5
  258. data/lib/openstudio-standards/standards/deer/deer_2075/comstock_deer_2075/data/comstock_deer_2075.ext_ltg.json +5 -5
  259. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ext_ltg.json +5 -5
  260. data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/data/comstock_deer_pre_1975.ext_ltg.json +5 -5
  261. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ext_ltg.json +5 -5
  262. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +10 -1
  263. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/unitary_acs.json +20 -20
  264. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +379 -27
  265. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +1 -4
  266. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +0 -1
  267. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +1 -1
  268. data/lib/openstudio-standards/standards/necb/NECB2011/data/unitary_acs.json +20 -20
  269. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +34 -22
  270. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +76 -23
  271. data/lib/openstudio-standards/standards/necb/NECB2011/necb_shw_calculation.xlsx +0 -0
  272. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -5
  273. data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +6 -2
  274. data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +26 -24
  275. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -1
  276. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +38 -32
  277. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +215 -18
  278. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +190 -15
  279. data/lib/openstudio-standards/standards/necb/common/national_carbon_price_sched_feb_2025.json +60 -0
  280. data/lib/openstudio-standards/standards/necb/common/utility_pricing_2025-02-20.csv +92 -0
  281. data/lib/openstudio-standards/utilities/ruleset_check.rb +204 -0
  282. data/lib/openstudio-standards/version.rb +1 -1
  283. data/lib/openstudio-standards/weather/information.rb +1 -1
  284. data/lib/openstudio-standards.rb +32 -12
  285. metadata +78 -80
  286. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.refrigeration.rb +0 -13
  287. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.refrigeration.rb +0 -13
  288. data/lib/openstudio-standards/prototypes/cbes/cbes.refrigeration.rb +0 -13
  289. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +0 -432
  290. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +0 -11
  291. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ext_ltg.json +0 -169
  292. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ref_cases.json +0 -1456
  293. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ref_lnup.json +0 -562
  294. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.spc_typ.json +0 -20804
  295. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +0 -11
  296. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ext_ltg.json +0 -169
  297. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ref_cases.json +0 -1456
  298. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ref_lnup.json +0 -562
  299. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ext_ltg.json +0 -169
  300. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ref_cases.json +0 -1456
  301. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ref_lnup.json +0 -562
  302. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ext_ltg.json +0 -169
  303. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ref_cases.json +0 -1456
  304. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ref_lnup.json +0 -562
  305. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ext_ltg.json +0 -169
  306. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ref_cases.json +0 -763
  307. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ref_lnup.json +0 -562
  308. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ext_ltg.json +0 -169
  309. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ref_cases.json +0 -763
  310. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ref_lnup.json +0 -562
  311. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ext_ltg.json +0 -169
  312. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ref_cases.json +0 -1456
  313. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ref_lnup.json +0 -562
  314. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ext_ltg.json +0 -169
  315. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ref_cases.json +0 -1456
  316. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ref_lnup.json +0 -562
  317. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_economizers.json +0 -213
  318. data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +0 -11
  319. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +0 -11
  320. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +0 -11
  321. data/lib/openstudio-standards/standards/deer/deer.Space.rb +0 -20
  322. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_cases.json +0 -1456
  323. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_lnup.json +0 -562
  324. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_cases.json +0 -1456
  325. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_lnup.json +0 -562
  326. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_cases.json +0 -1456
  327. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_lnup.json +0 -562
  328. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_cases.json +0 -1456
  329. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_lnup.json +0 -562
  330. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_cases.json +0 -1456
  331. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_lnup.json +0 -562
  332. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_cases.json +0 -1456
  333. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_lnup.json +0 -562
  334. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_cases.json +0 -1456
  335. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_lnup.json +0 -562
  336. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_cases.json +0 -1456
  337. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_lnup.json +0 -562
  338. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_cases.json +0 -1456
  339. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_lnup.json +0 -562
  340. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_cases.json +0 -1456
  341. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_lnup.json +0 -562
  342. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_cases.json +0 -1456
  343. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_lnup.json +0 -562
  344. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_cases.json +0 -1456
  345. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_lnup.json +0 -562
  346. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_cases.json +0 -1456
  347. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_lnup.json +0 -562
  348. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_cases.json +0 -1456
  349. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_lnup.json +0 -562
  350. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_cases.json +0 -1456
  351. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_lnup.json +0 -562
  352. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_cases.json +0 -1456
  353. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_lnup.json +0 -562
  354. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_cases.json +0 -1456
  355. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_lnup.json +0 -562
  356. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_cases.json +0 -1456
  357. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_lnup.json +0 -562
  358. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_cases.json +0 -1456
  359. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_lnup.json +0 -562
  360. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_cases.json +0 -1456
  361. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_lnup.json +0 -562
  362. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_cases.json +0 -1456
  363. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_lnup.json +0 -562
@@ -1,13 +0,0 @@
1
- class DOERef1980to2004 < ASHRAE901
2
- # @!group refrigeration
3
-
4
- # Determine the latent case credit curve to use for walkins.
5
- # @todo Should probably use the model_add_refrigeration_walkin and lookups from the spreadsheet instead of hard-coded values.
6
- #
7
- # @param model [OpenStudio::Model::Model] OpenStudio model object
8
- # @return [String] curve name
9
- def model_walkin_freezer_latent_case_credit_curve(model)
10
- latent_case_credit_curve_name = 'Single Shelf Horizontal Latent Energy Multiplier_Pre2004'
11
- return latent_case_credit_curve_name
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- class DOERefPre1980 < ASHRAE901
2
- # @!group refrigeration
3
-
4
- # Determine the latent case credit curve to use for walkins.
5
- # @todo Should probably use the model_add_refrigeration_walkin and lookups from the spreadsheet instead of hard-coded values.
6
- #
7
- # @param model [OpenStudio::Model::Model] OpenStudio model object
8
- # @return [String] curve name
9
- def model_walkin_freezer_latent_case_credit_curve(model)
10
- latent_case_credit_curve_name = 'Single Shelf Horizontal Latent Energy Multiplier_Pre2004'
11
- return latent_case_credit_curve_name
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- class CBES < Standard
2
- # @!group refrigeration
3
-
4
- # Determine the latent case credit curve to use for walkins.
5
- # @todo Should probably use the model_add_refrigeration_walkin and lookups from the spreadsheet instead of hard-coded values.
6
- #
7
- # @param model [OpenStudio::Model::Model] OpenStudio model object
8
- # @return [String] curve name
9
- def model_walkin_freezer_latent_case_credit_curve(model)
10
- latent_case_credit_curve_name = 'Single Shelf Horizontal Latent Energy Multiplier_Pre2004'
11
- return latent_case_credit_curve_name
12
- end
13
- end
@@ -1,432 +0,0 @@
1
- class Standard
2
- # Add exterior lighting to the model
3
- #
4
- # @param model [OpenStudio::Model::Model] OpenStudio model object
5
- # @param exterior_lighting_zone_number [Integer] exterior lighting zone number, 0-4
6
- # @param onsite_parking_fraction [Double] onsite parking fraction, 0-1
7
- # @param add_base_site_allowance [Boolean] whether to include the base site allowance
8
- # @param use_model_for_entries_and_canopies [Boolean] use building geometry for number of entries and canopy size
9
- # @return [Hash] a hash of OpenStudio::Model::ExteriorLights objects
10
- # @todo would be nice to add argument for some building types (SmallHotel, MidriseApartment, PrimarySchool, SecondarySchool, RetailStripmall) if it has interior or exterior circulation.
11
- def model_add_typical_exterior_lights(model, exterior_lighting_zone_number, onsite_parking_fraction = 1.0, add_base_site_allowance = false, use_model_for_entries_and_canopies = false)
12
- exterior_lights = {}
13
- installed_power = 0.0
14
-
15
- # populate search hash
16
- search_criteria = {
17
- 'template' => template,
18
- 'exterior_lighting_zone_number' => exterior_lighting_zone_number
19
- }
20
-
21
- # load exterior_lighting_properties
22
- exterior_lighting_properties = standards_lookup_table_first(table_name: 'exterior_lighting', search_criteria: search_criteria)
23
-
24
- # make sure lighting properties were found
25
- if exterior_lighting_properties.nil?
26
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.prototype.exterior_lights', "Exterior lighting properties not found for #{template}, ext lighting zone #{exterior_lighting_zone_number}, none will be added to model.")
27
- return exterior_lights
28
- end
29
-
30
- # get building types and ratio (needed to get correct schedules, parking area, entries, canopies, and drive throughs)
31
- space_type_hash = model_create_space_type_hash(model)
32
-
33
- # get model specific values to map to exterior_lighting_properties
34
- area_length_count_hash = model_create_exterior_lighting_area_length_count_hash(model, space_type_hash, use_model_for_entries_and_canopies)
35
-
36
- # using midnight to 6am setback or shutdown
37
- start_setback_shutoff = { hr: 24, min: 0 }
38
- end_setback_shutoff = { hr: 6, min: 0 }
39
- shuttoff = false
40
- setback = false
41
- if exterior_lighting_properties['building_facade_and_landscape_automatic_shut_off'] == 1
42
- ext_lights_sch_facade_and_landscape = OpenStudio::Model::ScheduleRuleset.new(model)
43
- default_day = ext_lights_sch_facade_and_landscape.defaultDaySchedule
44
- default_day.addValue(OpenStudio::Time.new(0, end_setback_shutoff[:hr], end_setback_shutoff[:min], 0), 0.0)
45
- default_day.addValue(OpenStudio::Time.new(0, start_setback_shutoff[:hr], start_setback_shutoff[:min], 0), 1.0)
46
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Facade and Landscape exterior lights shut off from #{start_setback_shutoff} to #{end_setback_shutoff}")
47
- else
48
- ext_lights_sch_facade_and_landscape = model.alwaysOnDiscreteSchedule
49
- end
50
- if !exterior_lighting_properties['occupancy_setback_reduction'].nil? && (exterior_lighting_properties['occupancy_setback_reduction'] > 0.0)
51
- ext_lights_sch_other = OpenStudio::Model::ScheduleRuleset.new(model)
52
- setback_value = 1.0 - exterior_lighting_properties['occupancy_setback_reduction']
53
- default_day = ext_lights_sch_other.defaultDaySchedule
54
- default_day.addValue(OpenStudio::Time.new(0, end_setback_shutoff[:hr], end_setback_shutoff[:min], 0), setback_value)
55
- default_day.addValue(OpenStudio::Time.new(0, start_setback_shutoff[:hr], start_setback_shutoff[:min], 0), 1.0)
56
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Non Facade and Landscape lights reduce by #{exterior_lighting_properties['occupancy_setback_reduction'] * 100} % from #{start_setback_shutoff} to #{end_setback_shutoff}")
57
- else
58
- ext_lights_sch_other = model.alwaysOnDiscreteSchedule
59
- end
60
-
61
- # add exterior lights for parking area
62
- if !area_length_count_hash[:parking_area_and_drives_area].nil? && area_length_count_hash[:parking_area_and_drives_area] > 0
63
-
64
- # lighting values
65
- multiplier = area_length_count_hash[:parking_area_and_drives_area] * onsite_parking_fraction
66
- power = exterior_lighting_properties['parking_areas_and_drives']
67
- name_prefix = 'Parking Areas and Drives'
68
-
69
- # create ext light def
70
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power.round(2)} W/ft^2 of lighting for #{multiplier} ft^2 of parking area.")
71
- ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
72
- ext_lights_def.setName("#{name_prefix} Def (W/ft^2)")
73
- ext_lights_def.setDesignLevel(power)
74
-
75
- # create ext light inst
76
- # creating exterior lights object
77
- ext_lights = OpenStudio::Model::ExteriorLights.new(ext_lights_def, ext_lights_sch_other)
78
- ext_lights.setMultiplier(multiplier)
79
- ext_lights.setName(name_prefix)
80
- ext_lights.setControlOption(exterior_lighting_properties['control_option'])
81
- ext_lights.setEndUseSubcategory(name_prefix)
82
- exterior_lights[name_prefix] = ext_lights
83
-
84
- # update installed power
85
- installed_power += power * multiplier
86
- end
87
-
88
- # add exterior lights for facades
89
- if !area_length_count_hash[:building_facades].nil? && area_length_count_hash[:building_facades] > 0
90
-
91
- # lighting values
92
- multiplier = area_length_count_hash[:building_facades]
93
- power = exterior_lighting_properties['building_facades']
94
- name_prefix = 'Building Facades'
95
-
96
- # create ext light def
97
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power.round(2)} W/ft^2 of lighting for #{multiplier} ft^2 of building facade area.")
98
- ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
99
- ext_lights_def.setName("#{name_prefix} Def (W/ft^2)")
100
- ext_lights_def.setDesignLevel(power)
101
-
102
- # create ext light inst
103
- # creating exterior lights object
104
- ext_lights = OpenStudio::Model::ExteriorLights.new(ext_lights_def, ext_lights_sch_facade_and_landscape)
105
- ext_lights.setMultiplier(multiplier)
106
- ext_lights.setName(name_prefix)
107
- ext_lights.setControlOption(exterior_lighting_properties['control_option'])
108
- ext_lights.setEndUseSubcategory(name_prefix)
109
- exterior_lights[name_prefix] = ext_lights
110
-
111
- # update installed power
112
- installed_power += power * multiplier
113
- end
114
-
115
- # add exterior lights for main entries
116
- if !area_length_count_hash[:main_entries].nil? && area_length_count_hash[:main_entries] > 0
117
-
118
- # lighting values
119
- multiplier = area_length_count_hash[:main_entries]
120
- power = exterior_lighting_properties['main_entries']
121
- name_prefix = 'Main Entries'
122
-
123
- # create ext light def
124
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power.round(2)} W/ft of lighting for #{multiplier} ft of main entry length.")
125
- ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
126
- ext_lights_def.setName("#{name_prefix} Def (W/ft)")
127
- ext_lights_def.setDesignLevel(power)
128
-
129
- # create ext light inst
130
- # creating exterior lights object
131
- ext_lights = OpenStudio::Model::ExteriorLights.new(ext_lights_def, ext_lights_sch_other)
132
- ext_lights.setMultiplier(multiplier)
133
- ext_lights.setName(name_prefix)
134
- ext_lights.setControlOption(exterior_lighting_properties['control_option'])
135
- ext_lights.setEndUseSubcategory(name_prefix)
136
- exterior_lights[name_prefix] = ext_lights
137
-
138
- # update installed power
139
- installed_power += power * multiplier
140
- end
141
-
142
- # add exterior lights for other doors
143
- if !area_length_count_hash[:other_doors].nil? && area_length_count_hash[:other_doors] > 0
144
-
145
- # lighting values
146
- multiplier = area_length_count_hash[:other_doors]
147
- power = exterior_lighting_properties['other_doors']
148
- name_prefix = 'Other Doors'
149
-
150
- # create ext light def
151
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power.round(2)} W/ft of lighting for #{multiplier} ft of other doors.")
152
- ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
153
- ext_lights_def.setName("#{name_prefix} Def (W/ft)")
154
- ext_lights_def.setDesignLevel(power)
155
-
156
- # create ext light inst
157
- # creating exterior lights object
158
- ext_lights = OpenStudio::Model::ExteriorLights.new(ext_lights_def, ext_lights_sch_other)
159
- ext_lights.setMultiplier(multiplier)
160
- ext_lights.setName(name_prefix)
161
- ext_lights.setControlOption(exterior_lighting_properties['control_option'])
162
- ext_lights.setEndUseSubcategory(name_prefix)
163
- exterior_lights[name_prefix] = ext_lights
164
-
165
- # update installed power
166
- installed_power += power * multiplier
167
- end
168
-
169
- # add exterior lights for entry canopies
170
- if !area_length_count_hash[:canopy_entry_area].nil? && area_length_count_hash[:canopy_entry_area] > 0
171
-
172
- # lighting values
173
- multiplier = area_length_count_hash[:canopy_entry_area]
174
- power = exterior_lighting_properties['entry_canopies']
175
- name_prefix = 'Entry Canopies'
176
-
177
- # create ext light def
178
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power} W/ft^2 of lighting for #{multiplier} ft^2 of building entry canopies.")
179
- ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
180
- ext_lights_def.setName("#{name_prefix} Def (W/ft^2)")
181
- ext_lights_def.setDesignLevel(power)
182
-
183
- # create ext light inst
184
- # creating exterior lights object
185
- ext_lights = OpenStudio::Model::ExteriorLights.new(ext_lights_def, ext_lights_sch_other)
186
- ext_lights.setMultiplier(multiplier)
187
- ext_lights.setName(name_prefix)
188
- ext_lights.setControlOption(exterior_lighting_properties['control_option'])
189
- ext_lights.setEndUseSubcategory(name_prefix)
190
- exterior_lights[name_prefix] = ext_lights
191
-
192
- # update installed power
193
- installed_power += power * multiplier
194
- end
195
-
196
- # add exterior lights for emergency canopies
197
- if !area_length_count_hash[:canopy_emergency_area].nil? && area_length_count_hash[:canopy_emergency_area] > 0
198
-
199
- # lighting values
200
- multiplier = area_length_count_hash[:canopy_emergency_area]
201
- power = exterior_lighting_properties['loading_areas_for_emergency_vehicles']
202
- name_prefix = 'Emergency Canopies'
203
-
204
- # create ext light def
205
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power} W/ft^2 of lighting for #{multiplier} ft^2 of building emergency canopies.")
206
- ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
207
- ext_lights_def.setName("#{name_prefix} Def (W/ft^2)")
208
- ext_lights_def.setDesignLevel(power)
209
-
210
- # create ext light inst
211
- # creating exterior lights object
212
- ext_lights = OpenStudio::Model::ExteriorLights.new(ext_lights_def, ext_lights_sch_other)
213
- ext_lights.setMultiplier(multiplier)
214
- ext_lights.setName(name_prefix)
215
- ext_lights.setControlOption(exterior_lighting_properties['control_option'])
216
- ext_lights.setEndUseSubcategory(name_prefix)
217
- exterior_lights[name_prefix] = ext_lights
218
-
219
- # update installed power
220
- installed_power += power * multiplier
221
- end
222
-
223
- # add exterior lights for drive through windows
224
- if !area_length_count_hash[:drive_through_windows].nil? && area_length_count_hash[:drive_through_windows] > 0
225
-
226
- # lighting values
227
- multiplier = area_length_count_hash[:drive_through_windows]
228
- power = exterior_lighting_properties['drive_through_windows_and_doors']
229
- name_prefix = 'Drive Through Windows'
230
-
231
- # create ext light def
232
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power} W/drive through window of lighting for #{multiplier} drive through windows.")
233
- ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
234
- ext_lights_def.setName("#{name_prefix} Def (W/ft^2)")
235
- ext_lights_def.setDesignLevel(power)
236
-
237
- # create ext light inst
238
- # creating exterior lights object
239
- ext_lights = OpenStudio::Model::ExteriorLights.new(ext_lights_def, ext_lights_sch_other)
240
- ext_lights.setMultiplier(multiplier)
241
- ext_lights.setName(name_prefix)
242
- ext_lights.setControlOption(exterior_lighting_properties['control_option'])
243
- ext_lights.setEndUseSubcategory(name_prefix)
244
- exterior_lights[name_prefix] = ext_lights
245
-
246
- # update installed power
247
- installed_power += power * multiplier
248
- end
249
-
250
- # @todo - add_base_site_lighting_allowance (non landscaping tradable lighting)
251
- # add exterior lights for drive through windows
252
- if add_base_site_allowance
253
-
254
- # lighting values
255
- if !exterior_lighting_properties['base_site_allowance_power'].nil?
256
- power = exterior_lighting_properties['base_site_allowance_power']
257
- elsif !exterior_lighting_properties['base_site_allowance_fraction'].nil?
258
- power = exterior_lighting_properties['base_site_allowance_fraction'] * installed_power # shold be of allowed vs. installed, but hard to calculate
259
- else
260
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', 'Cannot determine target base site allowance power, will set to 0 W.')
261
- power = 0.0
262
- end
263
- name_prefix = 'Base Site Allowance'
264
-
265
- # create ext light def
266
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power} W of non landscape tradable exterior lighting. Will follow occupancy setback reduction.")
267
- ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
268
- ext_lights_def.setName("#{name_prefix} Def (W)")
269
- ext_lights_def.setDesignLevel(power)
270
-
271
- # create ext light inst
272
- # creating exterior lights object
273
- ext_lights = OpenStudio::Model::ExteriorLights.new(ext_lights_def, ext_lights_sch_other)
274
- ext_lights.setName(name_prefix)
275
- ext_lights.setControlOption(exterior_lighting_properties['control_option'])
276
- ext_lights.setEndUseSubcategory(name_prefix)
277
- exterior_lights[name_prefix] = ext_lights
278
-
279
- # don't need to update installed power for this
280
- end
281
-
282
- return exterior_lights
283
- end
284
-
285
- # get exterior lighting areas, distances, and counts
286
- #
287
- # @param model [OpenStudio::Model::Model] OpenStudio model object
288
- # @param space_type_hash [Hash] hash of space types
289
- # @param use_model_for_entries_and_canopies [Boolean] use building geometry for number of entries and canopy size
290
- # @return [Hhash] hash of exterior lighting value types and building type and model specific values
291
- # @todo add code in to determine number of entries and canopy area from model geoemtry
292
- # @todo come up with better logic for entry widths
293
- def model_create_exterior_lighting_area_length_count_hash(model, space_type_hash, use_model_for_entries_and_canopies)
294
- # populate building_type_hashes from space_type_hash
295
- building_type_hashes = {}
296
- space_type_hash.each do |space_type, hash|
297
- # if space type standards building type already exists,
298
- # add data to that standards building type in building_type_hashes
299
- if building_type_hashes.key?(hash[:stds_bldg_type])
300
- building_type_hashes[hash[:stds_bldg_type]][:effective_num_spaces] += hash[:effective_num_spaces]
301
- building_type_hashes[hash[:stds_bldg_type]][:floor_area] += hash[:floor_area]
302
- building_type_hashes[hash[:stds_bldg_type]][:num_people] += hash[:num_people]
303
- building_type_hashes[hash[:stds_bldg_type]][:num_students] += hash[:num_students]
304
- building_type_hashes[hash[:stds_bldg_type]][:num_units] += hash[:num_units]
305
- building_type_hashes[hash[:stds_bldg_type]][:num_beds] += hash[:num_beds]
306
- else
307
- # initialize hash for this building type
308
- building_type_hash = {}
309
- building_type_hash[:effective_num_spaces] = hash[:effective_num_spaces]
310
- building_type_hash[:floor_area] = hash[:floor_area]
311
- building_type_hash[:num_people] = hash[:num_people]
312
- building_type_hash[:num_students] = hash[:num_students]
313
- building_type_hash[:num_units] = hash[:num_units]
314
- building_type_hash[:num_beds] = hash[:num_beds]
315
- building_type_hashes[hash[:stds_bldg_type]] = building_type_hash
316
- end
317
- end
318
-
319
- # rename Office to SmallOffice, MediumOffice or LargeOffice depending on size
320
- if building_type_hashes.key?('Office')
321
- office_type = model_remap_office(model, building_type_hashes['Office'][:floor_area])
322
- building_type_hashes[office_type] = building_type_hashes.delete('Office')
323
- end
324
-
325
- # initialize parking areas and drives area variables
326
- parking_area_and_drives_area = 0.0
327
- main_entries = 0.0
328
- other_doors = 0.0
329
- drive_through_windows = 0.0
330
- canopy_entry_area = 0.0
331
- canopy_emergency_area = 0.0
332
-
333
- # calculate exterior lighting properties for each building type
334
- building_type_hashes.each do |building_type, hash|
335
- # calculate floor area and ground floor area in IP units
336
- floor_area_ip = OpenStudio.convert(hash[:floor_area], 'm^2', 'ft^2').get
337
- effective_num_stories = model_effective_num_stories(model)
338
- ground_floor_area_ip = floor_area_ip / effective_num_stories[:above_grade]
339
-
340
- # load illuminated parking area properties for standards building type
341
- search_criteria = { 'building_type' => building_type }
342
- illuminated_parking_area_lookup = standards_lookup_table_first(table_name: 'parking', search_criteria: search_criteria)
343
- if illuminated_parking_area_lookup.nil?
344
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.prototype.exterior_lights', "Could not find parking data for #{building_type}.")
345
- return {} # empty hash
346
- end
347
-
348
- # calculate number of parking spots
349
- num_spots = 0.0
350
- if !illuminated_parking_area_lookup['building_area_per_spot'].nil?
351
- num_spots += floor_area_ip / illuminated_parking_area_lookup['building_area_per_spot'].to_f
352
- elsif !illuminated_parking_area_lookup['units_per_spot'].nil?
353
- num_spots += hash[:num_units] / illuminated_parking_area_lookup['units_per_spot'].to_f
354
- elsif !illuminated_parking_area_lookup['students_per_spot'].nil?
355
- num_spots += hash[:num_students] / illuminated_parking_area_lookup['students_per_spot'].to_f
356
- elsif !illuminated_parking_area_lookup['beds_per_spot'].nil?
357
- num_spots += hash[:num_beds] / illuminated_parking_area_lookup['beds_per_spot'].to_f
358
- else
359
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Unexpected key, can't calculate number of parking spots from #{illuminated_parking_area_lookup.keys.first}.")
360
- end
361
- # add to cumulative parking area
362
- parking_area_and_drives_area += num_spots * illuminated_parking_area_lookup['parking_area_per_spot']
363
-
364
- # load entryways data for standards building type
365
- search_criteria = { 'building_type' => building_type }
366
- exterior_lighting_assumptions_lookup = standards_lookup_table_first(table_name: 'entryways', search_criteria: search_criteria)
367
-
368
- if exterior_lighting_assumptions_lookup.nil?
369
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.prototype.exterior_lights', "Could not find entryway data for #{building_type}.")
370
- return {} # empty hash
371
- end
372
-
373
- # calculate door, window, and canopy length properties for exterior lighting
374
- if use_model_for_entries_and_canopies
375
- # @todo get number of entries and canopy size from model geometry
376
- else
377
-
378
- # main entries
379
- main_entries = (ground_floor_area_ip / 10_000.0) * exterior_lighting_assumptions_lookup['entrance_doors_per_10,000']
380
-
381
- # other doors
382
- other_doors += (ground_floor_area_ip / 10_000.0) * exterior_lighting_assumptions_lookup['others_doors_per_10,000']
383
-
384
- # drive through windows
385
- unless exterior_lighting_assumptions_lookup['floor_area_per_drive_through_window'].nil?
386
- drive_through_windows += ground_floor_area_ip / exterior_lighting_assumptions_lookup['floor_area_per_drive_through_window'].to_f
387
- end
388
-
389
- # rollup doors are currently excluded
390
-
391
- # entrance canopies
392
- if !exterior_lighting_assumptions_lookup['entrance_canopies'].nil? && !exterior_lighting_assumptions_lookup['canopy_size'].nil?
393
- canopy_entry_area = exterior_lighting_assumptions_lookup['entrance_canopies'] * exterior_lighting_assumptions_lookup['canopy_size']
394
- end
395
-
396
- # emergency canopies
397
- if !exterior_lighting_assumptions_lookup['emergency_canopies'].nil? && !exterior_lighting_assumptions_lookup['canopy_size'].nil?
398
- canopy_emergency_area = exterior_lighting_assumptions_lookup['emergency_canopies'] * exterior_lighting_assumptions_lookup['canopy_size']
399
- end
400
- end
401
- end
402
-
403
- # no source for width of different entry types
404
- main_entry_width_ip = 8 # ft
405
- other_doors_width_ip = 4 # ft
406
-
407
- # ensure the building has at least 1 main entry
408
- main_entries = 1.0 if main_entries > 0 && main_entries < 1
409
-
410
- # populate hash
411
- area_length_count_hash = {}
412
- area_length_count_hash[:parking_area_and_drives_area] = parking_area_and_drives_area
413
- area_length_count_hash[:main_entries] = main_entries * main_entry_width_ip
414
- area_length_count_hash[:other_doors] = other_doors * other_doors_width_ip
415
- area_length_count_hash[:drive_through_windows] = drive_through_windows
416
- area_length_count_hash[:canopy_entry_area] = canopy_entry_area
417
- area_length_count_hash[:canopy_emergency_area] = canopy_emergency_area
418
-
419
- # determine effective number of stories to find first above grade story exterior wall area
420
- effective_num_stories = model_effective_num_stories(model)
421
- ground_story = effective_num_stories[:story_hash].keys[effective_num_stories[:below_grade]]
422
- ground_story_ext_wall_area_si = effective_num_stories[:story_hash][ground_story][:ext_wall_area]
423
- ground_story_ext_wall_area_ip = OpenStudio.convert(ground_story_ext_wall_area_si, 'm^2', 'ft^2').get
424
-
425
- # building_facades
426
- # reference buildings uses first story and plenum area all around
427
- # prototype uses Table 4.19 by building type lit facade vs. total facade
428
- area_length_count_hash[:building_facades] = ground_story_ext_wall_area_ip
429
-
430
- return area_length_count_hash
431
- end
432
- end
@@ -1,11 +0,0 @@
1
- class ASHRAE9012004 < ASHRAE901
2
- # @!group Space
3
-
4
- # Baseline infiltration rate
5
- #
6
- # @return [Double] the baseline infiltration rate, in cfm/ft^2 exterior above grade wall area at 75 Pa
7
- def space_infiltration_rate_75_pa(space = nil)
8
- basic_infil_rate_cfm_per_ft2 = 1.8
9
- return basic_infil_rate_cfm_per_ft2
10
- end
11
- end
@@ -1,169 +0,0 @@
1
- {
2
- "exterior_lighting": [
3
- {
4
- "exterior_lighting_zone_number": 0.0,
5
- "exterior_lighting_zone_name": "Undeveloped Areas Parks",
6
- "template": "ComStock 90.1-2004",
7
- "control_option": "AstronomicalClock",
8
- "building_facade_and_landscape_automatic_shut_off": 1,
9
- "occupancy_setback_reduction": 0.0,
10
- "base_site_allowance_power": null,
11
- "base_site_allowance_fraction": 0.05,
12
- "parking_areas_and_drives": 0.15,
13
- "walkways_less_than_10ft_wide": 1.0,
14
- "walkways_10ft_wide_or_greater": 0.2,
15
- "stairways": 1.0,
16
- "pedestrian_tunnels": null,
17
- "landscaping": null,
18
- "main_entries": 30.0,
19
- "other_doors": 20.0,
20
- "entry_canopies": 1.25,
21
- "loading_docks": null,
22
- "sales_canopies": null,
23
- "outdoor_sales_open_areas": 0.5,
24
- "outdoor_sales_street_frontage_for_vehicle_sales": 20.0,
25
- "building_facades": 0.2,
26
- "building_facades_alt_perim": 5.0,
27
- "automated_teller_machines_per_location": 270.0,
28
- "automated_teller_machines_per_machine": 90.0,
29
- "entries_and_gates": 1.25,
30
- "loading_areas_for_emergency_vehicles": 0.5,
31
- "drive_through_windows_and_doors": 400.0,
32
- "parking_near_24_hour_entrances": 800.0,
33
- "roadway_parking": null,
34
- "notes": null
35
- },
36
- {
37
- "exterior_lighting_zone_number": 1.0,
38
- "exterior_lighting_zone_name": "Developed Areas Parks",
39
- "template": "ComStock 90.1-2004",
40
- "control_option": "AstronomicalClock",
41
- "building_facade_and_landscape_automatic_shut_off": 1,
42
- "occupancy_setback_reduction": 0.0,
43
- "base_site_allowance_power": null,
44
- "base_site_allowance_fraction": 0.05,
45
- "parking_areas_and_drives": 0.15,
46
- "walkways_less_than_10ft_wide": 1.0,
47
- "walkways_10ft_wide_or_greater": 0.2,
48
- "stairways": 1.0,
49
- "pedestrian_tunnels": null,
50
- "landscaping": null,
51
- "main_entries": 30.0,
52
- "other_doors": 20.0,
53
- "entry_canopies": 1.25,
54
- "loading_docks": null,
55
- "sales_canopies": null,
56
- "outdoor_sales_open_areas": 0.5,
57
- "outdoor_sales_street_frontage_for_vehicle_sales": 20.0,
58
- "building_facades": 0.2,
59
- "building_facades_alt_perim": 5.0,
60
- "automated_teller_machines_per_location": 270.0,
61
- "automated_teller_machines_per_machine": 90.0,
62
- "entries_and_gates": 1.25,
63
- "loading_areas_for_emergency_vehicles": 0.5,
64
- "drive_through_windows_and_doors": 400.0,
65
- "parking_near_24_hour_entrances": 800.0,
66
- "roadway_parking": null,
67
- "notes": null
68
- },
69
- {
70
- "exterior_lighting_zone_number": 2.0,
71
- "exterior_lighting_zone_name": "Neighborhood",
72
- "template": "ComStock 90.1-2004",
73
- "control_option": "AstronomicalClock",
74
- "building_facade_and_landscape_automatic_shut_off": 1,
75
- "occupancy_setback_reduction": 0.0,
76
- "base_site_allowance_power": null,
77
- "base_site_allowance_fraction": 0.05,
78
- "parking_areas_and_drives": 0.15,
79
- "walkways_less_than_10ft_wide": 1.0,
80
- "walkways_10ft_wide_or_greater": 0.2,
81
- "stairways": 1.0,
82
- "pedestrian_tunnels": null,
83
- "landscaping": null,
84
- "main_entries": 30.0,
85
- "other_doors": 20.0,
86
- "entry_canopies": 1.25,
87
- "loading_docks": null,
88
- "sales_canopies": null,
89
- "outdoor_sales_open_areas": 0.5,
90
- "outdoor_sales_street_frontage_for_vehicle_sales": 20.0,
91
- "building_facades": 0.2,
92
- "building_facades_alt_perim": 5.0,
93
- "automated_teller_machines_per_location": 270.0,
94
- "automated_teller_machines_per_machine": 90.0,
95
- "entries_and_gates": 1.25,
96
- "loading_areas_for_emergency_vehicles": 0.5,
97
- "drive_through_windows_and_doors": 400.0,
98
- "parking_near_24_hour_entrances": 800.0,
99
- "roadway_parking": null,
100
- "notes": null
101
- },
102
- {
103
- "exterior_lighting_zone_number": 3.0,
104
- "exterior_lighting_zone_name": "All Other Areas",
105
- "template": "ComStock 90.1-2004",
106
- "control_option": "AstronomicalClock",
107
- "building_facade_and_landscape_automatic_shut_off": 1,
108
- "occupancy_setback_reduction": 0.0,
109
- "base_site_allowance_power": null,
110
- "base_site_allowance_fraction": 0.05,
111
- "parking_areas_and_drives": 0.041457711,
112
- "walkways_less_than_10ft_wide": 1.0,
113
- "walkways_10ft_wide_or_greater": 0.2,
114
- "stairways": 1.0,
115
- "pedestrian_tunnels": null,
116
- "landscaping": null,
117
- "main_entries": 30.0,
118
- "other_doors": 20.0,
119
- "entry_canopies": 1.25,
120
- "loading_docks": null,
121
- "sales_canopies": null,
122
- "outdoor_sales_open_areas": 0.5,
123
- "outdoor_sales_street_frontage_for_vehicle_sales": 20.0,
124
- "building_facades": 0.2,
125
- "building_facades_alt_perim": 5.0,
126
- "automated_teller_machines_per_location": 270.0,
127
- "automated_teller_machines_per_machine": 90.0,
128
- "entries_and_gates": 1.25,
129
- "loading_areas_for_emergency_vehicles": 0.5,
130
- "drive_through_windows_and_doors": 400.0,
131
- "parking_near_24_hour_entrances": 800.0,
132
- "roadway_parking": null,
133
- "notes": "Parking Areas and Drives lpd updated based on values derived from 2015 U.S. Lighting Market Characterization report."
134
- },
135
- {
136
- "exterior_lighting_zone_number": 4.0,
137
- "exterior_lighting_zone_name": "High Activity",
138
- "template": "ComStock 90.1-2004",
139
- "control_option": "AstronomicalClock",
140
- "building_facade_and_landscape_automatic_shut_off": 1,
141
- "occupancy_setback_reduction": 0.0,
142
- "base_site_allowance_power": null,
143
- "base_site_allowance_fraction": 0.05,
144
- "parking_areas_and_drives": 0.15,
145
- "walkways_less_than_10ft_wide": 1.0,
146
- "walkways_10ft_wide_or_greater": 0.2,
147
- "stairways": 1.0,
148
- "pedestrian_tunnels": null,
149
- "landscaping": null,
150
- "main_entries": 30.0,
151
- "other_doors": 20.0,
152
- "entry_canopies": 1.25,
153
- "loading_docks": null,
154
- "sales_canopies": null,
155
- "outdoor_sales_open_areas": 0.5,
156
- "outdoor_sales_street_frontage_for_vehicle_sales": 20.0,
157
- "building_facades": 0.2,
158
- "building_facades_alt_perim": 0.0,
159
- "automated_teller_machines_per_location": 270.0,
160
- "automated_teller_machines_per_machine": 90.0,
161
- "entries_and_gates": 1.25,
162
- "loading_areas_for_emergency_vehicles": 0.5,
163
- "drive_through_windows_and_doors": 400.0,
164
- "parking_near_24_hour_entrances": 800.0,
165
- "roadway_parking": null,
166
- "notes": null
167
- }
168
- ]
169
- }