openstudio-standards 0.2.14 → 0.2.15.pre.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (642) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAECollege.json +0 -19
  3. data/data/geometry/ASHRAEMidriseApartment.json +47 -47
  4. data/data/geometry/ASHRAESecondarySchool.osm +2 -2
  5. data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
  6. data/data/standards/export_OpenStudio_libraries.rb +1 -1
  7. data/data/standards/manage_OpenStudio_Standards.rb +43 -87
  8. data/data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1.csv +9 -0
  9. data/data/standards/openstudio_standards_duplicates_log.csv +142 -27
  10. data/data/standards/test_performance_expected_dd_results.csv +2016 -2016
  11. data/data/weather/CAN_NU_Iqaluit.AP.719090_CWEC2016.ddy +2316 -0
  12. data/data/weather/CAN_NU_Iqaluit.AP.719090_CWEC2016.epw +8768 -0
  13. data/data/weather/CAN_NU_Iqaluit.AP.719090_CWEC2016.stat +697 -0
  14. data/lib/openstudio-standards/btap/WeatherData1.json +54 -0
  15. data/lib/openstudio-standards/btap/WeatherData1.xlsx +0 -0
  16. data/lib/openstudio-standards/btap/btap_result.rb +12 -10
  17. data/lib/openstudio-standards/btap/envelope.rb +2 -2
  18. data/lib/openstudio-standards/btap/geometry.rb +96 -49
  19. data/lib/openstudio-standards/{utilities → btap/utilities}/Add_template_field_to_json.rb +0 -0
  20. data/lib/openstudio-standards/{utilities → btap/utilities}/convert_surfaces_to_adiabatic_necb_8426.rb +0 -0
  21. data/lib/openstudio-standards/{utilities → btap/utilities}/generate_space_types.rb +0 -0
  22. data/lib/openstudio-standards/{utilities → btap/utilities}/necb_to_epw_map.rb +0 -0
  23. data/lib/openstudio-standards/{utilities → btap/utilities}/os_sim_extract.rb +0 -0
  24. data/lib/openstudio-standards/{utilities → btap/utilities}/rename_surfaces.rb +0 -0
  25. data/lib/openstudio-standards/{utilities → btap/utilities}/round_surf_coords.rb +0 -0
  26. data/lib/openstudio-standards/{utilities → btap/utilities}/sched_create.rb +0 -0
  27. data/lib/openstudio-standards/{utilities → btap/utilities}/set_mult_to_adiabatic.rb +0 -0
  28. data/lib/openstudio-standards/btap/utilities/space_type.rb +78 -0
  29. data/lib/openstudio-standards/{utilities → btap/utilities}/weatherData1_xlsx_to_json.rb +0 -0
  30. data/lib/openstudio-standards/hvac_sizing/Siz.AirConditionerVariableRefrigerantFlow.rb +1 -1
  31. data/lib/openstudio-standards/hvac_sizing/Siz.HVACComponent.rb +1 -1
  32. data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +20 -6
  33. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +6 -6
  34. data/lib/openstudio-standards/hvac_sizing/Siz.WaterHeaterMixed.rb +2 -2
  35. data/lib/openstudio-standards/hvac_sizing/Siz.ZoneHVACTerminalUnitVariableRefrigerantFlow.rb +1 -1
  36. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +2 -1
  37. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +6 -7
  38. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +2 -1
  39. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanConstantVolume.rb +5 -4
  40. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanOnOff.rb +5 -5
  41. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanVariableVolume.rb +5 -4
  42. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +6 -7
  43. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +2 -1
  44. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.FanConstantVolume.rb +5 -4
  45. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.FanOnOff.rb +5 -5
  46. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.FanVariableVolume.rb +5 -4
  47. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.elevators.rb +6 -4
  48. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +10 -9
  49. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +9 -11
  50. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +2 -1
  51. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.FanConstantVolume.rb +5 -4
  52. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.FanOnOff.rb +5 -5
  53. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.FanVariableVolume.rb +5 -4
  54. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.elevators.rb +11 -7
  55. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +17 -16
  56. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +9 -11
  57. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.hvac_systems.rb +4 -2
  58. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +2 -1
  59. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanConstantVolume.rb +5 -4
  60. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanOnOff.rb +5 -5
  61. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanVariableVolume.rb +5 -4
  62. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.elevators.rb +11 -7
  63. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +23 -22
  64. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +9 -10
  65. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +4 -2
  66. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +2 -1
  67. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanConstantVolume.rb +5 -4
  68. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanOnOff.rb +5 -5
  69. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanVariableVolume.rb +5 -4
  70. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.elevators.rb +11 -7
  71. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +23 -22
  72. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +89 -0
  73. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +9 -10
  74. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +76 -0
  75. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +22 -2
  76. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +2 -1
  77. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.elevators.rb +11 -11
  78. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.refrigeration.rb +5 -4
  79. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +2 -1
  80. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.CoilHeatingGas.rb +5 -4
  81. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.elevators.rb +11 -11
  82. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.refrigeration.rb +5 -4
  83. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +2 -1
  84. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.FanConstantVolume.rb +5 -4
  85. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.FanOnOff.rb +5 -5
  86. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.FanVariableVolume.rb +5 -4
  87. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.HeatExchangerAirToAirSensibleAndLatent.rb +2 -0
  88. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.elevators.rb +11 -7
  89. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +10 -10
  90. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.hvac_systems.rb +4 -2
  91. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +2 -1
  92. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanConstantVolume.rb +5 -4
  93. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanOnOff.rb +5 -5
  94. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanVariableVolume.rb +5 -4
  95. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerAirToAirSensibleAndLatent.rb +2 -0
  96. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.elevators.rb +11 -7
  97. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +10 -10
  98. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.hvac_systems.rb +4 -2
  99. data/lib/openstudio-standards/prototypes/cbes/cbes.Model.elevators.rb +3 -6
  100. data/lib/openstudio-standards/prototypes/cbes/cbes.refrigeration.rb +5 -4
  101. data/lib/openstudio-standards/prototypes/cbes/cbes_t24_2008/cbes_t24_2008.FanConstantVolume.rb +5 -3
  102. data/lib/openstudio-standards/prototypes/cbes/cbes_t24_2008/cbes_t24_2008.FanOnOff.rb +5 -4
  103. data/lib/openstudio-standards/prototypes/cbes/cbes_t24_2008/cbes_t24_2008.FanVariableVolume.rb +5 -3
  104. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +65 -30
  105. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +54 -23
  106. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +135 -147
  107. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +42 -7
  108. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +85 -12
  109. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +42 -30
  110. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +39 -8
  111. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +39 -8
  112. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +60 -12
  113. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +33 -265
  114. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +41 -3
  115. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +69 -297
  116. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +68 -25
  117. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +88 -59
  118. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +88 -9
  119. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +48 -10
  120. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +130 -145
  121. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +29 -101
  122. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +24 -7
  123. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +48 -589
  124. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +38 -7
  125. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +38 -8
  126. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +40 -7
  127. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +85 -171
  128. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +87 -44
  129. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +46 -5
  130. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +105 -17
  131. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +97 -15
  132. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +26 -167
  133. data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +3828 -1131
  134. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +3 -0
  135. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +2 -1
  136. data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +2 -0
  137. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +2 -0
  138. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +4 -1
  139. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +3 -0
  140. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +4 -1
  141. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +3 -0
  142. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +9 -0
  143. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +3 -0
  144. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +9 -4
  145. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +4 -1
  146. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +3 -0
  147. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +2 -2
  148. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +4 -1
  149. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +23 -2
  150. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +29 -4
  151. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +29 -5
  152. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +43 -4
  153. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +22 -0
  154. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +46 -3
  155. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.elevators.rb +27 -22
  156. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +15 -8
  157. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +22 -4
  158. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +429 -59
  159. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +18 -11
  160. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +11 -2
  161. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +1 -0
  162. data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +8 -10
  163. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +37 -28
  164. data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +24 -6
  165. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +251 -65
  166. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +1 -1
  167. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +46 -31
  168. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +62 -10
  169. data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +76 -33
  170. data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
  171. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +445 -275
  172. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +3 -3
  173. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +26 -21
  174. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +5 -2
  175. data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +7 -9
  176. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +8 -2
  177. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +10 -6
  178. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +5 -1
  179. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +6 -1
  180. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +45 -4
  181. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +18 -8
  182. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +9 -7
  183. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +8 -4
  184. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +86 -3
  185. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +5 -2
  186. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +6 -2
  187. data/lib/openstudio-standards/standards/Standards.Construction.rb +66 -35
  188. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +7 -7
  189. data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +2 -2
  190. data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +2 -1
  191. data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +2 -1
  192. data/lib/openstudio-standards/standards/Standards.Fan.rb +53 -35
  193. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +22 -16
  194. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +2 -2
  195. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +4 -4
  196. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +77 -19
  197. data/lib/openstudio-standards/standards/Standards.Model.rb +387 -245
  198. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +13 -15
  199. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +94 -48
  200. data/lib/openstudio-standards/standards/Standards.Pump.rb +28 -20
  201. data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +3 -4
  202. data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +2 -1
  203. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +2 -0
  204. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +34 -24
  205. data/lib/openstudio-standards/standards/Standards.Space.rb +179 -116
  206. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +23 -12
  207. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +55 -25
  208. data/lib/openstudio-standards/standards/Standards.Surface.rb +57 -32
  209. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +157 -107
  210. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +9 -6
  211. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +52 -1
  212. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1.Standards.FanVariableVolume.rb +2 -2
  213. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1.rb +4 -0
  214. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +28 -18
  215. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.FanVariableVolume.rb +1 -1
  216. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -2
  217. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.rb +4 -0
  218. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/comstock_ashrae_90_1_2004.rb +4 -0
  219. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/ashrae_90_1.schedules.json +696 -2938
  220. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ext_ltg.json +1 -1
  221. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.spc_typ.json +123 -123
  222. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.furnaces.json +26 -0
  223. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.prototype_inputs.json +11 -11
  224. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_system.json +0 -8
  225. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +395 -384
  226. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +69 -0
  227. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirLoopHVAC.rb +20 -13
  228. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanVariableVolume.rb +1 -1
  229. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Model.rb +1 -1
  230. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.rb +4 -0
  231. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/comstock_ashrae_90_1_2007.rb +4 -0
  232. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/ashrae_90_1.schedules.json +696 -2938
  233. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ext_ltg.json +1 -1
  234. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +122 -122
  235. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.furnaces.json +26 -0
  236. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.prototype_inputs.json +11 -11
  237. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_system.json +0 -8
  238. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +413 -401
  239. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +69 -0
  240. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +42 -53
  241. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +3 -2
  242. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.CoolingTower.rb +5 -8
  243. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.FanVariableVolume.rb +1 -1
  244. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +6 -4
  245. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.rb +4 -0
  246. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/comstock_ashrae_90_1_2010.rb +4 -0
  247. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/ashrae_90_1.schedules.json +696 -2938
  248. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ext_ltg.json +1 -1
  249. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +129 -129
  250. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +210 -42
  251. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.furnaces.json +26 -0
  252. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.prototype_inputs.json +11 -11
  253. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_system.json +0 -8
  254. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +460 -320
  255. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +69 -0
  256. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +45 -51
  257. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +3 -2
  258. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTower.rb +5 -8
  259. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTowerVariableSpeed.rb +2 -3
  260. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.FanVariableVolume.rb +2 -2
  261. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +8 -5
  262. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.ThermalZone.rb +2 -1
  263. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.WaterHeaterMixed.rb +1 -1
  264. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.ZoneHVACComponent.rb +1 -0
  265. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.rb +4 -0
  266. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/comstock_ashrae_90_1_2013.rb +4 -0
  267. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/ashrae_90_1.schedules.json +696 -2938
  268. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ext_ltg.json +1 -1
  269. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +121 -121
  270. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +420 -84
  271. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.furnaces.json +26 -0
  272. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.prototype_inputs.json +12 -12
  273. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_system.json +0 -8
  274. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +475 -335
  275. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +69 -0
  276. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +40 -50
  277. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +3 -2
  278. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTower.rb +5 -8
  279. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +2 -3
  280. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanVariableVolume.rb +2 -2
  281. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +8 -5
  282. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ThermalZone.rb +2 -1
  283. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +1 -0
  284. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.rb +4 -0
  285. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/comstock_ashrae_90_1_2016.rb +4 -0
  286. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/ashrae_90_1.schedules.json +696 -2938
  287. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ext_ltg.json +1 -1
  288. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +152 -128
  289. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +488 -84
  290. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.furnaces.json +26 -0
  291. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +47 -47
  292. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +69 -0
  293. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +342 -56
  294. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +3 -2
  295. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTower.rb +5 -8
  296. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +2 -3
  297. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanVariableVolume.rb +2 -2
  298. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +25 -5
  299. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ThermalZone.rb +2 -1
  300. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +30 -0
  301. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.rb +4 -0
  302. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/comstock_ashrae_90_1_2019.rb +4 -0
  303. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/ashrae_90_1.schedules.json +696 -2938
  304. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ext_ltg.json +1 -1
  305. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +151 -127
  306. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.boilers.json +1 -1
  307. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +2307 -101
  308. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.furnaces.json +26 -0
  309. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_compressors.json +1 -1
  310. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +47 -47
  311. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +69 -0
  312. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +25 -0
  313. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +286 -224
  314. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/comstock_doe_ref_1980_2004.rb +4 -0
  315. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/ashrae_90_1.schedules.json +696 -2938
  316. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ext_ltg.json +1 -1
  317. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +126 -126
  318. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.furnaces.json +26 -0
  319. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.prototype_inputs.json +11 -11
  320. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.refrigeration_system.json +0 -8
  321. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +405 -393
  322. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +15 -11
  323. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +1 -1
  324. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.PlantLoop.rb +3 -0
  325. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.rb +4 -0
  326. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/comstock_doe_ref_pre_1980.rb +4 -0
  327. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/ashrae_90_1.schedules.json +696 -2938
  328. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +121 -121
  329. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.furnaces.json +37 -0
  330. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.prototype_inputs.json +11 -11
  331. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.refrigeration_system.json +0 -8
  332. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +403 -391
  333. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +15 -11
  334. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +1 -1
  335. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.PlantLoop.rb +3 -0
  336. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.rb +4 -0
  337. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.furnaces.json +15 -0
  338. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +64 -42
  339. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +3 -2
  340. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTower.rb +5 -8
  341. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTowerVariableSpeed.rb +2 -3
  342. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.FanVariableVolume.rb +2 -2
  343. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.HeatExchangerSensLat.rb +1 -1
  344. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +1 -1
  345. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +4 -1
  346. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +5 -3
  347. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.ZoneHVACComponent.rb +3 -0
  348. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.rb +4 -0
  349. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.furnaces.json +15 -0
  350. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +61 -36
  351. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +3 -2
  352. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTower.rb +5 -8
  353. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +2 -3
  354. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanVariableVolume.rb +2 -2
  355. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +1 -1
  356. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +1 -1
  357. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +4 -1
  358. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +6 -4
  359. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.ZoneHVACComponent.rb +3 -0
  360. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.rb +4 -0
  361. data/lib/openstudio-standards/standards/cbes/cbes.AirLoopHVAC.rb +20 -14
  362. data/lib/openstudio-standards/standards/cbes/cbes.PlantLoop.rb +3 -0
  363. data/lib/openstudio-standards/standards/cbes/cbes.rb +4 -0
  364. data/lib/openstudio-standards/standards/cbes/cbes_pre_1978/cbes_pre_1978.rb +4 -0
  365. data/lib/openstudio-standards/standards/cbes/cbes_t24_1978/cbes_t24_1978.rb +4 -0
  366. data/lib/openstudio-standards/standards/cbes/cbes_t24_1992/cbes_t24_1992.rb +4 -0
  367. data/lib/openstudio-standards/standards/cbes/cbes_t24_2001/cbes_t24_2001.rb +4 -0
  368. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.rb +4 -0
  369. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.rb +4 -0
  370. data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +10 -5
  371. data/lib/openstudio-standards/standards/deer/deer.PlanarSurface.rb +1 -1
  372. data/lib/openstudio-standards/standards/deer/deer.rb +4 -0
  373. data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/comstock_deer_1985.rb +4 -0
  374. data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/data/comstock_deer_1985.ext_ltg.json +2 -2
  375. data/lib/openstudio-standards/standards/deer/deer_1985/deer_1985.rb +4 -0
  376. data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/comstock_deer_1996.rb +4 -0
  377. data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/data/comstock_deer_1996.ext_ltg.json +2 -2
  378. data/lib/openstudio-standards/standards/deer/deer_1996/deer_1996.rb +4 -0
  379. data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/comstock_deer_2003.rb +4 -0
  380. data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/data/comstock_deer_2003.ext_ltg.json +2 -2
  381. data/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.rb +4 -0
  382. data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/comstock_deer_2007.rb +4 -0
  383. data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/data/comstock_deer_2007.ext_ltg.json +2 -2
  384. data/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.rb +4 -0
  385. data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/comstock_deer_2011.rb +4 -0
  386. data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/data/comstock_deer_2011.ext_ltg.json +2 -2
  387. data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.rb +4 -0
  388. data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/comstock_deer_2014.rb +4 -0
  389. data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/data/comstock_deer_2014.ext_ltg.json +2 -2
  390. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +5 -3
  391. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.rb +4 -0
  392. data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/comstock_deer_2015.rb +4 -0
  393. data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/data/comstock_deer_2015.ext_ltg.json +2 -2
  394. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +5 -3
  395. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.rb +4 -0
  396. data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/comstock_deer_2017.rb +4 -0
  397. data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/data/comstock_deer_2017.ext_ltg.json +2 -2
  398. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +5 -3
  399. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.rb +4 -0
  400. data/lib/openstudio-standards/standards/deer/deer_2020/comstock_deer_2020/comstock_deer_2020.rb +4 -0
  401. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +9 -5
  402. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.FanVariableVolume.rb +3 -0
  403. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.Space.rb +5 -3
  404. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.rb +4 -0
  405. data/lib/openstudio-standards/standards/deer/deer_2025/comstock_deer_2025/comstock_deer_2025.rb +4 -0
  406. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +9 -5
  407. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.FanVariableVolume.rb +3 -0
  408. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.Space.rb +5 -3
  409. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.rb +4 -0
  410. data/lib/openstudio-standards/standards/deer/deer_2030/comstock_deer_2030/comstock_deer_2030.rb +4 -0
  411. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +9 -5
  412. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.FanVariableVolume.rb +3 -0
  413. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.Space.rb +5 -3
  414. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.rb +4 -0
  415. data/lib/openstudio-standards/standards/deer/deer_2035/comstock_deer_2035/comstock_deer_2035.rb +4 -0
  416. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +9 -5
  417. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.FanVariableVolume.rb +3 -0
  418. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.Space.rb +5 -3
  419. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.rb +4 -0
  420. data/lib/openstudio-standards/standards/deer/deer_2040/comstock_deer_2040/comstock_deer_2040.rb +4 -0
  421. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +9 -5
  422. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.FanVariableVolume.rb +3 -0
  423. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.Space.rb +5 -3
  424. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.rb +4 -0
  425. data/lib/openstudio-standards/standards/deer/deer_2045/comstock_deer_2045/comstock_deer_2045.rb +4 -0
  426. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +9 -5
  427. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.FanVariableVolume.rb +3 -0
  428. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.Space.rb +5 -3
  429. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.rb +4 -0
  430. data/lib/openstudio-standards/standards/deer/deer_2050/comstock_deer_2050/comstock_deer_2050.rb +4 -0
  431. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +9 -5
  432. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.FanVariableVolume.rb +3 -0
  433. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.Space.rb +5 -3
  434. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.rb +4 -0
  435. data/lib/openstudio-standards/standards/deer/deer_2055/comstock_deer_2055/comstock_deer_2055.rb +4 -0
  436. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +9 -5
  437. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.FanVariableVolume.rb +3 -0
  438. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.Space.rb +5 -3
  439. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.rb +4 -0
  440. data/lib/openstudio-standards/standards/deer/deer_2060/comstock_deer_2060/comstock_deer_2060.rb +4 -0
  441. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +9 -5
  442. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.FanVariableVolume.rb +3 -0
  443. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.Space.rb +5 -3
  444. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.rb +4 -0
  445. data/lib/openstudio-standards/standards/deer/deer_2065/comstock_deer_2065/comstock_deer_2065.rb +4 -0
  446. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +9 -5
  447. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.FanVariableVolume.rb +3 -0
  448. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.Space.rb +5 -3
  449. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.rb +4 -0
  450. data/lib/openstudio-standards/standards/deer/deer_2070/comstock_deer_2070/comstock_deer_2070.rb +4 -0
  451. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +9 -5
  452. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.FanVariableVolume.rb +3 -0
  453. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.Space.rb +5 -3
  454. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.rb +4 -0
  455. data/lib/openstudio-standards/standards/deer/deer_2075/comstock_deer_2075/comstock_deer_2075.rb +4 -0
  456. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +9 -5
  457. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.FanVariableVolume.rb +3 -0
  458. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.Space.rb +5 -3
  459. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.rb +4 -0
  460. data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/comstock_deer_pre_1975.rb +4 -0
  461. data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/data/comstock_deer_pre_1975.ext_ltg.json +2 -2
  462. data/lib/openstudio-standards/standards/deer/deer_pre_1975/deer_pre_1975.rb +4 -0
  463. data/lib/openstudio-standards/standards/icc_iecc/icc_iecc_2015/icc_iecc_2015.rb +4 -0
  464. data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/btap_1980to2010.rb +6 -28
  465. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +25 -110
  466. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +45 -60
  467. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +19 -23
  468. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +84 -83
  469. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +52 -47
  470. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +43 -40
  471. data/lib/openstudio-standards/standards/necb/ECMS/data/boiler_set.json +18 -0
  472. data/lib/openstudio-standards/standards/necb/ECMS/data/chiller_set.json +211 -0
  473. data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +1195 -20
  474. data/lib/openstudio-standards/standards/necb/ECMS/data/furnace_set.json +18 -0
  475. data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps.json +244 -182
  476. data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps_heating.json +232 -185
  477. data/lib/openstudio-standards/standards/necb/ECMS/data/shw_set.json +20 -2
  478. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +18 -25
  479. data/lib/openstudio-standards/standards/necb/ECMS/erv.rb +12 -13
  480. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +1647 -466
  481. data/lib/openstudio-standards/standards/necb/ECMS/loads.rb +93 -0
  482. data/lib/openstudio-standards/standards/necb/ECMS/nv.rb +40 -47
  483. data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +26 -25
  484. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +303 -305
  485. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +45 -45
  486. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +90 -120
  487. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Hospital.osm +1176 -1115
  488. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LowriseApartment.osm +8279 -28923
  489. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +1173 -1173
  490. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +15 -13
  491. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +32 -29
  492. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +25 -26
  493. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +14 -14
  494. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +24 -29
  495. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +85 -84
  496. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +41 -42
  497. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +209 -197
  498. data/lib/openstudio-standards/standards/necb/NECB2011/lighting.rb +87 -82
  499. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +510 -406
  500. data/lib/openstudio-standards/standards/necb/NECB2011/nv.md +3 -3
  501. data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +686 -683
  502. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +129 -82
  503. data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +1608 -1608
  504. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +25 -18
  505. data/lib/openstudio-standards/standards/necb/NECB2015/lighting.rb +73 -67
  506. data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +18 -22
  507. data/lib/openstudio-standards/standards/necb/NECB2015/qaqc/necb_2015_qaqc.rb +59 -63
  508. data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +1608 -1608
  509. data/lib/openstudio-standards/standards/necb/NECB2017/hvac_systems.rb +1 -4
  510. data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +10 -14
  511. data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +779 -0
  512. data/lib/openstudio-standards/standards/necb/NECB2020/data/boilers.json +122 -0
  513. data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +335 -0
  514. data/lib/openstudio-standards/standards/necb/NECB2020/data/constants.json +13 -0
  515. data/lib/openstudio-standards/standards/necb/NECB2020/data/furnaces.json +41 -0
  516. data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps.json +452 -0
  517. data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +164 -0
  518. data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_rejection.json +228 -0
  519. data/lib/openstudio-standards/standards/necb/NECB2020/data/led_lighting_data.json +2883 -0
  520. data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +25851 -0
  521. data/lib/openstudio-standards/standards/necb/NECB2020/data/surface_thermal_transmittance.json +60 -0
  522. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +585 -0
  523. data/lib/openstudio-standards/standards/necb/NECB2020/necb_2020.rb +175 -0
  524. data/lib/openstudio-standards/standards/necb/common/bc_step_code_indicators.md +10 -0
  525. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +1963 -0
  526. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +410 -0
  527. data/lib/openstudio-standards/standards/necb/common/neb_end_use_prices.csv +42 -0
  528. data/lib/openstudio-standards/standards/necb/common/necb_reference_runs.csv +28705 -0
  529. data/lib/openstudio-standards/standards/necb/common/phius.md +23 -0
  530. data/lib/openstudio-standards/standards/necb/common/space_type_upgrade_map.json +1158 -386
  531. data/lib/openstudio-standards/standards/oeesc/oeesc_2014/oeesc_2014.rb +4 -0
  532. data/lib/openstudio-standards/standards/standard.rb +2 -1
  533. data/lib/openstudio-standards/utilities/define_thermal_zone_and_mulitpliers.rb +1 -1
  534. data/lib/openstudio-standards/utilities/logging.rb +6 -0
  535. data/lib/openstudio-standards/utilities/simulation.rb +30 -14
  536. data/lib/openstudio-standards/utilities/{speacetype_map_converter.rb → spacetype_map_converter.rb} +0 -0
  537. data/lib/openstudio-standards/utilities/sqlfile.rb +112 -71
  538. data/lib/openstudio-standards/version.rb +2 -2
  539. data/lib/openstudio-standards/weather/Weather.Model.rb +209 -9
  540. data/lib/openstudio-standards/weather/Weather.stat_file.rb +1 -1
  541. data/lib/openstudio-standards.rb +9 -0
  542. metadata +106 -205
  543. data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
  544. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.boilers.json +0 -49
  545. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.chillers.json +0 -293
  546. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +0 -25426
  547. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_sets.json +0 -1600
  548. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +0 -564
  549. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.elevators.json +0 -349
  550. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +0 -164
  551. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ground_temperatures.json +0 -10663
  552. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps.json +0 -508
  553. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +0 -156
  554. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_rejection.json +0 -44
  555. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +0 -184
  556. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.prototype_inputs.json +0 -3094
  557. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_cases.json +0 -829
  558. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_lnup.json +0 -562
  559. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_compressors.json +0 -52
  560. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_condenser.json +0 -220
  561. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_system.json +0 -156
  562. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_walkins.json +0 -1316
  563. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +0 -21446
  564. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +0 -554
  565. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_heaters.json +0 -68
  566. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_source_heat_pumps.json +0 -28
  567. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_source_heat_pumps_heating.json +0 -12
  568. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.boilers.json +0 -49
  569. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.chillers.json +0 -293
  570. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +0 -12487
  571. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_sets.json +0 -1600
  572. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +0 -564
  573. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.elevators.json +0 -349
  574. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +0 -164
  575. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ground_temperatures.json +0 -10663
  576. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps.json +0 -466
  577. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +0 -137
  578. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_rejection.json +0 -44
  579. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +0 -184
  580. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.prototype_inputs.json +0 -3094
  581. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_cases.json +0 -829
  582. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_lnup.json +0 -562
  583. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_compressors.json +0 -52
  584. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_condenser.json +0 -220
  585. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_system.json +0 -156
  586. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_walkins.json +0 -1316
  587. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +0 -21380
  588. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +0 -554
  589. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_heaters.json +0 -68
  590. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_source_heat_pumps.json +0 -28
  591. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_source_heat_pumps_heating.json +0 -12
  592. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.boilers.json +0 -49
  593. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.chillers.json +0 -395
  594. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +0 -12487
  595. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_sets.json +0 -1600
  596. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +0 -592
  597. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.elevators.json +0 -349
  598. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +0 -550
  599. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +0 -164
  600. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ground_temperatures.json +0 -10663
  601. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps.json +0 -466
  602. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +0 -137
  603. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_rejection.json +0 -44
  604. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +0 -238
  605. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.prototype_inputs.json +0 -3094
  606. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_cases.json +0 -829
  607. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_lnup.json +0 -562
  608. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_compressors.json +0 -52
  609. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_condenser.json +0 -220
  610. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_system.json +0 -156
  611. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_walkins.json +0 -1316
  612. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +0 -21548
  613. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +0 -554
  614. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_heaters.json +0 -68
  615. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_source_heat_pumps.json +0 -28
  616. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_source_heat_pumps_heating.json +0 -12
  617. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.boilers.json +0 -64
  618. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.chillers.json +0 -871
  619. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +0 -12487
  620. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_sets.json +0 -1600
  621. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +0 -592
  622. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.elevators.json +0 -349
  623. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +0 -1096
  624. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +0 -164
  625. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ground_temperatures.json +0 -10663
  626. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps.json +0 -886
  627. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +0 -194
  628. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_rejection.json +0 -44
  629. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +0 -247
  630. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.prototype_inputs.json +0 -3094
  631. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_cases.json +0 -829
  632. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_lnup.json +0 -562
  633. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_compressors.json +0 -52
  634. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_condenser.json +0 -220
  635. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_system.json +0 -156
  636. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_walkins.json +0 -1316
  637. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +0 -22079
  638. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +0 -994
  639. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_heaters.json +0 -68
  640. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps.json +0 -28
  641. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps_heating.json +0 -12
  642. data/lib/openstudio-standards/utilities/convert_costing_constructions.rb +0 -105
