openstudio-standards 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (378) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +33 -0
  3. data/data/inventory/thermal_bridging.csv +90 -0
  4. data/data/standards/OpenStudio_Standards-deer-comstock.xlsx +0 -0
  5. data/data/standards/manage_OpenStudio_Standards.rb +1 -1
  6. data/data/standards/test_performance_expected_dd_results.csv +2014 -1891
  7. data/lib/openstudio-standards/btap/analysis.rb +8 -8
  8. data/lib/openstudio-standards/btap/bridging.rb +664 -645
  9. data/lib/openstudio-standards/btap/btap.model.rb +14 -14
  10. data/lib/openstudio-standards/btap/btap.rb +7 -7
  11. data/lib/openstudio-standards/btap/btap_result.rb +1 -1
  12. data/lib/openstudio-standards/btap/economics.rb +23 -23
  13. data/lib/openstudio-standards/btap/envelope.rb +8 -8
  14. data/lib/openstudio-standards/btap/equest.rb +1 -1
  15. data/lib/openstudio-standards/btap/geometry.rb +2 -2
  16. data/lib/openstudio-standards/btap/mpc.rb +7 -7
  17. data/lib/openstudio-standards/btap/schedules.rb +1 -1
  18. data/lib/openstudio-standards/btap/simmanager.rb +4 -4
  19. data/lib/openstudio-standards/btap/spaceloads.rb +26 -26
  20. data/lib/openstudio-standards/btap/utilities.rb +6 -6
  21. data/lib/openstudio-standards/btap/vintagizer.rb +1 -1
  22. data/lib/openstudio-standards/constructions/information.rb +83 -0
  23. data/lib/openstudio-standards/constructions/materials/modify.rb +72 -0
  24. data/lib/openstudio-standards/constructions/modify.rb +80 -0
  25. data/lib/openstudio-standards/create_typical/create_typical.rb +983 -0
  26. data/lib/openstudio-standards/create_typical/enumerations.rb +484 -0
  27. data/lib/openstudio-standards/create_typical/space_type_blend.rb +791 -0
  28. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +494 -0
  29. data/lib/openstudio-standards/daylighting/space.rb +47 -0
  30. data/lib/openstudio-standards/geometry/create.rb +801 -0
  31. data/lib/openstudio-standards/geometry/create_bar.rb +2170 -0
  32. data/lib/openstudio-standards/geometry/information.rb +462 -0
  33. data/lib/openstudio-standards/geometry/modify.rb +48 -0
  34. data/lib/openstudio-standards/hvac/air_loop/information.rb +79 -0
  35. data/lib/openstudio-standards/hvac/cbecs_hvac.rb +616 -0
  36. data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +91 -0
  37. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
  38. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +1 -1
  39. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  40. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +1 -1
  41. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  42. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +2 -2
  43. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.hvac_systems.rb +1 -1
  44. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  45. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -36
  46. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +1 -1
  47. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  48. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -36
  49. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +3 -3
  50. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +1 -1
  51. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
  52. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.elevators.rb +1 -1
  53. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +1 -1
  54. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.CoilHeatingGas.rb +1 -1
  55. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.elevators.rb +1 -1
  56. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  57. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  58. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +7 -7
  59. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +8 -8
  60. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +14 -14
  61. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +9 -9
  62. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +16 -16
  63. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +7 -7
  64. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +8 -8
  65. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +8 -8
  66. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +11 -11
  67. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +7 -7
  68. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +9 -9
  69. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +8 -8
  70. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +11 -11
  71. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +9 -9
  72. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +19 -19
  73. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +10 -10
  74. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +13 -13
  75. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +6 -6
  76. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +6 -6
  77. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +9 -9
  78. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +8 -8
  79. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +8 -8
  80. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +8 -8
  81. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +8 -8
  82. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +11 -11
  83. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +10 -10
  84. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +19 -19
  85. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +18 -18
  86. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +6 -6
  87. data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +957 -957
  88. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +1 -1
  89. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +1 -1
  90. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +84 -16
  91. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +1 -1
  92. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +1 -1
  93. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +61 -10
  94. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +1 -1
  95. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +1 -1
  96. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +1 -1
  97. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -1
  98. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -1
  99. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +1 -1
  100. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +1 -1
  101. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +2 -2
  102. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +4 -4
  103. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +4 -4
  104. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +43 -30
  105. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +1 -1
  106. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +18 -11
  107. data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +1 -1
  108. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +774 -117
  109. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +340 -481
  110. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +3 -3
  111. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +3 -3
  112. data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +22 -22
  113. data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
  114. data/lib/openstudio-standards/qaqc/calibration.rb +131 -0
  115. data/lib/openstudio-standards/qaqc/create_results.rb +983 -0
  116. data/lib/openstudio-standards/qaqc/envelope.rb +399 -0
  117. data/lib/openstudio-standards/qaqc/eui.rb +213 -0
  118. data/lib/openstudio-standards/qaqc/hvac.rb +1943 -0
  119. data/lib/openstudio-standards/qaqc/internal_loads.rb +568 -0
  120. data/lib/openstudio-standards/qaqc/reporting.rb +141 -0
  121. data/lib/openstudio-standards/qaqc/schedules.rb +129 -0
  122. data/lib/openstudio-standards/qaqc/service_water_heating.rb +273 -0
  123. data/lib/openstudio-standards/qaqc/weather_files.rb +497 -0
  124. data/lib/openstudio-standards/qaqc/zone_conditions.rb +278 -0
  125. data/lib/openstudio-standards/schedules/create.rb +364 -0
  126. data/lib/openstudio-standards/schedules/information.rb +169 -0
  127. data/lib/openstudio-standards/schedules/modify.rb +445 -0
  128. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +110 -71
  129. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +3 -3
  130. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +4 -4
  131. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +2 -1
  132. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +16 -10
  133. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +4 -4
  134. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +1 -1
  135. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  136. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +4 -4
  137. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +1 -1
  138. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +5 -5
  139. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +1 -1
  140. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +1 -1
  141. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -1
  142. data/lib/openstudio-standards/standards/Standards.Construction.rb +17 -18
  143. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +6 -6
  144. data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +1 -1
  145. data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +1 -1
  146. data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +1 -1
  147. data/lib/openstudio-standards/standards/Standards.Fan.rb +6 -12
  148. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +2 -2
  149. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +1 -1
  150. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +1 -1
  151. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +3 -3
  152. data/lib/openstudio-standards/standards/Standards.Model.rb +411 -261
  153. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -2
  154. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +94 -29
  155. data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -2
  156. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +2 -2
  157. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +14 -14
  158. data/lib/openstudio-standards/standards/Standards.Space.rb +37 -30
  159. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +38 -29
  160. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +7 -7
  161. data/lib/openstudio-standards/standards/Standards.Surface.rb +13 -13
  162. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +109 -66
  163. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +11 -4
  164. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +6 -6
  165. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +1 -1
  166. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +1 -1
  167. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +1 -1
  168. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +1 -1
  169. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +4 -4
  170. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  171. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +4 -4
  172. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +4 -4
  173. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTowerVariableSpeed.rb +1 -1
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +5 -21
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +4 -4
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.WaterHeaterMixed.rb +1 -1
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.ZoneHVACComponent.rb +1 -1
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +36 -4
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +1 -1
  182. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +4 -4
  183. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +1 -1
  184. 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
  185. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +53 -10
  186. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  187. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +1 -1
  188. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +6 -6
  189. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +2 -2
  190. 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
  191. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +211 -211
  192. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +14 -14
  193. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +4 -4
  194. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +1 -1
  195. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.PlantLoop.rb +1 -1
  196. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +14 -14
  197. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +4 -4
  198. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +1 -1
  199. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.PlantLoop.rb +1 -1
  200. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +6 -6
  201. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  202. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTowerVariableSpeed.rb +1 -1
  203. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +1 -1
  204. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +4 -4
  205. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +6 -6
  206. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  207. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +1 -1
  208. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +1 -1
  209. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +4 -4
  210. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +22 -28
  211. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +1 -1
  212. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +2 -2
  213. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +1 -74
  214. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +7 -59
  215. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +1 -1
  216. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +1 -1
  217. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +1 -1
  218. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +1 -1
  219. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +1 -21
  220. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.DesignSpecificationOutdoorAir.rb +101 -0
  221. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +1 -1
  222. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +1 -1
  223. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +1 -1
  224. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +1 -1
  225. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +643 -526
  226. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +8 -2
  227. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +17 -77
  228. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +74 -16
  229. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +96 -44
  230. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +6 -6
  231. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +18 -6
  232. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +1 -1
  233. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +328 -74
  234. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +0 -118
  235. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +2 -1
  236. 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
  237. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_outdoor_air.md +35 -0
  238. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +1 -1
  239. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +228 -0
  240. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +131 -0
  241. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -1
  242. data/lib/openstudio-standards/standards/cbes/cbes.AirLoopHVAC.rb +5 -5
  243. data/lib/openstudio-standards/standards/cbes/cbes.Model.rb +1 -1
  244. data/lib/openstudio-standards/standards/cbes/cbes.PlantLoop.rb +1 -1
  245. data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +1 -1
  246. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +1 -1
  247. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +1 -1
  248. data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +109 -27
  249. data/lib/openstudio-standards/standards/deer/deer.Space.rb +1 -1
  250. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.economizers.json +246 -4
  251. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.economizers.json +246 -4
  252. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.economizers.json +246 -4
  253. data/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb +18 -18
  254. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.economizers.json +246 -4
  255. data/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb +18 -18
  256. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.economizers.json +246 -4
  257. data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb +18 -18
  258. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.economizers.json +248 -6
  259. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +3 -3
  260. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb +18 -18
  261. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.economizers.json +248 -6
  262. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +3 -3
  263. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb +18 -18
  264. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.economizers.json +248 -6
  265. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +3 -3
  266. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb +18 -18
  267. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.economizers.json +248 -6
  268. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +18 -5
  269. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.FanVariableVolume.rb +1 -1
  270. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.Space.rb +3 -3
  271. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb +18 -18
  272. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.economizers.json +248 -6
  273. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +3 -3
  274. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.FanVariableVolume.rb +1 -1
  275. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.Space.rb +3 -3
  276. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.economizers.json +248 -6
  277. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.heat_pumps.json +2 -2
  278. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +3 -3
  279. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.FanVariableVolume.rb +1 -1
  280. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.Space.rb +3 -3
  281. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.economizers.json +248 -6
  282. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +3 -3
  283. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.FanVariableVolume.rb +1 -1
  284. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.Space.rb +3 -3
  285. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.economizers.json +248 -6
  286. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +3 -3
  287. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.FanVariableVolume.rb +1 -1
  288. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.Space.rb +3 -3
  289. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.economizers.json +260 -0
  290. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +3 -3
  291. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.FanVariableVolume.rb +1 -1
  292. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.Space.rb +3 -3
  293. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.economizers.json +248 -6
  294. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +3 -3
  295. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.FanVariableVolume.rb +1 -1
  296. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.Space.rb +3 -3
  297. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.economizers.json +248 -6
  298. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +3 -3
  299. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.FanVariableVolume.rb +1 -1
  300. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.Space.rb +3 -3
  301. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.economizers.json +248 -6
  302. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +3 -3
  303. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.FanVariableVolume.rb +1 -1
  304. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.Space.rb +3 -3
  305. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.economizers.json +248 -6
  306. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +3 -3
  307. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.FanVariableVolume.rb +1 -1
  308. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.Space.rb +3 -3
  309. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.economizers.json +248 -6
  310. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +3 -3
  311. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.FanVariableVolume.rb +1 -1
  312. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.Space.rb +3 -3
  313. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.economizers.json +248 -6
  314. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +3 -3
  315. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.FanVariableVolume.rb +1 -1
  316. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.Space.rb +3 -3
  317. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.economizers.json +246 -4
  318. data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/space_types.json +447 -223
  319. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +1 -1
  320. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/space_types.json +447 -223
  321. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +5 -2
  322. data/lib/openstudio-standards/standards/necb/ECMS/data/chiller_types.json +25 -0
  323. data/lib/openstudio-standards/standards/necb/ECMS/data/chillers.json +44 -0
  324. data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +225 -0
  325. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +2 -2
  326. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +193 -73
  327. data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +1 -1
  328. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +10 -4
  329. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +7 -7
  330. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +4 -5
  331. data/lib/openstudio-standards/standards/necb/NECB2011/data/chiller_types.json +32 -0
  332. data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +1 -1
  333. data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +36 -0
  334. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +7 -7
  335. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernEducation.osm +47587 -0
  336. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernHealthCare.osm +49764 -0
  337. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Warehouse.osm +283 -297
  338. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_type_unit_definitions.txt +2 -1
  339. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +447 -223
  340. data/lib/openstudio-standards/standards/necb/NECB2011/data/standards_data.rb +3 -3
  341. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +1 -1
  342. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +49 -27
  343. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +400 -202
  344. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -4
  345. data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +637 -318
  346. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +18 -1
  347. data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +3 -3
  348. data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +637 -318
  349. data/lib/openstudio-standards/standards/necb/NECB2017/hvac_systems.rb +1 -1
  350. data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +3 -3
  351. data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +1 -1
  352. data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +615 -307
  353. data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +4 -4
  354. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +10 -5
  355. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +1 -1
  356. data/lib/openstudio-standards/utilities/assertion.rb +128 -0
  357. data/lib/openstudio-standards/utilities/logging.rb +2 -3
  358. data/lib/openstudio-standards/utilities/object_info.rb +39 -18
  359. data/lib/openstudio-standards/utilities/schedule_translator.rb +8 -6
  360. data/lib/openstudio-standards/utilities/simulation.rb +24 -11
  361. data/lib/openstudio-standards/utilities/sqlfile.rb +10 -5
  362. data/lib/openstudio-standards/version.rb +1 -1
  363. data/lib/openstudio-standards/weather/Weather.Model.rb +8 -9
  364. data/lib/openstudio-standards/weather/Weather.stat_file.rb +3 -3
  365. data/lib/openstudio-standards/weather/information.rb +35 -0
  366. data/lib/openstudio-standards.rb +69 -5
  367. metadata +54 -18
  368. data/License.txt +0 -65
  369. data/data/standards/OpenStudio_Standards-deer-ALL-comstock(space_types).xlsx +0 -0
  370. data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVAC.rb +0 -59
  371. data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingWater.rb +0 -13
  372. data/lib/openstudio-standards/hvac_sizing/Siz.HVACComponent.rb +0 -36
  373. data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +0 -898
  374. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +0 -126
  375. data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +0 -356
  376. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +0 -35
  377. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +0 -110
  378. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +0 -5
