openstudio-standards 0.4.0 → 0.5.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 (376) hide show
  1. checksums.yaml +4 -4
  2. data/data/inventory/thermal_bridging.csv +90 -0
  3. data/data/standards/OpenStudio_Standards-deer-comstock.xlsx +0 -0
  4. data/data/standards/manage_OpenStudio_Standards.rb +1 -1
  5. data/data/standards/test_performance_expected_dd_results.csv +2014 -1891
  6. data/lib/openstudio-standards/btap/analysis.rb +8 -8
  7. data/lib/openstudio-standards/btap/bridging.rb +664 -645
  8. data/lib/openstudio-standards/btap/btap.model.rb +14 -14
  9. data/lib/openstudio-standards/btap/btap.rb +7 -7
  10. data/lib/openstudio-standards/btap/btap_result.rb +1 -1
  11. data/lib/openstudio-standards/btap/economics.rb +23 -23
  12. data/lib/openstudio-standards/btap/envelope.rb +8 -8
  13. data/lib/openstudio-standards/btap/equest.rb +1 -1
  14. data/lib/openstudio-standards/btap/geometry.rb +2 -2
  15. data/lib/openstudio-standards/btap/mpc.rb +7 -7
  16. data/lib/openstudio-standards/btap/schedules.rb +1 -1
  17. data/lib/openstudio-standards/btap/simmanager.rb +4 -4
  18. data/lib/openstudio-standards/btap/spaceloads.rb +26 -26
  19. data/lib/openstudio-standards/btap/utilities.rb +6 -6
  20. data/lib/openstudio-standards/btap/vintagizer.rb +1 -1
  21. data/lib/openstudio-standards/constructions/information.rb +83 -0
  22. data/lib/openstudio-standards/constructions/materials/modify.rb +72 -0
  23. data/lib/openstudio-standards/constructions/modify.rb +80 -0
  24. data/lib/openstudio-standards/create_typical/create_typical.rb +983 -0
  25. data/lib/openstudio-standards/create_typical/enumerations.rb +484 -0
  26. data/lib/openstudio-standards/create_typical/space_type_blend.rb +791 -0
  27. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +494 -0
  28. data/lib/openstudio-standards/daylighting/space.rb +47 -0
  29. data/lib/openstudio-standards/geometry/create.rb +801 -0
  30. data/lib/openstudio-standards/geometry/create_bar.rb +2171 -0
  31. data/lib/openstudio-standards/geometry/information.rb +462 -0
  32. data/lib/openstudio-standards/geometry/modify.rb +48 -0
  33. data/lib/openstudio-standards/hvac/air_loop/information.rb +79 -0
  34. data/lib/openstudio-standards/hvac/cbecs_hvac.rb +616 -0
  35. data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +91 -0
  36. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
  37. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +1 -1
  38. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  39. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +1 -1
  40. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  41. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +2 -2
  42. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.hvac_systems.rb +1 -1
  43. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  44. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -36
  45. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +1 -1
  46. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  47. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -36
  48. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +3 -3
  49. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +1 -1
  50. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
  51. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.elevators.rb +1 -1
  52. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +1 -1
  53. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.CoilHeatingGas.rb +1 -1
  54. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.elevators.rb +1 -1
  55. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  56. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  57. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +7 -7
  58. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +8 -8
  59. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +14 -14
  60. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +9 -9
  61. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +16 -16
  62. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +7 -7
  63. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +8 -8
  64. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +8 -8
  65. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +11 -11
  66. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +7 -7
  67. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +9 -9
  68. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +8 -8
  69. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +11 -11
  70. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +9 -9
  71. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +19 -19
  72. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +10 -10
  73. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +13 -13
  74. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +6 -6
  75. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +6 -6
  76. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +9 -9
  77. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +8 -8
  78. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +8 -8
  79. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +8 -8
  80. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +8 -8
  81. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +11 -11
  82. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +10 -10
  83. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +19 -19
  84. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +18 -18
  85. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +6 -6
  86. data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +957 -957
  87. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +1 -1
  88. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +1 -1
  89. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +84 -16
  90. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +1 -1
  91. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +1 -1
  92. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +61 -10
  93. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +1 -1
  94. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +1 -1
  95. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +1 -1
  96. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -1
  97. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -1
  98. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +1 -1
  99. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +1 -1
  100. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +2 -2
  101. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +4 -4
  102. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +4 -4
  103. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +43 -30
  104. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +1 -1
  105. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +18 -11
  106. data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +1 -1
  107. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +774 -117
  108. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +340 -481
  109. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +3 -3
  110. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +3 -3
  111. data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +22 -22
  112. data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
  113. data/lib/openstudio-standards/qaqc/calibration.rb +131 -0
  114. data/lib/openstudio-standards/qaqc/create_results.rb +983 -0
  115. data/lib/openstudio-standards/qaqc/envelope.rb +399 -0
  116. data/lib/openstudio-standards/qaqc/eui.rb +213 -0
  117. data/lib/openstudio-standards/qaqc/hvac.rb +1943 -0
  118. data/lib/openstudio-standards/qaqc/internal_loads.rb +568 -0
  119. data/lib/openstudio-standards/qaqc/reporting.rb +141 -0
  120. data/lib/openstudio-standards/qaqc/schedules.rb +129 -0
  121. data/lib/openstudio-standards/qaqc/service_water_heating.rb +273 -0
  122. data/lib/openstudio-standards/qaqc/weather_files.rb +497 -0
  123. data/lib/openstudio-standards/qaqc/zone_conditions.rb +278 -0
  124. data/lib/openstudio-standards/schedules/create.rb +364 -0
  125. data/lib/openstudio-standards/schedules/information.rb +169 -0
  126. data/lib/openstudio-standards/schedules/modify.rb +445 -0
  127. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +110 -71
  128. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +3 -3
  129. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +4 -4
  130. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +2 -1
  131. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +16 -10
  132. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +4 -4
  133. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +1 -1
  134. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  135. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +4 -4
  136. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +1 -1
  137. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +5 -5
  138. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +1 -1
  139. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +1 -1
  140. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -1
  141. data/lib/openstudio-standards/standards/Standards.Construction.rb +17 -18
  142. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +6 -6
  143. data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +1 -1
  144. data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +1 -1
  145. data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +1 -1
  146. data/lib/openstudio-standards/standards/Standards.Fan.rb +6 -12
  147. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +2 -2
  148. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +1 -1
  149. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +1 -1
  150. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +3 -3
  151. data/lib/openstudio-standards/standards/Standards.Model.rb +411 -261
  152. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -2
  153. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +94 -29
  154. data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -2
  155. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +2 -2
  156. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +14 -14
  157. data/lib/openstudio-standards/standards/Standards.Space.rb +37 -30
  158. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +38 -29
  159. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +7 -7
  160. data/lib/openstudio-standards/standards/Standards.Surface.rb +13 -13
  161. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +109 -66
  162. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +11 -4
  163. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +6 -6
  164. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +1 -1
  165. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +1 -1
  166. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +1 -1
  167. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +1 -1
  168. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +4 -4
  169. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  170. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +4 -4
  171. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +4 -4
  172. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  173. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTowerVariableSpeed.rb +1 -1
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +5 -21
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +4 -4
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.WaterHeaterMixed.rb +1 -1
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.ZoneHVACComponent.rb +1 -1
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +36 -4
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +1 -1
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +4 -4
  182. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +1 -1
  183. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/comstock_ashrae_90_1_2016.AirLoopHVAC.rb +26 -0
  184. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +53 -10
  185. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  186. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +1 -1
  187. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +6 -6
  188. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +2 -2
  189. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/comstock_ashrae_90_1_2019.AirLoopHVAC.rb +26 -0
  190. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +211 -211
  191. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +14 -14
  192. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +4 -4
  193. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +1 -1
  194. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.PlantLoop.rb +1 -1
  195. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +14 -14
  196. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +4 -4
  197. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +1 -1
  198. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.PlantLoop.rb +1 -1
  199. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +6 -6
  200. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  201. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTowerVariableSpeed.rb +1 -1
  202. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +1 -1
  203. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +4 -4
  204. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +6 -6
  205. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  206. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +1 -1
  207. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +1 -1
  208. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +4 -4
  209. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +22 -28
  210. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +1 -1
  211. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +2 -2
  212. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +1 -74
  213. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +7 -59
  214. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +1 -1
  215. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +1 -1
  216. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +1 -1
  217. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +1 -1
  218. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +1 -21
  219. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.DesignSpecificationOutdoorAir.rb +101 -0
  220. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +1 -1
  221. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +1 -1
  222. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +1 -1
  223. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +1 -1
  224. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +643 -526
  225. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +8 -2
  226. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +17 -77
  227. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +74 -16
  228. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +96 -44
  229. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +6 -6
  230. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +18 -6
  231. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +1 -1
  232. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +328 -74
  233. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +0 -118
  234. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +2 -1
  235. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_rejection.json +1 -1
  236. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_outdoor_air.md +35 -0
  237. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +1 -1
  238. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +228 -0
  239. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +131 -0
  240. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -1
  241. data/lib/openstudio-standards/standards/cbes/cbes.AirLoopHVAC.rb +5 -5
  242. data/lib/openstudio-standards/standards/cbes/cbes.Model.rb +1 -1
  243. data/lib/openstudio-standards/standards/cbes/cbes.PlantLoop.rb +1 -1
  244. data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +1 -1
  245. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +1 -1
  246. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +1 -1
  247. data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +109 -27
  248. data/lib/openstudio-standards/standards/deer/deer.Space.rb +1 -1
  249. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.economizers.json +246 -4
  250. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.economizers.json +246 -4
  251. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.economizers.json +246 -4
  252. data/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb +18 -18
  253. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.economizers.json +246 -4
  254. data/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb +18 -18
  255. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.economizers.json +246 -4
  256. data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb +18 -18
  257. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.economizers.json +248 -6
  258. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +3 -3
  259. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb +18 -18
  260. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.economizers.json +248 -6
  261. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +3 -3
  262. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb +18 -18
  263. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.economizers.json +248 -6
  264. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +3 -3
  265. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb +18 -18
  266. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.economizers.json +248 -6
  267. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +18 -5
  268. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.FanVariableVolume.rb +1 -1
  269. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.Space.rb +3 -3
  270. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb +18 -18
  271. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.economizers.json +248 -6
  272. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +3 -3
  273. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.FanVariableVolume.rb +1 -1
  274. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.Space.rb +3 -3
  275. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.economizers.json +248 -6
  276. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.heat_pumps.json +2 -2
  277. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +3 -3
  278. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.FanVariableVolume.rb +1 -1
  279. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.Space.rb +3 -3
  280. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.economizers.json +248 -6
  281. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +3 -3
  282. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.FanVariableVolume.rb +1 -1
  283. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.Space.rb +3 -3
  284. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.economizers.json +248 -6
  285. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +3 -3
  286. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.FanVariableVolume.rb +1 -1
  287. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.Space.rb +3 -3
  288. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.economizers.json +260 -0
  289. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +3 -3
  290. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.FanVariableVolume.rb +1 -1
  291. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.Space.rb +3 -3
  292. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.economizers.json +248 -6
  293. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +3 -3
  294. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.FanVariableVolume.rb +1 -1
  295. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.Space.rb +3 -3
  296. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.economizers.json +248 -6
  297. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +3 -3
  298. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.FanVariableVolume.rb +1 -1
  299. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.Space.rb +3 -3
  300. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.economizers.json +248 -6
  301. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +3 -3
  302. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.FanVariableVolume.rb +1 -1
  303. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.Space.rb +3 -3
  304. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.economizers.json +248 -6
  305. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +3 -3
  306. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.FanVariableVolume.rb +1 -1
  307. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.Space.rb +3 -3
  308. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.economizers.json +248 -6
  309. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +3 -3
  310. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.FanVariableVolume.rb +1 -1
  311. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.Space.rb +3 -3
  312. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.economizers.json +248 -6
  313. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +3 -3
  314. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.FanVariableVolume.rb +1 -1
  315. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.Space.rb +3 -3
  316. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.economizers.json +246 -4
  317. data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/space_types.json +447 -223
  318. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +1 -1
  319. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/space_types.json +447 -223
  320. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +5 -2
  321. data/lib/openstudio-standards/standards/necb/ECMS/data/chiller_types.json +25 -0
  322. data/lib/openstudio-standards/standards/necb/ECMS/data/chillers.json +44 -0
  323. data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +225 -0
  324. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +2 -2
  325. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +193 -73
  326. data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +1 -1
  327. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +10 -4
  328. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +7 -7
  329. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +4 -5
  330. data/lib/openstudio-standards/standards/necb/NECB2011/data/chiller_types.json +32 -0
  331. data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +1 -1
  332. data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +36 -0
  333. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +7 -7
  334. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernEducation.osm +47587 -0
  335. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernHealthCare.osm +49764 -0
  336. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Warehouse.osm +283 -297
  337. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_type_unit_definitions.txt +2 -1
  338. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +447 -223
  339. data/lib/openstudio-standards/standards/necb/NECB2011/data/standards_data.rb +3 -3
  340. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +1 -1
  341. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +49 -27
  342. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +400 -202
  343. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -4
  344. data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +637 -318
  345. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +18 -1
  346. data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +3 -3
  347. data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +637 -318
  348. data/lib/openstudio-standards/standards/necb/NECB2017/hvac_systems.rb +1 -1
  349. data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +3 -3
  350. data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +1 -1
  351. data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +615 -307
  352. data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +4 -4
  353. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +10 -5
  354. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +1 -1
  355. data/lib/openstudio-standards/utilities/assertion.rb +128 -0
  356. data/lib/openstudio-standards/utilities/logging.rb +2 -3
  357. data/lib/openstudio-standards/utilities/object_info.rb +39 -18
  358. data/lib/openstudio-standards/utilities/schedule_translator.rb +8 -6
  359. data/lib/openstudio-standards/utilities/simulation.rb +24 -11
  360. data/lib/openstudio-standards/utilities/sqlfile.rb +10 -5
  361. data/lib/openstudio-standards/version.rb +1 -1
  362. data/lib/openstudio-standards/weather/Weather.Model.rb +8 -9
  363. data/lib/openstudio-standards/weather/Weather.stat_file.rb +3 -3
  364. data/lib/openstudio-standards/weather/information.rb +35 -0
  365. data/lib/openstudio-standards.rb +69 -5
  366. metadata +52 -16
  367. data/data/standards/OpenStudio_Standards-deer-ALL-comstock(space_types).xlsx +0 -0
  368. data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVAC.rb +0 -59
  369. data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingWater.rb +0 -13
  370. data/lib/openstudio-standards/hvac_sizing/Siz.HVACComponent.rb +0 -36
  371. data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +0 -898
  372. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +0 -126
  373. data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +0 -356
  374. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +0 -35
  375. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +0 -110
  376. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +0 -5
