openstudio-standards 0.4.0 → 0.5.0.rc1

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