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
@@ -201,8 +201,8 @@ class Standard
201
201
 
202
202
  # Get appropriate construction object based on type of surface or subsurface
203
203
  # @author: Doug Maddox, PNNL
204
- # @param: surface_category [string] type of surface: this is not an OpenStudio string
205
- # @param: surface_type [string] SubSurfaceType: this is an OpenStudio string
204
+ # @param: surface_category [String type of surface: this is not an OpenStudio string
205
+ # @param: surface_type [String SubSurfaceType: this is an OpenStudio string
206
206
  # @param: cons_set [object] DefaultSubSurfaceConstructions object
207
207
  # @return: [object] Construction object
208
208
  def get_default_surface_cons_from_surface_type(surface_category, surface_type, cons_set)
@@ -5,7 +5,7 @@ class Standard
5
5
  #
6
6
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
7
7
  # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
8
- # @return [Bool] returns true if successful, false if not
8
+ # @return [Boolean] returns true if successful, false if not
9
9
  def plant_loop_apply_standard_controls(plant_loop, climate_zone)
10
10
  # Supply water temperature reset
11
11
  # plant_loop_enable_supply_water_temperature_reset(plant_loop) if plant_loop_supply_water_temperature_reset_required?(plant_loop)
@@ -17,7 +17,7 @@ class Standard
17
17
  # @param chilled_water_loop [OpenStudio::Model::PlantLoop] chilled water loop
18
18
  # @param dsgn_sup_wtr_temp [Double] design chilled water supply T
19
19
  # @param dsgn_sup_wtr_temp_delt [Double] design chilled water supply delta T
20
- # @return [Bool] returns true if successful, false if not
20
+ # @return [Boolean] returns true if successful, false if not
21
21
  def chw_sizing_control(model, chilled_water_loop, dsgn_sup_wtr_temp, dsgn_sup_wtr_temp_delt)
22
22
  # chilled water loop sizing and controls
23
23
  if dsgn_sup_wtr_temp.nil?
@@ -62,7 +62,7 @@ class Standard
62
62
  # Returns true if primary and/or secondary pumps are variable speed.
63
63
  #
64
64
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
65
- # @return [Bool] returns true if variable flow, false if not
65
+ # @return [Boolean] returns true if variable flow, false if not
66
66
  def plant_loop_variable_flow_system?(plant_loop)
67
67
  variable_flow = false
68
68
 
@@ -89,7 +89,7 @@ class Standard
89
89
  # you could set at 0.9 and just calculate the pressure rise to have your 19 W/GPM or whatever
90
90
  #
91
91
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
92
- # @return [Bool] returns true if successful, false if not
92
+ # @return [Boolean] returns true if successful, false if not
93
93
  def plant_loop_apply_prm_baseline_pump_power(plant_loop)
94
94
  # Determine the pumping power per
95
95
  # flow based on loop type.
@@ -104,7 +104,7 @@ class Standard
104
104
 
105
105
  has_district_heating = false
106
106
  plant_loop.supplyComponents.each do |sc|
107
- if sc.to_DistrictHeating.is_initialized
107
+ if sc.iddObjectType.valueName.to_s.include?('DistrictHeating')
108
108
  has_district_heating = true
109
109
  end
110
110
  end
@@ -187,7 +187,7 @@ class Standard
187
187
  # Applies the temperatures to the plant loop based on Appendix G.
188
188
  #
189
189
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
190
- # @return [Bool] returns true if successful, false if not
190
+ # @return [Boolean] returns true if successful, false if not
191
191
  def plant_loop_apply_prm_baseline_temperatures(plant_loop)
192
192
  sizing_plant = plant_loop.sizingPlant
193
193
  loop_type = sizing_plant.loopType
@@ -206,7 +206,7 @@ class Standard
206
206
  # Applies the hot water temperatures to the plant loop based on Appendix G.
207
207
  #
208
208
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
209
- # @return [Bool] returns true if successful, false if not
209
+ # @return [Boolean] returns true if successful, false if not
210
210
  def plant_loop_apply_prm_baseline_hot_water_temperatures(plant_loop)
211
211
  sizing_plant = plant_loop.sizingPlant
212
212
 
@@ -243,7 +243,7 @@ class Standard
243
243
  # Applies the chilled water temperatures to the plant loop based on Appendix G.
244
244
  #
245
245
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
246
- # @return [Bool] returns true if successful, false if not
246
+ # @return [Boolean] returns true if successful, false if not
247
247
  def plant_loop_apply_prm_baseline_chilled_water_temperatures(plant_loop)
248
248
  sizing_plant = plant_loop.sizingPlant
249
249
 
@@ -286,7 +286,7 @@ class Standard
286
286
  # Applies the condenser water temperatures to the plant loop based on Appendix G.
287
287
  #
288
288
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
289
- # @return [Bool] returns true if successful, false if not
289
+ # @return [Boolean] returns true if successful, false if not
290
290
  def plant_loop_apply_prm_baseline_condenser_water_temperatures(plant_loop)
