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
@@ -1,898 +0,0 @@
1
-
2
- ###### IMPORTANT NOTE ######
3
- # These methods should be done via extension to OS model objects
4
- # directly in the C++ SDK. This Ruby implementation was done
5
- # (for expedience only) by copying some previously written code
6
- # If you feel like fixing the implementation,
7
- # please contact andrew.parker@nrel.gov and he'll gladly
8
- # point you in the right direction.
9
- ###### IMPORTANT NOTE ######
10
-
11
- class OpenStudio::Model::Model
12
-
13
- # Get the heating fuel type of a plant loop
14
- # @todo If no heating equipment is found, check if there's a heat exchanger,
15
- # or a WaterHeater:Mixed or stratified that is connected to a heating source on the demand side
16
- def plant_loop_heating_fuels(plant_loop)
17
- fuels = []
18
- # Get the heating fuels for all supply components
19
- # on this plant loop.
20
- plant_loop.supplyComponents.each do |component|
21
- # Get the object type
22
- obj_type = component.iddObjectType.valueName.to_s
23
- case obj_type
24
- when 'OS_Boiler_HotWater'
25
- component = component.to_BoilerHotWater.get
26
- fuels << component.fuelType
27
- when 'OS_Boiler_Steam'
28
- component = component.to_BoilerHotWater.get
29
- fuels << component.fuelType
30
- when 'OS_DistrictHeating'
31
- fuels << 'DistrictHeating'
32
- when 'OS_HeatPump_WaterToWater_EquationFit_Heating'
33
- fuels << 'Electricity'
34
- when 'OS_SolarCollector_FlatPlate_PhotovoltaicThermal'
35
- fuels << 'SolarEnergy'
36
- when 'OS_SolarCollector_FlatPlate_Water'
37
- fuels << 'SolarEnergy'
38
- when 'OS_SolarCollector_IntegralCollectorStorage'
39
- fuels << 'SolarEnergy'
40
- when 'OS_WaterHeater_HeatPump'
41
- fuels << 'Electricity'
42
- when 'OS_WaterHeater_Mixed'
43
- component = component.to_WaterHeaterMixed.get
44
-
45
- # Check if the heater actually has a capacity (otherwise it's simply a Storage Tank)
46
- if component.heaterMaximumCapacity.empty? || component.heaterMaximumCapacity.get != 0
47
- # If it does, we add the heater Fuel Type
48
- fuels << component.heaterFuelType
49
- end
50
- # @todo not sure about whether it should be an elsif or not
51
- # Check the plant loop connection on the source side
52
- if component.secondaryPlantLoop.is_initialized
53
- fuels += self.plant_loop_heating_fuels(component.secondaryPlantLoop.get)
54
- end
55
- when 'OS_WaterHeater_Stratified'
56
- component = component.to_WaterHeaterStratified.get
57
-
58
- # Check if the heater actually has a capacity (otherwise it's simply a Storage Tank)
59
- if component.heaterMaximumCapacity.empty? || component.heaterMaximumCapacity.get != 0
60
- # If it does, we add the heater Fuel Type
61
- fuels << component.heaterFuelType
62
- end
63
- # @todo not sure about whether it should be an elsif or not
64
- # Check the plant loop connection on the source side
65
- if component.secondaryPlantLoop.is_initialized
66
- fuels += self.plant_loop_heating_fuels(component.secondaryPlantLoop.get)
67
- end
68
- when 'OS_HeatExchanger_FluidToFluid'
69
- hx = component.to_HeatExchangerFluidToFluid.get
70
- cooling_hx_control_types = ['CoolingSetpointModulated', 'CoolingSetpointOnOff', 'CoolingDifferentialOnOff', 'CoolingSetpointOnOffWithComponentOverride']
71
- cooling_hx_control_types.each {|x| x.downcase!}
72
- if !cooling_hx_control_types.include?(hx.controlType.downcase) && hx.secondaryPlantLoop.is_initialized
73
- fuels += self.plant_loop_heating_fuels(hx.secondaryPlantLoop.get)
74
- end
75
- when 'OS_Node', 'OS_Pump_ConstantSpeed', 'OS_Pump_VariableSpeed', 'OS_Connector_Splitter', 'OS_Connector_Mixer', 'OS_Pipe_Adiabatic'
76
- # To avoid extraneous debug messages
77
- else
78
- #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}")
79
- end
80
- end
81
-
82
- return fuels.uniq.sort
83
-
84
- end
85
-
86
- # Get the cooling fuel type of a plant loop
87
- # Do not search for the fuel used for heat rejection
88
- # on the condenser loop.
89
- def plant_loop_cooling_fuels(plant_loop)
90
- fuels = []
91
- # Get the cooling fuels for all supply components
92
- # on this plant loop.
93
- plant_loop.supplyComponents.each do |component|
94
- # Get the object type
95
- obj_type = component.iddObjectType.valueName.to_s
96
- case obj_type
97
- when 'OS_Chiller_Absorption'
98
- fuels << 'NaturalGas'
99
- OpenStudio::logFree(OpenStudio::Warn, 'openstudio.sizing.Model', "Assuming NaturalGas as fuel for absorption chiller.")
100
- when 'OS_Chiller_Absorption_Indirect'
101
- fuels << 'NaturalGas'
102
- OpenStudio::logFree(OpenStudio::Warn, 'openstudio.sizing.Model', "Assuming NaturalGas as fuel for absorption chiller indirect.")
103
- when 'OS_Chiller_Electric_EIR'
104
- fuels << 'Electricity'
105
- when 'OS_CoolingTower_SingleSpeed'
106
- fuels << 'Electricity'
107
- when 'OS_CoolingTower_TwoSpeed'
108
- fuels << 'Electricity'
109
- when 'OS_CoolingTower_VariableSpeed'
110
- fuels << 'Electricity'
111
- when 'OS_DistrictCooling'
112
- fuels << 'DistrictCooling'
113
- when 'OS_EvaporativeFluidCooler_SingleSpeed'
114
- fuels << 'Electricity'
115
- when 'OS_EvaporativeFluidCooler_TwoSpeed'
116
- fuels << 'Electricity'
117
- when 'OS_FluidCooler_SingleSpeed'
118
- fuels << 'Electricity'
119
- when 'OS_FluidCooler_TwoSpeed'
120
- fuels << 'Electricity'
121
- when 'OS_HeatExchanger_FluidToFluid'
122
- hx = component.to_HeatExchangerFluidToFluid.get
123
- cooling_hx_control_types = ['CoolingSetpointModulated', 'CoolingSetpointOnOff', 'CoolingDifferentialOnOff', 'CoolingSetpointOnOffWithComponentOverride']
124
- cooling_hx_control_types.each {|x| x.downcase!}
125
- if cooling_hx_control_types.include?(hx.controlType.downcase) && hx.secondaryPlantLoop.is_initialized
126
- fuels += self.plant_loop_cooling_fuels(hx.secondaryPlantLoop.get)
127
- end
128
- when 'OS_Node', 'OS_Pump_ConstantSpeed', 'OS_Pump_VariableSpeed', 'OS_Connector_Splitter', 'OS_Connector_Mixer', 'OS_Pipe_Adiabatic'
129
- # To avoid extraneous debug messages
130
- else
131
- #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No cooling fuel types found for #{obj_type}")
132
- end
133
- end
134
-
135
- return fuels.uniq.sort
136
-
137
- end
138
-
139
- # Get the heating fuel type of a heating coil
140
- def coil_heating_fuels(heating_coil)
141
- fuels = []
142
- # Get the object type
143
- obj_type = heating_coil.iddObjectType.valueName.to_s
144
- case obj_type
145
- when 'OS_Coil_Heating_DX_MultiSpeed'
146
- fuels << 'Electricity'
147
- when 'OS_Coil_Heating_DX_SingleSpeed'
148
- fuels << 'Electricity'
149
- when 'OS_Coil_Heating_DX_VariableRefrigerantFlow'
150
- fuels << 'Electricity'
151
- when 'OS_Coil_Heating_DX_VariableSpeed'
152
- fuels << 'Electricity'
153
- when 'OS_Coil_Heating_Desuperheater'
154
- fuels << 'Electricity'
155
- when 'OS_Coil_Heating_Electric'
156
- fuels << 'Electricity'
157
- when 'OS_Coil_Heating_Gas'
158
- fuels << 'NaturalGas'
159
- when 'OS_Coil_Heating_Gas_MultiStage'
160
- fuels << 'NaturalGas'
161
- when 'OS_Coil_Heating_Water'
162
- heating_coil = heating_coil.to_CoilHeatingWater.get
163
- if heating_coil.plantLoop.is_initialized
164
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
165
- end
166
- when 'OS_Coil_Heating_Water_BaseboardRadiant'
167
- heating_coil = heating_coil.to_CoilHeatingWaterBaseboardRadiant.get
168
- if heating_coil.plantLoop.is_initialized
169
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
170
- end
171
- when 'OS_Coil_Heating_WaterToAirHeatPump_EquationFit'
172
- fuels << 'Electricity'
173
- heating_coil = heating_coil.to_CoilHeatingWaterToAirHeatPumpEquationFit.get
174
- if heating_coil.plantLoop.is_initialized
175
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
176
- end
177
- when 'OS_Coil_Heating_WaterToAirHeatPump_VariableSpeedEquationFit'
178
- fuels << 'Electricity'
179
- heating_coil = heating_coil.to_CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit.get
180
- if heating_coil.plantLoop.is_initialized
181
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
182
- end
183
- when 'OS_Coil_Heating_LowTemperatureRadiant_ConstantFlow'
184
- heating_coil = heating_coil.to_CoilHeatingLowTempRadiantConstFlow.get
185
- if heating_coil.plantLoop.is_initialized
186
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
187
- end
188
- when 'OS_Coil_Heating_LowTemperatureRadiant_VariableFlow'
189
- heating_coil = heating_coil.to_CoilHeatingLowTempRadiantVarFlow.get
190
- if heating_coil.plantLoop.is_initialized
191
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
192
- end
193
- when 'OS_Coil_WaterHeating_AirToWaterHeatPump'
194
- fuels << 'Electricity'
195
- when 'OS_Coil_WaterHeating_Desuperheater'
196
- fuels << 'Electricity'
197
- else
198
- OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}")
199
- end
200
-
201
- return fuels.uniq.sort
202
-
203
- end
204
-
205
- # Get type of heat for coil for Appendix G system type selections
206
- #
207
- # @param heating_coil [object]
208
- # @return string description of heat type: Fuel, Electric, District, HeatPump, Solar, Mixed
209
- def coil_heat_type(heating_coil)
210
- fuels = []
211
- heat_type = ''
212
- # Get the object type
213
- obj_type = heating_coil.iddObjectType.valueName.to_s
214
- case obj_type
215
- when 'OS_Coil_Heating_DX_MultiSpeed'
216
- heat_type = 'HeatPump'
217
- when 'OS_Coil_Heating_DX_SingleSpeed'
218
- heat_type = 'HeatPump'
219
- when 'OS_Coil_Heating_DX_VariableRefrigerantFlow'
220
- heat_type = 'HeatPump'
221
- when 'OS_Coil_Heating_DX_VariableSpeed'
222
- heat_type = 'HeatPump'
223
- when 'OS_Coil_Heating_Desuperheater'
224
- heat_type = 'Electric'
225
- when 'OS_Coil_Heating_Electric'
226
- heat_type = 'Electric'
227
- when 'OS_Coil_Heating_Gas'
228
- heat_type = 'Fuel'
229
- when 'OS_Coil_Heating_Gas_MultiStage'
230
- heat_type = 'Fuel'
231
- when 'OS_Coil_Heating_Water'
232
- heating_coil = heating_coil.to_CoilHeatingWater.get
233
- if heating_coil.plantLoop.is_initialized
234
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
235
- end
236
- when 'OS_Coil_Heating_Water_BaseboardRadiant'
237
- heating_coil = heating_coil.to_CoilHeatingWaterBaseboardRadiant.get
238
- if heating_coil.plantLoop.is_initialized
239
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
240
- end
241
- when 'OS_Coil_Heating_WaterToAirHeatPump_EquationFit'
242
- fuels << 'Electricity'
243
- heating_coil = heating_coil.to_CoilHeatingWaterToAirHeatPumpEquationFit.get
244
- if heating_coil.plantLoop.is_initialized
245
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
246
- end
247
- when 'OS_Coil_Heating_WaterToAirHeatPump_VariableSpeedEquationFit'
248
- fuels << 'Electricity'
249
- heating_coil = heating_coil.to_CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit.get
250
- if heating_coil.plantLoop.is_initialized
251
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
252
- end
253
- when 'OS_Coil_Heating_LowTemperatureRadiant_ConstantFlow'
254
- heating_coil = heating_coil.to_CoilHeatingLowTempRadiantConstFlow.get
255
- if heating_coil.plantLoop.is_initialized
256
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
257
- end
258
- when 'OS_Coil_Heating_LowTemperatureRadiant_VariableFlow'
259
- heating_coil = heating_coil.to_CoilHeatingLowTempRadiantVarFlow.get
260
- if heating_coil.plantLoop.is_initialized
261
- fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get)
262
- end
263
- when 'OS_Coil_WaterHeating_AirToWaterHeatPump'
264
- heat_type = 'Electricity'
265
- when 'OS_Coil_WaterHeating_Desuperheater'
266
- heat_type = 'Electricity'
267
- else
268
- OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}")
269
- end
270
-
271
- has_electric = false
272
- has_fuel = false
273
- has_district = false
274
- has_solar = false
275
- has_hp = false
276
- if fuels.size > 0
277
- fuels.sort.each do |fuel|
278
- case fuel
279
- when 'Electricity'
280
- has_electric = true
281
- when 'DistrictHeating'
282
- has_district = true
283
- when 'SolarEnergy'
284
- has_solar = true
285
- when 'NaturalGas', 'PropaneGas', 'Coal', 'Diesel'
286
- has_fuel = true
287
- when 'FuelOilNo1', 'FuelOilNo2'
288
- has_fuel = true
289
- end
290
- end
291
- end
292
-
293
- # Choose only one heat type, or Mixed if there are multiple
294
- if heat_type == ''
295
- if has_fuel == true
296
- heat_type = 'Fuel'
297
- end
298
- if has_district == true && heat_type != 'District'
299
- if heat_type == ''
300
- heat_type = 'District'
301
- else
302
- heat_type = 'Mixed'
303
- end
304
- end
305
- if has_electric == true && heat_type != 'Electric'
306
- if heat_type == ''
307
- heat_type = 'Electric'
308
- else
309
- heat_type = 'Mixed'
310
- end
311
- end
312
- if has_solar == true && heat_type != 'Solar'
313
- if heat_type == ''
314
- heat_type = 'Solar'
315
- else
316
- heat_type = 'Mixed'
317
- end
318
- end
319
- if has_hp == true && heat_type != 'HeatPump'
320
- if heat_type == ''
321
- heat_type = 'HeatPump'
322
- elsif heat_type != 'HeatPump'
323
- heat_type = 'Mixed'
324
- end
325
- end
326
- end
327
-
328
- return heat_type
329
- end
330
-
331
- # Get primary type of heat for one air loop for Appendix G system type selections
332
- #
333
- # @param air_loop [object]
334
- # @return string description of heat type: Fuel, Electric, District, HeatPump, Solar, Mixed
335
- def airloop_primary_heat_type(air_loop)
336
-
337
- heat_types = []
338
- air_loop.supplyComponents.each do |component|
339
- # Get the object type
340
- obj_type = component.iddObjectType.valueName.to_s
341
- case obj_type
342
- when 'OS_AirLoopHVAC_UnitaryHeatCool_VAVChangeoverBypass'
343
- component = component.to_AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.get
344
- heat_types << self.coil_heat_type(component.heatingCoil)
345
- when 'OS_AirLoopHVAC_UnitaryHeatPump_AirToAir'
346
- component = component.to_AirLoopHVACUnitaryHeatPumpAirToAir.get
347
- heat_types << self.coil_heat_type(component.heatingCoil)
348
- when 'OS_AirLoopHVAC_UnitaryHeatPump_AirToAir_MultiSpeed'
349
- component = component.to_AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.get
350
- heat_types << self.coil_heat_type(component.heatingCoil)
351
- when 'OS_AirLoopHVAC_UnitarySystem'
352
- component = component.to_AirLoopHVACUnitarySystem.get
353
- if component.heatingCoil.is_initialized
354
- heat_types << self.coil_heat_type(component.heatingCoil.get)
355
- end
356
- when 'OS_Coil_Heating_DX_MultiSpeed'
357
- heat_types << self.coil_heat_type(component)
358
- when 'OS_Coil_Heating_DX_SingleSpeed'
359
- heat_types << self.coil_heat_type(component)
360
- when 'OS_Coil_Heating_DX_VariableSpeed'
361
- heat_types << self.coil_heat_type(component)
362
- when 'OS_Coil_Heating_Desuperheater'
363
- heat_types << self.coil_heat_type(component)
364
- when 'OS_Coil_Heating_Electric'
365
- heat_types << self.coil_heat_type(component)
366
- when 'OS_Coil_Heating_Gas'
367
- heat_types << self.coil_heat_type(component)
368
- when 'OS_Coil_Heating_Gas_MultiStage'
369
- heat_types << self.coil_heat_type(component)
370
- when 'OS_Coil_Heating_Water'
371
- heat_types << self.coil_heat_type(component)
372
- when 'OS_Coil_Heating_WaterToAirHeatPump_EquationFit'
373
- heat_types << self.coil_heat_type(component)
374
- when 'OS_Coil_Heating_WaterToAirHeatPump_VariableSpeed_EquationFit'
375
- heat_types << self.coil_heat_type(component)
376
- when 'OS_Coil_WaterHeating_AirToWaterHeatPump'
377
- heat_types << self.coil_heat_type(component)
378
- when 'OS_Coil_WaterHeating_Desuperheater'
379
- heat_types << self.coil_heat_type(component)
380
- when 'OS_Node', 'OS_Fan_ConstantVolume', 'OS_Fan_VariableVolume', 'OS_AirLoopHVAC_OutdoorAirSystem'
381
- # To avoid extraneous debug messages
382
- else
383
- #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}")
384
- end
385
- end
386
-
387
- has_electric = false
388
- has_fuel = false
389
- has_district = false
390
- has_solar = false
391
- has_hp = false
392
- has_mixed = false
393
- if heat_types.size > 0
394
- heat_types.sort.each do |heat_type|
395
- case heat_type
396
- when 'Electricity', 'Electric'
397
- has_electric = true
398
- when 'DistrictHeating', 'District'
399
- has_district = true
400
- when 'SolarEnergy', 'Solar'
401
- has_solar = true
402
- when 'NaturalGas', 'Fuel', 'PropaneGas', 'Coal', 'Diesel'
403
- has_fuel = true
404
- when 'FuelOilNo1', 'FuelOilNo2'
405
- has_fuel = true
406
- when 'HeatPump'
407
- has_hp = true
408
- when 'Mixed'
409
- has_mixed = true
410
- end
411
- end
412
- end
413
-
414
- # Choose only one heat type, or Mixed if there are multiple
415
- heat_type = ''
416
- if has_mixed == true
417
- heat_type = 'Mixed'
418
- end
419
- if has_fuel == true && heat_type != 'Fuel'
420
- if heat_type == ''
421
- heat_type = 'Fuel'
422
- else
423
- heat_type = 'Mixed'
424
- end
425
- end
426
- if has_district == true && heat_type != 'District'
427
- if heat_type == ''
428
- heat_type = 'District'
429
- else
430
- heat_type = 'Mixed'
431
- end
432
- end
433
- if has_electric == true && heat_type != 'Electric'
434
- if heat_type == ''
435
- heat_type = 'Electric'
436
- else
437
- heat_type = 'Mixed'
438
- end
439
- end
440
- if has_solar == true && heat_type != 'Solar'
441
- if heat_type == ''
442
- heat_type = 'Solar'
443
- else
444
- heat_type = 'Mixed'
445
- end
446
- end
447
- if has_hp == true && heat_type != 'HeatPump'
448
- # Assume any additional heat types are supplemental
449
- heat_type = 'HeatPump'
450
- end
451
-
452
- return heat_type
453
-
454
- end
455
-
456
- # Get primary type of heat for one air loop for Appendix G system type selections
457
- #
458
- # @param air_loop [object]
459
- # @return string description of heat type: Fuel, Electric, District, HeatPump, Solar, Mixed
460
- def zone_equipment_heat_type(zone)
461
- fuels = []
462
- heat_type = ''
463
- # Get the heating fuels for all zone HVAC equipment
464
- zone.equipment.each do |equipment|
465
- # Get the object type
466
- obj_type = equipment.iddObjectType.valueName.to_s
467
- case obj_type
468
- when 'OS_AirTerminal_SingleDuct_ConstantVolume_FourPipeInduction'
469
- equipment = equipment.to_AirTerminalSingleDuctConstantVolumeFourPipeInduction.get
470
- heat_type = self.coil_heat_type(equipment.heatingCoil)
471
- when 'OS_AirTerminal_SingleDuct_ConstantVolume_Reheat'
472
- equipment = equipment.to_AirTerminalSingleDuctConstantVolumeReheat.get
473
- heat_type = self.coil_heat_type(equipment.reheatCoil)
474
- when 'OS_AirTerminal_SingleDuct_InletSideMixer'
475
- # TODO
476
- when 'OS_AirTerminal_SingleDuct_ParallelPIU_Reheat'
477
- equipment = equipment.to_AirTerminalSingleDuctParallelPIUReheat.get
478
- heat_type = self.coil_heat_type(equipment.reheatCoil)
479
- when 'OS_AirTerminal_SingleDuct_SeriesPIU_Reheat'
480
- equipment = equipment.to_AirTerminalSingleDuctSeriesPIUReheat.get
481
- heat_type = self.coil_heat_type(equipment.reheatCoil)
482
- when 'OS_AirTerminal_SingleDuct_VAVHeatAndCool_Reheat'
483
- equipment = equipment.to_AirTerminalSingleDuctVAVHeatAndCoolReheat.get
484
- heat_type = self.coil_heat_type(equipment.reheatCoil)
485
- when 'OS_AirTerminal_SingleDuct_VAV_Reheat'
486
- equipment = equipment.to_AirTerminalSingleDuctVAVReheat.get
487
- heat_type = self.coil_heat_type(equipment.reheatCoil)
488
- when 'OS_ZoneHVAC_Baseboard_Convective_Water'
489
- equipment = equipment.to_ZoneHVACBaseboardConvectiveWater.get
490
- heat_type = self.coil_heat_type(equipment.heatingCoil)
491
- when 'OS_ZoneHVAC_Baseboard_RadiantConvective_Water'
492
- equipment = equipment.to_ZoneHVACBaseboardRadiantConvectiveWater.get
493
- heat_type = self.coil_heat_type(equipment.heatingCoil)
494
- when 'OS_ZoneHVAC_FourPipeFanCoil'
495
- equipment = equipment.to_ZoneHVACFourPipeFanCoil.get
496
- heat_type = self.coil_heat_type(equipment.heatingCoil)
497
- when 'OS_ZoneHVAC_LowTemperatureRadiant_ConstantFlow'
498
- equipment = equipment.to_ZoneHVACLowTempRadiantConstFlow.get
499
- heat_type = self.coil_heat_type(equipment.heatingCoil)
500
- when 'OS_ZoneHVAC_LowTemperatureRadiant_VariableFlow'
501
- equipment = equipment.to_ZoneHVACLowTempRadiantVarFlow.get
502
- heat_type = self.coil_heat_type(equipment.heatingCoil)
503
- when 'OS_ZoneHVAC_UnitHeater'
504
- equipment = equipment.to_ZoneHVACUnitHeater.get
505
- heat_type = self.coil_heat_type(equipment.heatingCoil)
506
- when 'OS_ZoneHVAC_UnitVentilator'
507
- equipment = equipment.to_ZoneHVACUnitVentilator.get
508
- if equipment.heatingCoil.is_initialized
509
- heat_type = self.coil_heat_type(equipment.heatingCoil.get)
510
- end
511
- when 'OS_ZoneHVAC_Baseboard_Convective_Electric'
512
- heat_type = 'Electric'
513
- when 'OS_ZoneHVAC_Baseboard_RadiantConvective_Electric'
514
- heat_type = 'Electric'
515
- when 'OS_ZoneHVAC_HighTemperatureRadiant'
516
- equipment = equipment.to_ZoneHVACHighTemperatureRadiant.get
517
- case equipment.fuelType
518
- when 'Electricity'
519
- heat_type = 'Electric'
520
- when 'DistrictHeating', 'District'
521
- heat_type = 'District'
522
- when 'SolarEnergy', 'Solar'
523
- heat_type = 'Solar'
524
- when 'NaturalGas', 'Fuel', 'PropaneGas', 'Coal', 'Diesel'
525
- heat_type = 'Fuel'
526
- when 'FuelOilNo1', 'FuelOilNo2'
527
- heat_type = 'Fuel'
528
- when 'HeatPump'
529
- heat_type = 'HeatPump'
530
- else
531
- heat_type = 'Other'
532
- end
533
- when 'OS_ZoneHVAC_IdealLoadsAirSystem'
534
- heat_type = 'District'
535
- when 'OS_ZoneHVAC_LowTemperatureRadiant_Electric'
536
- heat_type = 'Electric'
537
- when 'OS_ZoneHVAC_PackagedTerminalAirConditioner'
538
- equipment = equipment.to_ZoneHVACPackagedTerminalAirConditioner.get
539
- heat_type = self.coil_heating_fuels(equipment.heatingCoil)
540
- when 'OS_ZoneHVAC_PackagedTerminalHeatPump'
541
- heat_type = 'HeatPump'
542
- when 'OS_ZoneHVAC_TerminalUnit_VariableRefrigerantFlow'
543
- heat_type = 'HeatPump'
544
- when 'OS_ZoneHVAC_WaterToAirHeatPump'
545
- # We also go check what fuel serves the loop on which the WSHP heating coil is
546
- equipment = equipment.to_ZoneHVACWaterToAirHeatPump.get
547
- heat_type = self.coil_heat_type(equipment.heatingCoil)
548
- else
549
- OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heat type found for #{obj_type}") end
550
- end
551
-
552
- return heat_type
553
-
554
- end
555
-
556
-
557
- # Get the cooling fuel type of a cooling coil
558
- def coil_cooling_fuels(cooling_coil)
559
- fuels = []
560
- # Get the object type
561
- obj_type = cooling_coil.iddObjectType.valueName.to_s
562
- case obj_type
563
- when 'OS_Coil_Cooling_DX_MultiSpeed'
564
- 'Electricity'
565
- when 'OS_Coil_Cooling_DX_SingleSpeed'
566
- fuels << 'Electricity'
567
- when 'OS_Coil_Cooling_DX_TwoSpeed'
568
- fuels << 'Electricity'
569
- when 'OS_Coil_Cooling_DX_TwoStageWithHumidityControlMode'
570
- fuels << 'Electricity'
571
- when 'OS_Coil_Cooling_DX_VariableRefrigerantFlow'
572
- fuels << 'Electricity'
573
- when 'OS_Coil_Cooling_DX_VariableSpeed'
574
- fuels << 'Electricity'
575
- when 'OS_Coil_Cooling_WaterToAirHeatPump_EquationFit'
576
- fuels << 'Electricity'
577
- when 'OS_Coil_Cooling_WaterToAirHeatPump_VariableSpeed_EquationFit'
578
- fuels << 'Electricity'
579
- when 'OS_CoilSystem_Cooling_DX_HeatExchangerAssisted'
580
- fuels << 'Electricity'
581
- when 'OS_CoilSystem_Cooling_Water_HeatExchangerAssisted'
582
- fuels << 'Electricity'
583
- when 'OS_HeatPump_WaterToWater_EquationFit_Cooling'
584
- fuels << 'Electricity'
585
- when 'OS_Refrigeration_AirChiller'
586
- fuels << 'Electricity'
587
- when 'OS_Coil_Cooling_CooledBeam'
588
- cooling_coil = cooling_coil.to_CoilCoolingCooledBeam.get
589
- if cooling_coil.plantLoop.is_initialized
590
- fuels += self.plant_loop_cooling_fuels(cooling_coil.plantLoop.get)
591
- end
592
- when 'OS_Coil_Cooling_LowTemperatureRadiant_ConstantFlow'
593
- cooling_coil = cooling_coil.to_CoilCoolingLowTempRadiantConstFlow.get
594
- if cooling_coil.plantLoop.is_initialized
595
- fuels += self.plant_loop_cooling_fuels(cooling_coil.plantLoop.get)
596
- end
597
- when 'OS_Coil_Cooling_LowTemperatureRadiant_VariableFlow'
598
- cooling_coil = cooling_coil.to_CoilCoolingLowTempRadiantVarFlow.get
599
- if cooling_coil.plantLoop.is_initialized
600
- fuels += self.plant_loop_cooling_fuels(cooling_coil.plantLoop.get)
601
- end
602
- when 'OS_Coil_Cooling_Water'
603
- cooling_coil = cooling_coil.to_CoilCoolingWater.get
604
- if cooling_coil.plantLoop.is_initialized
605
- fuels += self.plant_loop_cooling_fuels(cooling_coil.plantLoop.get)
606
- end
607
- else
608
- OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No cooling fuel types found for #{obj_type}")
609
- end
610
-
611
- return fuels.uniq.sort
612
-
613
- end
614
-
615
- # Get the heating fuels for a zone
616
- # @ return [Array<String>] an array of fuels
617
- def zone_equipment_heating_fuels(zone)
618
- fuels = []
619
- # Get the heating fuels for all zone HVAC equipment
620
- zone.equipment.each do |equipment|
621
- # Get the object type
622
- obj_type = equipment.iddObjectType.valueName.to_s
623
- case obj_type
624
- when 'OS_AirLoopHVAC_UnitarySystem'
625
- equipment = equipment.to_AirLoopHVACUnitarySystem.get
626
- if equipment.heatingCoil.is_initialized
627
- fuels += self.coil_heating_fuels(equipment.heatingCoil.get)
628
- end
629
- when 'OS_AirTerminal_SingleDuct_ConstantVolume_FourPipeInduction'
630
- equipment = equipment.to_AirTerminalSingleDuctConstantVolumeFourPipeInduction.get
631
- fuels += self.coil_heating_fuels(equipment.heatingCoil)
632
- when 'OS_AirTerminal_SingleDuct_ConstantVolume_Reheat'
633
- equipment = equipment.to_AirTerminalSingleDuctConstantVolumeReheat.get
634
- fuels += self.coil_heating_fuels(equipment.reheatCoil)
635
- when 'OS_AirTerminal_SingleDuct_InletSideMixer'
636
- # @todo complete method
637
- when 'OS_AirTerminal_SingleDuct_ParallelPIU_Reheat'
638
- equipment = equipment.to_AirTerminalSingleDuctParallelPIUReheat.get
639
- fuels += self.coil_heating_fuels(equipment.reheatCoil)
640
- when 'OS_AirTerminal_SingleDuct_SeriesPIU_Reheat'
641
- equipment = equipment.to_AirTerminalSingleDuctSeriesPIUReheat.get
642
- fuels += self.coil_heating_fuels(equipment.reheatCoil)
643
- when 'OS_AirTerminal_SingleDuct_VAVHeatAndCool_Reheat'
644
- equipment = equipment.to_AirTerminalSingleDuctVAVHeatAndCoolReheat.get
645
- fuels += self.coil_heating_fuels(equipment.reheatCoil)
646
- when 'OS_AirTerminal_SingleDuct_VAV_Reheat'
647
- equipment = equipment.to_AirTerminalSingleDuctVAVReheat.get
648
- fuels += self.coil_heating_fuels(equipment.reheatCoil)
649
- when 'OS_ZoneHVAC_Baseboard_Convective_Water'
650
- equipment = equipment.to_ZoneHVACBaseboardConvectiveWater.get
651
- fuels += self.coil_heating_fuels(equipment.heatingCoil)
652
- when 'OS_ZoneHVAC_Baseboard_RadiantConvective_Water'
653
- equipment = equipment.to_ZoneHVACBaseboardRadiantConvectiveWater.get
654
- fuels += self.coil_heating_fuels(equipment.heatingCoil)
655
- when 'OS_ZoneHVAC_FourPipeFanCoil'
656
- equipment = equipment.to_ZoneHVACFourPipeFanCoil.get
657
- fuels += self.coil_heating_fuels(equipment.heatingCoil)
658
- when 'OS_ZoneHVAC_LowTemperatureRadiant_ConstantFlow'
659
- equipment = equipment.to_ZoneHVACLowTempRadiantConstFlow.get
660
- fuels += self.coil_heating_fuels(equipment.heatingCoil)
661
- when 'OS_ZoneHVAC_LowTemperatureRadiant_VariableFlow'
662
- equipment = equipment.to_ZoneHVACLowTempRadiantVarFlow.get
663
- if equipment.model.version < OpenStudio::VersionString.new('3.2.0')
664
- fuels += self.coil_heating_fuels(equipment.heatingCoil)
665
- else
666
- if equipment.heatingCoil.is_initialized
667
- fuels += self.coil_heating_fuels(equipment.heatingCoil.get)
668
- end
669
- end
670
- when 'OS_ZoneHVAC_UnitHeater'
671
- equipment = equipment.to_ZoneHVACUnitHeater.get
672
- fuels += self.coil_heating_fuels(equipment.heatingCoil)
673
- when 'OS_ZoneHVAC_UnitVentilator'
674
- equipment = equipment.to_ZoneHVACUnitVentilator.get
675
- if equipment.heatingCoil.is_initialized
676
- fuels += self.coil_heating_fuels(equipment.heatingCoil.get)
677
- end
678
- when 'OS_ZoneHVAC_Baseboard_Convective_Electric'
679
- fuels << 'Electricity'
680
- when 'OS_ZoneHVAC_Baseboard_RadiantConvective_Electric'
681
- fuels << 'Electricity'
682
- when 'OS_ZoneHVAC_HighTemperatureRadiant'
683
- equipment = equipment.to_ZoneHVACHighTemperatureRadiant.get
684
- fuels << equipment.fuelType
685
- when 'OS_ZoneHVAC_IdealLoadsAirSystem'
686
- fuels << 'DistrictHeating'
687
- when 'OS_ZoneHVAC_LowTemperatureRadiant_Electric'
688
- fuels << 'Electricity'
689
- when 'OS_ZoneHVAC_PackagedTerminalAirConditioner'
690
- equipment = equipment.to_ZoneHVACPackagedTerminalAirConditioner.get
691
- fuels += self.coil_heating_fuels(equipment.heatingCoil)
692
- when 'OS_ZoneHVAC_PackagedTerminalHeatPump'
693
- fuels << 'Electricity'
694
- when 'OS_ZoneHVAC_TerminalUnit_VariableRefrigerantFlow'
695
- fuels << 'Electricity'
696
- when 'OS_ZoneHVAC_WaterToAirHeatPump'
697
- # We also go check what fuel serves the loop on which the WSHP heating coil is
698
- equipment = equipment.to_ZoneHVACWaterToAirHeatPump.get
699
- fuels += self.coil_heating_fuels(equipment.heatingCoil)
700
- else
701
- OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}")
702
- end
703
- end
704
-
705
- return fuels.uniq.sort
706
-
707
- end
708
-
709
- # Get the cooling fuels for a zone
710
- def zone_equipment_cooling_fuels(zone)
711
- fuels = []
712
- # Get the cooling fuels for all zone HVAC equipment
713
- zone.equipment.each do |equipment|
714
- # Get the object type
715
- obj_type = equipment.iddObjectType.valueName.to_s
716
- case obj_type
717
- when 'OS_AirLoopHVAC_UnitarySystem'
718
- equipment = equipment.to_AirLoopHVACUnitarySystem.get
719
- if equipment.coolingCoil.is_initialized
720
- fuels += self.coil_cooling_fuels(equipment.coolingCoil.get)
721
- end
722
- when 'OS_AirTerminal_SingleDuct_ConstantVolume_CooledBeam'
723
- equipment = equipment.to_AirTerminalSingleDuctConstantVolumeCooledBeam.get
724
- fuels += self.coil_cooling_fuels(equipment.coilCoolingCooledBeam)
725
- when 'OS_AirTerminal_SingleDuct_ConstantVolume_FourPipeInduction'
726
- equipment = equipment.to_AirTerminalSingleDuctConstantVolumeFourPipeInduction.get
727
- if equipment.coolingCoil.is_initialized
728
- fuels += self.coil_cooling_fuels(equipment.coolingCoil.get)
729
- end
730
- when 'OS_ZoneHVAC_FourPipeFanCoil'
731
- equipment = equipment.to_ZoneHVACFourPipeFanCoil.get
732
- fuels += self.coil_cooling_fuels(equipment.coolingCoil)
733
- when 'OS_ZoneHVAC_LowTemperatureRadiant_ConstantFlow'
734
- equipment = equipment.to_ZoneHVACLowTempRadiantConstFlow.get
735
- fuels += self.coil_cooling_fuels(equipment.coolingCoil)
736
- when 'OS_ZoneHVAC_LowTemperatureRadiant_VariableFlow'
737
- equipment = equipment.to_ZoneHVACLowTempRadiantVarFlow.get
738
- if equipment.model.version < OpenStudio::VersionString.new('3.2.0')
739
- fuels += self.coil_cooling_fuels(equipment.coolingCoil)
740
- else
741
- if equipment.coolingCoil.is_initialized
742
- fuels += self.coil_cooling_fuels(equipment.coolingCoil.get)
743
- end
744
- end
745
- when 'OS_Refrigeration_AirChiller'
746
- fuels << 'Electricity'
747
- when 'OS_ZoneHVAC_IdealLoadsAirSystem'
748
- fuels << 'DistrictCooling'
749
- when 'OS_ZoneHVAC_PackagedTerminalAirConditioner'
750
- fuels << 'Electricity'
751
- when 'OS_ZoneHVAC_PackagedTerminalHeatPump'
752
- fuels << 'Electricity'
753
- when 'OS_ZoneHVAC_TerminalUnit_VariableRefrigerantFlow'
754
- fuels << 'Electricity'
755
- else
756
- OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No cooling fuel types found for #{obj_type}")
757
- end
758
- end
759
-
760
- return fuels.uniq.sort
761
-
762
- end
763
-
764
- # Get the heating fuels for a zones airloop
765
- def zone_airloop_heating_fuels(zone)
766
- fuels = []
767
- # Get the air loop that serves this zone
768
- air_loop = zone.airLoopHVAC
769
- if air_loop.empty?
770
- return fuels
771
- end
772
- air_loop = air_loop.get
773
-
774
- # Find fuel types of all equipment
775
- # on the supply side of this airloop.
776
- air_loop.supplyComponents.each do |component|
777
- # Get the object type
778
- obj_type = component.iddObjectType.valueName.to_s
779
- case obj_type
780
- when 'OS_AirLoopHVAC_UnitaryHeatCool_VAVChangeoverBypass'
781
- component = component.to_AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.get
782
- fuels += self.coil_heating_fuels(component.heatingCoil)
783
- when 'OS_AirLoopHVAC_UnitaryHeatPump_AirToAir'
784
- component = component.to_AirLoopHVACUnitaryHeatPumpAirToAir.get
785
- fuels += self.coil_heating_fuels(component.heatingCoil)
786
- when 'OS_AirLoopHVAC_UnitaryHeatPump_AirToAir_MultiSpeed'
787
- component = component.to_AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.get
788
- fuels += self.coil_heating_fuels(component.heatingCoil)
789
- when 'OS_AirLoopHVAC_UnitarySystem'
790
- component = component.to_AirLoopHVACUnitarySystem.get
791
- if component.heatingCoil.is_initialized
792
- fuels += self.coil_heating_fuels(component.heatingCoil.get)
793
- end
794
- when 'OS_Coil_Heating_DX_MultiSpeed'
795
- fuels += self.coil_heating_fuels(component)
796
- when 'OS_Coil_Heating_DX_SingleSpeed'
797
- fuels += self.coil_heating_fuels(component)
798
- when 'OS_Coil_Heating_DX_VariableSpeed'
799
- fuels += self.coil_heating_fuels(component)
800
- when 'OS_Coil_Heating_Desuperheater'
801
- fuels += self.coil_heating_fuels(component)
802
- when 'OS_Coil_Heating_Electric'
803
- fuels += self.coil_heating_fuels(component)
804
- when 'OS_Coil_Heating_Gas'
805
- fuels += self.coil_heating_fuels(component)
806
- when 'OS_Coil_Heating_Gas_MultiStage'
807
- fuels += self.coil_heating_fuels(component)
808
- when 'OS_Coil_Heating_Water'
809
- fuels += self.coil_heating_fuels(component)
810
- when 'OS_Coil_Heating_WaterToAirHeatPump_EquationFit'
811
- fuels += self.coil_heating_fuels(component)
812
- when 'OS_Coil_Heating_WaterToAirHeatPump_VariableSpeed_EquationFit'
813
- fuels += self.coil_heating_fuels(component)
814
- when 'OS_Coil_WaterHeating_AirToWaterHeatPump'
815
- fuels += self.coil_heating_fuels(component)
816
- when 'OS_Coil_WaterHeating_Desuperheater'
817
- fuels += self.coil_heating_fuels(component)
818
- when 'OS_Node', 'OS_Fan_ConstantVolume', 'OS_Fan_VariableVolume', 'OS_AirLoopHVAC_OutdoorAirSystem'
819
- # To avoid extraneous debug messages
820
- else
821
- #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}")
822
- end
823
- end
824
-
825
- return fuels.uniq.sort
826
-
827
- end
828
-
829
- # Get the cooling fuels for a zones airloop
830
- def zone_airloop_cooling_fuels(zone)
831
- fuels = []
832
- # Get the air loop that serves this zone
833
- air_loop = zone.airLoopHVAC
834
- if air_loop.empty?
835
- return fuels
836
- end
837
- air_loop = air_loop.get
838
-
839
- # Find fuel types of all equipment
840
- # on the supply side of this airloop.
841
- air_loop.supplyComponents.each do |component|
842
- # Get the object type
843
- obj_type = component.iddObjectType.valueName.to_s
844
- case obj_type
845
- when 'OS_AirLoopHVAC_UnitaryHeatCool_VAVChangeoverBypass'
846
- component = component.to_AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.get
847
- fuels += self.coil_cooling_fuels(component.coolingCoil)
848
- when 'OS_AirLoopHVAC_UnitaryHeatPump_AirToAir'
849
- component = component.to_AirLoopHVACUnitaryHeatPumpAirToAir.get
850
- fuels += self.coil_cooling_fuels(component.coolingCoil)
851
- when 'OS_AirLoopHVAC_UnitaryHeatPump_AirToAir_MultiSpeed'
852
- component = component.to_AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.get
853
- fuels += self.coil_cooling_fuels(component.coolingCoil)
854
- when 'OS_AirLoopHVAC_UnitarySystem'
855
- component = component.to_AirLoopHVACUnitarySystem.get
856
- if component.coolingCoil.is_initialized
857
- fuels += self.coil_cooling_fuels(component.coolingCoil.get)
858
- end
859
- when 'OS_EvaporativeCooler_Direct_ResearchSpecial'
860
- fuels << 'Electricity'
861
- when 'OS_EvaporativeCooler_Indirect_ResearchSpecial'
862
- fuels << 'Electricity'
863
- when 'OS_Coil_Cooling_DX_MultiSpeed'
864
- fuels += self.coil_cooling_fuels(component)
865
- when 'OS_Coil_Cooling_DX_SingleSpeed'
866
- fuels += self.coil_cooling_fuels(component)
867
- when 'OS_Coil_Cooling_DX_TwoSpeed'
868
- fuels += self.coil_cooling_fuels(component)
869
- when 'OS_Coil_Cooling_DX_TwoStageWithHumidityControlMode'
870
- fuels += self.coil_cooling_fuels(component)
871
- when 'OS_Coil_Cooling_DX_VariableRefrigerantFlow'
872
- fuels += self.coil_cooling_fuels(component)
873
- when 'OS_Coil_Cooling_DX_VariableSpeed'
874
- fuels += self.coil_cooling_fuels(component)
875
- when 'OS_Coil_Cooling_WaterToAirHeatPump_EquationFit'
876
- fuels += self.coil_cooling_fuels(component)
877
- when 'OS_Coil_Cooling_WaterToAirHeatPump_VariableSpeed_EquationFit'
878
- fuels += self.coil_cooling_fuels(component)
879
- when 'OS_CoilSystem_Cooling_DX_HeatExchangerAssisted'
880
- fuels += self.coil_cooling_fuels(component)
881
- when 'OS_CoilSystem_Cooling_Water_HeatExchangerAssisted'
882
- fuels += self.coil_cooling_fuels(component)
883
- when 'OS_Coil_Cooling_Water'
884
- fuels += self.coil_cooling_fuels(component)
885
- when 'OS_HeatPump_WaterToWater_EquationFit_Cooling'
886
- fuels += self.coil_cooling_fuels(component)
887
- when 'OS_Node', 'OS_Fan_ConstantVolume', 'OS_Fan_VariableVolume', 'OS_AirLoopHVAC_OutdoorAirSystem'
888
- # To avoid extraneous debug messages
889
- else
890
- #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}")
891
- end
892
- end
893
-
894
- return fuels.uniq.sort
895
-
896
- end
897
-
898
- end