@@ -6,7 +6,7 @@ class Standard
6
6
  # Hard-size the resulting min OA into the sizing:system object.
7
7
  #
8
8
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
9
- # return [Bool] returns true if successful, false if not
9
+ # return [Boolean] returns true if successful, false if not
10
10
  # @todo move building-type-specific code to Prototype classes
11
11
  def air_loop_hvac_apply_multizone_vav_outdoor_air_sizing(air_loop_hvac)
12
12
  # First time adjustment:
@@ -25,7 +25,7 @@ class Standard
25
25
  #
26
26
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
27
27
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
28
- # @return [Bool] returns true if successful, false if not
28
+ # @return [Boolean] returns true if successful, false if not
29
29
  # @todo optimum start
30
30
  # @todo night damper shutoff
31
31
  # @todo nightcycle control
@@ -190,7 +190,7 @@ class Standard
190
190
  #
191
191
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
192
192
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
193
- # @return [Bool] returns true if successful, false if not
193
+ # @return [Boolean] returns true if successful, false if not
194
194
  def air_loop_hvac_apply_prm_baseline_controls(air_loop_hvac, climate_zone)
195
195
  # Economizers
196
196
  if air_loop_hvac_prm_baseline_economizer_required?(air_loop_hvac, climate_zone)
@@ -233,7 +233,7 @@ class Standard
233
233
  # Defaults to 90.1-2004 logic, which requires optimum start if > 10,000 cfm
