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
@@ -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
- }