openstudio-standards 0.2.14 → 0.2.15.pre.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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'