@@ -7,7 +7,7 @@ class Standard
7
7
  # Appendix A: Service Water Heating
8
8
  #
9
9
  # @param water_heater_mixed [OpenStudio::Model::WaterHeaterMixed] water heater mixed object
10
- # @return [Bool] returns true if successful, false if not
10
+ # @return [Boolean] returns true if successful, false if not
11
11
  def water_heater_mixed_apply_efficiency(water_heater_mixed)
12
12
  # @todo remove this once workaround for HPWHs is removed
13
13
  if water_heater_mixed.partLoadFactorCurve.is_initialized
@@ -17,6 +17,13 @@ class Standard
17
17
  end
18
18
  end
19
19
 
20
+ # get number of water heaters
21
+ if water_heater_mixed.additionalProperties.getFeatureAsInteger('component_quantity').is_initialized
22
+ comp_qty = water_heater_mixed.additionalProperties.getFeatureAsInteger('component_quantity').get
23
+ else
24
+ comp_qty = 1
25
+ end
26
+
20
27
  # Get the capacity of the water heater
21
28
  # @todo add capability to pull autosized water heater capacity
22
29
  # if the Sizing:WaterHeater object is ever implemented in OpenStudio.
@@ -25,7 +32,7 @@ class Standard
25
32
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.WaterHeaterMixed', "For #{water_heater_mixed.name}, cannot find capacity, standard will not be applied.")
26
33
  return false