234
234
  #
235
235
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
236
- # @return [Bool] returns true if required, false if not
236
+ # @return [Boolean] returns true if required, false if not
237
237
  def air_loop_hvac_optimum_start_required?(air_loop_hvac)
238
238
  opt_start_required = false
239
239
 
@@ -268,7 +268,7 @@ class Standard
268
268
  # Adds optimum start control to the airloop.
269
269
  #
270
270
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
271
- # @return [Bool] returns true if successful, false if not
271
+ # @return [Boolean] returns true if successful, false if not
272
272
  def air_loop_hvac_enable_optimum_start(air_loop_hvac)
273
273
  # Get the heating and cooling setpoint schedules
274
274
  # for all zones on this airloop.
@@ -374,7 +374,7 @@ class Standard
374
374
  end
375
375
 
376
376
  # Set default fan curve to be VSD with static pressure reset
377
- # @return [string] name of appropriate curve for this code version
377
+ # @return [String name of appropriate curve for this code version
378
378
  def air_loop_hvac_set_vsd_curve_type
379
379
  return 'Multi Zone VAV with VSD and SP Setpoint Reset'
380
380
  end
@@ -387,7 +387,7 @@ class Standard
387
387
  # if the proposed model had multiple fans (supply, return, exhaust, etc.)
388
388
  #
389
389
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
390
- # return [Bool] true if successful, false if not
390
+ # return [Boolean] true if successful, false if not
391
391
  def air_loop_hvac_apply_prm_baseline_fan_power(air_loop_hvac)
392
392
  # Main AHU fans
393
393
 
@@ -625,7 +625,7 @@ class Standard
625
625
  # with or without the fans inside of fan powered terminals.
626
626
  #
627
627
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
628
- # @param include_terminal_fans [Bool] if true, power from fan powered terminals will be included
628
+ # @param include_terminal_fans [Boolean] if true, power from fan powered terminals will be included
629
629
  # @return [Double] total brake horsepower of the fans on the system, in units of horsepower
630
630
  def air_loop_hvac_system_fan_brake_horsepower(air_loop_hvac, include_terminal_fans = true)
631
631
  # @todo get the template from the parent model itself?
@@ -668,7 +668,7 @@ class Standard
668
668
  # the system hitting the baseline allowable fan power
669
669
  #
670
670
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
671
- # @return [Bool] returns true if successful, false if not
671
+ # @return [Boolean] returns true if successful, false if not
672
672
  def air_loop_hvac_apply_baseline_fan_pressure_rise(air_loop_hvac)
673
673
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "#{air_loop_hvac.name}-Setting #{template} baseline fan power.")
674
674
 
@@ -784,6 +784,10 @@ class Standard
784
784
  # CoilCoolingWater
785
785
  elsif sc.to_CoilCoolingWater.is_initialized
786
786
  coil = sc.to_CoilCoolingWater.get
787
+ # error if the design coil capacity method isn't available
788
+ if coil.model.version < OpenStudio::VersionString.new('3.6.0')
789
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required CoilCoolingWater method .autosizedDesignCoilLoad is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
790
+ end
787
791
  if coil.autosizedDesignCoilLoad.is_initialized
788
792
  # @todo Change to pull water coil nominal capacity instead of design load
789
793
  total_cooling_capacity_w += coil.autosizedDesignCoilLoad.get
@@ -827,6 +831,10 @@ class Standard
827
831
  # CoilCoolingWater
828
832
  elsif clg_coil.to_CoilCoolingWater.is_initialized
829
833
  coil = clg_coil.to_CoilCoolingWater.get
834
+ # error if the design coil capacity method isn't available
835
+ if coil.model.version < OpenStudio::VersionString.new('3.6.0')
836
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required CoilCoolingWater method .autosizedDesignCoilLoad is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
837
+ end
830
838
  if coil.autosizedDesignCoilLoad.is_initialized
831
839
  # @todo Change to pull water coil nominal capacity instead of design load
832
840
  total_cooling_capacity_w += coil.autosizedDesignCoilLoad.get
