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
@@ -10,7 +10,7 @@ class Standard
10
10
  # @param type [String] the type of unit to reference for the correct curve set
11
11
  # @param cooling_cop [Double] rated cooling coefficient of performance
12
12
  # @param heating_cop [Double] rated heating coefficient of performance
13
- # @param heat_recovery [Bool] does the unit have heat recovery
13
+ # @param heat_recovery [Boolean] does the unit have heat recovery
14
14
  # @param defrost_strategy [String] type of defrost strategy. options are ReverseCycle or Resistive
15
15
  # @param condenser_type [String] type of condenser
16
16
  # options are AirCooled (default), WaterCooled, and EvaporativelyCooled.
@@ -7,7 +7,7 @@ class Standard
7
7
  #
8
8
  # @param air_terminal_single_duct_vav_reheat [OpenStudio::Model::AirTerminalSingleDuctVAVReheat] the air terminal object
9
9
  # @param zone_oa_per_area [Double] the zone outdoor air per area in m^3/s*m^2
10
- # @return [Bool] returns true if successful, false if not
10
+ # @return [Boolean] returns true if successful, false if not
11
11
  def air_terminal_single_duct_vav_reheat_apply_initial_prototype_damper_position(air_terminal_single_duct_vav_reheat, zone_oa_per_area)
12
12
  min_damper_position = 0.3
13
13
 
@@ -62,22 +62,90 @@ class Standard
62
62
  clg_coil.setCoolingPowerConsumptionCoefficient4(0.141605667000125)
63
63
  clg_coil.setCoolingPowerConsumptionCoefficient5(-0.168727936032429)
64
64
  else