291
291
  sizing_plant = plant_loop.sizingPlant
292
292
  loop_type = sizing_plant.loopType
@@ -447,7 +447,7 @@ class Standard
447
447
  # Required if heating or cooling capacity is greater than 300,000 Btu/hr.
448
448
  #
449
449
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
450
- # @return [Bool] returns true if required, false if not
450
+ # @return [Boolean] returns true if required, false if not
451
451
  def plant_loop_supply_water_temperature_reset_required?(plant_loop)
452
452
  reset_required = false
453
453
 
@@ -488,7 +488,7 @@ class Standard
488
488
  # Enable reset of hot or chilled water temperature based on outdoor air temperature.
489
489
  #
490
490
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
491
- # @return [Bool] returns true if successful, false if not
491
+ # @return [Boolean] returns true if successful, false if not
492
492
  def plant_loop_enable_supply_water_temperature_reset(plant_loop)
493
493
  # Get the current setpoint manager on the outlet node
494
494
  # and determine if already has temperature reset
@@ -593,7 +593,7 @@ class Standard
593
593
  else
594
594
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.PlantLoop', "For #{plant_loop.name} capacity of #{chiller.name} is not available, total cooling capacity of plant loop will be incorrect when applying standard.")
595
595
  end
596
- # DistrictCooling
596
+ # DistrictCooling
597
597
  elsif sc.to_DistrictCooling.is_initialized
598
598
  dist_clg = sc.to_DistrictCooling.get
599
599
  if dist_clg.nominalCapacity.is_initialized
@@ -623,8 +623,8 @@ class Standard
623
623
  # on the plant loop.
624
624
  total_heating_capacity_w = 0
625
625
  plant_loop.supplyComponents.each do |sc|
626
- # BoilerHotWater
627
626
  if sc.to_BoilerHotWater.is_initialized
627
+ # BoilerHotWater
628
628
  boiler = sc.to_BoilerHotWater.get
629
629
  if boiler.nominalCapacity.is_initialized
630
630
  total_heating_capacity_w += boiler.nominalCapacity.get
@@ -633,8 +633,8 @@ class Standard
633
633
  else
634
634
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.PlantLoop', "For #{plant_loop.name} capacity of Boiler:HotWater ' #{boiler.name} is not available, total heating capacity of plant loop will be incorrect when applying standard.")
635
635
  end
636
- # WaterHeater:Mixed
637
636
  elsif sc.to_WaterHeaterMixed.is_initialized
637
+ # WaterHeater:Mixed
638
638
  water_heater = sc.to_WaterHeaterMixed.get
639
639
  if water_heater.heaterMaximumCapacity.is_initialized
640
640
  total_heating_capacity_w += water_heater.heaterMaximumCapacity.get
@@ -643,8 +643,8 @@ class Standard
643
643
  else
644
644
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.PlantLoop', "For #{plant_loop.name} capacity of WaterHeater:Mixed #{water_heater.name} is not available, total heating capacity of plant loop will be incorrect when applying standard.")
645
645
  end
646
- # WaterHeater:Stratified
647
646
  elsif sc.to_WaterHeaterStratified.is_initialized
647
+ # WaterHeater:Stratified
648
648
  water_heater = sc.to_WaterHeaterStratified.get
649
649
  if water_heater.heater1Capacity.is_initialized
650
650
  total_heating_capacity_w += water_heater.heater1Capacity.get
@@ -652,9 +652,16 @@ class Standard
652
652
  if water_heater.heater2Capacity.is_initialized
653
653
  total_heating_capacity_w += water_heater.heater2Capacity.get
654
654
  end
655
+ elsif sc.iddObjectType.valueName.to_s.include?('DistrictHeating')
655
656
  # DistrictHeating
656
- elsif sc.to_DistrictHeating.is_initialized
657
- dist_htg = sc.to_DistrictHeating.get
657
+ case sc.iddObjectType.valueName.to_s
658
+ when 'OS_DistrictHeating'
659
+ dist_htg = sc.to_DistrictHeating.get
660
+ when 'OS_DistrictHeatingWater'
661
+ dist_htg = sc.to_DistrictHeatingWater.get
662
+ when 'OS_DistrictHeatingSteam'
663
+ dist_htg = sc.to_DistrictHeatingSteam.get
664
+ end
658
665
  if dist_htg.nominalCapacity.is_initialized
659
666
  total_heating_capacity_w += dist_htg.nominalCapacity.get
660
667
  elsif dist_htg.autosizedNominalCapacity.is_initialized
@@ -743,7 +750,7 @@ class Standard
743
750
  # Applies the pumping controls to the loop based on Appendix G.
744
751
  #
745
752
  # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
746
- # @return [Bool] returns true if successful, false if not
753
+ # @return [Boolean] returns true if successful, false if not
747
754
  def plant_loop_apply_prm_baseline_pumping_type(plant_loop)
748
755
  sizing_plant = plant_loop.sizingPlant