@@ -4,6 +4,9 @@ class Standard
4
4
  attr_accessor :space_multiplier_map
5
5
  attr_accessor :standards_data
6
6
 
7
+ # returns the space multiplier map
8
+
9
+ # @return [Hash] space multiplier map
7
10
  def define_space_multiplier
8
11
  return @space_multiplier_map
9
12
  end
@@ -12,12 +15,13 @@ class Standard
12
15
 
13
16
  # Creates a Performance Rating Method (aka Appendix G aka LEED) baseline building model
14
17
  # based on the inputs currently in the model.
15
- # the current model with this model.
16
18
  #
17
19
  # @note Per 90.1, the Performance Rating Method "does NOT offer an alternative compliance path for minimum standard compliance."
18
- # This means you can't use this method for code compliance to get a permit.
20
+ # This means you can't use this method for code compliance to get a permit.
21
+ #
22
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
19
23
  # @param building_type [String] the building type
20
- # @param climate_zone [String] the climate zone
24
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
21
25
  # @param custom [String] the custom logic that will be applied during baseline creation. Valid choices are 'Xcel Energy CO EDA' or '90.1-2007 with addenda dn'.
22
26
  # If nothing is specified, no custom logic will be applied; the process will follow the template logic explicitly.
23
27
  # @param sizing_run_dir [String] the directory where the sizing runs will be performed