@@ -871,6 +879,10 @@ class Standard
871
879
  # CoilCoolingWater
872
880
  elsif clg_coil.to_CoilCoolingWater.is_initialized
873
881
  coil = clg_coil.to_CoilCoolingWater.get
882
+ # error if the design coil capacity method isn't available
883
+ if coil.model.version < OpenStudio::VersionString.new('3.6.0')
884
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required CoilCoolingWater method .autosizedDesignCoilLoad is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
885
+ end
874
886
  if coil.autosizedDesignCoilLoad.is_initialized
875
887
  # @todo Change to pull water coil nominal capacity instead of design load
876
888
  total_cooling_capacity_w += coil.autosizedDesignCoilLoad.get
@@ -937,7 +949,7 @@ class Standard
937
949
  #
938
950
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
939
951
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
940
- # @return [Bool] returns true if an economizer is required, false if not
952
+ # @return [Boolean] returns true if an economizer is required, false if not
941
953
  def air_loop_hvac_economizer_required?(air_loop_hvac, climate_zone)
942
954
  economizer_required = false
943
955
 
@@ -1013,7 +1025,7 @@ class Standard
1013
1025
  #
1014
1026
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1015
1027
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1016
- # @return [Bool] returns true if successful, false if not
1028
+ # @return [Boolean] returns true if successful, false if not
1017
1029
  def air_loop_hvac_apply_economizer_limits(air_loop_hvac, climate_zone)
1018
1030
  # EnergyPlus economizer types
1019
1031
  # 'NoEconomizer'
@@ -1060,6 +1072,12 @@ class Standard
1060
1072
  oa_control.setEconomizerMaximumLimitDryBulbTemperature(drybulb_limit_c)
1061
1073
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Economizer type = #{economizer_type}, dry bulb limit = #{drybulb_limit_f}F")
1062
1074
  end
1075
+ # Some templates include fixed enthalpy limits in addition to fixed dry bulb limits
1076
+ if enthalpy_limit_btu_per_lb
1077
+ enthalpy_limit_j_per_kg = OpenStudio.convert(enthalpy_limit_btu_per_lb, 'Btu/lb', 'J/kg').get
1078
+ oa_control.setEconomizerMaximumLimitEnthalpy(enthalpy_limit_j_per_kg)
1079
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: additional economizer enthalpy limit = #{enthalpy_limit_btu_per_lb}Btu/lb")
1080
+ end
1063
1081
  when 'FixedEnthalpy'
1064
1082
  if enthalpy_limit_btu_per_lb
1065
1083
  enthalpy_limit_j_per_kg = OpenStudio.convert(enthalpy_limit_btu_per_lb, 'Btu/lb', 'J/kg').get
@@ -1123,7 +1141,7 @@ class Standard
1123
1141
  #
1124
1142
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1125
1143
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1126
- # @return [Bool] returns true if successful, false if not
1144
+ # @return [Boolean] returns true if successful, false if not
1127
1145
  def air_loop_hvac_apply_economizer_integration(air_loop_hvac, climate_zone)
1128
1146
  # Determine if an integrated economizer is required
1129
1147
  integrated_economizer_required = air_loop_hvac_integrated_economizer_required?(air_loop_hvac, climate_zone)
@@ -1158,7 +1176,7 @@ class Standard
1158
1176
  # Determine if the airloop includes hydronic cooling coils
1159
1177
  #
1160
1178
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1161
- # @return [Bool] returns true if hydronic cooling coils are included on the airloop
1179
+ # @return [Boolean] returns true if hydronic cooling coils are included on the airloop
1162
1180
  def air_loop_hvac_include_hydronic_cooling_coil?(air_loop_hvac)
1163
1181
  air_loop_hvac.supplyComponents.each do |comp|
1164
1182
  return true if comp.to_CoilCoolingWater.is_initialized
@@ -1168,7 +1186,7 @@ class Standard
1168
1186
 
1169
1187
  # Determine if the airloop includes cooling coils
1170
1188
  #
1171
- # @return [Bool] returns true if cooling coils are included on the airloop
1189
+ # @return [Boolean] returns true if cooling coils are included on the airloop
1172
1190
  def air_loop_hvac_include_cooling_coil?(air_loop_hvac)
1173
1191
  air_loop_hvac.supplyComponents.each do |comp|
1174
1192
  return true if comp.to_CoilCoolingWater.is_initialized
@@ -1214,7 +1232,7 @@ class Standard
1214
1232
 
1215
1233
  # Determine if the airloop includes evaporative coolers
1216
1234
  #
1217
- # @return [Bool] returns true if evaporative coolers are included on the airloop
1235
+ # @return [Boolean] returns true if evaporative coolers are included on the airloop
1218
1236
  def air_loop_hvac_include_evaporative_cooler?(air_loop_hvac)
1219
1237
  air_loop_hvac.supplyComponents.each do |comp|
1220
1238
  return true if comp.to_EvaporativeCoolerDirectResearchSpecial.is_initialized
@@ -1225,7 +1243,7 @@ class Standard
1225
1243
 
1226
1244
  # Determine if the airloop includes an air-economizer
1227
1245
  #
1228
- # @return [Bool] returns true if the airloop has an air-economizer
1246
+ # @return [Boolean] returns true if the airloop has an air-economizer
1229
1247
  def air_loop_hvac_include_economizer?(air_loop_hvac)
1230
1248
  return false unless air_loop_hvac.airLoopHVACOutdoorAirSystem.is_initialized
1231
1249
 
@@ -1245,7 +1263,7 @@ class Standard
1245
1263
  # Determine if the airloop includes WSHP cooling coils
1246
1264
  #
1247
1265
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1248
- # @return [Bool] returns true if WSHP cooling coils are included on the airloop
1266
+ # @return [Boolean] returns true if WSHP cooling coils are included on the airloop
1249
1267
  def air_loop_hvac_include_wshp?(air_loop_hvac)
1250
1268
  air_loop_hvac.supplyComponents.each do |comp|
1251
1269
  return true if comp.to_CoilCoolingWaterToAirHeatPumpEquationFit.is_initialized
@@ -1261,7 +1279,7 @@ class Standard
1261
1279
 
1262
1280
  # Determine if the air loop includes a unitary system
1263
1281
  #
1264
- # @return [Bool] returns true if a unitary system is included on the air loop
1282
+ # @return [Boolean] returns true if a unitary system is included on the air loop
1265
1283
  def air_loop_hvac_include_unitary_system?(air_loop_hvac)
1266
1284
  air_loop_hvac.supplyComponents.each do |comp|
1267
1285
  return true if comp.to_AirLoopHVACUnitarySystem.is_initialized
@@ -1275,7 +1293,7 @@ class Standard
1275
1293
  #