65
- clg_coil.totalCoolingCapacityCurve.setCoefficient1Constant(-4.30266987344639)
66
- clg_coil.totalCoolingCapacityCurve.setCoefficient2w(7.18536990534372)
67
- clg_coil.totalCoolingCapacityCurve.setCoefficient3x(-2.23946714486189)
68
- clg_coil.totalCoolingCapacityCurve.setCoefficient4y(0.139995928440879)
69
- clg_coil.totalCoolingCapacityCurve.setCoefficient5z(0.102660179888915)
70
- clg_coil.sensibleCoolingCapacityCurve.setCoefficient1Constant(6.0019444814887)
71
- clg_coil.sensibleCoolingCapacityCurve.setCoefficient2v(22.6300677244073)
72
- clg_coil.sensibleCoolingCapacityCurve.setCoefficient3w(-26.7960783730934)
73
- clg_coil.sensibleCoolingCapacityCurve.setCoefficient4x(-1.72374720346819)
74
- clg_coil.sensibleCoolingCapacityCurve.setCoefficient5y(0.490644802367817)
75
- clg_coil.sensibleCoolingCapacityCurve.setCoefficient6z(0.0693119353468141)
76
- clg_coil.coolingPowerConsumptionCurve.setCoefficient1Constant(-5.67775976415698)
77
- clg_coil.coolingPowerConsumptionCurve.setCoefficient2w(0.438988156976704)
78
- clg_coil.coolingPowerConsumptionCurve.setCoefficient3x(5.845277342193)
79
- clg_coil.coolingPowerConsumptionCurve.setCoefficient4y(0.141605667000125)
80
- clg_coil.coolingPowerConsumptionCurve.setCoefficient5z(-0.168727936032429)
65
+ if model.getCurveByName('Water to Air Heat Pump Total Cooling Capacity Curve').is_initialized
66
+ total_cooling_capacity_curve = model.getCurveByName('Water to Air Heat Pump Total Cooling Capacity Curve').get
67
+ total_cooling_capacity_curve = total_cooling_capacity_curve.to_CurveQuadLinear.get
68
+ else
69
+ total_cooling_capacity_curve = OpenStudio::Model::CurveQuadLinear.new(model)
70
+ total_cooling_capacity_curve.setName('Water to Air Heat Pump Total Cooling Capacity Curve')
71
+ total_cooling_capacity_curve.setCoefficient1Constant(-4.30266987344639)
72
+ total_cooling_capacity_curve.setCoefficient2w(7.18536990534372)
73
+ total_cooling_capacity_curve.setCoefficient3x(-2.23946714486189)
74
+ total_cooling_capacity_curve.setCoefficient4y(0.139995928440879)
75
+ total_cooling_capacity_curve.setCoefficient5z(0.102660179888915)
76
+ total_cooling_capacity_curve.setMinimumValueofw(-100)
77
+ total_cooling_capacity_curve.setMaximumValueofw(100)
78
+ total_cooling_capacity_curve.setMinimumValueofx(-100)
79
+ total_cooling_capacity_curve.setMaximumValueofx(100)
80
+ total_cooling_capacity_curve.setMinimumValueofy(0)
81
+ total_cooling_capacity_curve.setMaximumValueofy(100)
82
+ total_cooling_capacity_curve.setMinimumValueofz(0)
83
+ total_cooling_capacity_curve.setMaximumValueofz(100)
84
+ end
85
+ clg_coil.setTotalCoolingCapacityCurve(total_cooling_capacity_curve)
86
+
87
+ if model.getCurveByName('Water to Air Heat Pump Sensible Cooling Capacity Curve').is_initialized
88
+ sensible_cooling_capacity_curve = model.getCurveByName('Water to Air Heat Pump Sensible Cooling Capacity Curve').get
89
+ sensible_cooling_capacity_curve = sensible_cooling_capacity_curve.to_CurveQuintLinear.get
90
+ else
91
+ sensible_cooling_capacity_curve = OpenStudio::Model::CurveQuintLinear.new(model)
92
+ sensible_cooling_capacity_curve.setName('Water to Air Heat Pump Sensible Cooling Capacity Curve')
93
+ sensible_cooling_capacity_curve.setCoefficient1Constant(6.0019444814887)
94
+ sensible_cooling_capacity_curve.setCoefficient2v(22.6300677244073)
95
+ sensible_cooling_capacity_curve.setCoefficient3w(-26.7960783730934)
96
+ sensible_cooling_capacity_curve.setCoefficient4x(-1.72374720346819)
97
+ sensible_cooling_capacity_curve.setCoefficient5y(0.490644802367817)
98
+ sensible_cooling_capacity_curve.setCoefficient6z(0.0693119353468141)
99
+ sensible_cooling_capacity_curve.setMinimumValueofw(-100)
100
+ sensible_cooling_capacity_curve.setMaximumValueofw(100)
101
+ sensible_cooling_capacity_curve.setMinimumValueofx(-100)
102
+ sensible_cooling_capacity_curve.setMaximumValueofx(100)
103
+ sensible_cooling_capacity_curve.setMinimumValueofy(0)
104
+ sensible_cooling_capacity_curve.setMaximumValueofy(100)
105
+ sensible_cooling_capacity_curve.setMinimumValueofz(0)
106
+ sensible_cooling_capacity_curve.setMaximumValueofz(100)
107
+ end
108
+ clg_coil.setSensibleCoolingCapacityCurve(sensible_cooling_capacity_curve)
109
+
110
+ if model.getCurveByName('Water to Air Heat Pump Cooling Power Consumption Curve').is_initialized
111
+ cooling_power_consumption_curve = model.getCurveByName('Water to Air Heat Pump Cooling Power Consumption Curve').get
112
+ cooling_power_consumption_curve = cooling_power_consumption_curve.to_CurveQuadLinear.get
113
+ else
114
+ cooling_power_consumption_curve = OpenStudio::Model::CurveQuadLinear.new(model)
115
+ cooling_power_consumption_curve.setName('Water to Air Heat Pump Cooling Power Consumption Curve')
116
+ cooling_power_consumption_curve.setCoefficient1Constant(-5.67775976415698)
117
+ cooling_power_consumption_curve.setCoefficient2w(0.438988156976704)
118
+ cooling_power_consumption_curve.setCoefficient3x(5.845277342193)
119
+ cooling_power_consumption_curve.setCoefficient4y(0.141605667000125)
120
+ cooling_power_consumption_curve.setCoefficient5z(-0.168727936032429)
121
+ cooling_power_consumption_curve.setMinimumValueofw(-100)
122
+ cooling_power_consumption_curve.setMaximumValueofw(100)
123
+ cooling_power_consumption_curve.setMinimumValueofx(-100)
124
+ cooling_power_consumption_curve.setMaximumValueofx(100)
125
+ cooling_power_consumption_curve.setMinimumValueofy(0)
126
+ cooling_power_consumption_curve.setMaximumValueofy(100)
127
+ cooling_power_consumption_curve.setMinimumValueofz(0)
128
+ cooling_power_consumption_curve.setMaximumValueofz(100)
129
+ end
130
+ clg_coil.setCoolingPowerConsumptionCurve(cooling_power_consumption_curve)
131
+ end
132
+
133
+ # part load fraction correlation curve added as a required curve in OS v3.7.0
134
+ if model.version > OpenStudio::VersionString.new('3.6.1')
135
+ if model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').is_initialized
136
+ part_load_correlation_curve = model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').get
137
+ part_load_correlation_curve = part_load_correlation_curve.to_CurveLinear.get
138
+ else
139
+ part_load_correlation_curve = OpenStudio::Model::CurveLinear.new(model)
140
+ part_load_correlation_curve.setName('Water to Air Heat Pump Part Load Fraction Correlation Curve')
141
+ part_load_correlation_curve.setCoefficient1Constant(0.833746458696111)
142
+ part_load_correlation_curve.setCoefficient2x(0.166253541303889)
143
+ part_load_correlation_curve.setMinimumValueofx(0)
144
+ part_load_correlation_curve.setMaximumValueofx(1)
145
+ part_load_correlation_curve.setMinimumCurveOutput(0)
146
+ part_load_correlation_curve.setMaximumCurveOutput(1)
147
+ end
148
+ clg_coil.setPartLoadFractionCorrelationCurve(part_load_correlation_curve)
81
149
  end
82
150
  end
83
151
 
@@ -200,7 +200,7 @@ class Standard
200
200
  # sets defrost curve limits
201
201
  #
202
202
  # @param htg_coil [OpenStudio::Model::CoilHeatingDXSingleSpeed] a DX heating coil
203
- # @return [Bool] returns true if successful, false if not
203
+ # @return [Boolean] returns true if successful, false if not
204
204
  def coil_heating_dx_single_speed_apply_defrost_eir_curve_limits(htg_coil)
