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