27
34
  else
28
- capacity_w = capacity_w.get / water_heater_mixed.component_quantity
35
+ capacity_w = capacity_w.get / comp_qty
29
36
  end
30
37
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
31
38
 
@@ -37,7 +44,7 @@ class Standard
37
44
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.WaterHeaterMixed', "For #{water_heater_mixed.name}, cannot find volume, standard will not be applied.")
38
45
  return false
39
46
  else
40
- volume_m3 = @instvarbuilding_type == 'MidriseApartment' ? volume_m3.get / 23 : volume_m3.get / water_heater_mixed.component_quantity
47
+ volume_m3 = @instvarbuilding_type == 'MidriseApartment' ? volume_m3.get / 23 : volume_m3.get / comp_qty
41
48
  end
42
49
  volume_gal = OpenStudio.convert(volume_m3, 'm^3', 'gal').get
43
50
 
@@ -201,7 +208,7 @@ class Standard
201
208
  #
202
209
  # @param water_heater_mixed [OpenStudio::Model::WaterHeaterMixed] water heater mixed object
203
210
  # @param building_type [String] the building type
204
- # @return [Bool] returns true if successful, false if not
211
+ # @return [Boolean] returns true if successful, false if not
205
212
  def water_heater_mixed_apply_prm_baseline_fuel_type(water_heater_mixed, building_type)