205
205
  return false unless htg_coil.defrostEnergyInputRatioFunctionofTemperatureCurve.is_initialized
206
206
 
@@ -61,7 +61,7 @@ class Standard
61
61
  # Defaults to making no changes.
62
62
  #
63
63
  # @param coil_heating_gas [OpenStudio::Model::CoilHeatingGas] a gas heating coil
64
- # @return [Bool] returns true if successful, false if not
64
+ # @return [Boolean] returns true if successful, false if not
65
65
  def coil_heating_gas_apply_prototype_efficiency(coil_heating_gas)
66
66
  # do nothing
67
67
  return true
@@ -56,16 +56,67 @@ class Standard
56
56
  htg_coil.setHeatingPowerConsumptionCoefficient4(-0.177653510577989)
57
57
  htg_coil.setHeatingPowerConsumptionCoefficient5(-0.103079864171839)
58
58
  else
59
- htg_coil.heatingCapacityCurve.setCoefficient1Constant(0.237847462869254)
60
- htg_coil.heatingCapacityCurve.setCoefficient2w(-3.35823796081626)
61
- htg_coil.heatingCapacityCurve.setCoefficient3x(3.80640467406376)
62
- htg_coil.heatingCapacityCurve.setCoefficient4y(0.179200417311554)
63
- htg_coil.heatingCapacityCurve.setCoefficient5z(0.12860719846082)
64
- htg_coil.heatingPowerConsumptionCurve.setCoefficient1Constant(-3.79175529243238)
65
- htg_coil.heatingPowerConsumptionCurve.setCoefficient2w(3.38799239505527)
66
- htg_coil.heatingPowerConsumptionCurve.setCoefficient3x(1.5022612076303)
67
- htg_coil.heatingPowerConsumptionCurve.setCoefficient4y(-0.177653510577989)
68
- htg_coil.heatingPowerConsumptionCurve.setCoefficient5z(-0.103079864171839)
59
+ if model.getCurveByName('Water to Air Heat Pump Heating Capacity Curve').is_initialized
60
+ heating_capacity_curve = model.getCurveByName('Water to Air Heat Pump Heating Capacity Curve').get
61
+ heating_capacity_curve = heating_capacity_curve.to_CurveQuadLinear.get
62
+ else
63
+ heating_capacity_curve = OpenStudio::Model::CurveQuadLinear.new(model)
64
+ heating_capacity_curve.setName('Water to Air Heat Pump Heating Capacity Curve')
65
+ heating_capacity_curve.setCoefficient1Constant(0.237847462869254)
66
+ heating_capacity_curve.setCoefficient2w(-3.35823796081626)
67
+ heating_capacity_curve.setCoefficient3x(3.80640467406376)
68
+ heating_capacity_curve.setCoefficient4y(0.179200417311554)
69
+ heating_capacity_curve.setCoefficient5z(0.12860719846082)
70
+ heating_capacity_curve.setMinimumValueofw(-100)
71
+ heating_capacity_curve.setMaximumValueofw(100)
72
+ heating_capacity_curve.setMinimumValueofx(-100)
73
+ heating_capacity_curve.setMaximumValueofx(100)
74
+ heating_capacity_curve.setMinimumValueofy(0)
75
+ heating_capacity_curve.setMaximumValueofy(100)
76
+ heating_capacity_curve.setMinimumValueofz(0)
77
+ heating_capacity_curve.setMaximumValueofz(100)
78
+ end
79
+ htg_coil.setHeatingCapacityCurve(heating_capacity_curve)
80
+
81
+ if model.getCurveByName('Water to Air Heat Pump Heating Power Consumption Curve').is_initialized
82
+ heating_power_consumption_curve = model.getCurveByName('Water to Air Heat Pump Heating Power Consumption Curve').get
83
+ heating_power_consumption_curve = heating_power_consumption_curve.to_CurveQuadLinear.get
84
+ else
85
+ heating_power_consumption_curve = OpenStudio::Model::CurveQuadLinear.new(model)
86
+ heating_power_consumption_curve.setName('Water to Air Heat Pump Heating Power Consumption Curve')
87
+ heating_power_consumption_curve.setCoefficient1Constant(-3.79175529243238)
88
+ heating_power_consumption_curve.setCoefficient2w(3.38799239505527)
89
+ heating_power_consumption_curve.setCoefficient3x(1.5022612076303)
90
+ heating_power_consumption_curve.setCoefficient4y(-0.177653510577989)
91
+ heating_power_consumption_curve.setCoefficient5z(-0.103079864171839)
92
+ heating_power_consumption_curve.setMinimumValueofw(-100)
93
+ heating_power_consumption_curve.setMaximumValueofw(100)
94
+ heating_power_consumption_curve.setMinimumValueofx(-100)
95
+ heating_power_consumption_curve.setMaximumValueofx(100)
96
+ heating_power_consumption_curve.setMinimumValueofy(0)
97
+ heating_power_consumption_curve.setMaximumValueofy(100)
98
+ heating_power_consumption_curve.setMinimumValueofz(0)
99
+ heating_power_consumption_curve.setMaximumValueofz(100)
100
+ end
101
+ htg_coil.setHeatingPowerConsumptionCurve(heating_power_consumption_curve)
102
+ end
103
+
104
+ # part load fraction correlation curve added as a required curve in OS v3.7.0
105
+ if model.version > OpenStudio::VersionString.new('3.6.1')
106
+ if model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').is_initialized
107
+ part_load_correlation_curve = model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').get
108
+ part_load_correlation_curve = part_load_correlation_curve.to_CurveLinear.get
109
+ else
110
+ part_load_correlation_curve = OpenStudio::Model::CurveLinear.new(model)
111
+ part_load_correlation_curve.setName('Water to Air Heat Pump Part Load Fraction Correlation Curve')
112
+ part_load_correlation_curve.setCoefficient1Constant(0.833746458696111)
113
+ part_load_correlation_curve.setCoefficient2x(0.166253541303889)
114
+ part_load_correlation_curve.setMinimumValueofx(0)
115
+ part_load_correlation_curve.setMaximumValueofx(1)
116
+ part_load_correlation_curve.setMinimumCurveOutput(0)
117
+ part_load_correlation_curve.setMaximumCurveOutput(1)
118
+ end
119
+ htg_coil.setPartLoadFractionCorrelationCurve(part_load_correlation_curve)
69
120
  end