@@ -221,7 +225,7 @@ class Standard
221
225
  # Delete all the unused resource objects
222
226
  model_remove_unused_resource_objects(model)
223
227
 
224
- # TODO: turn off self shading
228
+ # @todo turn off self shading
225
229
  # Set Solar Distribution to MinimalShadowing... problem is when you also have detached shading such as surrounding buildings etc
226
230
  # It won't be taken into account, while it should: only self shading from the building itself should be turned off but to my knowledge there isn't a way to do this in E+
227
231
 
@@ -240,6 +244,9 @@ class Standard
240
244
  # Determine if there needs to be a sizing run after constructions are added
241
245
  # so that EnergyPlus can calculate the VLTs of layer-by-layer glazing constructions.
242
246
  # These VLT values are needed for the daylighting controls logic for some templates.
247
+ #
248
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
249
+ # @return [Bool] returns true if required, false if not
243
250
  def model_create_prm_baseline_building_requires_vlt_sizing_run(model)
244
251
  return false # Not required for most templates
245
252
  end
@@ -247,6 +254,7 @@ class Standard
247
254
  # Determine the residential and nonresidential floor areas based on the space type properties for each space.
248
255
  # For spaces with no space type, assume nonresidential.
249
256
  #
257
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
250
258
  # @return [Hash] keys are 'residential' and 'nonresidential', units are m^2
251
259
  def model_residential_and_nonresidential_floor_areas(model)
252
260
  res_area_m2 = 0
@@ -263,10 +271,11 @@ class Standard
263
271
  end
264
272
 
265
273
  # Determine the number of stories spanned by the supplied zones.
266
- # If all zones on one of the stories have an indentical multiplier,
274
+ # If all zones on one of the stories have an identical multiplier,
267
275
  # assume that the multiplier is a floor multiplier and increase the number of stories accordingly.
268
276
  # Stories do not have to be contiguous.
269
277
  #
278
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
270
279
  # @param zones [Array<OpenStudio::Model::ThermalZone>] an array of zones
271
280
  # @return [Integer] the number of stories spanned
272
281
  def model_num_stories_spanned(model, zones)
@@ -295,7 +304,10 @@ class Standard
295
304
 
296
305
  # Categorize zones by occupancy type and fuel type, where the types depend on the standard.
297
306
  #
298
- # @return [Array<Hash>] an array of hashes, one for each zone, with the keys 'zone', 'type' (occ type), 'fuel', and 'area'
307
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
308
+ # @param custom [String] custom fuel type
309
+ # @return [Array<Hash>] an array of hashes, one for each zone,
310
+ # with the keys 'zone', 'type' (occ type), 'fuel', and 'area'
299
311
  def model_zones_with_occ_and_fuel_type(model, custom)
300
312
  zones = []
301
313
 
@@ -337,11 +349,12 @@ class Standard
337
349
  return zones
338
350
  end
339
351
 
340
- # Determine the dominant and exceptional areas of the
341
- # building based on fuel types and occupancy types.
352
+ # Determine the dominant and exceptional areas of the building based on fuel types and occupancy types.
342
353
  #
354
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
355
+ # @param custom [String] custom fuel type
343
356
  # @return [Array<Hash>] an array of hashes of area information,
344
- # with keys area_ft2, type, fuel, and zones (an array of zones)
357
+ # with keys area_ft2, type, fuel, and zones (an array of zones)
345
358
  def model_prm_baseline_system_groups(model, custom)
346
359
  # Define the minimum area for the
347
360
  # exception that allows a different
@@ -534,7 +547,7 @@ class Standard
534
547
  gp['zones'] = gp_zns
535
548
  end
536
549
 
537
- # TODO: Remove the secondary zones before
550
+ # @todo Remove the secondary zones before
538
551
  # determining the area used to pick the HVAC system, per PNNL PRM RM
539
552
 
540
553
  # If there is any district heating or district cooling in the proposed building, the heating and cooling
@@ -600,6 +613,9 @@ class Standard
600
613
 
601
614
  # Determines the area of the building above which point
602
615
  # the non-dominant area type gets it's own HVAC system type.
616
+ #
617
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
618
+ # @param custom [String] custom fuel type
603
619
  # @return [Double] the minimum area (m^2)
604
620
  def model_prm_baseline_system_group_minimum_area(model, custom)
605
621
  exception_min_area_ft2 = 20_000
@@ -610,14 +626,18 @@ class Standard
610
626
  # Determine the baseline system type given the inputs. Logic is different for different standards.
611
627
  #
612
628
  # 90.1-2007, 90.1-2010, 90.1-2013
629
+ #
630
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
631
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
613
632
  # @param area_type [String] Valid choices are residential, nonresidential, and heatedonly
614
633
  # @param fuel_type [String] Valid choices are electric, fossil, fossilandelectric,
615
634
  # purchasedheat, purchasedcooling, purchasedheatandcooling
616
635
  # @param area_ft2 [Double] Area in ft^2
617
636
  # @param num_stories [Integer] Number of stories
637
+ # @param custom [String] custom fuel type
618
638
  # @return [String] The system type. Possibilities are PTHP, PTAC, PSZ_AC, PSZ_HP, PVAV_Reheat, PVAV_PFP_Boxes,
619
639
  # VAV_Reheat, VAV_PFP_Boxes, Gas_Furnace, Electric_Furnace
620
- # TODO: add 90.1-2013 systems 11-13
640
+ # @todo add 90.1-2013 systems 11-13
621
641
  def model_prm_baseline_system_type(model, climate_zone, area_type, fuel_type, area_ft2, num_stories, custom)
622
642
  # [type, central_heating_fuel, zone_heating_fuel, cooling_fuel]
623
643
  system_type = [nil, nil, nil, nil]
@@ -681,6 +701,15 @@ class Standard
681
701
  end
682
702
 
683
703
  # Determines which system number is used for the baseline system. Default is 90.1-2004 approach.
704
+ #
705
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
706
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
707
+ # @param area_type [String] Valid choices are residential, nonresidential, and heatedonly
708
+ # @param fuel_type [String] Valid choices are electric, fossil, fossilandelectric,
709
+ # purchasedheat, purchasedcooling, purchasedheatandcooling
710
+ # @param area_ft2 [Double] Area in ft^2
711
+ # @param num_stories [Integer] Number of stories
712
+ # @param custom [String] custom fuel type
684
713
  # @return [String] the system number: 1_or_2, 3_or_4, 5_or_6, 7_or_8, 9_or_10
685
714
  def model_prm_baseline_system_number(model, climate_zone, area_type, fuel_type, area_ft2, num_stories, custom)
686
715
  sys_num = nil
@@ -712,6 +741,12 @@ class Standard
712
741
  end
713
742
 
714
743
  # Change the fuel type based on climate zone, depending on the standard. Defaults to no change.
744
+ #
745
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
746
+ # @param fuel_type [String] Valid choices are electric, fossil, fossilandelectric,
747
+ # purchasedheat, purchasedcooling, purchasedheatandcooling
748
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
749
+ # @param custom [String] custom fuel type
715
750
  # @return [String] the revised fuel type
716
751
  def model_prm_baseline_system_change_fuel_type(model, fuel_type, climate_zone, custom = nil)
717
752
  return fuel_type # Don't change fuel type for most templates
@@ -721,13 +756,16 @@ class Standard
721
756
  # For some multi-zone system types, the standards require identifying zones whose loads or schedules
722
757
  # are outliers and putting these systems on separate single-zone systems. This method does that.
723
758
  #
759
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
724
760
  # @param system_type [String] The system type. Valid choices are PTHP, PTAC, PSZ_AC, PSZ_HP, PVAV_Reheat,
725
761
  # PVAV_PFP_Boxes, VAV_Reheat, VAV_PFP_Boxes, Gas_Furnace, Electric_Furnace,
726
762
  # which are also returned by the method OpenStudio::Model::Model.prm_baseline_system_type.
727
763
  # @param main_heat_fuel [String] main heating fuel. Valid choices are Electricity, NaturalGas, DistrictHeating
728
764
  # @param zone_heat_fuel [String] zone heating/reheat fuel. Valid choices are Electricity, NaturalGas, DistrictHeating
729
765
  # @param cool_fuel [String] cooling fuel. Valid choices are Electricity, DistrictCooling
730
- # TODO: Add 90.1-2013 systems 11-13
766
+ # @param zones [Array<OpenStudio::Model::ThermalZone>] an array of zones
767
+ # @return [Bool] returns true if successful, false if not
768
+ # @todo Add 90.1-2013 systems 11-13
731
769
  def model_add_prm_baseline_system(model, system_type, main_heat_fuel, zone_heat_fuel, cool_fuel, zones)
732
770
  case system_type
733
771
  when 'PTAC' # System 1
@@ -1108,6 +1146,8 @@ class Standard
1108
1146
 
1109
1147
  # Determines the fan type used by VAV_Reheat and VAV_PFP_Boxes systems.
1110
1148
  # Defaults to two speed fan.
1149
+ #
1150
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1111
1151
  # @return [String] the fan type: TwoSpeed Fan, Variable Speed Fan
1112
1152
  def model_baseline_system_vav_fan_type(model)
1113
1153
  fan_type = 'TwoSpeed Fan'
@@ -1116,9 +1156,12 @@ class Standard
1116
1156
 
1117
1157
  # Looks through the model and creates an hash of what the baseline system type should be for each zone.
1118
1158
  #
1159
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1160
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1161
+ # @param custom [String] custom fuel type
1119
1162
  # @return [Hash] keys are zones, values are system type strings
1120
- # PTHP, PTAC, PSZ_AC, PSZ_HP, PVAV_Reheat, PVAV_PFP_Boxes,
1121
- # VAV_Reheat, VAV_PFP_Boxes, Gas_Furnace, Electric_Furnace
1163
+ # PTHP, PTAC, PSZ_AC, PSZ_HP, PVAV_Reheat, PVAV_PFP_Boxes,
1164
+ # VAV_Reheat, VAV_PFP_Boxes, Gas_Furnace, Electric_Furnace
1122
1165
  def model_get_baseline_system_type_by_zone(model, climate_zone, custom = nil)