749
756
  loop_type = sizing_plant.loopType
@@ -763,7 +770,7 @@ class Standard
763
770
  # Applies the chilled water pumping controls to the loop based on Appendix G.
764
771
  #
765
772
  # @param plant_loop [OpenStudio::Model::PlantLoop] chilled water loop
766
- # @return [Bool] returns true if successful, false if not
773
+ # @return [Boolean] returns true if successful, false if not
767
774
  def plant_loop_apply_prm_baseline_chilled_water_pumping_type(plant_loop)
768
775
  # Determine the pumping type.
769
776
  minimum_cap_tons = 300.0
@@ -835,7 +842,7 @@ class Standard
835
842
  # Applies the hot water pumping controls to the loop based on Appendix G.
836
843
  #
837
844
  # @param plant_loop [OpenStudio::Model::PlantLoop] hot water loop
838
- # @return [Bool] returns true if successful, false if not
845
+ # @return [Boolean] returns true if successful, false if not
839
846
  def plant_loop_apply_prm_baseline_hot_water_pumping_type(plant_loop)
840
847
  # Determine the minimum area to determine
841
848
  # pumping type.
@@ -870,7 +877,7 @@ class Standard
870
877
  # Applies the condenser water pumping controls to the loop based on Appendix G.
871
878
  #
872
879
  # @param plant_loop [OpenStudio::Model::PlantLoop] condenser water loop
873
- # @return [Bool] returns true if successful, false if not
880
+ # @return [Boolean] returns true if successful, false if not
874
881
  def plant_loop_apply_prm_baseline_condenser_water_pumping_type(plant_loop)
875
882
  # All condenser water loops are constant flow
876
883
  control_type = 'Constant Flow'
@@ -898,7 +905,7 @@ class Standard
898
905
  # into multiple separate boilers based on Appendix G.
899
906
  #
900
907
  # @param plant_loop [OpenStudio::Model::PlantLoop] hot water loop
901
- # @return [Bool] returns true if successful, false if not
908
+ # @return [Boolean] returns true if successful, false if not
902
909
  def plant_loop_apply_prm_number_of_boilers(plant_loop)
903
910
  # Skip non-heating plants
904
911
  return true unless plant_loop.sizingPlant.loopType == 'Heating'
@@ -961,8 +968,9 @@ class Standard
961
968
  # Splits the single chiller used for the initial sizing run
962
969
  # into multiple separate chillers based on Appendix G.
963
970
  #
964
- # @param plant_loop_args [Array] chilled water loop (OpenStudio::Model::PlantLoop), sizing run directory
965
- # @return [Bool] returns true if successful, false if not
971
+ # @param plant_loop [OpenStudio::Model::PlantLoop] chilled water loop
972
+ # @param sizing_run_dir [String] sizing run directory
973
+ # @return [Boolean] returns true if successful, false if not
966
974
  def plant_loop_apply_prm_number_of_chillers(plant_loop, sizing_run_dir = nil)
967
975
  # Skip non-cooling plants
968
976
  return true unless plant_loop.sizingPlant.loopType == 'Cooling'
@@ -1110,7 +1118,7 @@ class Standard
1110
1118
  # into multiple separate cooling towers based on Appendix G.
1111
1119
  #
1112
1120
  # @param plant_loop [OpenStudio::Model::PlantLoop] condenser water loop
1113
- # @return [Bool] returns true if successful, false if not
1121
+ # @return [Boolean] returns true if successful, false if not
1114
1122
  def plant_loop_apply_prm_number_of_cooling_towers(plant_loop)
1115
1123
  # Skip non-cooling plants
1116
1124
  return true unless plant_loop.sizingPlant.loopType == 'Condenser'
@@ -1372,7 +1380,7 @@ class Standard
1372
1380
  obj_type = component.iddObjectType.valueName.to_s
1373
1381
 
1374
1382
  case obj_type
1375
- when 'OS_DistrictHeating'
1383
+ when 'OS_DistrictHeating', 'OS_DistrictHeatingWater', 'OS_DistrictHeatingSteam'
1376
1384
  primary_fuels << 'DistrictHeating'
1377
1385
  combination_system = false
1378
1386
  when 'OS_HeatPump_WaterToWater_EquationFit_Heating'
@@ -1398,7 +1406,13 @@ class Standard
1398
1406
  # Check the plant loop connection on the source side
1399
1407
  if component.secondaryPlantLoop.is_initialized
1400
1408
  source_plant_loop = component.secondaryPlantLoop.get
1401
- secondary_fuels += plant_loop.model.plant_loop_heating_fuels(source_plant_loop)
1409
+
1410
+ # error if Loop heating fuels method is not available
1411
+ if component.model.version < OpenStudio::VersionString.new('3.6.0')
1412
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.Standards.PlantLoop', 'Required Loop method .heatingFuelTypes is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
1413
+ end
1414
+
1415
+ secondary_fuels += source_plant_loop.heatingFuelTypes.map(&:valueName)
1402
1416
  secondary_heating_capacity += plant_loop_total_heating_capacity(source_plant_loop)