70
121
  end
71
122
 
@@ -4,7 +4,7 @@ class Standard
4
4
  # Sets the convergence tolerance to 0.0001 deltaC for all hot water coils.
5
5
  #
6
6
  # @param controller_water_coil [OpenStudio::Model::ControllerWaterCoil] controller water coil object
7
- # @return [Bool] returns true if successful, false if not
7
+ # @return [Boolean] returns true if successful, false if not
8
8
  # @todo Figure out what the reason for this is, because it seems like a workaround for an E+ bug that was probably addressed long ago.
9
9
  def controller_water_coil_set_convergence_limits(controller_water_coil)
10
10
  controller_action = controller_water_coil.action
@@ -5,7 +5,7 @@ class Standard
5
5
  #
6
6
  # @param condenser_loop [<OpenStudio::Model::PlantLoop>] a condenser loop served by a cooling tower
7
7
  # @param design_wet_bulb_c [Double] the outdoor design wetbulb conditions in degrees Celsius
8
- # @return [Bool] returns true if successful, false if not
8
+ # @return [Boolean] returns true if successful, false if not
9
9
  def prototype_apply_condenser_water_temperatures(condenser_loop,
10
10
  design_wet_bulb_c: nil)
11
11
  sizing_plant = condenser_loop.sizingPlant
@@ -9,7 +9,7 @@ module PrototypeFan
9
9
  #
10
10
  # @param fan [OpenStudio::Model::StraightComponent] fan object of type:
11
11
  # FanConstantVolume, FanOnOff, FanVariableVolume, and FanZoneExhaust
12
- # @return [Bool] returns true if successful, false if not
12
+ # @return [Boolean] returns true if successful, false if not
13
13
  def prototype_fan_apply_prototype_fan_efficiency(fan)
14
14
  # Do not modify dummy exhaust fans
15
15
  return true unless !fan.name.to_s.downcase.include? 'dummy'
@@ -7,7 +7,7 @@ class Standard
7
7
  # and whether the fan lives inside a unit heater, PTAC, etc.
8
8
  #
9
9
  # @param fan_constant_volume [OpenStudio::Model::FanConstantVolume] constant volume fan object
10
- # @return [Bool] returns true if successful, false if not
10
+ # @return [Boolean] returns true if successful, false if not
11
11
  def fan_constant_volume_apply_prototype_fan_pressure_rise(fan_constant_volume)
12
12
  # Don't modify unit heater fans
13
13
  return true if fan_constant_volume.name.to_s.include?('UnitHeater Fan')
@@ -8,7 +8,7 @@ class Standard
8
8
  # and whether the fan lives inside a unit heater, PTAC, etc.
9
9
  #
10
10
  # @param fan_on_off [OpenStudio::Model::FanOnOff] on off fan object
11
- # @return [Bool] returns true if successful, false if not
11
+ # @return [Boolean] returns true if successful, false if not
12
12
  def fan_on_off_apply_prototype_fan_pressure_rise(fan_on_off)
13
13
  # Get the max flow rate from the fan.
14
14
  maximum_flow_rate_m3_per_s = nil
@@ -8,7 +8,7 @@ class Standard
8
8
  # and whether the fan lives inside a unit heater, PTAC, etc.
9
9
  #
10
10
  # @param fan_variable_volume [OpenStudio::Model::FanVariableVolume] variable volume fan object
11
- # @return [Bool] returns true if successful, false if not
11
+ # @return [Boolean] returns true if successful, false if not
12
12
  def fan_variable_volume_apply_prototype_fan_pressure_rise(fan_variable_volume)
13
13
  # Get the max flow rate from the fan.
14
14
  maximum_flow_rate_m3_per_s = nil
@@ -6,7 +6,7 @@ class Standard
6
6
  # Sets the fan pressure rise based on the Prototype buildings inputs
7
7
  #
8
8
  # @param fan_zone_exhaust [OpenStudio::Model::FanZoneExhaust] the exhaust fan
9
- # @return [Bool] returns true if successful, false if not
9
+ # @return [Boolean] returns true if successful, false if not
10
10
  def fan_zone_exhaust_apply_prototype_fan_pressure_rise(fan_zone_exhaust)
11
11
  # Do not modify dummy exhaust fans
