openstudio-standards 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (378) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +33 -0
  3. data/data/inventory/thermal_bridging.csv +90 -0
  4. data/data/standards/OpenStudio_Standards-deer-comstock.xlsx +0 -0
  5. data/data/standards/manage_OpenStudio_Standards.rb +1 -1
  6. data/data/standards/test_performance_expected_dd_results.csv +2014 -1891
  7. data/lib/openstudio-standards/btap/analysis.rb +8 -8
  8. data/lib/openstudio-standards/btap/bridging.rb +664 -645
  9. data/lib/openstudio-standards/btap/btap.model.rb +14 -14
  10. data/lib/openstudio-standards/btap/btap.rb +7 -7
  11. data/lib/openstudio-standards/btap/btap_result.rb +1 -1
  12. data/lib/openstudio-standards/btap/economics.rb +23 -23
  13. data/lib/openstudio-standards/btap/envelope.rb +8 -8
  14. data/lib/openstudio-standards/btap/equest.rb +1 -1
  15. data/lib/openstudio-standards/btap/geometry.rb +2 -2
  16. data/lib/openstudio-standards/btap/mpc.rb +7 -7
  17. data/lib/openstudio-standards/btap/schedules.rb +1 -1
  18. data/lib/openstudio-standards/btap/simmanager.rb +4 -4
  19. data/lib/openstudio-standards/btap/spaceloads.rb +26 -26
  20. data/lib/openstudio-standards/btap/utilities.rb +6 -6
  21. data/lib/openstudio-standards/btap/vintagizer.rb +1 -1
  22. data/lib/openstudio-standards/constructions/information.rb +83 -0
  23. data/lib/openstudio-standards/constructions/materials/modify.rb +72 -0
  24. data/lib/openstudio-standards/constructions/modify.rb +80 -0
  25. data/lib/openstudio-standards/create_typical/create_typical.rb +983 -0
  26. data/lib/openstudio-standards/create_typical/enumerations.rb +484 -0
  27. data/lib/openstudio-standards/create_typical/space_type_blend.rb +791 -0
  28. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +494 -0
  29. data/lib/openstudio-standards/daylighting/space.rb +47 -0
  30. data/lib/openstudio-standards/geometry/create.rb +801 -0
  31. data/lib/openstudio-standards/geometry/create_bar.rb +2170 -0
  32. data/lib/openstudio-standards/geometry/information.rb +462 -0
  33. data/lib/openstudio-standards/geometry/modify.rb +48 -0
  34. data/lib/openstudio-standards/hvac/air_loop/information.rb +79 -0
  35. data/lib/openstudio-standards/hvac/cbecs_hvac.rb +616 -0
  36. data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +91 -0
  37. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
  38. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +1 -1
  39. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  40. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +1 -1
  41. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  42. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +2 -2
  43. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.hvac_systems.rb +1 -1
  44. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  45. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -36
  46. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +1 -1
  47. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  48. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -36
  49. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +3 -3
  50. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +1 -1
  51. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
  52. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.elevators.rb +1 -1
  53. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +1 -1
  54. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.CoilHeatingGas.rb +1 -1
  55. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.elevators.rb +1 -1
  56. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  57. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  58. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +7 -7
  59. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +8 -8
  60. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +14 -14
  61. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +9 -9
  62. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +16 -16
  63. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +7 -7
  64. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +8 -8
  65. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +8 -8
  66. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +11 -11
  67. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +7 -7
  68. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +9 -9
  69. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +8 -8
  70. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +11 -11
  71. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +9 -9
  72. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +19 -19
  73. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +10 -10
  74. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +13 -13
  75. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +6 -6
  76. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +6 -6
  77. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +9 -9
  78. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +8 -8
  79. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +8 -8
  80. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +8 -8
  81. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +8 -8
  82. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +11 -11
  83. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +10 -10
  84. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +19 -19
  85. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +18 -18
  86. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +6 -6
  87. data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +957 -957
  88. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +1 -1
  89. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +1 -1
  90. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +84 -16
  91. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +1 -1
  92. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +1 -1
  93. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +61 -10
  94. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +1 -1
  95. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +1 -1
  96. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +1 -1
  97. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -1
  98. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -1
  99. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +1 -1
  100. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +1 -1
  101. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +2 -2
  102. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +4 -4
  103. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +4 -4
  104. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +43 -30
  105. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +1 -1
  106. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +18 -11
  107. data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +1 -1
  108. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +774 -117
  109. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +340 -481
  110. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +3 -3
  111. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +3 -3
  112. data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +22 -22
  113. data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
  114. data/lib/openstudio-standards/qaqc/calibration.rb +131 -0
  115. data/lib/openstudio-standards/qaqc/create_results.rb +983 -0
  116. data/lib/openstudio-standards/qaqc/envelope.rb +399 -0
  117. data/lib/openstudio-standards/qaqc/eui.rb +213 -0
  118. data/lib/openstudio-standards/qaqc/hvac.rb +1943 -0
  119. data/lib/openstudio-standards/qaqc/internal_loads.rb +568 -0
  120. data/lib/openstudio-standards/qaqc/reporting.rb +141 -0
  121. data/lib/openstudio-standards/qaqc/schedules.rb +129 -0
  122. data/lib/openstudio-standards/qaqc/service_water_heating.rb +273 -0
  123. data/lib/openstudio-standards/qaqc/weather_files.rb +497 -0
  124. data/lib/openstudio-standards/qaqc/zone_conditions.rb +278 -0
  125. data/lib/openstudio-standards/schedules/create.rb +364 -0
  126. data/lib/openstudio-standards/schedules/information.rb +169 -0
  127. data/lib/openstudio-standards/schedules/modify.rb +445 -0
  128. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +110 -71
  129. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +3 -3
  130. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +4 -4
  131. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +2 -1
  132. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +16 -10
  133. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +4 -4
  134. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +1 -1
  135. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  136. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +4 -4
  137. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +1 -1
  138. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +5 -5
  139. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +1 -1
  140. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +1 -1
  141. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -1
  142. data/lib/openstudio-standards/standards/Standards.Construction.rb +17 -18
  143. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +6 -6
  144. data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +1 -1
  145. data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +1 -1
  146. data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +1 -1
  147. data/lib/openstudio-standards/standards/Standards.Fan.rb +6 -12
  148. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +2 -2
  149. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +1 -1
  150. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +1 -1
  151. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +3 -3
  152. data/lib/openstudio-standards/standards/Standards.Model.rb +411 -261
  153. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -2
  154. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +94 -29
  155. data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -2
  156. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +2 -2
  157. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +14 -14
  158. data/lib/openstudio-standards/standards/Standards.Space.rb +37 -30
  159. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +38 -29
  160. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +7 -7
  161. data/lib/openstudio-standards/standards/Standards.Surface.rb +13 -13
  162. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +109 -66
  163. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +11 -4
  164. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +6 -6
  165. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +1 -1
  166. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +1 -1
  167. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +1 -1
  168. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +1 -1
  169. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +4 -4
  170. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  171. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +4 -4
  172. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +4 -4
  173. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTowerVariableSpeed.rb +1 -1
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +5 -21
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +4 -4
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.WaterHeaterMixed.rb +1 -1
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.ZoneHVACComponent.rb +1 -1
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +36 -4
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +1 -1
  182. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +4 -4
  183. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +1 -1
  184. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/comstock_ashrae_90_1_2016.AirLoopHVAC.rb +26 -0
  185. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +53 -10
  186. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  187. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +1 -1
  188. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +6 -6
  189. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +2 -2
  190. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/comstock_ashrae_90_1_2019.AirLoopHVAC.rb +26 -0
  191. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +211 -211
  192. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +14 -14
  193. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +4 -4
  194. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +1 -1
  195. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.PlantLoop.rb +1 -1
  196. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +14 -14
  197. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +4 -4
  198. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +1 -1
  199. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.PlantLoop.rb +1 -1
  200. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +6 -6
  201. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  202. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTowerVariableSpeed.rb +1 -1
  203. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +1 -1
  204. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +4 -4
  205. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +6 -6
  206. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  207. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +1 -1
  208. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +1 -1
  209. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +4 -4
  210. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +22 -28
  211. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +1 -1
  212. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +2 -2
  213. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +1 -74
  214. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +7 -59
  215. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +1 -1
  216. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +1 -1
  217. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +1 -1
  218. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +1 -1
  219. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +1 -21
  220. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.DesignSpecificationOutdoorAir.rb +101 -0
  221. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +1 -1
  222. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +1 -1
  223. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +1 -1
  224. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +1 -1
  225. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +643 -526
  226. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +8 -2
  227. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +17 -77
  228. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +74 -16
  229. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +96 -44
  230. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +6 -6
  231. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +18 -6
  232. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +1 -1
  233. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +328 -74
  234. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +0 -118
  235. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +2 -1
  236. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_rejection.json +1 -1
  237. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_outdoor_air.md +35 -0
  238. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +1 -1
  239. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +228 -0
  240. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +131 -0
  241. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -1
  242. data/lib/openstudio-standards/standards/cbes/cbes.AirLoopHVAC.rb +5 -5
  243. data/lib/openstudio-standards/standards/cbes/cbes.Model.rb +1 -1
  244. data/lib/openstudio-standards/standards/cbes/cbes.PlantLoop.rb +1 -1
  245. data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +1 -1
  246. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +1 -1
  247. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +1 -1
  248. data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +109 -27
  249. data/lib/openstudio-standards/standards/deer/deer.Space.rb +1 -1
  250. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.economizers.json +246 -4
  251. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.economizers.json +246 -4
  252. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.economizers.json +246 -4
  253. data/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb +18 -18
  254. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.economizers.json +246 -4
  255. data/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb +18 -18
  256. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.economizers.json +246 -4
  257. data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb +18 -18
  258. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.economizers.json +248 -6
  259. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +3 -3
  260. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb +18 -18
  261. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.economizers.json +248 -6
  262. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +3 -3
  263. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb +18 -18
  264. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.economizers.json +248 -6
  265. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +3 -3
  266. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb +18 -18
  267. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.economizers.json +248 -6
  268. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +18 -5
  269. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.FanVariableVolume.rb +1 -1
  270. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.Space.rb +3 -3
  271. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb +18 -18
  272. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.economizers.json +248 -6
  273. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +3 -3
  274. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.FanVariableVolume.rb +1 -1
  275. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.Space.rb +3 -3
  276. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.economizers.json +248 -6
  277. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.heat_pumps.json +2 -2
  278. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +3 -3
  279. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.FanVariableVolume.rb +1 -1
  280. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.Space.rb +3 -3
  281. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.economizers.json +248 -6
  282. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +3 -3
  283. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.FanVariableVolume.rb +1 -1
  284. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.Space.rb +3 -3
  285. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.economizers.json +248 -6
  286. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +3 -3
  287. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.FanVariableVolume.rb +1 -1
  288. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.Space.rb +3 -3
  289. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.economizers.json +260 -0
  290. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +3 -3
  291. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.FanVariableVolume.rb +1 -1
  292. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.Space.rb +3 -3
  293. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.economizers.json +248 -6
  294. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +3 -3
  295. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.FanVariableVolume.rb +1 -1
  296. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.Space.rb +3 -3
  297. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.economizers.json +248 -6
  298. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +3 -3
  299. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.FanVariableVolume.rb +1 -1
  300. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.Space.rb +3 -3
  301. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.economizers.json +248 -6
  302. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +3 -3
  303. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.FanVariableVolume.rb +1 -1
  304. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.Space.rb +3 -3
  305. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.economizers.json +248 -6
  306. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +3 -3
  307. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.FanVariableVolume.rb +1 -1
  308. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.Space.rb +3 -3
  309. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.economizers.json +248 -6
  310. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +3 -3
  311. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.FanVariableVolume.rb +1 -1
  312. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.Space.rb +3 -3
  313. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.economizers.json +248 -6
  314. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +3 -3
  315. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.FanVariableVolume.rb +1 -1
  316. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.Space.rb +3 -3
  317. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.economizers.json +246 -4
  318. data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/space_types.json +447 -223
  319. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +1 -1
  320. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/space_types.json +447 -223
  321. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +5 -2
  322. data/lib/openstudio-standards/standards/necb/ECMS/data/chiller_types.json +25 -0
  323. data/lib/openstudio-standards/standards/necb/ECMS/data/chillers.json +44 -0
  324. data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +225 -0
  325. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +2 -2
  326. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +193 -73
  327. data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +1 -1
  328. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +10 -4
  329. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +7 -7
  330. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +4 -5
  331. data/lib/openstudio-standards/standards/necb/NECB2011/data/chiller_types.json +32 -0
  332. data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +1 -1
  333. data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +36 -0
  334. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +7 -7
  335. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernEducation.osm +47587 -0
  336. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernHealthCare.osm +49764 -0
  337. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Warehouse.osm +283 -297
  338. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_type_unit_definitions.txt +2 -1
  339. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +447 -223
  340. data/lib/openstudio-standards/standards/necb/NECB2011/data/standards_data.rb +3 -3
  341. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +1 -1
  342. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +49 -27
  343. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +400 -202
  344. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -4
  345. data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +637 -318
  346. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +18 -1
  347. data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +3 -3
  348. data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +637 -318
  349. data/lib/openstudio-standards/standards/necb/NECB2017/hvac_systems.rb +1 -1
  350. data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +3 -3
  351. data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +1 -1
  352. data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +615 -307
  353. data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +4 -4
  354. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +10 -5
  355. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +1 -1
  356. data/lib/openstudio-standards/utilities/assertion.rb +128 -0
  357. data/lib/openstudio-standards/utilities/logging.rb +2 -3
  358. data/lib/openstudio-standards/utilities/object_info.rb +39 -18
  359. data/lib/openstudio-standards/utilities/schedule_translator.rb +8 -6
  360. data/lib/openstudio-standards/utilities/simulation.rb +24 -11
  361. data/lib/openstudio-standards/utilities/sqlfile.rb +10 -5
  362. data/lib/openstudio-standards/version.rb +1 -1
  363. data/lib/openstudio-standards/weather/Weather.Model.rb +8 -9
  364. data/lib/openstudio-standards/weather/Weather.stat_file.rb +3 -3
  365. data/lib/openstudio-standards/weather/information.rb +35 -0
  366. data/lib/openstudio-standards.rb +69 -5
  367. metadata +54 -18
  368. data/License.txt +0 -65
  369. data/data/standards/OpenStudio_Standards-deer-ALL-comstock(space_types).xlsx +0 -0
  370. data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVAC.rb +0 -59
  371. data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingWater.rb +0 -13
  372. data/lib/openstudio-standards/hvac_sizing/Siz.HVACComponent.rb +0 -36
  373. data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +0 -898
  374. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +0 -126
  375. data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +0 -356
  376. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +0 -35
  377. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +0 -110
  378. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +0 -5
@@ -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