1276
1294
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1277
1295
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1278
- # @return [Bool] returns true if required, false if not
1296
+ # @return [Boolean] returns true if required, false if not
1279
1297
  def air_loop_hvac_integrated_economizer_required?(air_loop_hvac, climate_zone)
1280
1298
  # Determine if it is a VAV system
1281
1299
  is_vav = air_loop_hvac_vav_system?(air_loop_hvac)
@@ -1353,7 +1371,7 @@ class Standard
1353
1371
  #
1354
1372
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1355
1373
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1356
- # @return [Bool] returns true if required, false if not
1374
+ # @return [Boolean] returns true if required, false if not
1357
1375
  def air_loop_hvac_prm_baseline_economizer_required?(air_loop_hvac, climate_zone)
1358
1376
  economizer_required = false
1359
1377
 
@@ -1415,7 +1433,7 @@ class Standard
1415
1433
  #
1416
1434
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1417
1435
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1418
- # @return [Bool] returns true if successful, false if not
1436
+ # @return [Boolean] returns true if successful, false if not
1419
1437
  def air_loop_hvac_apply_prm_baseline_economizer(air_loop_hvac, climate_zone)
1420
1438
  # EnergyPlus economizer types
1421
1439
  # 'NoEconomizer'
@@ -1535,7 +1553,7 @@ class Standard
1535
1553
  #
1536
1554
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1537
1555
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1538
- # @return [Bool] returns true if allowable, if the system has no economizer or no OA system
1556
+ # @return [Boolean] returns true if allowable, if the system has no economizer or no OA system
1539
1557
  # Returns false if the economizer type is not allowable.
1540
1558
  def air_loop_hvac_economizer_type_allowable?(air_loop_hvac, climate_zone)
1541
1559
  # EnergyPlus economizer types
@@ -1620,7 +1638,7 @@ class Standard
1620
1638
  #
1621
1639
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1622
1640
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1623
- # @return [Bool] returns true if required, false if not
1641
+ # @return [Boolean] returns true if required, false if not
1624
1642
  # @todo Add exception logic for systems serving parking garage, warehouse, or multifamily
1625
1643
  def air_loop_hvac_energy_recovery_ventilator_required?(air_loop_hvac, climate_zone)
1626
1644
  # ERV Not Applicable for AHUs that serve
@@ -1780,7 +1798,7 @@ class Standard
1780
1798
  #
1781
1799
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1782
1800
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1783
- # @return [Bool] returns true if required, false if not
1801
+ # @return [Boolean] returns true if required, false if not
1784
1802
  # @todo Add exception logic for systems serving parking garage, warehouse, or multifamily
1785
1803
  def air_loop_hvac_apply_energy_recovery_ventilator(air_loop_hvac, climate_zone)
1786
1804
  # Get the OA system
@@ -1892,7 +1910,7 @@ class Standard
1892
1910
  #
1893
1911
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1894
1912
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1895
- # @return [Bool] returns true if required, false if not
1913
+ # @return [Boolean] returns true if required, false if not
1896
1914
  # @todo Add exception logic for systems with AIA healthcare ventilation requirements dual duct systems
1897
1915
  def air_loop_hvac_multizone_vav_optimization_required?(air_loop_hvac, climate_zone)
1898
1916
  multizone_opt_required = false
@@ -1903,7 +1921,7 @@ class Standard
1903
1921
  # in the Controller:MechanicalVentilation object to 'VentilationRateProcedure'
1904
1922
  #
1905
1923
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1906
- # @return [Bool] returns true if required, false if not
1924
+ # @return [Boolean] returns true if required, false if not
1907
1925
  def air_loop_hvac_enable_multizone_vav_optimization(air_loop_hvac)
1908
1926
  # Enable multizone vav optimization
1909
1927
  # at each timestep.
@@ -1928,7 +1946,7 @@ class Standard
1928
1946
  # in the Controller:MechanicalVentilation object to 'ZoneSum'
1929
1947
  #
1930
1948
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1931
- # @return [Bool] returns true if required, false if not
1949
+ # @return [Boolean] returns true if required, false if not
1932
1950
  def air_loop_hvac_disable_multizone_vav_optimization(air_loop_hvac)
1933
1951
  # Disable multizone vav optimization
1934
1952
  # at each timestep.
@@ -1957,9 +1975,9 @@ class Standard
1957
1975
  # Set the minimum VAV damper positions.
1958
1976
  #
1959
1977
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1960
- # @param has_ddc [Bool] if true, will assume that there is DDC control of vav terminals.
1978
+ # @param has_ddc [Boolean] if true, will assume that there is DDC control of vav terminals.
1961
1979
  # If false, assumes otherwise.
1962
- # @return [Bool] returns true if successful, false if not
1980
+ # @return [Boolean] returns true if successful, false if not
1963
1981
  def air_loop_hvac_apply_minimum_vav_damper_positions(air_loop_hvac, has_ddc = true)
1964
1982
  air_loop_hvac.thermalZones.each do |zone|
1965
1983
  zone.equipment.each do |equip|
@@ -1978,7 +1996,7 @@ class Standard
1978
1996
  # system outdoor air flow
1979
1997
  #
1980
1998
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
1981
- # @return [Bool] returns true if required, false if not
1999
+ # @return [Boolean] returns true if required, false if not
1982
2000
  # @todo Add exception logic for systems serving parking garage, warehouse, or multifamily
1983
2001
  def air_loop_hvac_adjust_minimum_vav_damper_positions(air_loop_hvac)
1984
2002
  # Do not apply the adjustment to some of the system in
@@ -2027,7 +2045,13 @@ class Standard
2027
2045
  num_zones_adj = 0
2028
2046
 
2029
2047
  # Retrieve the sum of the zone minimum primary airflow
2030
- vpz_min_sum = air_loop_hvac.autosizeSumMinimumHeatingAirFlowRates
2048
+ if air_loop_hvac.model.version < OpenStudio::VersionString.new('3.6.0')
2049
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required AirLoopHVAC method .autosizedSumMinimumHeatingAirFlowRates is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
2050
+ elsif air_loop_hvac.autosizedSumMinimumHeatingAirFlowRates.is_initialized
2051
+ vpz_min_sum = air_loop_hvac.autosizedSumMinimumHeatingAirFlowRates.get
2052
+ else
2053
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', "autosizedSumMinimumHeatingAirFlowRates is not available for air loop #{air_loop_hvac}.")
2054
+ end
2031
2055
 
2032
2056
  air_loop_hvac.thermalZones.sort.each do |zone|
2033
2057
  # Breathing zone airflow rate
@@ -2043,6 +2067,12 @@ class Standard
2043
2067
  # max of heating and cooling
2044
2068
  # design air flow rates
2045
2069
  v_pz = 0.0