12
12
  return true if fan_zone_exhaust.name.to_s.downcase.include? 'dummy'
@@ -11,7 +11,7 @@ class Standard
11
11
 
12
12
  # Sets the motor power to account for the extra fan energy from the increase in fan total static pressure
13
13
  #
14
- # @return [Bool] returns true if successful, false if not
14
+ # @return [Boolean] returns true if successful, false if not
15
15
  def heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_nominal_electric_power(heat_exchanger_air_to_air_sensible_and_latent)
16
16
  # Get the nominal supply air flow rate
17
17
  supply_air_flow_m3_per_s = nil
@@ -77,7 +77,7 @@ class Standard
77
77
  # which assume that an enthalpy wheel is used, which exceeds the 50% effectiveness minimum actually defined by 90.1.
78
78
  #
79
79
  # @param heat_exchanger_air_to_air_sensible_and_latent [OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent] hx
80
- # @return [Bool] returns true if successful, false if not
80
+ # @return [Boolean] returns true if successful, false if not
81
81
  def heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_efficiency(heat_exchanger_air_to_air_sensible_and_latent)
82
82
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(0.7)
83
83
  heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(0.6)
@@ -4,8 +4,8 @@ class Standard
4
4
  # @param model [OpenStudio::Model::Model] OpenStudio model object
5
5
  # @param exterior_lighting_zone_number [Integer] exterior lighting zone number, 0-4
6
6
  # @param onsite_parking_fraction [Double] onsite parking fraction, 0-1
7
- # @param add_base_site_allowance [Bool] whether to include the base site allowance
8
- # @param use_model_for_entries_and_canopies [Bool] use building geometry for number of entries and canopy size
7
+ # @param add_base_site_allowance [Boolean] whether to include the base site allowance
8
+ # @param use_model_for_entries_and_canopies [Boolean] use building geometry for number of entries and canopy size
9
9
  # @return [Hash] a hash of OpenStudio::Model::ExteriorLights objects
10
10
  # @todo would be nice to add argument for some building types (SmallHotel, MidriseApartment, PrimarySchool, SecondarySchool, RetailStripmall) if it has interior or exterior circulation.
11
11
  def model_add_typical_exterior_lights(model, exterior_lighting_zone_number, onsite_parking_fraction = 1.0, add_base_site_allowance = false, use_model_for_entries_and_canopies = false)
@@ -286,8 +286,8 @@ class Standard
286
286
  #
287
287
  # @param model [OpenStudio::Model::Model] OpenStudio model object
288
288
  # @param space_type_hash [Hash] hash of space types
289
- # @param use_model_for_entries_and_canopies [Bool] use building geometry for number of entries and canopy size
290
- # @return [hash] hash of exterior lighting value types and building type and model specific values
289
+ # @param use_model_for_entries_and_canopies [Boolean] use building geometry for number of entries and canopy size
290
+ # @return [Hhash] hash of exterior lighting value types and building type and model specific values
291
291
  # @todo add code in to determine number of entries and canopy area from model geoemtry
292
292
  # @todo come up with better logic for entry widths
293
293
  def model_create_exterior_lighting_area_length_count_hash(model, space_type_hash, use_model_for_entries_and_canopies)
@@ -5,7 +5,7 @@ class Standard
5
5
  # @param building_type [String] the building type
6
6
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
7
7
  # @param prototype_input [Hash] hash of prototype inputs
8
- # @return [Bool] returns true if successful, false if not
8
+ # @return [Boolean] returns true if successful, false if not
9
9
  def model_add_hvac(model, building_type, climate_zone, prototype_input)
10
10
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started Adding HVAC')
11
11
 
@@ -449,7 +449,7 @@ class Standard
449
449
 
450
450
  when 'Fan Coil'
451
451
  case system['heating_type']
452
- when 'Gas', 'DistrictHeating', 'Electricity'
452
+ when 'Gas', 'DistrictHeating', 'DistrictHeatingWater', 'DistrictHeatingSteam', 'Electricity'
453
453
  hot_water_loop = model_get_or_add_hot_water_loop(model, system['heating_type'])
454
454
  when nil
455
455
  hot_water_loop = nil
@@ -468,7 +468,7 @@ class Standard
468
468
 
469
469
  when 'Baseboards'
470
470
  case system['heating_type']
471
- when 'Gas', 'DistrictHeating'
471
+ when 'Gas', 'DistrictHeating', 'DistrictHeatingWater', 'DistrictHeatingSteam'
472
472
  hot_water_loop = model_get_or_add_hot_water_loop(model, system['heating_type'])
473
473
  when 'Electricity'
474
474
  hot_water_loop = nil
@@ -498,7 +498,7 @@ class Standard
498
498
  # @param model [OpenStudio::Model::Model] OpenStudio model object
499
499
  # @param area_type [String] Valid choices are residential and nonresidential
500
500
  # @param delivery_type [String] Conditioning delivery type. Valid choices are air and hydronic
501
- # @param heating_source [String] Valid choices are Electricity, NaturalGas, DistrictHeating, DistrictAmbient
501
+ # @param heating_source [String] Valid choices are Electricity, NaturalGas, DistrictHeating, DistrictHeatingWater, DistrictHeatingSteam, DistrictAmbient
502
502
  # @param cooling_source [String] Valid choices are Electricity, DistrictCooling, DistrictAmbient