1123
1166
  zone_to_sys_type = {}
1124
1167
 
@@ -1187,7 +1230,15 @@ class Standard
1187
1230
  return zone_to_sys_type
1188
1231
  end
1189
1232
 
1190
- # @param array_of_zones [Array] an array of Hashes for each zone, with the keys 'zone',
1233
+ # elimates outlier zones based on a set of keys
1234
+ #
1235
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1236
+ # @param array_of_zones [Array] an array of Hashes for each zone, with the keys 'zone'
1237
+ # @param key_to_inspect [String] hash key to inspect in array of zones
1238
+ # @param tolerance [Double] tolerance
1239
+ # @param field_name [String] field name to inspect
1240
+ # @param units [String] units
1241
+ # @return [Array] an array of Hashes for each zone
1191
1242
  def model_eliminate_outlier_zones(model, array_of_zones, key_to_inspect, tolerance, field_name, units)
1192
1243
  # Sort the zones by the desired key
1193
1244
  begin
@@ -1264,8 +1315,10 @@ class Standard
1264
1315
  # Second, eliminate zones whose design internal loads differ from the area-weighted average of all other zones
1265
1316
  # on the system by more than 10 Btu/hr*ft^2.
1266
1317
  #
1318
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1319
+ # @param zones [Array<OpenStudio::Model::ThermalZone>] an array of zones
1267
1320
  # @return [Hash] A hash of two arrays of ThermalZones,
1268
- # where the keys are 'primary' and 'secondary'
1321
+ # where the keys are 'primary' and 'secondary'
1269
1322
  def model_differentiate_primary_secondary_thermal_zones(model, zones)
1270
1323
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', 'Determining which zones are served by the primary vs. secondary HVAC system.')
1271
1324
 
@@ -1384,6 +1437,9 @@ class Standard
1384
1437
  # Group an array of zones into multiple arrays, one for each story in the building.
1385
1438
  # Zones with spaces on multiple stories will be assigned to only one of the stories.
1386
1439
  # Removes empty array (when the story doesn't contain any of the zones)
1440
+ #
1441
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1442
+ # @param zones [Array<OpenStudio::Model::ThermalZone>] an array of zones
1387
1443
  # @return [Array<Array<OpenStudio::Model::ThermalZone>>] array of arrays of zones
1388
1444
  def model_group_zones_by_story(model, zones)
1389
1445
  story_zone_lists = []
@@ -1428,7 +1484,8 @@ class Standard
1428
1484
  # If no story object is found for a particular height, create a new one and assign it to the space.
1429
1485
  # Does not assign a story to plenum spaces.
1430
1486
  #
1431
- # @return [Bool] returns true if successful, false if not.
1487
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1488
+ # @return [Bool] returns true if successful, false if not
1432
1489
  def model_assign_spaces_to_stories(model)
1433
1490
  # Make hash of spaces and minz values
1434
1491
  sorted_spaces = {}
@@ -1464,10 +1521,11 @@ class Standard
1464
1521
  return true
1465
1522
  end
1466
1523
 
1467
- # Applies the multi-zone VAV outdoor air sizing requirements
1468
- # to all applicable air loops in the model.
1469
- #
1524
+ # Applies the multi-zone VAV outdoor air sizing requirements to all applicable air loops in the model.
1470
1525
  # @note This must be performed before the sizing run because it impacts component sizes, which in turn impact efficiencies.
1526
+ #
1527
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1528
+ # @return [Bool] returns true if successful, false if not
1471
1529
  def model_apply_multizone_vav_outdoor_air_sizing(model)
1472
1530
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started applying multizone vav OA sizing.')
1473
1531
 
@@ -1478,6 +1536,12 @@ class Standard
1478
1536
  end
1479
1537
 
1480
1538
  # Applies the HVAC parts of the template to all objects in the model using the the template specified in the model.
1539
+ #
1540
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1541
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
1542
+ # @param apply_controls [Bool] toggle whether to apply air loop and plant loop controls
1543
+ # @param sql_db_vars_map [Hash] hash map
1544
+ # @return [Bool] returns true if successful, false if not
1481
1545
  def model_apply_hvac_efficiency_standard(model, climate_zone, apply_controls: true, sql_db_vars_map: nil)
1482
1546
  sql_db_vars_map = {} if sql_db_vars_map.nil?
1483
1547
 
@@ -1548,7 +1612,7 @@ class Standard
1548
1612
  model.getEvaporativeFluidCoolerTwoSpeeds.sort.each { |obj| fluid_cooler_apply_minimum_power_per_flow(obj, equipment_type: 'Closed Cooling Tower') }
1549
1613
 
1550
1614
  # ERVs
1551
- model.getHeatExchangerAirToAirSensibleAndLatents.each { |obj| heat_exchanger_air_to_air_sensible_and_latent_apply_efficiency(obj) }
1615
+ model.getHeatExchangerAirToAirSensibleAndLatents.each { |obj| heat_exchanger_air_to_air_sensible_and_latent_apply_effectiveness(obj) }
1552
1616
 
1553
1617
  # Gas Heaters
1554
1618
  model.getCoilHeatingGass.sort.each { |obj| coil_heating_gas_apply_efficiency_and_curves(obj) }
@@ -1559,6 +1623,9 @@ class Standard
1559
1623
  end
1560
1624
 
1561
1625
  # Applies daylighting controls to each space in the model per the standard.
1626
+ #
1627
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1628
+ # @return [Bool] returns true if successful, false if not
1562
1629
  def model_add_daylighting_controls(model)
1563
1630
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started adding daylighting controls.')
1564
1631
 
@@ -1568,17 +1635,16 @@ class Standard
1568
1635
  end
1569
1636
 
1570
1637
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished adding daylighting controls.')
1638
+ return true
1571
1639
  end
1572
1640
 
1573
- # Apply the air leakage requirements to the model,
1574
- # as described in PNNL section 5.2.1.6. This method
1575
- # creates customized infiltration objects for each space
1641
+ # Apply the air leakage requirements to the model, as described in PNNL section 5.2.1.6.
1642
+ # This method creates customized infiltration objects for each space
1576
1643
  # and removes the SpaceType-level infiltration objects.
1577
1644
  #
1578
- # base infiltration rates off of.
1579
- # @return [Bool] true if successful, false if not
1580
- # @todo This infiltration method is not used by the Reference
1581
- # buildings, fix this inconsistency.
1645
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1646
+ # @return [Bool] returns true if successful, false if not
1647
+ # @todo This infiltration method is not used by the Reference buildings, fix this inconsistency.
1582
1648
  def model_apply_infiltration_standard(model)
1583
1649
  # Set the infiltration rate at each space
1584
1650
  model.getSpaces.sort.each do |space|
@@ -1778,13 +1844,11 @@ class Standard
1778
1844
  # needed for NRCan data structure compatibility. We keep all tables in a 'tables' hash in @standards_data and the table
1779
1845
  # itself is in the 'table' hash index.
1780
1846
  if hash_of_objects.nil?
1781
- if @standards_data['tables'].nil?
1782
- # Format of @standards_data is not NRCan-style and table simply doesn't exist.
1783
- return matching_objects
1784
- else
1785
- table = @standards_data['tables'][table_name]['table']
1786
- hash_of_objects = table
1787
- end
1847
+ # Format of @standards_data is not NRCan-style and table simply doesn't exist.
1848
+ return matching_objects if @standards_data['tables'].nil?
1849
+
1850
+ table = @standards_data['tables'][table_name]['table']
1851
+ hash_of_objects = table
1788
1852
  end
1789
1853
 
1790
1854
  # Compare each of the objects against the search criteria
@@ -1899,10 +1963,6 @@ class Standard
1899
1963
  # the objects will only be returned if the specified capacity is between the minimum_capacity and maximum_capacity values.
1900
1964
  # @param date [<OpenStudio::Date>] date of the object in question. If date is supplied,
1901
1965
  # the objects will only be returned if the specified date is between the start_date and end_date.
1902
- # @param area [Double] area of the object in question. If area is supplied,
1903
- # the objects will only be returned if the specified area is between the minimum_area and maximum_area values.
1904
- # @param num_floors [Double] capacity of the object in question. If num_floors is supplied,
1905
- # the objects will only be returned if the specified num_floors is between the minimum_floors and maximum_floors values.
1906
1966
  # @return [Hash] Return tbe first matching object hash if successful, nil if not.
1907
1967
  # @example Find the motor that meets these size criteria
1908
1968
  # search_criteria = {
@@ -1934,11 +1994,12 @@ class Standard
1934
1994
 
1935
1995
  # Create constant ScheduleRuleset
1936
1996
  #
1937
- # @param value [double] the value to use, 24-7, 365
1938
- # @param name [string] the name of the schedule
1939
- # @param sch_type_limit [string] the name of a schedule type limit
1997
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1998
+ # @param value [Double] the value to use, 24-7, 365
1999
+ # @param name [String] the name of the schedule
2000
+ # @param sch_type_limit [String] the name of a schedule type limit
1940
2001
  # options are Temperature, Humidity Ratio, Fractional, OnOff, and Activity