1403
1417
  end
1404
1418
 
@@ -1421,7 +1435,13 @@ class Standard
1421
1435
  # Check the plant loop connection on the source side
1422
1436
  if component.secondaryPlantLoop.is_initialized
1423
1437
  source_plant_loop = component.secondaryPlantLoop.get
1424
- secondary_fuels += plant_loop.model.plant_loop_heating_fuels(source_plant_loop)
1438
+
1439
+ # error if Loop heating fuels method is not available
1440
+ if component.model.version < OpenStudio::VersionString.new('3.6.0')
1441
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.Standards.PlantLoop', 'Required Loop method .heatingFuelTypes is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
1442
+ end
1443
+
1444
+ secondary_fuels += source_plant_loop.heatingFuelTypes.map(&:valueName)
1425
1445
  secondary_heating_capacity += plant_loop_total_heating_capacity(source_plant_loop)
1426
1446
  end
1427
1447
 
@@ -1436,7 +1456,13 @@ class Standard
1436
1456
  cooling_hx_control_types.each(&:downcase!)
1437
1457
  if !cooling_hx_control_types.include?(hx.controlType.downcase) && hx.secondaryPlantLoop.is_initialized
1438
1458
  source_plant_loop = hx.secondaryPlantLoop.get
1439
- secondary_fuels += plant_loop.model.plant_loop_heating_fuels(source_plant_loop)
1459
+
1460
+ # error if Loop heating fuels method is not available
1461
+ if component.model.version < OpenStudio::VersionString.new('3.6.0')
1462
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.Standards.PlantLoop', 'Required Loop method .heatingFuelTypes is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
1463
+ end
1464
+
1465
+ secondary_fuels += source_plant_loop.heatingFuelTypes.map(&:valueName)
1440
1466
  secondary_heating_capacity += plant_loop_total_heating_capacity(source_plant_loop)
1441
1467
  end
1442
1468
 
@@ -1476,4 +1502,43 @@ class Standard
1476
1502
  plantloop_capacity = plantloop_dt * plantloop_maxflowrate * 1000.0 * 4180.0
1477
1503
  return plantloop_capacity
1478
1504
  end
1505
+
1506
+ # This methods replaces all indoor or outdoor pipes which model the heat transfer between the pipe and the
1507
+ # environement by adiabatic pipes.
1508
+ #
1509
+ # @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
1510
+ # @return [Boolean] returns true if successful
1511
+ def plant_loop_adiabatic_pipes_only(plant_loop)
1512
+ supply_side_components = plant_loop.supplyComponents
1513
+ demand_side_components = plant_loop.demandComponents
1514
+ plant_loop_components = supply_side_components += demand_side_components
1515
+ plant_loop_components.each do |component|
1516
+ # Get the object type
1517
+ obj_type = component.iddObjectType.valueName.to_s
1518
+ next unless ['OS_Pipe_Indoor', 'OS_Pipe_Outdoor'].include?(obj_type)
1519
+
1520
+ # Get pipe object
1521
+ pipe = nil
1522
+ case obj_type
1523
+ when 'OS_Pipe_Indoor'
1524
+ pipe = component.to_PipeIndoor.get
1525
+ when 'OS_Pipe_Outdoor'
1526
+ pipe = component.to_PipeOutdoor.get
1527
+ end
1528
+
1529
+ # Get pipe node
1530
+ node = prm_get_optional_handler(pipe, @sizing_run_dir, 'to_StraightComponent', 'outletModelObject', 'to_Node')
1531
+
1532
+ # Get pipe and node names
1533
+ node_name = node.name.get
1534
+ pipe_name = pipe.name.get
1535
+
1536
+ # Replace indoor or outdoor pipe by an adiabatic pipe
1537
+ new_pipe = OpenStudio::Model::PipeAdiabatic.new(plant_loop.model)
1538
+ new_pipe.setName(pipe_name)
1539
+ new_pipe.addToNode(node)
1540
+ component.remove
1541
+ end
1542
+ return true
1543
+ end
1479
1544
  end
@@ -9,7 +9,7 @@ module Pump
9
9
  # @param pump [OpenStudio::Model::StraightComponent] pump object, allowable types:
10
10
  # PumpConstantSpeed, PumpVariableSpeed
11
11
  # @param target_w_per_gpm [Double] the target power per flow, in W/gpm
12
- # @return [Bool] returns true if successful, false if not
12
+ # @return [Boolean] returns true if successful, false if not
13
13
  # @author jmarrec
14
14
  def pump_apply_prm_pressure_rise_and_motor_efficiency(pump, target_w_per_gpm)
15
15
  # Eplus assumes an impeller efficiency of 0.78 to determine the total efficiency
@@ -94,7 +94,7 @@ module Pump
94
94
  #
95
95
  # @param pump [OpenStudio::Model::StraightComponent] pump object, allowable types:
96
96
  # PumpConstantSpeed, PumpVariableSpeed