503
503
  # @param area_m2 [Double] Area in m^2
504
504
  # @param num_stories [Integer] Number of stories
@@ -44,6 +44,12 @@ Standard.class_eval do
44
44
  model_create_thermal_zones(model, @space_multiplier_map)
45
45
  model_add_design_days_and_weather_file(model, climate_zone, epw_file)
46
46
  model_add_hvac(model, @instvarbuilding_type, climate_zone, @prototype_input)
47
+ model.getAirLoopHVACs.each do |air_loop|
48
+ next unless air_loop_hvac_multizone_vav_system?(air_loop)
49
+
50
+ model_system_outdoor_air_sizing_vrp_method(air_loop)
51
+ air_loop_hvac_apply_vav_damper_action(air_loop)
52
+ end
47
53
  model_add_constructions(model, @instvarbuilding_type, climate_zone)
48
54
  model_fenestration_orientation(model, climate_zone)
49
55
  model_custom_hvac_tweaks(model, building_type, climate_zone, @prototype_input)
@@ -131,7 +137,7 @@ Standard.class_eval do
131
137
  #
132
138
  # @param model [OpenStudio::Model::Model] OpenStudio model object
133
139
  # @param rel_path_to_osm [String] the path to an .osm file, relative to this file
134
- # @return [Bool] returns true if successful, false if not
140
+ # @return [Boolean] returns true if successful, false if not
135
141
  def model_replace_model_from_osm(model, rel_path_to_osm)
136
142
  # Take the existing model and remove all the objects
137
143
  # (this is cheesy), but need to keep the same memory block
@@ -238,7 +244,7 @@ Standard.class_eval do
238
244
  # Some loads are governed by the standard, others are typical values
239
245
  # pulled from sources such as the DOE Reference and DOE Prototype Buildings.
240
246
  #
241
- # @return [Bool] returns true if successful, false if not
247
+ # @return [Boolean] returns true if successful, false if not
242
248
  def model_add_loads(model)
243
249
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started applying space types (loads)')
244
250
 
@@ -352,7 +358,7 @@ Standard.class_eval do
352
358
  # @param model[OpenStudio::Model::Model] OpenStudio Model
353
359
  # @param building_type [String] the building type
354
360
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
355
- # @return [Bool] returns true if successful, false if not
361
+ # @return [Boolean] returns true if successful, false if not
356
362
  def model_add_constructions(model, building_type, climate_zone)
357
363
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started applying constructions')
358
364
  is_residential = 'No' # default is nonresidential for building level
@@ -537,8 +543,8 @@ Standard.class_eval do
537
543
  # CFactorUndergroundWallConstruction and require some additional parameters when compared to Construction
538
544
  #
539
545
  # @param model[OpenStudio::Model::Model] OpenStudio Model
540
- # @param climate_zone [string] climate zone as described for prototype models. C-Factor is based on this parameter
541
- # @param building_type [string] the building type
546
+ # @param climate_zone [String climate zone as described for prototype models. C-Factor is based on this parameter
547
+ # @param building_type [String the building type
542
548
  # @return [void]
543
549
  def model_set_below_grade_wall_constructions(model, building_type, climate_zone)
544
550
  # Find ground contact wall building category
@@ -615,8 +621,8 @@ Standard.class_eval do
615
621
  # calculated. Used for F-Factor floors that require additional parameters.
616
622
  #
617
623
  # @param model [OpenStudio Model] OpenStudio model being modified
618
- # @param building_type [string] the building type
619
- # @param climate_zone [string] climate zone as described for prototype models. F-Factor is based on this parameter
624
+ # @param building_type [String the building type
625
+ # @param climate_zone [String climate zone as described for prototype models. F-Factor is based on this parameter
620
626
  def model_set_floor_constructions(model, building_type, climate_zone)
621
627
  # Find ground contact wall building category
622
628
  construction_set_data = model_get_construction_set(building_type)
@@ -744,7 +750,8 @@ Standard.class_eval do
744
750
 
745
751
  # If the edge is parallel with the floor and in the same x-y plane as the floor, assume an intersection the
746
752
  # length of the wall edge
747
- edge_vector = OpenStudio::Vector3d.new(wall_edge_p1 - wall_edge_p2)
753
+ intersect_vector = wall_edge_p1 - wall_edge_p2
754
+ edge_vector = OpenStudio::Vector3d.new(intersect_vector.x, intersect_vector.y, intersect_vector.z)
748
755
  return(edge_vector.length)
749
756
  end
750
757
 
@@ -782,7 +789,7 @@ Standard.class_eval do
782
789
  #
783
790
  # @param model[OpenStudio::Model::Model] OpenStudio Model
784
791
  # @param building_type [String] the building type
785
- # @return [Bool] returns true if successful, false if not
792
+ # @return [Boolean] returns true if successful, false if not
786
793
  def model_add_internal_mass(model, building_type)
787
794
  # Assign a material to all internal mass objects
788
795
  material = OpenStudio::Model::StandardOpaqueMaterial.new(model)
@@ -841,7 +848,7 @@ Standard.class_eval do
841
848
  # e.g. (Prototype.secondary_school.rb) file.
842
849
  #
843
850
  # @param (see #add_constructions)