2070
+
2071
+ # error if zone autosized methods are not available
2072
+ if air_loop_hvac.model.version < OpenStudio::VersionString.new('3.6.0')
2073
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required ThermalZone method .autosizedCoolingDesignAirFlowRate and .autosizedHeatingDesignAirFlowRate are not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
2074
+ end
2075
+
2046
2076
  clg_dsn_flow = zone.autosizedCoolingDesignAirFlowRate
2047
2077
  if clg_dsn_flow.is_initialized
2048
2078
  clg_dsn_flow = clg_dsn_flow.get
@@ -2174,7 +2204,17 @@ class Standard
2174
2204
  # zone airflow are lower than the calculated system
2175
2205
  # outdoor air intake
2176
2206
  if v_ot_adj > vpz_min_sum && v_ot_adj > 0
2177
- mdp_adj = [v_ot_adj / air_loop_hvac.autosizeSumAirTerminalMaxAirFlowRate, 1].min
2207
+
2208
+ # Retrieve the sum of the zone maximum air flow rates
2209
+ if air_loop_hvac.model.version < OpenStudio::VersionString.new('3.6.0')
2210
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required AirLoopHVAC method .autosizedSumAirTerminalMaxAirFlowRate is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
2211
+ elsif air_loop_hvac.autosizedSumAirTerminalMaxAirFlowRate.is_initialized
2212
+ v_max = air_loop_hvac.autosizedSumAirTerminalMaxAirFlowRate.get
2213
+ else
2214
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', "autosizedSumAirTerminalMaxAirFlowRate is not available for air loop #{air_loop_hvac}.")
2215
+ end
2216
+
2217
+ mdp_adj = [v_ot_adj / v_max, 1].min
2178
2218
  air_loop_hvac.thermalZones.sort.each do |zone|
2179
2219
  air_loop_hvac_set_minimum_damper_position(zone, mdp_adj)
2180
2220
  end
@@ -2200,7 +2240,7 @@ class Standard
2200
2240
  #
2201
2241
  # @param zone [OpenStudio::Model::ThermalZone] thermal zone
2202
2242
  # @param mdp [Double] minimum damper position
2203
- # @return [Bool] returns true if successful, false if not
2243
+ # @return [Boolean] returns true if successful, false if not
2204
2244
  def air_loop_hvac_set_minimum_damper_position(zone, mdp)
2205
2245
  zone.equipment.each do |equip|
2206
2246
  if equip.to_AirTerminalSingleDuctVAVHeatAndCoolNoReheat.is_initialized
@@ -2229,7 +2269,7 @@ class Standard
2229
2269
  # the results of the current climate zone
2230
2270
  #
2231
2271
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2232
- # @return [Bool] returns true if successful, false if not
2272
+ # @return [Boolean] returns true if successful, false if not
2233
2273
  def air_loop_hvac_adjust_minimum_vav_damper_positions_outpatient(air_loop_hvac)
2234
2274
  air_loop_hvac.model.getSpaces.sort.each do |space|
2235
2275
  zone = space.thermalZone.get
@@ -2267,7 +2307,7 @@ class Standard
2267
2307
  #
2268
2308
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2269
2309
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
2270
- # @return [Bool] returns true if required, false if not
2310
+ # @return [Boolean] returns true if required, false if not
2271
2311
  # @todo Add exception logic for systems that serve multifamily, parking garage, warehouse
2272
2312
  def air_loop_hvac_demand_control_ventilation_required?(air_loop_hvac, climate_zone)
2273
2313
  dcv_required = false
@@ -2362,7 +2402,7 @@ class Standard
2362
2402
  # when an energy recovery device is present. Defaults to true.
2363
2403
  #
2364
2404
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2365
- # @return [Bool] returns true if required, false if not
2405
+ # @return [Boolean] returns true if required, false if not
2366
2406
  def air_loop_hvac_dcv_required_when_erv(air_loop_hvac)
2367
2407
  dcv_required_when_erv_present = false
2368
2408
  return dcv_required_when_erv_present
@@ -2374,7 +2414,7 @@ class Standard
2374
2414
  #
2375
2415
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2376
2416
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
2377
- # @return [Bool] returns true if required, false if not
2417
+ # @return [Boolean] returns true if required, false if not
2378
2418
  def air_loop_hvac_enable_demand_control_ventilation(air_loop_hvac, climate_zone)
2379
2419
  # Get the OA intake
2380
2420
  controller_oa = nil
@@ -2407,7 +2447,7 @@ class Standard
2407
2447
  #
2408
2448
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2409
2449
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
2410
- # @return [Bool] returns true if required, false if not
2450
+ # @return [Boolean] returns true if required, false if not
2411
2451
  def air_loop_hvac_supply_air_temperature_reset_required?(air_loop_hvac, climate_zone)
2412
2452
  is_sat_reset_required = false
2413
2453
  return is_sat_reset_required
@@ -2416,7 +2456,7 @@ class Standard
2416
2456
  # Enable supply air temperature (SAT) reset based on the cooling demand of the warmest zone.
2417
2457
  #
2418
2458
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2419
- # @return [Bool] returns true if successful, false if not
2459
+ # @return [Boolean] returns true if successful, false if not
2420
2460
  def air_loop_hvac_enable_supply_air_temperature_reset_warmest_zone(air_loop_hvac)
2421
2461
  # Get the current setpoint and calculate
2422
2462
  # the new setpoint.
@@ -2463,7 +2503,7 @@ class Standard
2463
2503
  # and reset linearly when outdoor air is between 50F and 70F.
2464
2504
  #
2465
2505
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2466
- # @return [Bool] returns true if successful, false if not
2506
+ # @return [Boolean] returns true if successful, false if not
2467
2507
  def air_loop_hvac_enable_supply_air_temperature_reset_outdoor_temperature(air_loop_hvac)
2468
2508
  # for AHU1 in Outpatient, SAT is 52F constant, no reset
2469
2509
  return true if air_loop_hvac.name.get == 'PVAV Outpatient F1'
@@ -2506,7 +2546,7 @@ class Standard
2506
2546
  # Determine if the system has an economizer
2507
2547
  #
2508
2548
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2509
- # @return [Bool] returns true if required, false if not
2549
+ # @return [Boolean] returns true if required, false if not
2510
2550
  def air_loop_hvac_economizer?(air_loop_hvac)
2511
2551
  # Get the OA system and OA controller
2512
2552
  oa_sys = air_loop_hvac.airLoopHVACOutdoorAirSystem
@@ -2525,7 +2565,7 @@ class Standard
2525
2565
  # Determine if the system is a VAV system based on the fan which may be inside of a unitary system.
2526
2566
  #
2527
2567
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2528
- # @return [Bool] returns true if vav system, false if not
2568
+ # @return [Boolean] returns true if vav system, false if not
2529
2569
  def air_loop_hvac_vav_system?(air_loop_hvac)