97
- # @return [Bool] returns true if successful, false if not
97
+ # @return [Boolean] returns true if successful, false if not
98
98
  def pump_apply_standard_minimum_motor_efficiency(pump)
99
99
  # Get the horsepower
100
100
  bhp = pump_brake_horsepower(pump)
@@ -33,8 +33,8 @@ end
33
33
  # Intended use is for storing fan schedules to hash of ZoneName:SchedArray so schedules
34
34
  # can be saved when HVAC objects are deleted
35
35
  # @author Doug Maddox, PNNL
36
- # @param [object] model
37
- # @param [Object] schedule_ruleset
36
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
37
+ # @param schedule_constant [OpenStudio::Model::ScheduleConstant] schedule
38
38
  # @return [Array<Double>] Array of sequential hourly values for year + 24 hours at end for holiday
39
39
  def get_8760_values_from_schedule_constant(model, schedule_constant)
40
40
  yd = model.getYearDescription
@@ -394,13 +394,13 @@ class Standard
394
394
  end
395
395
 
396
396
  # get values for new default profile
397
- new_default_daySchedule = rule_vector[new_default_index].daySchedule
398
- new_default_daySchedule_values = new_default_daySchedule.values
399
- new_default_daySchedule_times = new_default_daySchedule.times
397
+ new_default_day_schedule = rule_vector[new_default_index].daySchedule
398
+ new_default_day_schedule_values = new_default_day_schedule.values
399
+ new_default_day_schedule_times = new_default_day_schedule.times
400
400
 
401
401
  # update values and times for default profile
402
- for i in 0..(new_default_daySchedule_values.size - 1)
403
- old_default_schedule_day.addValue(new_default_daySchedule_times[i], new_default_daySchedule_values[i])
402
+ for i in 0..(new_default_day_schedule_values.size - 1)
403
+ old_default_schedule_day.addValue(new_default_day_schedule_times[i], new_default_day_schedule_values[i])
404
404
  end
405
405
 
406
406
  # remove rule object that has become the default. Also try to remove the ScheduleDay
@@ -415,8 +415,8 @@ class Standard
415
415
  # @author David Goldwasser
416
416
  # @param schedule [OpenStudio::Model::ScheduleRuleset] schedule ruleset object
417
417
  # @param ramp_frequency [Double] ramp frequency in minutes
418
- # @param infer_hoo_for_non_assigned_objects [Bool] attempt to get hoo for objects like swh with and exterior lighting
419
- # @param error_on_out_of_order [Bool] true will error if applying formula creates out of order values
418
+ # @param infer_hoo_for_non_assigned_objects [Boolean] attempt to get hoo for objects like swh with and exterior lighting
419
+ # @param error_on_out_of_order [Boolean] true will error if applying formula creates out of order values
420
420
  # @return [OpenStudio::Model::ScheduleRuleset] schedule ruleset object
421
421
  def schedule_apply_parametric_inputs(schedule, ramp_frequency, infer_hoo_for_non_assigned_objects, error_on_out_of_order, parametric_inputs = nil)
422
422
  # Check if parametric inputs were supplied and generate them if not
@@ -611,7 +611,7 @@ class Standard
611
611
  # @param sat_end_time [OpenStudio::Time] Saturday end time. If greater than 24:00, hours of operation will wrap over midnight.
612
612
  # @param sun_start_time [OpenStudio::Time] Sunday start time. If nil, no change will be made to this day.
613
613
  # @param sun_end_time [OpenStudio::Time] Sunday end time. If greater than 24:00, hours of operation will wrap over midnight.
614
- # @return [Bool] returns true if successful, false if not
614
+ # @return [Boolean] returns true if successful, false if not
615
615
  def schedule_ruleset_set_hours_of_operation(schedule_ruleset, wkdy_start_time: nil, wkdy_end_time: nil, sat_start_time: nil, sat_end_time: nil, sun_start_time: nil, sun_end_time: nil)
616
616
  # Default day is assumed to represent weekdays
617
617
  if wkdy_start_time && wkdy_end_time
@@ -645,9 +645,9 @@ class Standard
645
645
  #
646
646
  # Return Array of weekday values from Array of all day values
647
647
  # @author Xuechen (Jerry) Lei, PNNL
648
- # @param model [OpenStudio::model::Model] OpenStudio model object
648
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
649
649
  # @param values [Array] hourly time-series values of all days
650
- # @param value_includes_holiday [Bool] whether the input values include a day of holiday at the end of the array
650
+ # @param value_includes_holiday [Boolean] whether the input values include a day of holiday at the end of the array
651
651
  #
652
652
  # @return [Array] hourly time-series values in weekdays
653
653
  #
@@ -721,7 +721,7 @@ class Standard
721
721
  day_schedule_holiday = schedule_ruleset.to_ScheduleRuleset.get.defaultDaySchedule
722
722
  end
723
723
  # Currently holidaySchedule is not working in SDK in ScheduleRuleset object