844
- # @return [Bool] returns true if successful, false if not
851
+ # @return [Boolean] returns true if successful, false if not
845
852
  def model_create_thermal_zones(model, space_multiplier_map = nil)
846
853
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started creating thermal zones')
847
854
 
@@ -1443,7 +1450,7 @@ Standard.class_eval do
1443
1450
  # the PNNL documentation.
1444
1451
  #
1445
1452
  # @param (see #add_constructions)
1446
- # @return [Bool] returns true if successful, false if not
1453
+ # @return [Boolean] returns true if successful, false if not
1447
1454
  # @todo genericize and move this method to Standards.Space
1448
1455
  def model_add_occupancy_sensors(model, building_type, climate_zone)
1449
1456
  # Only add occupancy sensors for 90.1-2010
@@ -1547,7 +1554,7 @@ Standard.class_eval do
1547
1554
  # in OpenStudio_Standards_prototype_inputs
1548
1555
  #
1549
1556
  # @param (see #add_constructions)
1550
- # @return [Bool] returns true if successful, false if not
1557
+ # @return [Boolean] returns true if successful, false if not
1551
1558
  # @todo translate w/linear foot of facade, door, parking, etc
1552
1559
  # into lookup table and implement that way instead of hard-coding as
1553
1560
  # inputs in the spreadsheet.
@@ -1622,7 +1629,7 @@ Standard.class_eval do
1622
1629
  # Changes the infiltration coefficients for the prototype vintages.
1623
1630
  #
1624
1631
  # @param (see #add_constructions)
1625
- # @return [Bool] returns true if successful, false if not
1632
+ # @return [Boolean] returns true if successful, false if not
1626
1633
  # @todo Consistency - make prototype and reference vintages consistent
1627
1634
  def model_modify_infiltration_coefficients(model, building_type, climate_zone)
1628
1635
  # Select the terrain type, which
@@ -1667,7 +1674,7 @@ Standard.class_eval do
1667
1674
  # Sets the inside and outside convection algorithms for different vintages
1668
1675
  #
1669
1676
  # @param (see #add_constructions)
1670
- # @return [Bool] returns true if successful, false if not
1677
+ # @return [Boolean] returns true if successful, false if not
1671
1678
  # @todo Consistency - make prototype and reference vintages consistent
1672
1679
  def model_modify_surface_convection_algorithm(model)
1673
1680
  inside = model.getInsideSurfaceConvectionAlgorithm
@@ -1715,7 +1722,7 @@ Standard.class_eval do
1715
1722
  # Changes the infiltration coefficients for the prototype vintages.
1716
1723
  #
1717
1724
  # @param (see #add_constructions)
1718
- # @return [Bool] returns true if successful, false if not
1725
+ # @return [Boolean] returns true if successful, false if not
1719
1726
  # @todo Consistency - make sizing factors consistent
1720
1727
  # between building types, climate zones, and vintages?
1721
1728
  def model_apply_sizing_parameters(model, building_type)
@@ -1792,7 +1799,7 @@ Standard.class_eval do
1792
1799
  # Applies the Prototype Building assumptions that contradict/supersede
1793
1800
  # the given standard.
1794
1801
  #
1795
- # @param model [OpenStudio::Model::Model] the model
1802
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1796
1803
  def model_apply_prototype_hvac_efficiency_adjustments(model)
1797
1804
  building_data = model_get_building_properties(model)
1798
1805
  building_type = building_data['building_type']
@@ -2474,9 +2481,15 @@ Standard.class_eval do
2474
2481
  # end reduce schedule
2475
2482
 
2476
2483
  # Determine the prototypical economizer type for the model.
2477
- # Defaults to the pre-90.1-2010 assumption of DifferentialDryBulb.
2484
+ # Defaults to FixedDryBulb based on anecdotal evidence of this being
2485
+ # the most common type encountered in the field, combined
2486
+ # with this being the default option for many equipment manufacturers,
2487
+ # and being the strategy recommended in the 2010 ASHRAE journal article
2488
+ # "Economizer High Limit Devices and Why Enthalpy Economizers Don't Work"
2489
+ # by Steven Taylor and Hwakong Cheng.
2490
+ # https://tayloreng.egnyte.com/dl/mN0c9t4WSO/ASHRAE_Journal_-_Economizer_High_Limit_Devices_and_Why_Enthalpy_Economizers_Dont_Work.pdf_
2478
2491
  #
2479
- # @param model [OpenStudio::Model::Model] the model
2492
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2480
2493
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
2481
2494
  # @return [String] the economizer type. Possible values are:
2482
2495
  # 'NoEconomizer'
@@ -2488,7 +2501,7 @@ Standard.class_eval do
2488
2501
  # 'ElectronicEnthalpy'
2489
2502
  # 'DifferentialDryBulbAndEnthalpy'
2490
2503
  def model_economizer_type(model, climate_zone)
2491
- economizer_type = 'DifferentialDryBulb'
2504
+ economizer_type = 'FixedDryBulb'
2492
2505
  return economizer_type
2493
2506
  end
2494
2507
 
@@ -2582,7 +2595,7 @@ Standard.class_eval do
2582
2595
  # @author Xuechen (Jerry) Lei, PNNL
2583
2596
  #
2584
2597
  # @param model [OpenStudio::Model::Model] OpenStudio Model