2530
2570
  is_vav = false
2531
2571
  air_loop_hvac.supplyComponents.reverse.each do |comp|
@@ -2552,7 +2592,7 @@ class Standard
2552
2592
  # Determine if the system is a multizone VAV system
2553
2593
  #
2554
2594
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2555
- # @return [Bool] returns true if multizone vav, false if not
2595
+ # @return [Boolean] returns true if multizone vav, false if not
2556
2596
  def air_loop_hvac_multizone_vav_system?(air_loop_hvac)
2557
2597
  multizone_vav_system = false
2558
2598
 
@@ -2576,7 +2616,7 @@ class Standard
2576
2616
  # Determine if the system has terminal reheat
2577
2617
  #
2578
2618
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2579
- # @return [Bool] returns true if has one or more reheat terminals, false if it doesn't
2619
+ # @return [Boolean] returns true if has one or more reheat terminals, false if it doesn't
2580
2620
  def air_loop_hvac_terminal_reheat?(air_loop_hvac)
2581
2621
  has_term_rht = false
2582
2622
  air_loop_hvac.demandComponents.each do |sc|
@@ -2596,7 +2636,7 @@ class Standard
2596
2636
  # Determine if the system has energy recovery already
2597
2637
  #
2598
2638
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2599
- # @return [Bool] returns true if an ERV is present, false if not
2639
+ # @return [Boolean] returns true if an ERV is present, false if not
2600
2640
  def air_loop_hvac_energy_recovery?(air_loop_hvac)
2601
2641
  has_erv = false
2602
2642
 
@@ -2618,7 +2658,7 @@ class Standard
2618
2658
  # Determine if the air loop is a unitary system
2619
2659
  #
2620
2660
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2621
- # @return [Bool] returns true if a unitary system is present, false if not
2661
+ # @return [Boolean] returns true if a unitary system is present, false if not
2622
2662
  def air_loop_hvac_unitary_system?(air_loop_hvac)
2623
2663
  is_unitary_system = false
2624
2664
  air_loop_hvac.supplyComponents.each do |component|
@@ -2634,7 +2674,7 @@ class Standard
2634
2674
  # Set the VAV damper control to single maximum or dual maximum control depending on the standard.
2635
2675
  #
2636
2676
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2637
- # @return [Bool] returns true if successful, false if not
2677
+ # @return [Boolean] returns true if successful, false if not
2638
2678
  # @todo see if this impacts the sizing run.
2639
2679
  def air_loop_hvac_apply_vav_damper_action(air_loop_hvac)
2640
2680
  damper_action = air_loop_hvac_vav_damper_action(air_loop_hvac)
@@ -2664,11 +2704,11 @@ class Standard
2664
2704
  if term.reheatCoil.to_CoilHeatingWater.is_initialized
2665
2705
  term.setDamperHeatingAction(damper_action_eplus)
2666
2706
  control_type_set = true
2707
+ term.setMaximumFlowFractionDuringReheat(0.5)
2667
2708
  end
2668
2709
  else
2669
2710
  term.setDamperHeatingAction(damper_action_eplus)
2670
2711
  control_type_set = true
2671
- term.setMaximumFlowFractionDuringReheat(0.5)
2672
2712
  end
2673
2713
  end
2674
2714
  end
@@ -2694,7 +2734,7 @@ class Standard
2694
2734
  #
2695
2735
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2696
2736
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
2697
- # @return [Bool] returns true if required, false if not
2737
+ # @return [Boolean] returns true if required, false if not
2698
2738
  def air_loop_hvac_motorized_oa_damper_required?(air_loop_hvac, climate_zone)
2699
2739
  motorized_oa_damper_required = false
2700
2740
 
@@ -2789,7 +2829,7 @@ class Standard
2789
2829
  # @param min_occ_pct [Double] the fractional value below which the system will be considered unoccupied.
2790
2830
  # @param occ_sch [OpenStudio::Model::Schedule] the occupancy schedule.
2791
2831
  # If not supplied, one will be created based on the supplied occupancy threshold.
2792
- # @return [Bool] returns true if successful, false if not
2832
+ # @return [Boolean] returns true if successful, false if not
2793
2833
  def air_loop_hvac_add_motorized_oa_damper(air_loop_hvac, min_occ_pct = 0.05, occ_sch = nil)
2794
2834
  # Get the OA system and OA controller
2795
2835
  oa_sys = air_loop_hvac.airLoopHVACOutdoorAirSystem
@@ -2832,7 +2872,7 @@ class Standard
2832
2872
  # increases building loads unnecessarily during unoccupied hours.
2833
2873
  #
2834
2874
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2835
- # @return [Bool] returns true if successful, false if not
2875
+ # @return [Boolean] returns true if successful, false if not
2836
2876
  def air_loop_hvac_remove_motorized_oa_damper(air_loop_hvac)
2837
2877
  # Get the OA system and OA controller
2838
2878
  oa_sys = air_loop_hvac.airLoopHVACOutdoorAirSystem
@@ -2870,7 +2910,7 @@ class Standard
2870
2910
  #
2871
2911
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
2872
2912
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
2873
- # @return [Bool] returns true if successful, false if not
2913
+ # @return [Boolean] returns true if successful, false if not
2874
2914
  def air_loop_hvac_apply_single_zone_controls(air_loop_hvac, climate_zone)
2875
2915
  # These controls only apply to systems with DX cooling
2876
2916
  unless air_loop_hvac_dx_cooling?(air_loop_hvac)
@@ -3242,8 +3282,8 @@ class Standard
3242
3282
  # be added to the OpenStudio data model.
3243
3283
  #
3244
3284
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
3245
- # @param has_ddc [Bool] whether or not the system has DDC control over VAV terminals.
3246
- # return [Bool] returns true if static pressure reset is required, false if not
3285
+ # @param has_ddc [Boolean] whether or not the system has DDC control over VAV terminals.
3286
+ # return [Boolean] returns true if static pressure reset is required, false if not
3247
3287
  def air_loop_hvac_static_pressure_reset_required?(air_loop_hvac, has_ddc)
3248
3288
  sp_reset_required = false
3249
3289
 
@@ -3261,7 +3301,7 @@ class Standard
3261
3301
  # Per ASHRAE 90.1 section 6.4.3.3, HVAC systems are required to have off-hour controls
3262
3302
  #
3263
3303
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
3264
- # @return [Bool] returns true if required, false if not
3304
+ # @return [Boolean] returns true if required, false if not
3265
3305
  def air_loop_hvac_unoccupied_fan_shutoff_required?(air_loop_hvac)
3266
3306
  shutoff_required = true
3267
3307
 
@@ -3305,7 +3345,7 @@ class Standard
3305
3345
  #