206
213
  # baseline is same as proposed per Table G3.1 item 11.b
207
214
  return true # Do nothing
@@ -14,7 +14,7 @@ class Standard
14
14
  # based on the W/cfm specified in the standard.
15
15
  #
16
16
  # @param zone_hvac_component [OpenStudio::Model::ZoneHVACComponent] zone hvac component
17
- # @return [Bool] returns true if successful, false if not
17
+ # @return [Boolean] returns true if successful, false if not
18
18
  def zone_hvac_component_apply_prm_baseline_fan_power(zone_hvac_component)
19
19
  OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ZoneHVACComponent', "Setting fan power for #{zone_hvac_component.name}.")
20
20
 
@@ -138,7 +138,7 @@ class Standard
138
138
  # and the zone requires ventilation, override it to follow the zone occupancy schedule
139
139
  #
140
140
  # @param zone_hvac_component [OpenStudio::Model::ZoneHVACComponent] zone hvac component
141
- # @return [Bool] returns true if successful, false if not
141
+ # @return [Boolean] returns true if successful, false if not
142
142
  def zone_hvac_component_occupancy_ventilation_control(zone_hvac_component)
143
143
  ventilation = false
144
144
  # Zone HVAC operating schedule if providing ventilation
@@ -216,7 +216,7 @@ class Standard
216
216
  # Apply all standard required controls to the zone equipment
217
217
  #
218
218
  # @param zone_hvac_component [OpenStudio::Model::ZoneHVACComponent] zone hvac component
219
- # @return [Bool] returns true if successful, false if not
219
+ # @return [Boolean] returns true if successful, false if not
220
220
  def zone_hvac_component_apply_standard_controls(zone_hvac_component)
221
221
  # Vestibule heating control
222
222
  if zone_hvac_component_vestibule_heating_control_required?(zone_hvac_component)
@@ -262,7 +262,7 @@ class Standard
262
262
  # Defaults to 90.1-2004 through 2010, not required.
263
263
  #
264
264
  # @param zone_hvac_component [OpenStudio::Model::ZoneHVACComponent] zone hvac component
265
- # @return [Bool] returns true if successful, false if not
265
+ # @return [Boolean] returns true if successful, false if not
266
266
  def zone_hvac_component_vestibule_heating_control_required?(zone_hvac_component)
267
267
  vest_htg_control_required = false
268
268
  return vest_htg_control_required
@@ -273,7 +273,7 @@ class Standard
273
273
  # fan during the occupant standby mode hours
274
274
  #
275
275
  # @param zone_hvac_component OpenStudio zonal equipment object
276
- # @retrun [Boolean] true if sucessful, false otherwise
276
+ # @return [Boolean] true if sucessful, false otherwise
277
277
  def zone_hvac_model_standby_mode_occupancy_control(zone_hvac_component)
278
278
  return true
279
279
  end
@@ -281,7 +281,7 @@ class Standard
281
281
  # Turns off vestibule heating below 45F
282
282
  #
283
283
  # @param zone_hvac_component [OpenStudio::Model::ZoneHVACComponent] zone hvac component
284
- # @return [Bool] returns true if successful, false if not
284
+ # @return [Boolean] returns true if successful, false if not
285
285
  def zone_hvac_component_apply_vestibule_heating_control(zone_hvac_component)
286
286
  # Ensure that the equipment is assigned to a thermal zone
287
287
  if zone_hvac_component.thermalZone.empty?
@@ -5,7 +5,7 @@ class ASHRAE9012004 < ASHRAE901
5
5
  #
6
6
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
7
7
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
8
- # @return [Bool] returns true if required, false if not
8
+ # @return [Boolean] returns true if required, false if not
9
9
  def air_loop_hvac_prm_baseline_economizer_required?(air_loop_hvac, climate_zone)
10
10
  economizer_required = false
11
11
 
@@ -4,7 +4,7 @@ class ASHRAE9012004 < ASHRAE901
4
4
  # Set the primary and secondary pumping control types for the chilled water loop, as specified in Appendix G.
5
5
  #
6
6
  # @param plant_loop [OpenStudio::Model::PlantLoop] chilled water loop
7
- # @return [Bool] returns true if successful, false if not
7
+ # @return [Boolean] returns true if successful, false if not
8
8
  def plant_loop_apply_prm_baseline_chilled_water_pumping_type(plant_loop)
9
9
  # Determine the pumping type.