724
- # TODO: enable the following lines when holidaySchedule is available
724
+ # @todo enable the following lines when holidaySchedule is available
725
725
  # if !schedule_ruleset.isHolidayScheduleDefaulted
726
726
  # day_schedule = schedule_ruleset.to_ScheduleRuleset.get.holidaySchedule
727
727
  # else
@@ -974,7 +974,7 @@ class Standard
974
974
  end
975
975
 
976
976
  # Last day in values array is the holiday schedule
977
- # TODO: add holiday schedule when implemented in OpenStudio SDK
977
+ # @todo add holiday schedule when implemented in OpenStudio SDK
978
978
  end
979
979
 
980
980
  # Need to handle design days
@@ -1186,8 +1186,8 @@ class Standard
1186
1186
  # @param val_flr [Double] value floor
1187
1187
  # @param val_clg [Double] value ceiling
1188
1188
  # @param ramp_frequency [Double] ramp frequency in minutes
1189
- # @param infer_hoo_for_non_assigned_objects [Bool] attempt to get hoo for objects like swh with and exterior lighting
1190
- # @param error_on_out_of_order [Bool] true will error if applying formula creates out of order values
1189
+ # @param infer_hoo_for_non_assigned_objects [Boolean] attempt to get hoo for objects like swh with and exterior lighting
1190
+ # @param error_on_out_of_order [Boolean] true will error if applying formula creates out of order values
1191
1191
  # @return [OpenStudio::Model::ScheduleDay] schedule day
1192
1192
  # @api private
1193
1193
  def process_hrs_of_operation_hash(sch_day, hoo_start, hoo_end, val_flr, val_clg, ramp_frequency, infer_hoo_for_non_assigned_objects, error_on_out_of_order)
@@ -8,7 +8,7 @@ class Standard
8
8
  # situations. When it fails, it will log warnings/errors for users to see.
9
9
  #
10
10
  # @param space [OpenStudio::Model::Space] space object
11
- # @param draw_daylight_areas_for_debugging [Bool] If this argument is set to true,
11
+ # @param draw_daylight_areas_for_debugging [Boolean] If this argument is set to true,
12
12
  # daylight areas will be added to the model as surfaces for visual debugging.
13
13
  # Yellow = toplighted area, Red = primary sidelighted area,
14
14
  # Blue = secondary sidelighted area, Light Blue = floor
@@ -804,9 +804,9 @@ class Standard
804
804
 
805
805
  # Default for 2013 and earlier is to Add daylighting controls (sidelighting and toplighting) per the template
806
806
  # @param space [OpenStudio::Model::Space] the space with daylighting
807
- # @param remove_existing_controls [Bool] if true, will remove existing controls then add new ones
808
- # @param draw_daylight_areas_for_debugging [Bool] If this argument is set to true,
809
- # @return [boolean] true if successful
807
+ # @param remove_existing [Boolean] if true, will remove existing controls then add new ones
808
+ # @param draw_areas_for_debug [Boolean] If this argument is set to true,
809
+ # @return [Boolean] returns true if successful, false if not
810
810
  def space_set_baseline_daylighting_controls(space, remove_existing = false, draw_areas_for_debug = false)
811
811
  added = space_add_daylighting_controls(space, remove_existing, draw_areas_for_debug)
812
812
  return added
@@ -818,12 +818,12 @@ class Standard
818
818
  # situations. When it fails, it will log warnings/errors for users to see.
819
819
  #
820
820
  # @param space [OpenStudio::Model::Space] the space with daylighting
821
- # @param remove_existing_controls [Bool] if true, will remove existing controls then add new ones
822
- # @param draw_daylight_areas_for_debugging [Bool] If this argument is set to true,
821
+ # @param remove_existing_controls [Boolean] if true, will remove existing controls then add new ones
822
+ # @param draw_daylight_areas_for_debugging [Boolean] If this argument is set to true,
823
823
  # daylight areas will be added to the model as surfaces for visual debugging.
824
824
  # Yellow = toplighted area, Red = primary sidelighted area,
825
825
  # Blue = secondary sidelighted area, Light Blue = floor
826
- # @return [boolean] true if successful
826
+ # @return [Boolean] returns true if successful, false if not
827
827
  # @todo add a list of valid choices for template argument
828
828
  # @todo add exception for retail spaces
829
829
  # @todo add exception 2 for skylights with VT < 0.4
@@ -1223,9 +1223,9 @@ class Standard
1223
1223
  # @param areas [Hash] a hash of daylighted areas
1224
1224
  # @param sorted_windows [Hash] a hash of windows, sorted by priority
1225
1225
  # @param sorted_skylights [Hash] a hash of skylights, sorted by priority
1226
- # @param req_top_ctrl [Bool] if toplighting controls are required
1227
- # @param req_pri_ctrl [Bool] if primary sidelighting controls are required
1228
- # @param req_sec_ctrl [Bool] if secondary sidelighting controls are required
1226
+ # @param req_top_ctrl [Boolean] if toplighting controls are required
1227
+ # @param req_pri_ctrl [Boolean] if primary sidelighting controls are required
1228
+ # @param req_sec_ctrl [Boolean] if secondary sidelighting controls are required
1229
1229
  # @return [Array] array of 4 items