1941
- # @return schedule
2002
+ # @return [OpenStudio::Model::ScheduleRuleset] schedule ruleset object
1942
2003
  def model_add_constant_schedule_ruleset(model,
1943
2004
  value,
1944
2005
  name = nil,
@@ -1972,14 +2033,15 @@ class Standard
1972
2033
 
1973
2034
  # Create ScheduleTypeLimits
1974
2035
  #
1975
- # @param standard_sch_type_limit [string] the name of a standard schedule type limit with predefined limits
2036
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2037
+ # @param standard_sch_type_limit [String] the name of a standard schedule type limit with predefined limits
1976
2038
  # options are Temperature, Humidity Ratio, Fractional, OnOff, and Activity
1977
- # @param name[string] the name of the schedule type limits
2039
+ # @param name [String] the name of the schedule type limits
1978
2040
  # @param lower_limit_value [double] the lower limit value for the schedule type
1979
2041
  # @param upper_limit_value [double] the upper limit value for the schedule type
1980
- # @param numeric_type [string] the numeric type, options are Continuous or Discrete
1981
- # @param unit_type [string] the unit type, options are defined in EnergyPlus I/O reference
1982
- # @return [<OpenStudio::Model::ScheduleTypeLimits>]
2042
+ # @param numeric_type [String] the numeric type, options are Continuous or Discrete
2043
+ # @param unit_type [String] the unit type, options are defined in EnergyPlus I/O reference
2044
+ # @return [OpenStudio::Model::ScheduleTypeLimits] schedule type limits
1983
2045
  def model_add_schedule_type_limits(model,
1984
2046
  standard_sch_type_limit: nil,
1985
2047
  name: nil,
@@ -2058,9 +2120,9 @@ class Standard
2058
2120
  return schedule_type_limits
2059
2121
  end
2060
2122
 
2061
- # Create a schedule from the openstudio standards dataset and
2062
- # add it to the model.
2123
+ # Create a schedule from the openstudio standards dataset and add it to the model.
2063
2124
  #
2125
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2064
2126
  # @param schedule_name [String} name of the schedule
2065
2127
  # @return [ScheduleRuleset] the resulting schedule ruleset
2066
2128
  # @todo make return an OptionalScheduleRuleset
@@ -2168,11 +2230,15 @@ class Standard
2168
2230
  sch_rule.setApplySaturday(true) if day_types.include?('Sat')
2169
2231
  sch_rule.setApplySunday(true) if day_types.include?('Sun')
2170
2232
  end
2171
- end # Next rule
2233
+ end
2172
2234
  return sch_ruleset
2173
2235
  end
2174
2236
 
2175
2237
  # Create a material from the openstudio standards dataset.
2238
+ #
2239
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2240
+ # @param material_name [String] name of the material
2241
+ # @return [OpenStudio::Model::Material] material object
2176
2242
  # @todo make return an OptionalMaterial
2177
2243
  def model_add_material(model, material_name)
2178
2244
  # First check model and return material if it already exists
@@ -2189,7 +2255,8 @@ class Standard
2189
2255
  data = model_find_object(standards_data['materials'], 'name' => material_name)
2190
2256
  unless data
2191
2257
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', "Cannot find data for material: #{material_name}, will not be created.")
2192
- return false # TODO: change to return empty optional material
2258
+ return false
2259
+ # @todo change to return empty optional material
2193
2260
  end
2194
2261
 
2195
2262
  material = nil
@@ -2271,6 +2338,11 @@ class Standard
2271
2338
 
2272
2339
  # Create a construction from the openstudio standards dataset.
2273
2340
  # If construction_props are specified, modifies the insulation layer accordingly.
2341
+ #
2342
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2343
+ # @param construction_name [String] name of the construction
2344
+ # @param construction_props [Hash] hash of construction properties
2345
+ # @return [OpenStudio::Model::Construction] construction object
2274
2346
  # @todo make return an OptionalConstruction
2275
2347
  def model_add_construction(model, construction_name, construction_props = nil)
2276
2348
  # First check model and return construction if it already exists
@@ -2303,7 +2375,7 @@ class Standard
2303
2375
  standards_construction_type ||= ''
2304
2376
  standards_info.setStandardsConstructionType(standards_construction_type)
2305
2377
 
2306
- # TODO: could put construction rendering color in the spreadsheet
2378
+ # @todo could put construction rendering color in the spreadsheet
2307
2379
 
2308
2380
  # Add the material layers to the construction
2309
2381
  layers = OpenStudio::Model::MaterialVector.new
@@ -2345,14 +2417,14 @@ class Standard
2345
2417
  elsif target_f_factor_ip && data['intended_surface_type'] == 'GroundContactFloor'
2346
2418
 
2347
2419
  # Set the F-Factor (only applies to slabs on grade)
2348
- # TODO figure out what the prototype buildings did about ground heat transfer
2420
+ # @todo figure out what the prototype buildings did about ground heat transfer
2349
2421
  # construction_set_slab_f_factor(construction, target_f_factor_ip.to_f, data['insulation_layer'])
2350
2422
  construction_set_u_value(construction, 0.0, data['insulation_layer'], data['intended_surface_type'], u_includes_int_film, u_includes_ext_film)
2351
2423
 
2352
2424
  elsif target_c_factor_ip && data['intended_surface_type'] == 'GroundContactWall'
2353
2425
 
2354
2426
  # Set the C-Factor (only applies to underground walls)
2355
- # TODO figure out what the prototype buildings did about ground heat transfer
2427
+ # @todo figure out what the prototype buildings did about ground heat transfer
2356
2428
  # construction_set_underground_wall_c_factor(construction, target_c_factor_ip.to_f, data['insulation_layer'])
2357
2429
  construction_set_u_value(construction, 0.0, data['insulation_layer'], data['intended_surface_type'], u_includes_int_film, u_includes_ext_film)
2358
2430
 
@@ -2390,7 +2462,7 @@ class Standard
2390
2462
  model.getSubSurfaces.each do |sub_surface|
2391
2463
  next unless sub_surface.outsideBoundaryCondition == 'Outdoors' && sub_surface.subSurfaceType == 'Skylight'
2392
2464
 
2393
- # TODO: enable proper window frame setting after https://github.com/NREL/OpenStudio/issues/2895 is fixed
2465
+ # @todo enable proper window frame setting after https://github.com/NREL/OpenStudio/issues/2895 is fixed
2394
2466
  sub_surface.setString(8, frame.name.get.to_s)
2395
2467
  skylights_frame_added += 1
2396
2468
  # if sub_surface.allowWindowPropertyFrameAndDivider
@@ -2403,7 +2475,8 @@ class Standard
2403
2475
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Adding #{frame.name} to #{skylights_frame_added} skylights.") if skylights_frame_added > 0
2404
2476
  else
2405
2477
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', "Cannot find skylight framing data for: #{framing_name}, will not be created.")
2406
- return false # TODO: change to return empty optional material
2478
+ return false
2479
+ # @todo change to return empty optional material
2407
2480
  end
2408
2481
  end
2409
2482
 
@@ -2439,6 +2512,13 @@ class Standard
2439
2512
  end
2440
2513
 
2441
2514
  # Helper method to find a particular construction and add it to the model after modifying the insulation value if necessary.
2515
+ #
2516
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2517
+ # @param climate_zone_set [String] climate zone set
2518
+ # @param intended_surface_type [String] intended surface type
2519
+ # @param standards_construction_type [String] standards construction type
2520
+ # @param building_category [String] building category
2521
+ # @return [OpenStudio::Model::Construction] construction object
2442
2522
  def model_find_and_add_construction(model, climate_zone_set, intended_surface_type, standards_construction_type, building_category)
2443
2523
  # Get the construction properties,
2444
2524
  # which specifies properties by construction category by climate zone set.
@@ -2459,7 +2539,7 @@ class Standard
2459
2539
  almost_adiabatic = OpenStudio::Model::MasslessOpaqueMaterial.new(model, 'Smooth', 500)
2460
2540
  construction.insertLayer(0, almost_adiabatic)
2461
2541
  return construction
2462
- else
2542
+ # else
2463
2543
  # OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Construction properties for: #{template}-#{climate_zone_set}-#{intended_surface_type}-#{standards_construction_type}-#{building_category} = #{props}.")
2464
2544
  end
2465
2545
 
@@ -2479,12 +2559,18 @@ class Standard
2479
2559
  end
2480
2560
 
2481
2561
  # Create a construction set from the openstudio standards dataset.
2482
- # Returns an Optional DefaultConstructionSet
2483
- def model_add_construction_set(model, clim, building_type, spc_type, is_residential)
2562
+ #
2563
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2564
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
2565
+ # @param building_type [String] the building type
2566
+ # @param spc_type [String] the space type
2567
+ # @param is_residential [Bool] true if the building is residential
2568
+ # @return [OpenStudio::Model::OptionalDefaultConstructionSet] an optional default construction set
2569
+ def model_add_construction_set(model, climate_zone, building_type, spc_type, is_residential)
2484
2570
  construction_set = OpenStudio::Model::OptionalDefaultConstructionSet.new
2485
2571
 
2486
2572
  # Find the climate zone set that this climate zone falls into
2487
- climate_zone_set = model_find_climate_zone_set(model, clim)
2573
+ climate_zone_set = model_find_climate_zone_set(model, climate_zone)
2488
2574
  unless climate_zone_set
2489
2575
  return construction_set
2490
2576
  end
@@ -2501,9 +2587,9 @@ class Standard
2501
2587
  end
2502
2588
  end
2503
2589
 
2504
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Adding construction set: #{template}-#{clim}-#{building_type}-#{spc_type}-is_residential#{is_residential}")
2590
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Adding construction set: #{template}-#{climate_zone}-#{building_type}-#{spc_type}-is_residential#{is_residential}")
2505
2591
 
2506
- name = model_make_name(model, clim, building_type, spc_type)
2592
+ name = model_make_name(model, climate_zone, building_type, spc_type)
2507
2593
 
2508
2594
  # Create a new construction set and name it
2509
2595
  construction_set = OpenStudio::Model::DefaultConstructionSet.new(model)
@@ -2685,8 +2771,11 @@ class Standard
2685
2771
  return OpenStudio::Model::OptionalDefaultConstructionSet.new(construction_set)
2686
2772
  end
2687
2773
 
2688
- # Adds a curve from the OpenStudio-Standards dataset to the model
2689
- # based on the curve name.
2774
+ # Adds a curve from the OpenStudio-Standards dataset to the model based on the curve name.
2775
+ #
2776
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2777
+ # @param curve_name [String] name of the curve
2778
+ # @return [OpenStudio::Model::Curve] curve object, nil if not found
2690
2779
  def model_add_curve(model, curve_name)
2691
2780
  # First check model and return curve if it already exists
2692
2781
  existing_curves = []
@@ -2829,7 +2918,9 @@ class Standard
2829
2918
  end
2830
2919
 
2831
2920
  # Get the full path to the weather file that is specified in the model
2832
- # @return [OpenStudio::OptionalPath]
2921
+ #
2922
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2923
+ # @return [OpenStudio::OptionalPath] path to weather file
2833
2924
  def model_get_full_weather_file_path(model)
2834
2925
  full_epw_path = OpenStudio::OptionalPath.new
2835
2926
 
@@ -2860,10 +2951,14 @@ class Standard
2860
2951
 
2861
2952
  # Find the legacy simulation results from a CSV of previously created results.
2862
2953
  #
2954
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2955
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
2956
+ # @param building_type [String] the building type
2957
+ # @param run_type [String] design day is dd-only, otherwise annual run
2863
2958
  # @return [Hash] a hash of results for each fuel, where the keys are in the form 'End Use|Fuel Type',
2864
- # e.g. Heating|Electricity, Exterior Equipment|Water. All end use/fuel type combos are present, with
2865
- # values of 0.0 if none of this end use/fuel type combo was used by the simulation. Returns nil
2866
- # if the legacy results couldn't be found.
2959
+ # e.g. Heating|Electricity, Exterior Equipment|Water. All end use/fuel type combos are present,
2960
+ # with values of 0.0 if none of this end use/fuel type combo was used by the simulation.
2961
+ # Returns nil if the legacy results couldn't be found.
2867
2962
  def model_legacy_results_by_end_use_and_fuel_type(model, climate_zone, building_type, run_type)
2868
2963
  # Load the legacy idf results CSV file into a ruby hash
2869
2964
  top_dir = File.expand_path('../../..', File.dirname(__FILE__))
@@ -2905,9 +3000,11 @@ class Standard
2905
3000
 
2906
3001
  # Method to gather prototype simulation results for a specific climate zone, building type, and template
2907
3002
  #
2908
- # @param climate_zone [String] string for the ASHRAE climate zone.
2909
- # @param building_type [String] string for prototype building type.
2910
- # @return [Hash] Returns a hash with data presented in various bins. Returns nil if no search results
3003
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3004
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
3005
+ # @param building_type [String] the building type
3006
+ # @return [Hash] Returns a hash with data presented in various bins.
3007
+ # Returns nil if no search results
2911
3008
  def model_process_results_for_datapoint(model, climate_zone, building_type)
2912
3009
  # Hash to store the legacy results by fuel and by end use
2913
3010
  legacy_results_hash = {}
@@ -2979,8 +3076,10 @@ class Standard
2979
3076
  # This is used to calculate EUI's to compare against non prototype buildings
2980
3077
  # Areas taken from scorecard Excel Files
2981
3078
  #
3079
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
2982
3080
  # @param building_type [String] the building type
2983
- # @return [Double] floor area (m^2) of prototype building for building type passed in. Returns nil if unexpected building type
3081
+ # @return [Double] floor area (m^2) of prototype building for building type passed in.
3082
+ # Returns nil if unexpected building type
2984
3083
  def model_find_prototype_floor_area(model, building_type)
2985
3084
  if building_type == 'FullServiceRestaurant' # 5502 ft^2
2986
3085
  result = 511
@@ -3000,7 +3099,7 @@ class Standard
3000
3099
  result = 3135
3001
3100
  elsif building_type == 'Office'
3002
3101
  result = nil
3003
- # TODO: there shouldn't be a prototype building for this
3102
+ # @todo there shouldn't be a prototype building for this
3004
3103
  OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', 'Measures calling this should choose between SmallOffice, MediumOffice, and LargeOffice')
3005
3104
  elsif building_type == 'Outpatient' # 40.950 ft^2
3006
3105
  result = 3804
@@ -3038,8 +3137,11 @@ class Standard
3038
3137
  return result
3039
3138
  end
3040
3139
 
3041
- # this is used by other methods to get the climate zone and building type from a model.
3042
- # it has logic to break office into small, medium or large based on building area that can be turned off
3140
+ # This is used by other methods to get the climate zone and building type from a model.
3141
+ # It has logic to break office into small,
3142
+ # medium or large based on building area that can be turned off
3143
+ #
3144
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3043
3145
  # @param remap_office [bool] re-map small office or leave it alone
3044
3146
  # @return [hash] key for climate zone and building type, both values are strings
3045
3147
  def model_get_building_climate_zone_and_building_type(model, remap_office = true)
@@ -3065,7 +3167,9 @@ class Standard
3065
3167
  return results
3066
3168
  end
3067
3169
 
3068
- # remap office to one of the protptye buildings
3170
+ # remap office to one of the prototype buildings
3171
+ #
3172
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3069
3173
  # @param floor_area [Double] floor area (m^2)
3070
3174
  # @return [String] SmallOffice, MediumOffice, LargeOffice
3071
3175
  def model_remap_office(model, floor_area)
@@ -3082,10 +3186,12 @@ class Standard
3082
3186
  end
3083
3187
  end
3084
3188
 
3085
- # user needs to pass in template as string. The building type and climate zone will come from the model.
3189
+ # User needs to pass in template as string.
3190
+ # The building type and climate zone will come from the model.
3086
3191
  # If the building type or ASHRAE climate zone is not set in the model this will return nil
3087
3192
  # If the lookup doesn't find matching simulation results this wil return nil
3088
3193
  #
3194
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3089
3195
  # @return [Double] EUI (MJ/m^2) for target template for given OSM. Returns nil if can't calculate EUI
3090
3196
  def model_find_target_eui(model)
3091
3197
  building_data = model_get_building_climate_zone_and_building_type(model)
@@ -3113,10 +3219,12 @@ class Standard
3113
3219
  return result
3114
3220
  end
3115
3221
 
3116
- # user needs to pass in template as string. The building type and climate zone will come from the model.
3222
+ # User needs to pass in template as string.
3223
+ # The building type and climate zone will come from the model.
3117
3224
  # If the building type or ASHRAE climate zone is not set in the model this will return nil
3118
3225
  # If the lookup doesn't find matching simulation results this wil return nil
3119
3226
  #
3227
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3120
3228
  # @return [Hash] EUI (MJ/m^2) This will return a hash of end uses. key is end use, value is eui
3121
3229
  def model_find_target_eui_by_end_use(model)
3122
3230
  building_data = model_get_building_climate_zone_and_building_type(model)
@@ -3150,41 +3258,39 @@ class Standard
3150
3258
  # Get a unique list of constructions with given boundary condition and a given type of surface.
3151
3259
  # Pulls from both default construction sets and hard-assigned constructions.
3152
3260
  #
3153
- # @param boundary_condition [String] the desired boundary condition
3154
- # valid choices are:
3155
- # Adiabatic
3156
- # Surface
3157
- # Outdoors
3158
- # Ground
3159
- # @param type [String] the type of surface to find
3160
- # valid choices are:
3161
- # AtticFloor
3162
- # AtticWall
3163
- # AtticRoof
3164
- # DemisingFloor
3165
- # DemisingWall
3166
- # DemisingRoof
3167
- # ExteriorFloor
3168
- # ExteriorWall
3169
- # ExteriorRoof
3170
- # ExteriorWindow
3171
- # ExteriorDoor
3172
- # GlassDoor
3173
- # GroundContactFloor
3174
- # GroundContactWall
3175
- # GroundContactRoof
3176
- # InteriorFloor
3177
- # InteriorWall
3178
- # InteriorCeiling
3179
- # InteriorPartition
3180
- # InteriorWindow
3181
- # InteriorDoor
3182
- # OverheadDoor
3183
- # Skylight
3184
- # TubularDaylightDome
3185
- # TubularDaylightDiffuser
3186
- # return [Array<OpenStudio::Model::ConstructionBase>]
3187
- # an array of all constructions.
3261
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3262
+ # @param boundary_condition [String] the desired boundary condition. valid choices are:
3263
+ # Adiabatic
3264
+ # Surface
3265
+ # Outdoors
3266
+ # Ground
3267
+ # @param type [String] the type of surface to find. valid choices are:
3268
+ # AtticFloor
3269
+ # AtticWall
3270
+ # AtticRoof
3271
+ # DemisingFloor
3272
+ # DemisingWall
3273
+ # DemisingRoof
3274
+ # ExteriorFloor
3275
+ # ExteriorWall
3276
+ # ExteriorRoof
3277
+ # ExteriorWindow
3278
+ # ExteriorDoor
3279
+ # GlassDoor
3280
+ # GroundContactFloor
3281
+ # GroundContactWall
3282
+ # GroundContactRoof
3283
+ # InteriorFloor
3284
+ # InteriorWall
3285
+ # InteriorCeiling
3286
+ # InteriorPartition
3287
+ # InteriorWindow
3288
+ # InteriorDoor
3289
+ # OverheadDoor
3290
+ # Skylight
3291
+ # TubularDaylightDome
3292
+ # TubularDaylightDiffuser
3293
+ # return [Array<OpenStudio::Model::ConstructionBase>] an array of all constructions.
3188
3294
  def model_find_constructions(model, boundary_condition, type)
3189
3295
  constructions = []
3190
3296
 
@@ -3310,6 +3416,7 @@ class Standard
3310
3416
  # For some standards, this will involve making modifications. For others, it will not.
3311
3417
  #
3312
3418
  # 90.1-2007, 90.1-2010, 90.1-2013
3419
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3313
3420
  # @return [Bool] returns true if successful, false if not
3314
3421
  def model_apply_prm_construction_types(model)
3315
3422
  types_to_modify = []
@@ -3394,7 +3501,9 @@ class Standard
3394
3501
 
3395
3502
  # Apply the standard construction to each surface in the model, based on the construction type currently assigned.
3396
3503
  #
3397
- # @return [Bool] true if successful, false if not
3504
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3505
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
3506
+ # @return [Bool] returns true if successful, false if not
3398
3507
  def model_apply_standard_constructions(model, climate_zone)
3399
3508
  types_to_modify = []
3400
3509
 
@@ -3470,11 +3579,12 @@ class Standard
3470
3579
 
3471
3580
  # Returns standards data for selected construction
3472
3581
  #
3473
- # @param intended_surface_type [string] the surface type
3474
- # @param standards_construction_type [string] the type of construction
3475
- # @param building_category [string] the type of building
3476
- # @param climate_zone [string] the building's climate zone
3477
- # @return [hash] hash of construction properties
3582
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3583
+ # @param intended_surface_type [String] the surface type
3584
+ # @param standards_construction_type [String] the type of construction
3585
+ # @param building_category [String] the type of building
3586
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
3587
+ # @return [Hash] hash of construction properties
3478
3588
  def model_get_construction_properties(model, intended_surface_type, standards_construction_type, building_category, climate_zone = nil)
3479
3589
  # get climate_zone_set
3480
3590
  climate_zone = model_get_building_climate_zone_and_building_type(model)['climate_zone'] if climate_zone.nil?
@@ -3497,9 +3607,9 @@ class Standard
3497
3607
 
3498
3608
  # Returns standards data for selected construction set
3499
3609
  #
3500
- # @param building_category [string] the type of building
3501
- # @param space_type [string] space type within the building type. Typically nil.
3502
- # @return [hash] hash of construction set data
3610
+ # @param building_type [String] the type of building
3611
+ # @param space_type [String] space type within the building type. Typically nil.
3612
+ # @return [Hash] hash of construction set data
3503
3613
  def model_get_construction_set(building_type, space_type = nil)
3504
3614
  # populate search hash
3505
3615
  search_criteria = {
@@ -3518,9 +3628,12 @@ class Standard
3518
3628
  # WWR reduction will be done by moving vertices inward toward centroid.
3519
3629
  # This causes the least impact on the daylighting area calculations and controls placement.
3520
3630
  #
3631
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3632
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
3633
+ # @return [Bool] returns true if successful, false if not
3521
3634
  # @todo add proper support for 90.1-2013 with all those building type specific values
3522
3635
  # @todo support 90.1-2004 requirement that windows be modeled as horizontal bands.
3523
- # Currently just using existing window geometry, and shrinking as necessary if WWR is above limit.
3636
+ # Currently just using existing window geometry, and shrinking as necessary if WWR is above limit.
3524
3637
  # @todo support semiheated spaces as a separate WWR category
3525
3638
  # @todo add window frame area to calculation of WWR
3526
3639
  def model_apply_prm_baseline_window_to_wall_ratio(model, climate_zone)
@@ -3559,7 +3672,7 @@ class Standard
3559
3672
  end
3560
3673
 
3561
3674
  # Determine the space category
3562
- # TODO: This should really use the heating/cooling loads from the proposed building.
3675
+ # @todo This should really use the heating/cooling loads from the proposed building.
3563
3676
  # However, in an attempt to avoid another sizing run just for this purpose,
3564
3677
  # conditioned status is based on heating/cooling setpoints.
3565
3678
  # If heated-only, will be assumed Semiheated.
@@ -3690,6 +3803,8 @@ class Standard
3690
3803
 
3691
3804
  # Reduces the SRR to the values specified by the PRM. SRR reduction will be done by shrinking vertices toward the centroid.
3692
3805
  #
3806
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3807
+ # @return [Bool] returns true if successful, false if not
3693
3808
  # @todo support semiheated spaces as a separate SRR category
3694
3809
  # @todo add skylight frame area to calculation of SRR
3695
3810
  def model_apply_prm_baseline_skylight_to_roof_ratio(model)
@@ -3823,8 +3938,9 @@ class Standard
3823
3938
  end
3824
3939
 
3825
3940
  # Determines the skylight to roof ratio limit for a given standard
3826
- # @return [Double] the skylight to roof ratio, as a percent: 5.0 = 5%
3827
- # 5% by default.
3941
+ #
3942
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3943
+ # @return [Double] the skylight to roof ratio, as a percent: 5.0 = 5%. 5% by default.
3828
3944
  def model_prm_skylight_to_roof_ratio_limit(model)
3829
3945
  srr_lim = 5.0
3830
3946
  return srr_lim
@@ -3833,7 +3949,8 @@ class Standard
3833
3949
  # Remove all HVAC that will be replaced during the performance rating method baseline generation.
3834
3950
  # This does not include plant loops that serve WaterUse:Equipment or Fan:ZoneExhaust
3835
3951
  #
3836
- # @return [Bool] true if successful, false if not
3952
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3953
+ # @return [Bool] returns true if successful, false if not
3837
3954
  def model_remove_prm_hvac(model)
3838
3955
  # Plant loops
3839
3956
  model.getPlantLoops.sort.each do |loop|
@@ -3863,7 +3980,8 @@ class Standard
3863
3980
 
3864
3981
  # Remove EMS objects that may be orphaned from removing HVAC
3865
3982
  #
3866
- # @return [Bool] true if successful, false if not
3983
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3984
+ # @return [Bool] returns true if successful, false if not
3867
3985
  def model_remove_prm_ems_objects(model)
3868
3986
  model.getEnergyManagementSystemActuators.each(&:remove)
3869
3987
  model.getEnergyManagementSystemConstructionIndexVariables.each(&:remove)
@@ -3882,7 +4000,9 @@ class Standard
3882
4000
  end
3883
4001
 
3884
4002
  # Remove external shading devices. Site shading will not be impacted.
3885
- # @return [Bool] returns true if successful, false if not.
4003
+ #
4004
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4005
+ # @return [Bool] returns true if successful, false if not
3886
4006
  def model_remove_external_shading_devices(model)
3887
4007
  shading_surfaces_removed = 0
3888
4008
  model.getShadingSurfaceGroups.sort.each do |shade_group|
@@ -3900,6 +4020,9 @@ class Standard
3900
4020
  end
3901
4021
 
3902
4022
  # Changes the sizing parameters to the PRM specifications.
4023
+ #
4024
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4025
+ # @return [Bool] returns true if successful, false if not
3903
4026
  def model_apply_prm_sizing_parameters(model)
3904
4027
  clg = 1.15
3905
4028
  htg = 1.25
@@ -3909,12 +4032,13 @@ class Standard
3909
4032
  sizing_params.setCoolingSizingFactor(clg)
3910
4033
 
3911
4034
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.Model', "Set sizing factors to #{htg} for heating and #{clg} for cooling.")
4035
+ return true
3912
4036
  end
3913
4037
 
3914
4038
  # Helper method to get the story object that corresponds to a specific minimum z value.
3915
4039
  # Makes a new story if none found at this height.
3916
4040
  #
3917
- #
4041
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3918
4042
  # @param minz [Double] the z value (height) of the desired story, in meters.
3919
4043
  # @param tolerance [Double] tolerance for comparison, in m. Default is 0.3 m ~1ft
3920
4044
  # @return [OpenStudio::Model::BuildingStory] the story
@@ -3942,10 +4066,11 @@ class Standard
3942
4066
  # Will return an array of hashes. Many may have one array entry.
3943
4067
  # all values other than block size are gallons.
3944
4068
  #
4069
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
3945
4070
  # @return [Array] array of hashes. Each array entry based on different capacity
3946
- # specific to building type. Array will be empty for some building types.
4071
+ # specific to building type. Array will be empty for some building types.
3947
4072
  def model_find_ashrae_hot_water_demand(model)
3948
- # TODO: - for types not in table use standards area normalized swh values
4073
+ # @todo for types not in table use standards area normalized swh values
3949
4074
 
3950
4075
  # get building type
3951
4076
  building_data = model_get_building_climate_zone_and_building_type(model)
@@ -3997,6 +4122,9 @@ class Standard
3997
4122
  # gal/day from ICC IECC 2015 Residential Standard Reference Design
3998
4123
  # from Table R405.5.2(1)
3999
4124
  #
4125
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4126
+ # @param units_per_bldg [Double] number of units in the building
4127
+ # @param bedrooms_per_unit [Double] number of bedrooms per unit
4000
4128
  # @return [Double] gal/day
4001
4129
  def model_find_icc_iecc_2015_hot_water_demand(model, units_per_bldg, bedrooms_per_unit)
4002
4130
  swh_gal_per_day = units_per_bldg * (30.0 + (10.0 * bedrooms_per_unit))
@@ -4006,6 +4134,9 @@ class Standard
4006
4134
 
4007
4135
  # Returns average daily internal loads for residential buildings from Table R405.5.2(1)
4008
4136
  #
4137
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4138
+ # @param units_per_bldg [Double] number of units in the building
4139
+ # @param bedrooms_per_unit [Double] number of bedrooms per unit
4009
4140
  # @return [Hash] mech_vent_cfm, infiltration_ach, igain_btu_per_day, internal_mass_lbs
4010
4141
  def model_find_icc_iecc_2015_internal_loads(model, units_per_bldg, bedrooms_per_unit)
4011
4142
  # get total and conditioned floor area
@@ -4034,10 +4165,16 @@ class Standard
4034
4165
  end
4035
4166
 
4036
4167
  # Helper method to make a shortened version of a name that will be readable in a GUI.
4037
- def model_make_name(model, clim, building_type, spc_type)
4038
- clim = clim.gsub('ClimateZone ', 'CZ')
4039
- if clim == 'CZ1-8'
4040
- clim = ''
4168
+ #
4169
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4170
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
4171
+ # @param building_type [String] the building type
4172
+ # @param spc_type [String] the space type
4173
+ # @return [String] string of the model name
4174
+ def model_make_name(model, climate_zone, building_type, spc_type)
4175
+ climate_zone = climate_zone.gsub('ClimateZone ', 'CZ')
4176
+ if climate_zone == 'CZ1-8'
4177
+ climate_zone = ''
4041
4178
  end
4042
4179
 
4043
4180
  if building_type == 'FullServiceRestaurant'
@@ -4102,8 +4239,8 @@ class Standard
4102
4239
  parts << spc_type
4103
4240
  end
4104
4241
 
4105
- unless clim.empty?
4106
- parts << clim
4242
+ unless climate_zone.empty?
4243
+ parts << climate_zone
4107
4244
  end
4108
4245
 
4109
4246
  result = parts.join(' - ')
@@ -4113,21 +4250,25 @@ class Standard
4113
4250
 
4114
4251
  # Helper method to find out which climate zone set contains a specific climate zone.
4115
4252
  # Returns climate zone set name as String if success, nil if not found.
4116
- def model_find_climate_zone_set(model, clim)
4253
+ #
4254
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4255
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
4256
+ # @return [String] climate zone set
4257
+ def model_find_climate_zone_set(model, climate_zone)
4117
4258
  result = nil
4118
4259
 
4119
4260
  possible_climate_zone_sets = []
4120
4261
  standards_data['climate_zone_sets'].each do |climate_zone_set|
4121
- if climate_zone_set['climate_zones'].include?(clim)
4262
+ if climate_zone_set['climate_zones'].include?(climate_zone)
4122
4263
  possible_climate_zone_sets << climate_zone_set['name']
4123
4264
  end
4124
4265
  end
4125
4266
 
4126
4267
  # Check the results
4127
4268
  if possible_climate_zone_sets.size.zero?
4128
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Cannot find a climate zone set containing #{clim}. Make sure to use ASHRAE standards with ASHRAE climate zones and DEER or CA Title 24 standards with CEC climate zones.")
4269
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Cannot find a climate zone set containing #{climate_zone}. Make sure to use ASHRAE standards with ASHRAE climate zones and DEER or CA Title 24 standards with CEC climate zones.")
4129
4270
  elsif possible_climate_zone_sets.size > 2
4130
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Found more than 2 climate zone sets containing #{clim}; will return last matching climate zone set.")
4271
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Found more than 2 climate zone sets containing #{climate_zone}; will return last matching climate zone set.")
4131
4272
  end
4132
4273
 
4133
4274
  # Get the climate zone from the possible set
@@ -4144,6 +4285,10 @@ class Standard
4144
4285
  # Determine which climate zone to use.
4145
4286
  # Defaults to the least specific climate zone set.
4146
4287
  # For example, 2A and 2 both contain 2A, so use 2.
4288
+ #
4289
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4290
+ # @param possible_climate_zone_sets [Array] climate zone sets
4291
+ # @return [String] climate zone ses
4147
4292
  def model_get_climate_zone_set_from_list(model, possible_climate_zone_sets)
4148
4293
  climate_zone_set = possible_climate_zone_sets.min
4149
4294
  return climate_zone_set
@@ -4152,6 +4297,9 @@ class Standard
4152
4297
  # This method ensures that all spaces with spacetypes defined contain at least a standardSpaceType appropriate for the template.
4153
4298
  # So, if any space with a space type defined does not have a Stnadard spacetype, or is undefined, an error will stop
4154
4299
  # with information that the spacetype needs to be defined.
4300
+ #
4301
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4302
+ # @return [Bool] returns true if successful, false if not
4155
4303
  def model_validate_standards_spacetypes_in_model(model)
4156
4304
  error_string = ''
4157
4305
  # populate search hash
@@ -4175,18 +4323,18 @@ class Standard
4175
4323
  end
4176
4324
  end
4177
4325
  end
4178
- if error_string == ''
4179
- return true
4180
- else
4181
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', error_string)
4182
- return false
4183
- end
4326
+ return true if error_string == ''
4327
+
4328
+ # else
4329
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', error_string)
4330
+ return false
4184
4331
  end
4185
4332
 
4186
4333
  # Create sorted hash of stories with data need to determine effective number of stories above and below grade
4187
4334
  # the key should be the story object, which would allow other measures the ability to for example loop through spaces of the bottom story
4188
4335
  #
4189
- # @return [hash] hash of space types with data in value necessary to determine effective number of stories above and below grade
4336
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4337
+ # @return [Hash] hash of space types with data in value necessary to determine effective number of stories above and below grade
4190
4338
  def model_create_story_hash(model)
4191
4339
  story_hash = {}
4192
4340
 
@@ -4229,7 +4377,8 @@ class Standard
4229
4377
 
4230
4378
  # update count of ground wall areas
4231
4379
  next if surface.surfaceType != 'Wall'
4232
- next if surface.outsideBoundaryCondition != 'Ground' # TODO: - make more flexible for slab/basement model.modeling
4380
+ next if surface.outsideBoundaryCondition != 'Ground'
4381
+ # @todo make more flexible for slab/basement model.modeling
4233
4382
 
4234
4383
  story_ground_wall_area += surface.grossArea
4235
4384
  end
@@ -4269,7 +4418,8 @@ class Standard
4269
4418
  # populate this method
4270
4419
  # Determine the effective number of stories above and below grade
4271
4420
  #
4272
- # @return hash with effective_num_stories_below_grade and effective_num_stories_above_grade
4421
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4422
+ # @return [Hash] hash with effective_num_stories_below_grade and effective_num_stories_above_grade
4273
4423
  def model_effective_num_stories(model)
4274
4424
  below_grade = 0
4275
4425
  above_grade = 0
@@ -4300,8 +4450,9 @@ class Standard
4300
4450
 
4301
4451
  # create space_type_hash with info such as effective_num_spaces, num_units, num_meds, num_meals
4302
4452
  #
4453
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4303
4454
  # @param trust_effective_num_spaces [Bool] defaults to false - set to true if modeled every space as a real rpp, vs. space as collection of rooms
4304
- # @return [hash] hash of space types with misc information
4455
+ # @return [Hash] hash of space types with misc information
4305
4456
  # @todo - add code when determining number of units to makeuse of trust_effective_num_spaces arg
4306
4457
  def model_create_space_type_hash(model, trust_effective_num_spaces = false)
4307
4458
  # assumed class size to deduct teachers from occupant count for classrooms
@@ -4405,58 +4556,13 @@ class Standard
4405
4556
  return space_type_hash.sort.to_h
4406
4557
  end
4407
4558
 
4408
- # This method will apply the a FDWR to a model. It will remove any existing windows and doors and use the
4409
- # Default contruction to set to apply the window construction. Sill height is in meters
4410
- def apply_max_fdwr(model, runner, sillHeight_si, wwr)
4411
- empty_const_warning = false
4412
- model.getSpaces.sort.each do |space|
4413
- space.surfaces.sort.each do |surface|
4414
- zone = surface.space.get.thermalZone
4415
- zone_multiplier = nil
4416
- next if zone.empty?
4417
-
4418
- if (surface.outsideBoundaryCondition == 'Outdoors') && (surface.surfaceType == 'Wall')
4419
- surface.subSurfaces.each(&:remove)
4420
- new_window = surface.setWindowToWallRatio(wwr, sillHeight_si, true)
4421
- raise "#{surface.name.get} did not get set to #{wwr}. The size of the surface is #{surface.grossArea}" unless surface.windowToWallRatio.round(3) == wwr.round(3)
4422
-
4423
- if new_window.empty?
4424
- runner.registerWarning("The requested window to wall ratio for surface '#{surface.name}' was too large. Fenestration was not altered for this surface.")
4425
- else
4426
- windows_added = true
4427
- # warn user if resulting window doesn't have a construction, as it will result in failed simulation. In the future may use logic from starting windows to apply construction to new window.
4428
- if new_window.get.construction.empty? && (empty_const_warning == false)
4429
- runner.registerWarning('one or more resulting windows do not have constructions. This script is intended to be used with models using construction sets versus hard assigned constructions.')
4430
- empty_const_warning = true
4431
- end
4432
- end
4433
- end
4434
- end
4435
- end
4436
- end
4437
-
4438
- # This method will apply the a SRR to a model. It will remove any existing skylights and use the
4439
- # Default contruction to set to apply the skylight construction. A default skylight square area of 0.25^2 is used.
4440
- def apply_max_srr(model, runner, srr, skylight_area = 0.25 * 0.25)
4441
- spaces = []
4442
- surface_type = 'RoofCeiling'
4443
- model.getSpaces.sort.each do |space|
4444
- space.surfaces.sort.each do |surface|
4445
- if (surface.outsideBoundaryCondition == 'Outdoors') && (surface.surfaceType == surface_type)
4446
- spaces << space
4447
- break
4448
- end
4449
- end
4450
- end
4451
- pattern = OpenStudio::Model.generateSkylightPattern(spaces, spaces[0].directionofRelativeNorth, srr, Math.sqrt(skylight_area), Math.sqrt(skylight_area)) # ratio, x value, y value
4452
- # applying skylight pattern
4453
- skylights = OpenStudio::Model.applySkylightPattern(pattern, spaces, OpenStudio::Model::OptionalConstructionBase.new)
4454
- spacenames = spaces.map { |space| space.name.get }
4455
- runner.registerInfo("Adding #{skylights.size} skylights to #{spacenames}")
4456
- end
4457
-
4458
4559
  # This method will limit the subsurface of a given surface_type ("Wall" or "RoofCeiling") to the ratio for the building.
4459
4560
  # This method only reduces subsurface sizes at most.
4561
+ #
4562
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
4563
+ # @param ratio [Double] ratio
4564
+ # @param surface_type [String] surface type
4565
+ # @return [Bool] returns true if successful, false if not
4460
4566
  def apply_limit_to_subsurface_ratio(model, ratio, surface_type = 'Wall')
4461
4567
  fdwr = get_outdoor_subsurface_ratio(model, surface_type)
4462
4568
  if fdwr <= ratio
@@ -4486,14 +4592,14 @@ class Standard
4486
4592
  return true
4487
4593
  end
4488
4594
 
4489
- # Converts the climate zone in the model into the format used
4490
- # by the openstudio-standards lookup tables. For example:
4491
- # institution: ASHRAE, value: 6A becomes: ASHRAE 169-2013-6A.
4492
- # institution: CEC, value: 3 becomes: CEC T24-CEC3.
4595
+ # Converts the climate zone in the model into the format used by the openstudio-standards lookup tables.
4596
+ # For example,
4597
+ # institution: ASHRAE, value: 6A becomes: ASHRAE 169-2013-6A.
4598
+ # institution: CEC, value: 3 becomes: CEC T24-CEC3.
4493
4599
  #
4494
4600
  # @param model [OpenStudio::Model::Model] the model
4495
4601
  # @return [String] the string representation of the climate zone,
4496
- # empty string if no climate zone is present in the model.
4602
+ # empty string if no climate zone is present in the model.
4497
4603
  def model_standards_climate_zone(model)
4498
4604
  climate_zone = ''
4499
4605
  model.getClimateZones.climateZones.each do |cz|
@@ -4520,9 +4626,8 @@ class Standard
4520
4626
  # Clears out any climate zones previously added to the model.
4521
4627
  #
4522
4628
  # @param model [OpenStudio::Model::Model] the model
4523
- # @param climate_zone [String] the climate zone in openstudio-standards format.
4524
- # For example: ASHRAE 169-2013-2A, CEC T24-CEC3
4525
- # @return [Boolean] returns true if successful, false if not
4629
+ # @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
4630
+ # @return [Bool] returns true if successful, false if not
4526
4631
  def model_set_climate_zone(model, climate_zone)
4527
4632
  # Remove previous climate zones from the model
4528
4633
  model.getClimateZones.clear
@@ -4538,7 +4643,12 @@ class Standard
4538
4643
  return true
4539
4644
  end
4540
4645
 
4541
- # This method return the building ratio of subsurface_area / surface_type_area where surface_type can be "Wall" or "RoofCeiling"
4646
+ # This method return the building ratio of subsurface_area / surface_type_area
4647
+ # where surface_type can be "Wall" or "RoofCeiling"
4648
+ #
4649
+ # @param model [OpenStudio::Model::Model] the model
4650
+ # @param surface_type [String] surface type
4651
+ # @return [Double] surface ratio
4542
4652
  def get_outdoor_subsurface_ratio(model, surface_type = 'Wall')
4543
4653
  surface_area = 0.0
4544
4654
  sub_surface_area = 0
@@ -4564,6 +4674,7 @@ class Standard
4564
4674
 
4565
4675
  # Loads a osm as a starting point.
4566
4676
  #
4677
+ # @param osm_file [String] path to the .osm file, relative to the /data folder
4567
4678
  # @return [Bool] returns true if successful, false if not
4568
4679
  def load_initial_osm(osm_file)
4569
4680
  # Load the geometry .osm
@@ -4579,6 +4690,10 @@ class Standard
4579
4690
  return model
4580
4691
  end
4581
4692
 
4693
+ # validate that model contains objects
4694
+ #
4695
+ # @param model [OpenStudio::Model::Model] the model
4696
+ # @return [Bool] returns true if valid, false if not
4582
4697
  def validate_initial_model(model)
4583
4698
  is_valid = true
4584
4699
  if model.getBuildingStorys.empty?
@@ -4644,6 +4759,7 @@ class Standard
4644
4759
  # Removes all of the unused ResourceObjects
4645
4760
  # (Curves, ScheduleDay, Material, etc.) from the model.
4646
4761
  #
4762
+ # @param model [OpenStudio::Model::Model] the model
4647
4763
  # @return [Bool] returns true if successful, false if not
4648
4764
  def model_remove_unused_resource_objects(model)
4649
4765
  start_size = model.objects.size
@@ -4668,7 +4784,7 @@ class Standard
4668
4784
  # Future new schedules should be designed as paramtric from the start and would not need to run through this inference process
4669
4785
  #
4670
4786
  # @author David Goldwasser
4671
- # @param model [Model]
4787
+ # @param model [OpenStudio::Model::Model] the model
4672
4788
  # @param fraction_of_daily_occ_range [Double] fraction above/below daily min range required to start and end hours of operation
4673
4789
  # @param invert_res [Bool] if true will reverse hours of operation for residential space types
4674
4790
  # @param gen_occ_profile [Bool] if true creates a merged occupancy schedule for diagnostic purposes. This schedule is added to the model but no specifically returned by this method
@@ -4822,11 +4938,11 @@ class Standard
4822
4938
  # should be traced back to a space or spaces.
4823
4939
  #
4824
4940
  # @author David Goldwasser
4825
- # @param model [Model]
4826
- # @param step_ramp_logic [String]
4827
- # @param infer_hoo_for_non_assigned_objects [Bool] # attempt to get hoo for objects like swh with and exterior lighting
4828
- # @param gather_data_only: false (stops method before changes made if true)
4829
- # @param [hoo_var_method] accepts hours and fractional. Any other value value will result in hoo variables not being applied
4941
+ # @param model [OpenStudio::Model::Model] the model
4942
+ # @param step_ramp_logic [String] type of step logic to use
4943
+ # @param infer_hoo_for_non_assigned_objects [Bool] attempt to get hoo for objects like swh with and exterior lighting
4944
+ # @param gather_data_only [Bool] false (stops method before changes made if true)
4945
+ # @param hoo_var_method [String] accepts hours and fractional. Any other value value will result in hoo variables not being applied
4830
4946
  # @return [Hash] schedule is key, value is hash of number of objects
4831
4947
  def model_setup_parametric_schedules(model, step_ramp_logic: nil, infer_hoo_for_non_assigned_objects: true, gather_data_only: false, hoo_var_method: 'hours')
4832
4948
  parametric_inputs = {}
@@ -4880,7 +4996,7 @@ class Standard
4880
4996
  end
4881
4997
  avail_mgrs = air_loop.availabilityManagers
4882
4998
  avail_mgrs.sort.each do |avail_mgr|
4883
- # TODO: - I'm finding availability mangers, but not any resources for them, even if I use OpenStudio::Model.getRecursiveChildren(avail_mgr)
4999
+ # @todo I'm finding availability mangers, but not any resources for them, even if I use OpenStudio::Model.getRecursiveChildren(avail_mgr)
4884
5000
  resources = avail_mgr.resources
4885
5001
  resources = OpenStudio::Model.getRecursiveResources(avail_mgr)
4886
5002
  resources.sort.each do |resource|
@@ -4948,11 +5064,11 @@ class Standard
4948
5064
  end
4949
5065
  end
4950
5066
 
4951
- # TODO: - Service Water Heating supply side (may or may not be associated with a space)
4952
- # todo - water use equipment definitions (temperature, sensible, latent) may be in multiple spaces, need to identify hoo, but typically constant schedules
5067
+ # @todo Service Water Heating supply side (may or may not be associated with a space)
5068
+ # @todo water use equipment definitions (temperature, sensible, latent) may be in multiple spaces, need to identify hoo, but typically constant schedules
4953
5069
 
4954
5070
  # water use equipment (flow rate fraction)
4955
- # todo - address common schedules used across multiple instances
5071
+ # @todo address common schedules used across multiple instances
4956
5072
  model.getWaterUseEquipments.sort.each do |water_use_equipment|
4957
5073
  if water_use_equipment.flowRateFractionSchedule.is_initialized && water_use_equipment.flowRateFractionSchedule.get.to_ScheduleRuleset.is_initialized
4958
5074
  schedule = water_use_equipment.flowRateFractionSchedule.get.to_ScheduleRuleset.get
@@ -4972,8 +5088,8 @@ class Standard
4972
5088
 
4973
5089
  end
4974
5090
  end
4975
- # TODO: - Refrigeration (will be associated with thermal zone)
4976
- # todo - exterior lights (will be astronomical, but like AEDG's may have reduction later at night)
5091
+ # @todo Refrigeration (will be associated with thermal zone)
5092
+ # @todo exterior lights (will be astronomical, but like AEDG's may have reduction later at night)
4977
5093
 
4978
5094
  return parametric_inputs
4979
5095
  end
@@ -4985,7 +5101,7 @@ class Standard
4985
5101
  # @note This measure will replace any prior chagnes made to ScheduleRule objects with new ScheduleRule values from
4986
5102
  # profile formulas
4987
5103
  # @author David Goldwasser
4988
- # @param model [Model]
5104
+ # @param model [OpenStudio::Model::Model] the model
4989
5105
  # @param ramp_frequency [Double] ramp frequency in minutes. If nil method will match simulation timestep
4990
5106
  # @param infer_hoo_for_non_assigned_objects [Bool] # attempt to get hoo for objects like swh with and exterior lighting
4991
5107
  # @param error_on_out_of_order [Bool] true will error if applying formula creates out of order values
@@ -5010,7 +5126,7 @@ class Standard
5010
5126
  # for now don't look at schedules without targets, in future can alter these by looking at building level hours of operation
5011
5127
  next if sch.directUseCount <= 0 # won't catch if used for space type load instance, but that space type isn't used
5012
5128
 
5013
- # TODO: - address schedules that fall into this category, if they are used in the model
5129
+ # @todo address schedules that fall into this category, if they are used in the model
5014
5130
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', "For #{sch.sources.first.name}, #{sch.name} is not setup as parametric schedule. It has #{sch.sources.size} sources.")
5015
5131
  next
5016
5132
  end
@@ -5028,6 +5144,12 @@ class Standard
5028
5144
  private
5029
5145
 
5030
5146
  # Helper method to fill in hourly values
5147
+ #
5148
+ # @param model [OpenStudio::Model::Model] the model
5149
+ # @param day_sch [OpenStudio::Model::ScheduleDay] schedule day object
5150
+ # @param sch_type [String] Constant or Hourly
5151
+ # @param values [Array<Double>]
5152
+ # @return [Bool] returns true if successful, false if not
5031
5153
  def model_add_vals_to_sch(model, day_sch, sch_type, values)
5032
5154
  if sch_type == 'Constant'
5033
5155
  day_sch.addValue(OpenStudio::Time.new(0, 24, 0, 0), values[0])
@@ -5043,7 +5165,10 @@ class Standard
5043
5165
  end
5044
5166
 
5045
5167
  # Modify the existing service water heating loops to match the baseline required heating type.
5046
- # @return [Bool] return true if successful, false if not
5168
+ #
5169
+ # @param model [OpenStudio::Model::Model] the model
5170
+ # @param building_type [String] the building type
5171
+ # @return [Bool] returns true if successful, false if not
5047
5172
  # @author Julien Marrec
5048
5173
  def model_apply_baseline_swh_loops(model, building_type)
5049
5174
  model.getPlantLoops.sort.each do |plant_loop|
@@ -5091,7 +5216,7 @@ class Standard
5091
5216
  water_heater.setHeaterFuelType('Electricity')
5092
5217
  water_heater.setHeaterThermalEfficiency(1.0)
5093
5218
  else
5094
- # TODO: for now, just get the first fuel that isn't Electricity
5219
+ # @todo for now, just get the first fuel that isn't Electricity
5095
5220
  # A better way would be to count the capacities associated
5096
5221
  # with each fuel type and use the preponderant one
5097
5222
  fuels = htg_fuels - ['Electricity']
@@ -5128,7 +5253,9 @@ class Standard
5128
5253
  # This should be done by the forward translator, and this code should be removed after this bug is fixed:
5129
5254
  # https://github.com/NREL/OpenStudio/issues/2598
5130
5255
  #
5131
- # TODO: remove this method after OpenStudio issue #2598 is fixed.
5256
+ # @param model [OpenStudio::Model::Model] the model
5257
+ # @return [Bool] returns true if successful, false if not
5258
+ # @todo remove this method after OpenStudio issue #2598 is fixed.
5132
5259
  def model_temp_fix_ems_references(model)
5133
5260
  # Internal Variables
5134
5261
  model.getEnergyManagementSystemInternalVariables.sort.each do |var|
@@ -5147,6 +5274,10 @@ class Standard
5147
5274
  return true
5148
5275
  end
5149
5276
 
5277
+ # Loads a geometry osm as a starting point.
5278
+ #
5279
+ # @param osm_model_path [String] path to the .osm file, relative to the /data folder
5280
+ # @return [OpenStudio::Model::Model] model object
5150
5281
  def load_user_geometry_osm(osm_model_path:)
5151
5282
  version_translator = OpenStudio::OSVersion::VersionTranslator.new
5152
5283
  model = version_translator.loadModel(osm_model_path)
@@ -5187,7 +5318,7 @@ class Standard
5187
5318
  # Loads a osm as a starting point.
5188
5319
  #
5189
5320
  # @param osm_file [String] path to the .osm file, relative to the /data folder
5190
- # @return [Bool] returns true if successful, false if not
5321
+ # @return [OpenStudio::Model::Model] model object, false if not
5191
5322
  def load_geometry_osm(osm_file)
5192
5323
  # Load the geometry .osm from relative to the data folder
5193
5324
  osm_model_path = "../../../data/#{osm_file}"
@@ -5241,8 +5372,10 @@ class Standard
5241
5372
  # pass array of space types or spaces
5242
5373
  #
5243
5374
  # @author David Goldwasser
5244
- # @param array of spaces or space types
5245
- # @return hash
5375
+ # @param space_space_types [Array] array of spaces or space types
5376
+ # @param parametric_inputs [Hash]
5377
+ # @param gather_data_only [Bool]
5378
+ # @return [Hash]
5246
5379
  def gather_inputs_parametric_space_space_type_schedules(space_space_types, parametric_inputs, gather_data_only)
5247
5380
  space_space_types.each do |space_type|
5248
5381
  # get hours of operation for space type once
@@ -5297,8 +5430,11 @@ class Standard
5297
5430
  # method to process load instance schedules for model_setup_parametric_schedules
5298
5431
  #
5299
5432
  # @author David Goldwasser
5300
- # @param opt_sch
5301
- # @return hash
5433
+ # @param load_inst [OpenStudio::Model::SpaceLoadInstance]
5434
+ # @param parametric_inputs [Hash]
5435
+ # @param hours_of_operation [Hash]
5436
+ # @param gather_data_only [Bool]
5437
+ # @return [Hash]
5302
5438
  def gather_inputs_parametric_load_inst_schedules(load_inst, parametric_inputs, hours_of_operation, gather_data_only)
5303
5439
  if load_inst.class.to_s == 'OpenStudio::Model::People'
5304
5440
  opt_sch = load_inst.numberofPeopleSchedule
@@ -5319,9 +5455,15 @@ class Standard
5319
5455
  # method to process load instance schedules for model_setup_parametric_schedules
5320
5456
  #
5321
5457
  # @author David Goldwasser
5322
- # @param [sch]
5323
- # @param [hoo_var_Method] accepts hours and fractional. Any other value value will result in hoo variables not being applied
5324
- # @return [hash]
5458
+ # @param sch [OpenStudio::Model::Schedule]
5459
+ # @param load_inst [OpenStudio::Model::SpaceLoadInstance]
5460
+ # @param parametric_inputs [Hash]
5461
+ # @param hours_of_operation [Hash]
5462
+ # @param ramp [Bool]
5463
+ # @param min_ramp_dur_hr [Double]
5464
+ # @param gather_data_only [Bool]
5465
+ # @param hoo_var_method [String] accepts hours and fractional. Any other value value will result in hoo variables not being applied
5466
+ # @return [Hash]
5325
5467
  def gather_inputs_parametric_schedules(sch, load_inst, parametric_inputs, hours_of_operation, ramp: true, min_ramp_dur_hr: 2.0, gather_data_only: false, hoo_var_method: 'hours')
5326
5468
  if parametric_inputs.key?(sch)
5327
5469
  if hours_of_operation != parametric_inputs[sch][:hoo_inputs] # don't warn if the hours of operation between old and new schedule are equivalent
@@ -5389,7 +5531,7 @@ class Standard
5389
5531
  hoo_end = nil
5390
5532
  occ = nil
5391
5533
  vac = nil
5392
- # TODO: - issue warning when this happens on any profile that isn't a constant value
5534
+ # @todo issue warning when this happens on any profile that isn't a constant value
5393
5535
  else
5394
5536
  # get hours of operation for this specific profile
5395
5537
  hoo_start = hours_of_operation[hoo_target_index][:hoo_start]
@@ -5472,7 +5614,7 @@ class Standard
5472
5614
  daily_flh = day_schedule_equivalent_full_load_hrs(schedule_day)
5473
5615
  percent_change = ((daily_flh - est_daily_flh) / daily_flh) * 100.0
5474
5616
  if percent_change.abs > 0.05
5475
- # TODO: - this estimation can have flaws. Fix or remove it, make sure to update for secondary logic (if we implement that here)
5617
+ # @todo this estimation can have flaws. Fix or remove it, make sure to update for secondary logic (if we implement that here)
5476
5618
  # post application checks compares against actual instead of estimated values
5477
5619
  OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.Model', "For day schedule #{schedule_day.name} in #{sch.name} there was a #{percent_change.round(4)}% change. Expected full load hours is #{daily_flh.round(4)}, but estimated value is #{est_daily_flh.round(4)}")
5478
5620
  end
@@ -5575,7 +5717,7 @@ class Standard
5575
5717
  time = "hoo_start - vac * #{min_value_vac_fract.round(3)}"
5576
5718
  end
5577
5719
  elsif min_key == 'mid'
5578
- # TODO: - see what is going wrong with after mid in formula
5720
+ # @todo see what is going wrong with after mid in formula
5579
5721
  if min_value == 0
5580
5722
  time = 'mid'
5581
5723
  # converted to variable for simplicity but could also be described like this
@@ -5610,10 +5752,10 @@ class Standard
5610
5752
  # store profile formula with hoo and value variables
5611
5753
  props.setFeature('param_day_profile', raw_string.join(' | '))
5612
5754
 
5613
- # TODO: - not used yet, but will add methods described below and others
5614
- # todo - lower infiltration based on air loop hours of operation if air loop has outdoor air object
5615
- # todo - lower lighting or plug loads based on occupancy at given time steps in a space
5616
- # todo - set elevator fraction based multiple factors such as trips, occupants per trip, and elevator type to determine floor consumption when not in use.
5755
+ # @todo not used yet, but will add methods described below and others
5756
+ # @todo lower infiltration based on air loop hours of operation if air loop has outdoor air object
5757
+ # @todo lower lighting or plug loads based on occupancy at given time steps in a space
5758
+ # @todo set elevator fraction based multiple factors such as trips, occupants per trip, and elevator type to determine floor consumption when not in use.
5617
5759
  props.setFeature('param_day_secondary_logic', '') # secondary logic method such as occupancy impacting schedule values
5618
5760
  props.setFeature('param_day_secondary_logic_arg_val', '') # optional argument used for some secondary logic applied to values
5619
5761
 
@@ -5639,7 +5781,7 @@ class Standard
5639
5781
 
5640
5782
  # Default SAT reset type
5641
5783
  #
5642
- # @param air_loop_hvac [OpenStudio::model::AirLoopHVAC] Airloop
5784
+ # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
5643
5785
  # @return [String] Returns type of SAT reset
5644
5786
  def air_loop_hvac_supply_air_temperature_reset_type(air_loop_hvac)
5645
5787
  return 'warmest_zone'