10
10
  minimum_area_ft2 = 120_000
@@ -4,7 +4,7 @@ class ASHRAE9012004 < ASHRAE901
4
4
  # Baseline infiltration rate
5
5
  #
6
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)
7
+ def space_infiltration_rate_75_pa(space = nil)
8
8
  basic_infil_rate_cfm_per_ft2 = 1.8
9
9
  return basic_infil_rate_cfm_per_ft2
10
10
  end
@@ -4,7 +4,7 @@ class ASHRAE9012007 < ASHRAE901
4
4
  # Baseline infiltration rate
5
5
  #
6
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)
7
+ def space_infiltration_rate_75_pa(space = nil)
8
8
  basic_infil_rate_cfm_per_ft2 = 1.8
9
9
  return basic_infil_rate_cfm_per_ft2
10
10
  end
@@ -44,7 +44,7 @@ class ASHRAE9012010 < ASHRAE901
44
44
  #
45
45
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
46
46
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
47
- # @return [Bool] returns true if required, false if not
47
+ # @return [Boolean] returns true if required, false if not
48
48
  def air_loop_hvac_integrated_economizer_required?(air_loop_hvac, climate_zone)
49
49
  return true
50
50
  end
@@ -54,7 +54,7 @@ class ASHRAE9012010 < ASHRAE901
54
54
  #
55
55
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
56
56
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
57
- # @return [Bool] Returns true if allowable, if the system has no economizer or no OA system.
57
+ # @return [Boolean] Returns true if allowable, if the system has no economizer or no OA system.
58
58
  # Returns false if the economizer type is not allowable.
59
59
  def air_loop_hvac_economizer_type_allowable?(air_loop_hvac, climate_zone)
60
60
  # EnergyPlus economizer types
@@ -142,7 +142,7 @@ class ASHRAE9012010 < ASHRAE901
142
142
  #
143
143
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
144
144
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
145
- # @return [Bool] returns true if required, false if not
145
+ # @return [Boolean] returns true if required, false if not
146
146
  # @todo Add exception logic for systems with AIA healthcare ventilation requirements dual duct systems
147
147
  def air_loop_hvac_multizone_vav_optimization_required?(air_loop_hvac, climate_zone)
148
148
  multizone_opt_required = false
@@ -296,7 +296,7 @@ class ASHRAE9012010 < ASHRAE901
296
296
  #
297
297
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
298
298
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
299
- # @return [Bool] returns true if required, false if not
299
+ # @return [Boolean] returns true if required, false if not
300
300
  def air_loop_hvac_supply_air_temperature_reset_required?(air_loop_hvac, climate_zone)
301
301
  is_sat_reset_required = false
302
302
 
@@ -5,7 +5,7 @@ class ASHRAE9012010 < ASHRAE901
5
5
  # For terminals with hot water heat and DDC, the minimum is 20%, otherwise the minimum is 30%.
6
6
  #
7
7
  # @param air_terminal_single_duct_vav_reheat [OpenStudio::Model::AirTerminalSingleDuctVAVReheat] the air terminal object
8
- # @param has_ddc [Bool] whether or not there is DDC control of the VAV terminal in question
8
+ # @param has_ddc [Boolean] whether or not there is DDC control of the VAV terminal in question
9
9
  # @return [Double] minimum damper position
10
10
  def air_terminal_single_duct_vav_reheat_minimum_damper_position(air_terminal_single_duct_vav_reheat, has_ddc = false)
11
11
  min_damper_position = nil
@@ -97,9 +97,9 @@ class ASHRAE9012010 < ASHRAE901
97
97
  # @param areas [Hash] a hash of daylighted areas
98
98
  # @param sorted_windows [Hash] a hash of windows, sorted by priority
99
99
  # @param sorted_skylights [Hash] a hash of skylights, sorted by priority
100
- # @param req_top_ctrl [Bool] if toplighting controls are required
101
- # @param req_pri_ctrl [Bool] if primary sidelighting controls are required
102
- # @param req_sec_ctrl [Bool] if secondary sidelighting controls are required
100
+ # @param req_top_ctrl [Boolean] if toplighting controls are required
101
+ # @param req_pri_ctrl [Boolean] if primary sidelighting controls are required
102
+ # @param req_sec_ctrl [Boolean] if secondary sidelighting controls are required
103
103
  # @return [Array] array of 4 items
104
104
  # [sensor 1 fraction, sensor 2 fraction, sensor 1 window, sensor 2 window]