2585
- # @return [Bool] returns true if successful, false if not
2598
+ # @return [Boolean] returns true if successful, false if not
2586
2599
  def model_add_lights_shutoff(model)
2587
2600
  return false
2588
2601
  end
@@ -2600,7 +2613,7 @@ Standard.class_eval do
2600
2613
  # Metal coiling door code minimum infiltration rate at 75 Pa
2601
2614
  #
2602
2615
  # @param [String] Climate zone
2603
- # @return [Float] Minimum infiltration rate for metal coiling doors
2616
+ # @return [Double] Minimum infiltration rate for metal coiling doors
2604
2617
  def model_door_infil_flow_rate_metal_coiling_cfm_ft2(climate_zone)
2605
2618
  case climate_zone
2606
2619
  when 'ASHRAE 169-2006-7A',
@@ -2616,7 +2629,7 @@ Standard.class_eval do
2616
2629
  # Metal rollup door code minimum infiltration rate at 75 Pa
2617
2630
  #
2618
2631
  # @param [String] Climate zone
2619
- # @return [Float] Minimum infiltration rate for metal coiling doors
2632
+ # @return [Double] Minimum infiltration rate for metal coiling doors
2620
2633
  def model_door_infil_flow_rate_rollup_cfm_ft2(climate_zone)
2621
2634
  return 0.4
2622
2635
  end
@@ -2624,7 +2637,7 @@ Standard.class_eval do
2624
2637
  # Open door infiltration rate at 75 Pa
2625
2638
  #
2626
2639
  # @param [String] Climate zone
2627
- # @return [Float] Open door infiltration rate
2640
+ # @return [Double] Open door infiltration rate
2628
2641
  def model_door_infil_flow_rate_open_cfm_ft2(climate_zone)
2629
2642
  return 9.7875
2630
2643
  end
@@ -2811,7 +2824,7 @@ Standard.class_eval do
2811
2824
  # Add transfer to prototype for spaces that require it
2812
2825
  #
2813
2826
  # @param model [OpenStudio::Model::Model] OpenStudio model object
2814
- # @return [Boolean] true if successful, false otherwise
2827
+ # @return [Boolean] returns true if successful, false if not
2815
2828
  def model_add_transfer_air(model)
2816
2829
  # Do not add transfer air if not required
2817
2830
  return true unless model_transfer_air_required?(model)
@@ -2872,8 +2885,8 @@ Standard.class_eval do
2872
2885
  # required to setup/back their thermostat setpoints
2873
2886
  #
2874
2887
  # @param time_offset_hash [Hash] Hash providing time (key) and schedule value offset (values)
2875
- # @param schedule [OpenStudio::model::ScheduleRuleset] OpenStudio schedule object
2876
- # @return [OpenStudio::model::ScheduleRuleset] Modified OpenStudio schedule object
2888
+ # @param schedule [OpenStudio::Model::ScheduleRuleset] OpenStudio schedule object
2889
+ # @return [OpenStudio::Model::ScheduleRuleset] Modified OpenStudio schedule object
2877
2890
  def model_offset_schedule_value(schedule, time_offset_hash)
2878
2891
  offset_sch = schedule.clone(schedule.model).to_ScheduleRuleset.get
2879
2892
 
@@ -2912,8 +2925,8 @@ Standard.class_eval do
2912
2925
  # required to setup/back their thermostat setpoints
2913
2926
  #
2914
2927
  # @param time_offset_hash [Hash] Hash providing time (key) and schedule value offset (values)
2915
- # @param schedule [OpenStudio::model::ScheduleRuleset] OpenStudio schedule object
2916
- # @return [OpenStudio::model::ScheduleRuleset] Modified OpenStudio schedule object
2928
+ # @param schedule [OpenStudio::Model::ScheduleRuleset] OpenStudio schedule object
2929
+ # @return [OpenStudio::Model::ScheduleRuleset] Modified OpenStudio schedule object
2917
2930
  def model_set_schedule_value(schedule, time_value_hash)
2918
2931
  return nil unless schedule.to_ScheduleRuleset.is_initialized
2919
2932
 
@@ -2950,8 +2963,8 @@ Standard.class_eval do
2950
2963
 
2951
2964
  # Modify thermostat schedule to account for a thermostat setback/up
2952
2965
  #
2953
- # @param thermostat [OpenStudio::model::ThermostatSetpointDualSetpoint] OpenStudio ThermostatSetpointDualSetpoint object
2954
- # @return [Boolean] true if success
2966
+ # @param thermostat [OpenStudio::Model::ThermostatSetpointDualSetpoint] OpenStudio ThermostatSetpointDualSetpoint object
2967
+ # @return [Boolean] returns true if successful, false if not
2955
2968
  def space_occupancy_standby_mode(thermostat)
2956
2969
  return false
2957
2970
  end
@@ -4,7 +4,7 @@ class Standard
4
4
  # @param model [OpenStudio::Model::Model] OpenStudio model object
5
5
  # @param building_type [String] building type
6
6
  # @param prototype_input [Hash] hash of prototype inputs
7
- # @return [Bool] returns true if successful, false if not
7
+ # @return [Boolean] returns true if successful, false if not
8
8
  def model_add_swh(model, building_type, prototype_input)
9
9
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started Adding Service Water Heating')
10
10