3306
3346
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
3307
3347
  # @param min_occ_pct [Double] the fractional value below which the system will be considered unoccupied.
3308
- # @return [Bool] returns true if successful, false if not
3348
+ # @return [Boolean] returns true if successful, false if not
3309
3349
  def air_loop_hvac_enable_unoccupied_fan_shutoff(air_loop_hvac, min_occ_pct = 0.05)
3310
3350
  # Set the system to night cycle
3311
3351
  # The fan of a parallel PIU terminal are set to only cycle during heating operation
@@ -3510,7 +3550,7 @@ class Standard
3510
3550
  #
3511
3551
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
3512
3552
  # @param max_reheat_c [Double] the maximum reheat temperature, in degrees Celsius
3513
- # @return [Bool] returns true if successful, false if not
3553
+ # @return [Boolean] returns true if successful, false if not
3514
3554
  def air_loop_hvac_apply_maximum_reheat_temperature(air_loop_hvac, max_reheat_c)
3515
3555
  air_loop_hvac.demandComponents.each do |sc|
3516
3556
  if sc.to_AirTerminalSingleDuctConstantVolumeReheat.is_initialized
@@ -3538,7 +3578,7 @@ class Standard
3538
3578
  # Set the system sizing properties based on the zone sizing information
3539
3579
  #
3540
3580
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
3541
- # @return [Bool] returns true if successful, false if not
3581
+ # @return [Boolean] returns true if successful, false if not
3542
3582
  def air_loop_hvac_apply_prm_sizing_temperatures(air_loop_hvac)
3543
3583
  # Get the design heating and cooling SAT information
3544
3584
  # for all zones served by the system.
@@ -3610,7 +3650,7 @@ class Standard
3610
3650
  # Determine if this Air Loop uses DX cooling.
3611
3651
  #
3612
3652
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
3613
- # @return [Bool] returns true if uses DX cooling, false if not
3653
+ # @return [Boolean] returns true if uses DX cooling, false if not
3614
3654
  def air_loop_hvac_dx_cooling?(air_loop_hvac)
3615
3655
  dx_clg = false
3616
3656
 
@@ -3658,7 +3698,7 @@ class Standard
3658
3698
  # Determine if this Air Loop uses multi-stage DX cooling.
3659
3699
  #
3660
3700
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
3661
- # @return [Bool] returns true if uses multi-stage DX cooling, false if not
3701
+ # @return [Boolean] returns true if uses multi-stage DX cooling, false if not
3662
3702
  def air_loop_hvac_multi_stage_dx_cooling?(air_loop_hvac)
3663
3703
  dx_clg = false
3664
3704
 
@@ -3701,8 +3741,8 @@ class Standard
3701
3741
 
3702
3742
  # Get return fan power for airloop
3703
3743
  #
3704
- # @param model [OpenStudio::model::AirLoopHVAC] AirLoopHVAC object
3705
- # @return [Float] Fan power
3744
+ # @param air_loop [OpenStudio::Model::AirLoopHVAC] AirLoopHVAC object
3745
+ # @return [Double] Fan power
3706
3746
  def air_loop_hvac_get_return_fan_power(air_loop)
3707
3747
  return_fan_power = 0
3708
3748
 
@@ -3728,8 +3768,8 @@ class Standard
3728
3768
 
3729
3769
  # Get supply fan power for airloop
3730
3770
  #
3731
- # @param model [OpenStudio::model::AirLoopHVAC] AirLoopHVAC object
3732
- # @return [Float] Fan power
3771
+ # @param air_loop [OpenStudio::Model::AirLoopHVAC] AirLoopHVAC object
3772
+ # @return [Double] Fan power
3733
3773
  def air_loop_hvac_get_supply_fan_power(air_loop)
3734
3774
  supply_fan_power = 0
3735
3775
 
@@ -3746,7 +3786,7 @@ class Standard
3746
3786
 
3747
3787
  # Get supply fan for airloop
3748
3788
  #
3749
- # @param model [OpenStudio::model::AirLoopHVAC] AirLoopHVAC object
3789
+ # @param air_loop [OpenStudio::Model::AirLoopHVAC] AirLoopHVAC object
3750
3790
  # @return fan
3751
3791
  def air_loop_hvac_get_supply_fan(air_loop)
3752
3792
  fan = nil
@@ -3786,8 +3826,8 @@ class Standard
3786
3826
 
3787
3827
  # Get relief fan power for airloop
3788
3828
  #
3789
- # @param model [OpenStudio::model::AirLoopHVAC] AirLoopHVAC object
3790
- # @return [Float] Fan power
3829
+ # @param air_loop [OpenStudio::Model::AirLoopHVAC] AirLoopHVAC object
3830
+ # @return [Double] Fan power
3791
3831
  def air_loop_hvac_get_relief_fan_power(air_loop)
3792
3832
  relief_fan_power = 0
3793
3833
 
@@ -3817,8 +3857,8 @@ class Standard
3817
3857
  # by scheduling air terminal dampers (so load can
3818
3858
  # still be met) and cycling unitary system fans
3819
3859
  #
3820
- # @param air_loop_hvac [OpenStudio::model::AirLoopHVAC] OpenStudio AirLoopHVAC object
3821
- # @param standby_mode_space [Array] List of all spaces required to have standby mode controls
3860
+ # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] OpenStudio AirLoopHVAC object
3861
+ # @param standby_mode_spaces [Array<OpenStudio::Model::Space>] List of all spaces required to have standby mode controls
3822
3862
  # @return [Boolean] true if sucessful, false otherwise
3823
3863
  def air_loop_hvac_standby_mode_occupancy_control(air_loop_hvac, standby_mode_spaces)
3824
3864
  return true
@@ -3830,7 +3870,6 @@ class Standard
3830
3870
  # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] HVAC air loop object
3831
3871
  # @param oa_control [OpenStudio::Model::ControllerOutdoorAir] Outdoor air controller object to have this maximum OA fraction schedule
3832
3872
  # @param snc [String] System name
3833
- #
3834
3873
  # @return [OpenStudio::Model::ScheduleRuleset] Generated maximum outdoor air fraction schedule for later use
3835
3874
  def set_maximum_fraction_outdoor_air_schedule(air_loop_hvac, oa_control, snc)
3836
3875
  max_oa_sch_name = "#{snc}maxOASch"
@@ -3839,7 +3878,7 @@ class Standard
3839
3878
  max_oa_sch.defaultDaySchedule.setName("#{max_oa_sch_name}Default")
3840
3879
  max_oa_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0.7)
3841
3880
  oa_control.setMaximumFractionofOutdoorAirSchedule(max_oa_sch)
3842
- max_oa_sch
3881
+ return max_oa_sch
3843
3882
  end
3844
3883
 
3845
3884
  # Checks if zones served by the air loop use zone exhaust fan