105
105
  def space_daylighting_fractions_and_windows(space,
@@ -161,7 +161,7 @@ class ASHRAE9012010 < ASHRAE901
161
161
  #
162
162
  # @return [Double] the baseline infiltration rate, in cfm/ft^2
163
163
  # defaults to no infiltration.
164
- def space_infiltration_rate_75_pa(space)
164
+ def space_infiltration_rate_75_pa(space = nil)
165
165
  basic_infil_rate_cfm_per_ft2 = 1.0
166
166
  return basic_infil_rate_cfm_per_ft2
167
167
  end
@@ -50,7 +50,7 @@ class ASHRAE9012013 < ASHRAE901
50
50
  #
51
51
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
52
52
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
53
- # @return [Bool] returns true if required, false if not
53
+ # @return [Boolean] returns true if required, false if not
54
54
  def air_loop_hvac_integrated_economizer_required?(air_loop_hvac, climate_zone)
55
55
  return true
56
56
  end
@@ -123,7 +123,7 @@ class ASHRAE9012013 < ASHRAE901
123
123
  #
124
124
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
125
125
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
126
- # @return [Bool] Returns true if allowable, if the system has no economizer or no OA system.
126
+ # @return [Boolean] Returns true if allowable, if the system has no economizer or no OA system.
127
127
  # Returns false if the economizer type is not allowable.
128
128
  def air_loop_hvac_economizer_type_allowable?(air_loop_hvac, climate_zone)
129
129
  # EnergyPlus economizer types
@@ -211,7 +211,7 @@ class ASHRAE9012013 < ASHRAE901
211
211
  #
212
212
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
213
213
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
214
- # @return [Bool] returns true if required, false if not
214
+ # @return [Boolean] returns true if required, false if not
215
215
  # @todo Add exception logic for systems with AIA healthcare ventilation requirements dual duct systems
216
216
  def air_loop_hvac_multizone_vav_optimization_required?(air_loop_hvac, climate_zone)
217
217
  multizone_opt_required = false
@@ -365,7 +365,7 @@ class ASHRAE9012013 < ASHRAE901
365
365
  #
366
366
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
367
367
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
368
- # @return [Bool] returns true if required, false if not
368
+ # @return [Boolean] returns true if required, false if not
369
369
  def air_loop_hvac_supply_air_temperature_reset_required?(air_loop_hvac, climate_zone)
370
370
  is_sat_reset_required = false
371
371
 
@@ -5,7 +5,7 @@ class ASHRAE9012013 < ASHRAE901
5
5
  # For terminals with hot water heat and DDC, the minimum is 20%, otherwise the minimum is 30%.
6
6
  #
7
7
  # @param air_terminal_single_duct_vav_reheat [OpenStudio::Model::AirTerminalSingleDuctVAVReheat] the air terminal object
8
- # @param has_ddc [Bool] whether or not there is DDC control of the VAV terminal in question
8
+ # @param has_ddc [Boolean] whether or not there is DDC control of the VAV terminal in question
9
9
  # @return [Double] minimum damper position
10
10
  def air_terminal_single_duct_vav_reheat_minimum_damper_position(air_terminal_single_duct_vav_reheat, has_ddc = false)
11
11
  min_damper_position = nil
@@ -6,7 +6,7 @@ class ASHRAE9012013 < ASHRAE901
6
6
  # Apply the efficiency, plus Multicell heat rejection with VSD per 90.1-2013 6.5.2.2
7
7
  #
8
8
  # @param cooling_tower_variable_speed [OpenStudio::Model::CoolingTowerVariableSpeed] variable speed cooling tower
9
- # @return [Bool] returns true if successful, false if not
9
+ # @return [Boolean] returns true if successful, false if not
10
10
  def cooling_tower_variable_speed_apply_efficiency_and_curves(cooling_tower_variable_speed)
11
11
  cooling_tower_apply_minimum_power_per_flow(cooling_tower_variable_speed)
12
12
  cooling_tower_variable_speed.setCellControl('MaximalCell')
@@ -1,21 +1,6 @@
1
1
  class ASHRAE9012013 < ASHRAE901
2
2
  # @!group Model
3
3
 
4
- # Determines the area of the building above which point
5
- # the non-dominant area type gets it's own HVAC system type.
6
- # @return [Double] the minimum area (m^2)
7
- def model_prm_baseline_system_group_minimum_area(model, custom)
8
- exception_min_area_ft2 = 20_000
9
- # Customization - Xcel EDA Program Manual 2014
10
- # 3.2.1 Mechanical System Selection ii
11
- if custom == 'Xcel Energy CO EDA'
12
- exception_min_area_ft2 = 5000
13
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Customization; per Xcel EDA Program Manual 2014 3.2.1 Mechanical System Selection ii, minimum area for non-predominant conditions reduced to #{exception_min_area_ft2} ft2.")
14
- end
15
- exception_min_area_m2 = OpenStudio.convert(exception_min_area_ft2, 'ft^2', 'm^2').get
16
- return exception_min_area_m2
17
- end
18
-
19
4
  # Determines which system number is used
20
5
  # for the baseline system.
21
6
  # @return [String] the system number: 1_or_2, 3_or_4,
@@ -84,13 +69,12 @@ class ASHRAE9012013 < ASHRAE901
84
69
 
85
70
  # Change the fuel type based on climate zone, depending on the standard.
86
71
  # For 90.1-2013, fuel type is based on climate zone, not the proposed model.
72
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
73
+ # @param fuel_type [String] Valid choices are electric, fossil, fossilandelectric,
74
+ # purchasedheat, purchasedcooling, purchasedheatandcooling
75
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
87
76
  # @return [String] the revised fuel type
88
- def model_prm_baseline_system_change_fuel_type(model, fuel_type, climate_zone, custom = nil)
89
- if custom == 'Xcel Energy CO EDA'
90
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', 'Custom; per Xcel EDA Program Manual 2014 Table 3.2.2 Baseline HVAC System Types, the 90.1-2010 rules for heating fuel type (based on proposed model) rules apply.')
91
- return fuel_type
92
- end
93
-
77
+ def model_prm_baseline_system_change_fuel_type(model, fuel_type, climate_zone)
94
78
  # For 90.1-2013 the fuel type is determined based on climate zone.
95
79
  # Don't change the fuel if it purchased heating or cooling.
96
80
  if fuel_type == 'electric' || fuel_type == 'fossil'
@@ -102,9 +102,9 @@ class ASHRAE9012013 < ASHRAE901
102
102
  # @param areas [Hash] a hash of daylighted areas
103
103
  # @param sorted_windows [Hash] a hash of windows, sorted by priority
104
104
  # @param sorted_skylights [Hash] a hash of skylights, sorted by priority
105
- # @param req_top_ctrl [Bool] if toplighting controls are required
106
- # @param req_pri_ctrl [Bool] if primary sidelighting controls are required
107
- # @param req_sec_ctrl [Bool] if secondary sidelighting controls are required
105
+ # @param req_top_ctrl [Boolean] if toplighting controls are required
106
+ # @param req_pri_ctrl [Boolean] if primary sidelighting controls are required
107
+ # @param req_sec_ctrl [Boolean] if secondary sidelighting controls are required
108
108
  # @return [Array] array of 4 items
109
109
  # [sensor 1 fraction, sensor 2 fraction, sensor 1 window, sensor 2 window]
110
110
  def space_daylighting_fractions_and_windows(space,
@@ -185,7 +185,7 @@ class ASHRAE9012013 < ASHRAE901
185
185
  #
186
186
  # @return [Double] the baseline infiltration rate, in cfm/ft^2
187
187
  # defaults to no infiltration.
188
- def space_infiltration_rate_75_pa(space)
188
+ def space_infiltration_rate_75_pa(space = nil)
189
189
  basic_infil_rate_cfm_per_ft2 = 1.0
190
190
  return basic_infil_rate_cfm_per_ft2
191
191
  end
@@ -6,7 +6,7 @@ class ASHRAE9012013 < ASHRAE901
6
6
  # from the proposed building in some scenarios.
7
7
  #
8
8
  # @param building_type [String] the building type
9
- # @return [Bool] returns true if successful, false if not
9
+ # @return [Boolean] returns true if successful, false if not
10
10
  def water_heater_mixed_apply_prm_baseline_fuel_type(water_heater_mixed, building_type)
11
11
  # Determine the building-type specific
12
12
  # fuel requirements from Table G3.1.1-2
@@ -6,7 +6,7 @@ class ASHRAE9012013 < ASHRAE901
6
6
  #
7
7
  # @ref [References::ASHRAE9012013] 6.4.3.9
8
8
  # @param zone_hvac_component [OpenStudio::Model::ZoneHVACComponent] zone hvac component
9
- # @return [Bool] returns true if successful, false if not
9
+ # @return [Boolean] returns true if successful, false if not
10
10
  def zone_hvac_component_vestibule_heating_control_required?(zone_hvac_component)
11
11
  # Ensure that the equipment is assigned to a thermal zone
12
12
  if zone_hvac_component.thermalZone.empty?
@@ -1,6 +1,38 @@
1
1
  class ASHRAE9012016 < ASHRAE901
2
2
  # @!group AirLoopHVAC
3
3
 
4
+ # Determine the prototypical economizer type for the model.
5
+ #
6
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
7
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
8
+ # @return [String] the economizer type. Possible values are:
9
+ # 'NoEconomizer'
10
+ # 'FixedDryBulb'
11
+ # 'FixedEnthalpy'
12
+ # 'DifferentialDryBulb'
13
+ # 'DifferentialEnthalpy'
14
+ # 'FixedDewPointAndDryBulb'
15
+ # 'ElectronicEnthalpy'
16
+ # 'DifferentialDryBulbAndEnthalpy'
17
+ def model_economizer_type(model, climate_zone)
18
+ economizer_type = case climate_zone
19
+ when 'ASHRAE 169-2006-0A',
20
+ 'ASHRAE 169-2006-1A',
21
+ 'ASHRAE 169-2006-2A',
22
+ 'ASHRAE 169-2006-3A',
23
+ 'ASHRAE 169-2006-4A',
24
+ 'ASHRAE 169-2013-0A',
25
+ 'ASHRAE 169-2013-1A',
26
+ 'ASHRAE 169-2013-2A',
27
+ 'ASHRAE 169-2013-3A',
28
+ 'ASHRAE 169-2013-4A'
29
+ 'DifferentialEnthalpy'
30
+ else
31
+ 'DifferentialDryBulb'
32
+ end
33
+ return economizer_type
34
+ end
35
+
4
36
  # Determine the limits for the type of economizer present on the AirLoopHVAC, if any.
5
37
  #
6
38
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
@@ -50,7 +82,7 @@ class ASHRAE9012016 < ASHRAE901
50
82
  #
51
83
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
52
84
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
53
- # @return [Bool] returns true if required, false if not
85
+ # @return [Boolean] returns true if required, false if not
54
86
  def air_loop_hvac_integrated_economizer_required?(air_loop_hvac, climate_zone)
55
87
  return true
56
88
  end
@@ -60,7 +92,7 @@ class ASHRAE9012016 < ASHRAE901
60
92
  #
61
93
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
62
94
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
63
- # @return [Bool] Returns true if allowable, if the system has no economizer or no OA system.
95
+ # @return [Boolean] Returns true if allowable, if the system has no economizer or no OA system.
64
96
  # Returns false if the economizer type is not allowable.
65
97
  def air_loop_hvac_economizer_type_allowable?(air_loop_hvac, climate_zone)
66
98
  # EnergyPlus economizer types
@@ -148,7 +180,7 @@ class ASHRAE9012016 < ASHRAE901
148
180
  #
149
181
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
150
182
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
151
- # @return [Bool] returns true if required, false if not
183
+ # @return [Boolean] returns true if required, false if not
152
184
  # @todo Add exception logic for systems with AIA healthcare ventilation requirements dual duct systems
153
185
  def air_loop_hvac_multizone_vav_optimization_required?(air_loop_hvac, climate_zone)
154
186
  multizone_opt_required = false
@@ -295,7 +327,7 @@ class ASHRAE9012016 < ASHRAE901
295
327
  #
296
328
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
297
329
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
298
- # @return [Bool] returns true if required, false if not
330
+ # @return [Boolean] returns true if required, false if not
299
331
  def air_loop_hvac_supply_air_temperature_reset_required?(air_loop_hvac, climate_zone)
300
332
  is_sat_reset_required = false
301
333
 
@@ -5,7 +5,7 @@ class ASHRAE9012016 < ASHRAE901
5
5
  # For terminals with hot water heat and DDC, the minimum is 20%, otherwise the minimum is 30%.
6
6
  #
7
7
  # @param air_terminal_single_duct_vav_reheat [OpenStudio::Model::AirTerminalSingleDuctVAVReheat] the air terminal object
8
- # @param has_ddc [Bool] whether or not there is DDC control of the VAV terminal in question
8
+ # @param has_ddc [Boolean] whether or not there is DDC control of the VAV terminal in question
9
9
  # @return [Double] minimum damper position
10
10
  def air_terminal_single_duct_vav_reheat_minimum_damper_position(air_terminal_single_duct_vav_reheat, has_ddc = false)
11
11
  min_damper_position = nil
@@ -6,7 +6,7 @@ class ASHRAE9012016 < ASHRAE901
6
6
  # Apply the efficiency, plus Multicell heat rejection with VSD
7
7
  #
8
8
  # @param cooling_tower_variable_speed [OpenStudio::Model::CoolingTowerVariableSpeed] variable speed cooling tower
9
- # @return [Bool] returns true if successful, false if not
9
+ # @return [Boolean] returns true if successful, false if not
10
10
  def cooling_tower_variable_speed_apply_efficiency_and_curves(cooling_tower_variable_speed)
11
11
  cooling_tower_apply_minimum_power_per_flow(cooling_tower_variable_speed)
12
12
  cooling_tower_variable_speed.setCellControl('MaximalCell')
@@ -102,9 +102,9 @@ class ASHRAE9012016 < ASHRAE901
102
102
  # @param areas [Hash] a hash of daylighted areas
103
103
  # @param sorted_windows [Hash] a hash of windows, sorted by priority
104
104
  # @param sorted_skylights [Hash] a hash of skylights, sorted by priority
105
- # @param req_top_ctrl [Bool] if toplighting controls are required
106
- # @param req_pri_ctrl [Bool] if primary sidelighting controls are required
107
- # @param req_sec_ctrl [Bool] if secondary sidelighting controls are required
105
+ # @param req_top_ctrl [Boolean] if toplighting controls are required
106
+ # @param req_pri_ctrl [Boolean] if primary sidelighting controls are required
107
+ # @param req_sec_ctrl [Boolean] if secondary sidelighting controls are required
108
108
  # @return [Array] array of 4 items
109
109
  # [sensor 1 fraction, sensor 2 fraction, sensor 1 window, sensor 2 window]
110
110
  def space_daylighting_fractions_and_windows(space,
@@ -185,7 +185,7 @@ class ASHRAE9012016 < ASHRAE901
185
185
  #
186
186
  # @return [Double] the baseline infiltration rate, in cfm/ft^2
187
187
  # defaults to no infiltration.
188
- def space_infiltration_rate_75_pa(space)
188
+ def space_infiltration_rate_75_pa(space = nil)
189
189
  basic_infil_rate_cfm_per_ft2 = 1.0
190
190
  return basic_infil_rate_cfm_per_ft2
191
191
  end
@@ -6,7 +6,7 @@ class ASHRAE9012016 < ASHRAE901
6
6
  #
7
7
  # @ref [References::ASHRAE9012016] 6.4.3.9
8
8
  # @param zone_hvac_component [OpenStudio::Model::ZoneHVACComponent] zone hvac component
9
- # @return [Bool] returns true if successful, false if not
9
+ # @return [Boolean] returns true if successful, false if not
10
10
  def zone_hvac_component_vestibule_heating_control_required?(zone_hvac_component)
11
11
  # Ensure that the equipment is assigned to a thermal zone
12
12
  if zone_hvac_component.thermalZone.empty?
@@ -0,0 +1,26 @@
1
+ class ComStockASHRAE9012016 < ASHRAE9012016
2
+ # Determine the prototypical economizer type for the model.
3
+ # Defaults to FixedDryBulb based on anecdotal evidence of this being
4
+ # the most common type encountered in the field, combined
5
+ # with this being the default option for many equipment manufacturers,
6
+ # and being the strategy recommended in the 2010 ASHRAE journal article
7
+ # "Economizer High Limit Devices and Why Enthalpy Economizers Don't Work"
8
+ # by Steven Taylor and Hwakong Cheng.
9
+ # https://tayloreng.egnyte.com/dl/mN0c9t4WSO/ASHRAE_Journal_-_Economizer_High_Limit_Devices_and_Why_Enthalpy_Economizers_Dont_Work.pdf_
10
+ #
11
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
12
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
13
+ # @return [String] the economizer type. Possible values are:
14
+ # 'NoEconomizer'
15
+ # 'FixedDryBulb'
16
+ # 'FixedEnthalpy'
17
+ # 'DifferentialDryBulb'
18
+ # 'DifferentialEnthalpy'
19
+ # 'FixedDewPointAndDryBulb'
20
+ # 'ElectronicEnthalpy'
21
+ # 'DifferentialDryBulbAndEnthalpy'
22
+ def model_economizer_type(model, climate_zone)
23
+ economizer_type = 'FixedDryBulb'
24
+ return economizer_type
25
+ end
26
+ end