1230
1230
  # [sensor 1 fraction, sensor 2 fraction, sensor 1 window, sensor 2 window]
1231
1231
  def space_daylighting_fractions_and_windows(space,
@@ -1342,7 +1342,7 @@ class Standard
1342
1342
  #
1343
1343
  # @param space [OpenStudio::Model::Space] space object
1344
1344
  # @return [Double] the baseline infiltration rate, in cfm/ft^2 exterior above grade wall area at 75 Pa
1345
- def space_infiltration_rate_75_pa(space)
1345
+ def space_infiltration_rate_75_pa(space = nil)
1346
1346
  basic_infil_rate_cfm_per_ft2 = 1.8
1347
1347
  return basic_infil_rate_cfm_per_ft2
1348
1348
  end
@@ -1454,7 +1454,7 @@ class Standard
1454
1454
 
1455
1455
  # Conditioned space OR semi-heated space <-> unconditioned spaces
1456
1456
  unless surf_cnt
1457
- # TODO: add a case for 'Zone' when supported
1457
+ # @todo add a case for 'Zone' when supported
1458
1458
  if surface.outsideBoundaryCondition == 'Surface'
1459
1459
  adj_space = surface.adjacentSurface.get.space.get
1460
1460
  adj_space_cond_type = space_conditioning_category(adj_space)
@@ -1481,7 +1481,7 @@ class Standard
1481
1481
  # or if the space type name contains the word plenum.
1482
1482
  #
1483
1483
  # @param space [OpenStudio::Model::Space] space object
1484
- # return [Bool] returns true if plenum, false if not
1484
+ # return [Boolean] returns true if plenum, false if not
1485
1485
  def space_plenum?(space)
1486
1486
  plenum_status = false
1487
1487
 
@@ -1523,7 +1523,7 @@ class Standard
1523
1523
  # type of the space below the largest floor in the plenum.
1524
1524
  #
1525
1525
  # @param space [OpenStudio::Model::Space] space object
1526
- # return [Bool] true if residential, false if nonresidential
1526
+ # return [Boolean] true if residential, false if nonresidential
1527
1527
  def space_residential?(space)
1528
1528
  is_res = false
1529
1529
 
@@ -1596,7 +1596,6 @@ class Standard
1596
1596
  # Determines whether the space is conditioned per 90.1, which is based on heating and cooling loads.
1597
1597
  #
1598
1598
  # @param space [OpenStudio::Model::Space] space object
1599
- # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1600
1599
  # @return [String] NonResConditioned, ResConditioned, Semiheated, Unconditioned
1601
1600
  # @todo add logic to detect indirectly-conditioned spaces based on air transfer
1602
1601
  def space_conditioning_category(space)
@@ -1717,7 +1716,7 @@ class Standard
1717
1716
  #
1718
1717
  # @author Andrew Parker, Julien Marrec
1719
1718
  # @param space [OpenStudio::Model::Space] space object
1720
- # @return [Bool] returns true if heated, false if not
1719
+ # @return [Boolean] returns true if heated, false if not
1721
1720
  def space_heated?(space)
1722
1721
  # Get the zone this space is inside
1723
1722
  zone = space.thermalZone
@@ -1738,7 +1737,7 @@ class Standard
1738
1737
  #
1739
1738
  # @author Andrew Parker, Julien Marrec
1740
1739
  # @param space [OpenStudio::Model::Space] space object
1741
- # @return [Bool] returns true if cooled, false if not
1740
+ # @return [Boolean] returns true if cooled, false if not
1742
1741
  def space_cooled?(space)
1743
1742
  # Get the zone this space is inside
1744
1743
  zone = space.thermalZone
@@ -1854,7 +1853,7 @@ class Standard
1854
1853
  # and fraction lost for equipment
1855
1854
  # @author Doug Maddox, PNNL
1856
1855
  # @param space object
1857
- # @param return_noncoincident_value [boolean] if true, return value is noncoincident peak; if false, return is array off coincident load
1856
+ # @param return_noncoincident_value [Boolean] if true, return value is noncoincident peak; if false, return is array off coincident load
1858
1857
  # @return [Double] 8760 array of the design internal load, in W, for this space
1859
1858
  def space_internal_load_annual_array(model, space, return_noncoincident_value)
1860
1859
  # For each type of load, first convert schedules to 8760 arrays so coincident load can be determined
@@ -2070,13 +2069,13 @@ class Standard
2070
2069
  # to determine whether specific zones should be isolated to PSZ based on
2071
2070
  # space loads that differ significantly from other zones on the multizone system
2072
2071
  #
2073
- # @param model [OpenStudio::Model::Model] the model
2072
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2074
2073
  # @param space [OpenStudio::Model::Space] the space
2075
2074
  # @param equips [object] This is an array of equipment objects in the model
2076
2075
  # @param eqp_type [String] string description of the type of equipment object
2077
2076
  # @param ppl_total [Numeric] total number of people in the space
2078
2077
  # @param load_values [Array] 8760 array of load values for the equipment type
2079
- # @param return_noncoincident_value [boolean] return a single peak value if true; return 8760 gain profile if false
2078
+ # @param return_noncoincident_value [Boolean] return a single peak value if true; return 8760 gain profile if false
2080
2079
  #
2081
2080
  # @return [Array] load values array; if return_noncoincident_value is true, array has only one value
2082
2081
  #
@@ -2108,13 +2107,13 @@ class Standard
2108
2107
  # to determine whether specific zones should be isolated to PSZ based on
2109
2108
  # space loads that differ significantly from other zones on the multizone system
2110
2109
  #
2111
- # @param model [OpenStudio::Model::Model] the model
2110
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2112
2111
  # @param space [OpenStudio::Model::Space] the space
2113
2112
  # @param equip [object] This can be any type of equipment object in the space
2114
2113
  # @param eqp_type [String] string description of the type of equipment object
2115
2114
  # @param ppl_total [Numeric] total number of people in the space
2116
2115
  # @param load_values [Array] 8760 array of load values for the equipment type
2117
- # @param return_noncoincident_value [boolean] return a single peak value if true; return 8760 gain profile if false
2116
+ # @param return_noncoincident_value [Boolean] return a single peak value if true; return 8760 gain profile if false
2118
2117
  #
2119
2118
  # @return [Array] load values array; if return_noncoincident_value is true, array has only one value
2120
2119
  #
@@ -2216,7 +2215,7 @@ class Standard
2216
2215
  # will return a sorted array of array of spaces and connected area (Descending)
2217
2216
  #
2218
2217
  # @param space [OpenStudio::Model::Space] space object
2219
- # @param same_floor [Bool] only consider spaces on the same floor
2218
+ # @param same_floor [Boolean] only consider spaces on the same floor
2220
2219
  # @return [Hash] sorted hash with array of spaces and area
2221
2220
  def space_get_adjacent_spaces_with_shared_wall_areas(space, same_floor = true)
2222
2221
  same_floor_spaces = []
@@ -2281,7 +2280,7 @@ class Standard
2281
2280
  # Find the space that has the most wall area touching this space.
2282
2281
  #
2283
2282
  # @param space [OpenStudio::Model::Space] space object
2284
- # @param same_floor [Bool] only consider spaces on the same floor
2283
+ # @param same_floor [Boolean] only consider spaces on the same floor
2285
2284
  # @return [OpenStudio::Model::Space] space object
2286
2285
  def space_get_adjacent_space_with_most_shared_wall_area(space, same_floor = true)
2287
2286
  return get_adjacent_spaces_with_touching_area(same_floor)[0][0]
@@ -2938,8 +2937,8 @@ class Standard
2938
2937
 
2939
2938
  # A function to check whether a space is a return / supply plenum.
2940
2939
  # This function only works on spaces used as a AirLoopSupplyPlenum or AirLoopReturnPlenum
2941
- # @param [OpenStudio::Model::Space] space
2942
- # @return boolean true if it is plenum, else false.
2940
+ # @param space [OpenStudio::Model::Space]
2941
+ # @return [Boolean] true if it is plenum, else false.
2943
2942
  def space_is_plenum(space)
2944
2943
  # Get the zone this space is inside
2945
2944
  zone = space.thermalZone
@@ -2970,8 +2969,8 @@ class Standard
2970
2969
 
2971
2970
  # Provide the type of daylighting control type
2972
2971
  #
2973
- # @param [OpenStudio::Model::Space] OpenStudio Space object
2974
- # return [String] daylighting control type
2972
+ # @param space [OpenStudio::Model::Space] OpenStudio Space object
2973
+ # @return [String] daylighting control type
2975
2974
  def space_daylighting_control_type(space)
2976
2975
  return 'Stepped'
2977
2976
  end
@@ -2979,9 +2978,17 @@ class Standard
2979
2978
  # Provide the minimum input power fraction for continuous
2980
2979
  # dimming daylighting control
2981
2980
  #
2982
- # @param [OpenStudio::Model::Space] OpenStudio Space object
2983
- # return [Float] daylighting minimum input power fraction
2981
+ # @param space [OpenStudio::Model::Space] OpenStudio Space object
2982
+ # @return [Double] daylighting minimum input power fraction
2984
2983
  def space_daylighting_minimum_input_power_fraction(space)
2985
2984
  return 0.3
2986
2985
  end
2986
+
2987
+ # Create and assign PRM computer room electric equipment schedule
2988
+ #
2989
+ # @param space [OpenStudio::Model::Space] OpenStudio Space object
2990
+ # @return [Boolean] returns true if successful, false if not
2991
+ def space_add_prm_computer_room_equipment_schedule(space)
2992
+ return true
2993
+ end
2987
2994
  end