openstudio-standards 0.2.12.rc5 → 0.2.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (509) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAE90120162019HighriseApartment.json +1042 -0
  3. data/data/geometry/ASHRAE90120162019Hospital.json +199 -0
  4. data/data/geometry/ASHRAE90120162019LargeHotel.json +73 -0
  5. data/data/geometry/ASHRAE90120162019LargeOffice.json +109 -0
  6. data/data/geometry/ASHRAE90120162019SecondarySchool.json +205 -0
  7. data/data/geometry/ASHRAECourthouse.json +112 -0
  8. data/data/geometry/ASHRAECourthouse.osm +26470 -0
  9. data/data/geometry/ASHRAELargeHotel.osm +11 -1
  10. data/data/geometry/ASHRAELargeOffice.json +4 -0
  11. data/data/geometry/ASHRAESmallDataCenter.json +1 -1
  12. data/data/standards/OpenStudio_Standards-ashrae_90_1(space_types).xlsx +0 -0
  13. data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
  14. data/data/standards/exclude_list.csv +19 -0
  15. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.boilers.json +49 -0
  16. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.chillers.json +293 -0
  17. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +25426 -0
  18. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_sets.json +1600 -0
  19. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +564 -0
  20. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.elevators.json +349 -0
  21. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +164 -0
  22. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ground_temperatures.json +10663 -0
  23. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps.json +508 -0
  24. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +156 -0
  25. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_rejection.json +44 -0
  26. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +184 -0
  27. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.prototype_inputs.json +3094 -0
  28. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_cases.json +829 -0
  29. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_lnup.json +562 -0
  30. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_compressors.json +52 -0
  31. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_condenser.json +220 -0
  32. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_system.json +156 -0
  33. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_walkins.json +1316 -0
  34. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +21446 -0
  35. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +554 -0
  36. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_heaters.json +68 -0
  37. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_source_heat_pumps.json +28 -0
  38. data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_source_heat_pumps_heating.json +12 -0
  39. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.boilers.json +49 -0
  40. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.chillers.json +293 -0
  41. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +12487 -0
  42. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_sets.json +1600 -0
  43. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +564 -0
  44. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.elevators.json +349 -0
  45. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +164 -0
  46. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ground_temperatures.json +10663 -0
  47. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps.json +466 -0
  48. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +137 -0
  49. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_rejection.json +44 -0
  50. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +184 -0
  51. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.prototype_inputs.json +3094 -0
  52. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_cases.json +829 -0
  53. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_lnup.json +562 -0
  54. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_compressors.json +52 -0
  55. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_condenser.json +220 -0
  56. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_system.json +156 -0
  57. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_walkins.json +1316 -0
  58. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +21380 -0
  59. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +554 -0
  60. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_heaters.json +68 -0
  61. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_source_heat_pumps.json +28 -0
  62. data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_source_heat_pumps_heating.json +12 -0
  63. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.boilers.json +49 -0
  64. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.chillers.json +395 -0
  65. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +12487 -0
  66. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_sets.json +1600 -0
  67. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +592 -0
  68. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.elevators.json +349 -0
  69. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +550 -0
  70. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +164 -0
  71. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ground_temperatures.json +10663 -0
  72. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps.json +466 -0
  73. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +137 -0
  74. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_rejection.json +44 -0
  75. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +238 -0
  76. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.prototype_inputs.json +3094 -0
  77. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_cases.json +829 -0
  78. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_lnup.json +562 -0
  79. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_compressors.json +52 -0
  80. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_condenser.json +220 -0
  81. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_system.json +156 -0
  82. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_walkins.json +1316 -0
  83. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +21548 -0
  84. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +554 -0
  85. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_heaters.json +68 -0
  86. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_source_heat_pumps.json +28 -0
  87. data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_source_heat_pumps_heating.json +12 -0
  88. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.boilers.json +64 -0
  89. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.chillers.json +871 -0
  90. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +12487 -0
  91. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_sets.json +1600 -0
  92. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +592 -0
  93. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.elevators.json +349 -0
  94. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +1096 -0
  95. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +164 -0
  96. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ground_temperatures.json +10663 -0
  97. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps.json +886 -0
  98. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +194 -0
  99. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_rejection.json +44 -0
  100. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +247 -0
  101. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.prototype_inputs.json +3094 -0
  102. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_cases.json +829 -0
  103. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_lnup.json +562 -0
  104. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_compressors.json +52 -0
  105. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_condenser.json +220 -0
  106. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_system.json +156 -0
  107. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_walkins.json +1316 -0
  108. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +22079 -0
  109. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +994 -0
  110. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_heaters.json +68 -0
  111. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps.json +28 -0
  112. data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps_heating.json +12 -0
  113. data/data/standards/manage_OpenStudio_Standards.rb +87 -37
  114. data/data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1-ALL-comstockspace_types.csv +236 -0
  115. data/data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1.csv +622 -0
  116. data/data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1space_types.csv +195 -0
  117. data/data/standards/openstudio_standards_duplicates_log.csv +28 -0
  118. data/data/standards/test_performance_expected_dd_results.csv +1934 -1134
  119. data/lib/openstudio-standards.rb +68 -17
  120. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +28 -0
  121. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanVariableVolume.rb +0 -1
  122. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +28 -0
  123. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +53 -2
  124. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +29 -0
  125. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +157 -2
  126. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +29 -0
  127. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +24 -0
  128. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanConstantVolume.rb +32 -0
  129. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanOnOff.rb +33 -0
  130. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanVariableVolume.rb +32 -0
  131. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.elevators.rb +25 -0
  132. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +366 -0
  133. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +144 -0
  134. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +11 -0
  135. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +24 -0
  136. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanConstantVolume.rb +32 -0
  137. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanOnOff.rb +33 -0
  138. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanVariableVolume.rb +32 -0
  139. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.elevators.rb +25 -0
  140. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +367 -0
  141. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +144 -0
  142. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +11 -0
  143. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +0 -1
  144. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +0 -1
  145. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.HeatExchangerAirToAirSensibleAndLatent.rb +1 -1
  146. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +1 -1
  147. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerAirToAirSensibleAndLatent.rb +1 -1
  148. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +1 -1
  149. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +3 -3
  150. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +74 -0
  151. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +46 -30
  152. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +23 -8
  153. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +26 -15
  154. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +8 -11
  155. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +54 -60
  156. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +56 -60
  157. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +38 -12
  158. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +218 -134
  159. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +6 -2
  160. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +230 -134
  161. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +60 -62
  162. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +25 -15
  163. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +34 -22
  164. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +31 -7
  165. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +43 -28
  166. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +48 -38
  167. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +9 -5
  168. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +575 -345
  169. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +13 -19
  170. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +13 -17
  171. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +9 -5
  172. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +79 -51
  173. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +60 -60
  174. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +2 -4
  175. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +133 -120
  176. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +124 -112
  177. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +138 -66
  178. data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +7275 -199
  179. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +35 -35
  180. data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +2 -2
  181. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +2 -2
  182. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +3 -3
  183. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +1 -1
  184. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +2 -2
  185. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +2 -2
  186. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +1 -1
  187. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +2 -2
  188. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +2 -2
  189. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -2
  190. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +1 -1
  191. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +4 -3
  192. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +7 -8
  193. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +7 -8
  194. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +13 -14
  195. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +7 -5
  196. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.elevators.rb +4 -1
  197. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +0 -1
  198. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +25 -14
  199. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +474 -89
  200. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +35 -33
  201. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +3 -0
  202. data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +72 -0
  203. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +120 -120
  204. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +139 -151
  205. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +9 -3
  206. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +11 -5
  207. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +26 -14
  208. data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +270 -247
  209. data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
  210. data/lib/openstudio-standards/refs/references.rb +5 -2
  211. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +47 -30
  212. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -1
  213. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +0 -1
  214. data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +1 -0
  215. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +2 -4
  216. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +8 -10
  217. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +4 -5
  218. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +0 -1
  219. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  220. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +12 -9
  221. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -1
  222. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +3 -1
  223. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +0 -3
  224. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +4 -7
  225. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -3
  226. data/lib/openstudio-standards/standards/Standards.Construction.rb +124 -118
  227. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +0 -1
  228. data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +0 -1
  229. data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +0 -1
  230. data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +0 -1
  231. data/lib/openstudio-standards/standards/Standards.Fan.rb +0 -1
  232. data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -1
  233. data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -1
  234. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +2 -4
  235. data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -1
  236. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +10 -3
  237. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -1
  238. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -1
  239. data/lib/openstudio-standards/standards/Standards.Model.rb +282 -253
  240. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -0
  241. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -9
  242. data/lib/openstudio-standards/standards/Standards.Pump.rb +0 -1
  243. data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -1
  244. data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +0 -1
  245. data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +0 -1
  246. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +0 -1
  247. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +103 -121
  248. data/lib/openstudio-standards/standards/Standards.Space.rb +42 -35
  249. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +9 -17
  250. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +25 -27
  251. data/lib/openstudio-standards/standards/Standards.Surface.rb +97 -52
  252. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +39 -21
  253. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +6 -7
  254. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +85 -7
  255. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1.Standards.FanVariableVolume.rb +0 -1
  256. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +10 -2
  257. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Model.rb +2 -2
  258. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/ashrae_90_1.schedules.json +63 -99
  259. 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 +7 -7
  260. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +2420 -0
  261. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +32 -0
  262. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_rejection.json +9 -0
  263. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.prototype_inputs.json +70 -40
  264. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_lnup.json +6 -6
  265. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_system.json +6 -6
  266. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +1729 -1663
  267. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirLoopHVAC.rb +5 -1
  268. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/ashrae_90_1.schedules.json +63 -99
  269. 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 +7 -7
  270. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +1460 -0
  271. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +32 -0
  272. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_rejection.json +9 -0
  273. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.prototype_inputs.json +123 -39
  274. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_lnup.json +6 -6
  275. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_system.json +6 -6
  276. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +1728 -1641
  277. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +32 -15
  278. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +1 -1
  279. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/ashrae_90_1.schedules.json +63 -99
  280. 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 +7 -7
  281. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +1460 -0
  282. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +64 -0
  283. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +52 -0
  284. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_rejection.json +9 -0
  285. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.prototype_inputs.json +123 -39
  286. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_lnup.json +6 -6
  287. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_system.json +6 -6
  288. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +1727 -1640
  289. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +37 -14
  290. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.WaterHeaterMixed.rb +1 -1
  291. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/ashrae_90_1.schedules.json +63 -99
  292. 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 +7 -7
  293. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.boilers.json +1 -1
  294. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.chillers.json +2 -2
  295. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +1460 -0
  296. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +64 -0
  297. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +104 -0
  298. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_rejection.json +9 -0
  299. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.prototype_inputs.json +125 -41
  300. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_lnup.json +6 -6
  301. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_system.json +6 -6
  302. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +1882 -1765
  303. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_heaters.json +4 -4
  304. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps_heating.json +1 -1
  305. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +456 -0
  306. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +24 -0
  307. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTower.rb +19 -0
  308. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerSingleSpeed.rb +5 -0
  309. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerTwoSpeed.rb +5 -0
  310. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +16 -0
  311. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanVariableVolume.rb +37 -0
  312. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +189 -0
  313. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ThermalZone.rb +57 -0
  314. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +22 -0
  315. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.rb +16 -0
  316. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.boilers.json +68 -0
  317. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.chillers.json +490 -0
  318. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_properties.json +21244 -0
  319. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_sets.json +2111 -0
  320. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.economizers.json +676 -0
  321. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.elevators.json +372 -0
  322. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +1096 -0
  323. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ext_ltg.json +169 -0
  324. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps.json +532 -0
  325. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +164 -0
  326. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_rejection.json +49 -0
  327. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.motors.json +274 -0
  328. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.prototype_inputs.json +3094 -0
  329. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ref_cases.json +854 -0
  330. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ref_lnup.json +562 -0
  331. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.refrigeration_compressors.json +58 -0
  332. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.refrigeration_condenser.json +238 -0
  333. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.refrigeration_system.json +156 -0
  334. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.refrigeration_walkins.json +1316 -0
  335. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +23042 -0
  336. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +648 -0
  337. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.water_heaters.json +72 -0
  338. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.water_source_heat_pumps.json +31 -0
  339. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.water_source_heat_pumps_heating.json +13 -0
  340. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +456 -0
  341. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +24 -0
  342. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTower.rb +19 -0
  343. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerSingleSpeed.rb +5 -0
  344. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerTwoSpeed.rb +5 -0
  345. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +16 -0
  346. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanVariableVolume.rb +37 -0
  347. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +189 -0
  348. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ThermalZone.rb +57 -0
  349. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +22 -0
  350. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.rb +16 -0
  351. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.boilers.json +68 -0
  352. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.chillers.json +490 -0
  353. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_properties.json +21244 -0
  354. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_sets.json +2111 -0
  355. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.economizers.json +676 -0
  356. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.elevators.json +372 -0
  357. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +1096 -0
  358. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ext_ltg.json +169 -0
  359. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps.json +664 -0
  360. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +204 -0
  361. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_rejection.json +49 -0
  362. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.motors.json +274 -0
  363. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.prototype_inputs.json +3094 -0
  364. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ref_cases.json +854 -0
  365. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ref_lnup.json +562 -0
  366. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_compressors.json +58 -0
  367. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_condenser.json +238 -0
  368. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_system.json +156 -0
  369. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_walkins.json +1316 -0
  370. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +23067 -0
  371. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +671 -0
  372. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.water_heaters.json +72 -0
  373. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.water_source_heat_pumps.json +31 -0
  374. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.water_source_heat_pumps_heating.json +13 -0
  375. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +1614 -284
  376. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.fans.json +1 -1
  377. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.materials.json +4860 -300
  378. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +1743 -161
  379. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/ashrae_90_1.schedules.json +63 -99
  380. 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 +11 -11
  381. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.heat_rejection.json +9 -0
  382. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.prototype_inputs.json +50 -29
  383. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.ref_lnup.json +6 -6
  384. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.refrigeration_system.json +6 -6
  385. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +1334 -1334
  386. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +4 -4
  387. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/ashrae_90_1.schedules.json +63 -99
  388. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ext_ltg.json +10 -10
  389. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.heat_rejection.json +9 -0
  390. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.prototype_inputs.json +49 -28
  391. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.ref_lnup.json +6 -6
  392. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.refrigeration_system.json +6 -6
  393. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +1322 -1322
  394. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +4 -4
  395. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.heat_rejection.json +9 -0
  396. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.prototype_inputs.json +14 -7
  397. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +450 -450
  398. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +0 -1
  399. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +4 -4
  400. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +1 -1
  401. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.ZoneHVACComponent.rb +1 -1
  402. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.heat_rejection.json +9 -0
  403. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.prototype_inputs.json +14 -7
  404. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +332 -332
  405. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.water_heaters.json +2 -2
  406. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +3 -6
  407. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +4 -4
  408. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +1 -1
  409. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.ZoneHVACComponent.rb +1 -1
  410. data/lib/openstudio-standards/standards/cbes/cbes.Model.rb +1 -3
  411. data/lib/openstudio-standards/standards/cbes/cbes.rb +1 -1
  412. data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +8 -13
  413. data/lib/openstudio-standards/standards/deer/deer.Model.rb +2 -2
  414. data/lib/openstudio-standards/standards/deer/deer.PlanarSurface.rb +2 -0
  415. data/lib/openstudio-standards/standards/deer/deer.Space.rb +1 -1
  416. data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.rb +0 -1
  417. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +0 -1
  418. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.rb +0 -1
  419. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +0 -1
  420. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +0 -1
  421. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +1 -1
  422. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.FanVariableVolume.rb +1 -1
  423. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.Space.rb +0 -1
  424. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +1 -1
  425. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.FanVariableVolume.rb +1 -1
  426. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.Space.rb +0 -1
  427. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +1 -1
  428. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.FanVariableVolume.rb +1 -1
  429. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.Space.rb +0 -1
  430. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +1 -1
  431. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.FanVariableVolume.rb +1 -1
  432. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.Space.rb +0 -1
  433. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +1 -1
  434. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.FanVariableVolume.rb +1 -1
  435. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.Space.rb +0 -1
  436. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +1 -1
  437. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.FanVariableVolume.rb +1 -1
  438. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.Space.rb +0 -1
  439. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +1 -1
  440. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.FanVariableVolume.rb +1 -1
  441. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.Space.rb +0 -1
  442. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +1 -1
  443. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.FanVariableVolume.rb +1 -1
  444. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.Space.rb +0 -1
  445. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +1 -1
  446. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.FanVariableVolume.rb +1 -1
  447. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.Space.rb +0 -1
  448. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +1 -1
  449. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.FanVariableVolume.rb +1 -1
  450. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.Space.rb +0 -1
  451. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +1 -1
  452. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.FanVariableVolume.rb +1 -1
  453. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.Space.rb +0 -1
  454. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +1 -1
  455. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.FanVariableVolume.rb +1 -1
  456. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.Space.rb +0 -1
  457. data/lib/openstudio-standards/standards/icc_iecc/icc_iecc_2015/icc_iecc_2015.rb +0 -1
  458. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +28 -7
  459. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +16 -2
  460. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +15 -0
  461. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +14 -0
  462. data/lib/openstudio-standards/standards/necb/ECMS/data/erv.json +11 -7
  463. data/lib/openstudio-standards/standards/necb/ECMS/data/pv.json +112 -0
  464. data/lib/openstudio-standards/standards/necb/ECMS/data/unitary_acs.json +50 -0
  465. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +21 -8
  466. data/lib/openstudio-standards/standards/necb/ECMS/erv.rb +17 -6
  467. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +142 -6
  468. data/lib/openstudio-standards/standards/necb/ECMS/nv.rb +189 -0
  469. data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +104 -0
  470. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +19 -13
  471. data/lib/openstudio-standards/standards/necb/NECB2011/data/erv.json +1 -1
  472. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LowriseApartment.osm +39278 -0
  473. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +17 -1
  474. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +15 -0
  475. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +14 -2
  476. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +13 -0
  477. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +12 -0
  478. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +154 -12
  479. data/lib/openstudio-standards/standards/necb/NECB2011/lighting.rb +21 -3
  480. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +187 -21
  481. data/lib/openstudio-standards/standards/necb/NECB2011/nv.md +74 -0
  482. data/lib/openstudio-standards/standards/necb/NECB2011/pv_ground.md +44 -0
  483. data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +2 -2
  484. data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/qaqc_resources/neb_end_use_prices.csv +39 -84
  485. data/lib/openstudio-standards/standards/oeesc/oeesc_2014/oeesc_2014.rb +0 -1
  486. data/lib/openstudio-standards/standards/standard.rb +6 -5
  487. data/lib/openstudio-standards/utilities/Add_template_field_to_json.rb +3 -3
  488. data/lib/openstudio-standards/utilities/convert_surfaces_to_adiabatic_necb_8426.rb +54 -54
  489. data/lib/openstudio-standards/utilities/generate_prototype_database.rb +2 -2
  490. data/lib/openstudio-standards/utilities/generate_space_types.rb +3 -3
  491. data/lib/openstudio-standards/utilities/logging.rb +7 -7
  492. data/lib/openstudio-standards/utilities/necb_to_epw_map.rb +14 -14
  493. data/lib/openstudio-standards/utilities/os_sim_extract.rb +25 -25
  494. data/lib/openstudio-standards/utilities/rename_surfaces.rb +10 -13
  495. data/lib/openstudio-standards/utilities/round_surf_coords.rb +18 -20
  496. data/lib/openstudio-standards/utilities/sched_create.rb +39 -41
  497. data/lib/openstudio-standards/utilities/set_mult_to_adiabatic.rb +31 -31
  498. data/lib/openstudio-standards/utilities/simulation.rb +13 -21
  499. data/lib/openstudio-standards/utilities/speacetype_map_converter.rb +10 -11
  500. data/lib/openstudio-standards/utilities/sqlfile.rb +6 -8
  501. data/lib/openstudio-standards/utilities/template_measure/measure.rb +108 -0
  502. data/lib/openstudio-standards/utilities/template_measure/measure.xml +162 -0
  503. data/lib/openstudio-standards/utilities/template_measure/resources/BTAPMeasureHelper.rb +448 -0
  504. data/lib/openstudio-standards/utilities/template_measure/tests/test.rb +160 -0
  505. data/lib/openstudio-standards/utilities/weatherData1_xlsx_to_json.rb +23 -26
  506. data/lib/openstudio-standards/version.rb +1 -1
  507. data/lib/openstudio-standards/weather/Weather.Model.rb +112 -87
  508. data/lib/openstudio-standards/weather/Weather.stat_file.rb +17 -17
  509. metadata +216 -2
@@ -1,4 +1,3 @@
1
-
2
1
  class Standard
3
2
  # @!group ThermalZone
4
3
 
@@ -37,6 +36,7 @@ class Standard
37
36
 
38
37
  dsn_oa = space.designSpecificationOutdoorAir
39
38
  next if dsn_oa.empty?
39
+
40
40
  dsn_oa = dsn_oa.get
41
41
 
42
42
  # compute outdoor air rates in case we need them
@@ -106,6 +106,7 @@ class Standard
106
106
  # SpaceType or directly at the Space
107
107
  dsn_oa = space.designSpecificationOutdoorAir
108
108
  next if dsn_oa.empty?
109
+
109
110
  dsn_oa = dsn_oa.get
110
111
  next if dsn_oa.outdoorAirMethod == 'Maximum'
111
112
 
@@ -225,10 +226,9 @@ class Standard
225
226
  # The goal is a dynamic threshold that calibrates each day.
226
227
  # @return [<OpenStudio::Model::ScheduleRuleset>] a ScheduleRuleset of fractional or discrete occupancy
227
228
  # @todo Speed up this method. Bottleneck is ScheduleRule.getDaySchedules
228
- def spaces_get_occupancy_schedule(spaces, sch_name: nil, occupied_percentage_threshold: nil, threshold_calc_method: "value")
229
-
229
+ def spaces_get_occupancy_schedule(spaces, sch_name: nil, occupied_percentage_threshold: nil, threshold_calc_method: 'value')
230
230
  annual_normalized_tol = nil
231
- if threshold_calc_method == "normalized_annual_range"
231
+ if threshold_calc_method == 'normalized_annual_range'
232
232
  # run this method without threshold to get annual min and max
233
233
  temp_merged = spaces_get_occupancy_schedule(spaces)
234
234
  tem_min_max = schedule_ruleset_annual_min_max_value(temp_merged)
@@ -248,6 +248,7 @@ class Standard
248
248
  num_ppl_sch = num_ppl_sch.get
249
249
  num_ppl_sch = num_ppl_sch.to_ScheduleRuleset
250
250
  next if num_ppl_sch.empty? # Skip non-ruleset schedules
251
+
251
252
  num_ppl_sch = num_ppl_sch.get
252
253
  num_ppl = people.getNumberOfPeople(space.floorArea)
253
254
  if occ_schedules_num_occ[num_ppl_sch].nil?
@@ -266,6 +267,7 @@ class Standard
266
267
  num_ppl_sch = num_ppl_sch.get
267
268
  num_ppl_sch = num_ppl_sch.to_ScheduleRuleset
268
269
  next if num_ppl_sch.empty? # Skip non-ruleset schedules
270
+
269
271
  num_ppl_sch = num_ppl_sch.get
270
272
  num_ppl = people.getNumberOfPeople(space.floorArea)
271
273
  if occ_schedules_num_occ[num_ppl_sch].nil?
@@ -301,6 +303,7 @@ class Standard
301
303
  day_schedules.uniq.each do |day_sch|
302
304
  # Skip schedules that have been stored previously
303
305
  next unless day_schedule_times[day_sch].nil?
306
+
304
307
  # Store times
305
308
  times = []
306
309
  day_sch.times.each do |time|
@@ -320,13 +323,13 @@ class Standard
320
323
  # Get the unique time indices and corresponding day schedules
321
324
  day_sch_num_occ = {}
322
325
  occ_schedules_num_occ.each do |occ_sch, num_occ|
323
- daily_sch = occ_schedules_day_schedules[occ_sch][i-1]
326
+ daily_sch = occ_schedules_day_schedules[occ_sch][i - 1]
324
327
  times_on_this_day += day_schedule_times[daily_sch]
325
328
  day_sch_num_occ[daily_sch] = num_occ
326
329
  end
327
330
 
328
331
  daily_normalized_tol = nil
329
- if threshold_calc_method == "normalized_daily_range"
332
+ if threshold_calc_method == 'normalized_daily_range'
330
333
  # pre-process day to get daily min and max
331
334
  daily_spaces_occ_frac = []
332
335
  times_on_this_day.uniq.sort.each do |time|
@@ -357,19 +360,20 @@ class Standard
357
360
  tot_occ_at_time += occ_frac * num_occ
358
361
  end
359
362
 
360
- # Total fraction for the spaces at each time
361
- spaces_occ_frac = tot_occ_at_time / max_occ_in_spaces
363
+ # Total fraction for the spaces at each time,
364
+ # rounded to avoid decimal precision issues
365
+ spaces_occ_frac = (tot_occ_at_time / max_occ_in_spaces).round(3)
362
366
 
363
367
  # If occupied_percentage_threshold is specified, schedule values are boolean
364
368
  # Otherwise use the actual spaces_occ_frac
365
369
  if occupied_percentage_threshold.nil?
366
370
  occ_status = spaces_occ_frac
367
- elsif threshold_calc_method == "normalized_annual_range"
371
+ elsif threshold_calc_method == 'normalized_annual_range'
368
372
  occ_status = 0 # unoccupied
369
373
  if spaces_occ_frac >= annual_normalized_tol
370
374
  occ_status = 1
371
375
  end
372
- elsif threshold_calc_method == "normalized_daily_range"
376
+ elsif threshold_calc_method == 'normalized_daily_range'
373
377
  occ_status = 0 # unoccupied
374
378
  if spaces_occ_frac > daily_normalized_tol
375
379
  occ_status = 1
@@ -395,6 +399,7 @@ class Standard
395
399
  simple_daily_occs = []
396
400
  daily_values.each_with_index do |value, j|
397
401
  next if value == daily_values[j + 1]
402
+
398
403
  simple_daily_times << daily_times[j]
399
404
  simple_daily_os_times << daily_os_times[j]
400
405
  simple_daily_values << daily_values[j]
@@ -415,11 +420,11 @@ class Standard
415
420
  sch_ruleset.setName(sch_name.to_s)
416
421
  # add properties to schedule
417
422
  props = sch_ruleset.additionalProperties
418
- props.setFeature("max_occ_in_spaces",max_occ_in_spaces)
419
- props.setFeature("number_of_spaces_included",spaces.size)
423
+ props.setFeature('max_occ_in_spaces', max_occ_in_spaces)
424
+ props.setFeature('number_of_spaces_included', spaces.size)
420
425
  # nothing uses this but can make user be aware if this may be out of sync with current state of occupancy profiles
421
- props.setFeature("date_parent_object_last_edited",Time.now.getgm.to_s)
422
- props.setFeature("date_parent_object_created",Time.now.getgm.to_s)
426
+ props.setFeature('date_parent_object_last_edited', Time.now.getgm.to_s)
427
+ props.setFeature('date_parent_object_created', Time.now.getgm.to_s)
423
428
 
424
429
  # Default - All Occupied
425
430
  day_sch = sch_ruleset.defaultDaySchedule
@@ -448,6 +453,7 @@ class Standard
448
453
  # currently under inspection
449
454
  day = daily_data['day_of_week']
450
455
  next unless day == weekday
456
+
451
457
  date = daily_data['date']
452
458
  times = daily_data['times']
453
459
  values = daily_data['values']
@@ -470,6 +476,7 @@ class Standard
470
476
  daily_os_times.each_with_index do |time, t|
471
477
  value = values[t]
472
478
  next if value == values[t + 1] # Don't add breaks if same value
479
+
473
480
  day_sch.addValue(time, value)
474
481
  end
475
482
 
@@ -503,7 +510,7 @@ class Standard
503
510
  # todo - also merging non adjacent priority rules without getting rid of any rules between the two could create unexpected reults
504
511
  prior_rules = []
505
512
  sch_ruleset.scheduleRules.each do |rule|
506
- if prior_rules.size == 0
513
+ if prior_rules.empty?
507
514
  prior_rules << rule
508
515
  next
509
516
  else
@@ -511,7 +518,7 @@ class Standard
511
518
  prior_rules.each do |prior_rule|
512
519
  # see if they are similar
513
520
  next if rules_combined
514
- # todo - update to combine adjacent date ranges vs. just matching date ranges
521
+ # TODO: update to combine adjacent date ranges vs. just matching date ranges
515
522
  next if prior_rule.startDate.get != rule.startDate.get
516
523
  next if prior_rule.endDate.get != rule.endDate.get
517
524
  next if prior_rule.daySchedule.times.to_a != rule.daySchedule.times.to_a
@@ -526,7 +533,7 @@ class Standard
526
533
  if rule.applySaturday then prior_rule.setApplySaturday(true) && rules_combined = true end
527
534
  if rule.applySunday then prior_rule.setApplySunday(true) && rules_combined = true end
528
535
  end
529
- if rules_combined then rule.remove else prior_rules << rule end
536
+ rules_combined ? rule.remove : prior_rules << rule
530
537
  end
531
538
  end
532
539
  # replace unused default profile with lowest priority rule
@@ -535,9 +542,11 @@ class Standard
535
542
  prior_rules.last.remove
536
543
  sch_ruleset.defaultDaySchedule.clearValues
537
544
  values.size.times do |i|
538
- sch_ruleset.defaultDaySchedule.addValue(times[i],values[i])
545
+ sch_ruleset.defaultDaySchedule.addValue(times[i], values[i])
539
546
  end
540
547
 
548
+ OpenStudio.logFree(OpenStudio::Debug, 'openstudio.Standards.ThermalZone', "Created #{sch_ruleset.name} with #{schedule_ruleset_annual_equivalent_full_load_hrs(sch_ruleset)} annual EFLH.")
549
+
541
550
  return sch_ruleset
542
551
  end
543
552
 
@@ -556,6 +565,7 @@ class Standard
556
565
  thermal_zone.spaces.each do |space|
557
566
  # Ignore space if not part of total area
558
567
  next unless space.partofTotalFloorArea
568
+
559
569
  if space_residential?(space)
560
570
  res_area_m2 += space.floorArea
561
571
  else
@@ -746,6 +756,7 @@ class Standard
746
756
  spaces.each do |space|
747
757
  # If space is not part of floor area, we don't add it
748
758
  next unless space.partofTotalFloorArea
759
+
749
760
  area_m2 += space.floorArea
750
761
  end
751
762
 
@@ -773,6 +784,7 @@ class Standard
773
784
  thermal_zone.equipment.each do |equip|
774
785
  # Skip HVAC components
775
786
  next unless equip.to_HVACComponent.is_initialized
787
+
776
788
  equip = equip.to_HVACComponent.get
777
789
  if equip.airLoopHVAC.is_initialized
778
790
  has_air_loop = true
@@ -958,6 +970,7 @@ class Standard
958
970
  end
959
971
  # Move on if no heating schedule was found
960
972
  next if htg_sch.nil?
973
+
961
974
  # Get the setpoint from the schedule
962
975
  if htg_sch.to_ScheduleRuleset.is_initialized
963
976
  htg_sch = htg_sch.to_ScheduleRuleset.get
@@ -1091,6 +1104,7 @@ class Standard
1091
1104
  end
1092
1105
  # Move on if no cooling schedule was found
1093
1106
  next if clg_sch.nil?
1107
+
1094
1108
  # Get the setpoint from the schedule
1095
1109
  if clg_sch.to_ScheduleRuleset.is_initialized
1096
1110
  clg_sch = clg_sch.to_ScheduleRuleset.get
@@ -1549,12 +1563,12 @@ class Standard
1549
1563
  #
1550
1564
  # @return [String] the building type
1551
1565
  def thermal_zone_building_type(thermal_zone)
1552
-
1553
1566
  # determine areas of each building type
1554
1567
  building_type_areas = {}
1555
1568
  thermal_zone.spaces.each do |space|
1556
1569
  # ignore space if not part of total area
1557
1570
  next unless space.partofTotalFloorArea
1571
+
1558
1572
  if space.spaceType.is_initialized
1559
1573
  space_type = space.spaceType.get
1560
1574
  if space_type.standardsBuildingType.is_initialized
@@ -1572,7 +1586,7 @@ class Standard
1572
1586
  building_type = building_type_areas.key(building_type_areas.values.max)
1573
1587
 
1574
1588
  if building_type.nil?
1575
- OpenStudio::logFree(OpenStudio::Info, "openstudio.Standards.ThermalZone", "Thermal zone #{thermal_zone.name} does not have standards building type.")
1589
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.Standards.ThermalZone', "Thermal zone #{thermal_zone.name} does not have standards building type.")
1576
1590
  end
1577
1591
 
1578
1592
  return building_type
@@ -1691,12 +1705,14 @@ class Standard
1691
1705
  thermal_zone.spaces.each do |space|
1692
1706
  next unless space.spaceType.is_initialized
1693
1707
  next unless space.partofTotalFloorArea
1708
+
1694
1709
  space_type = space.spaceType.get
1695
1710
  if space_type_hash.key?(space_type)
1696
1711
  space_type_hash[space_type] += space.floorArea # excluding space.multiplier since used to calc loads in zone
1697
1712
  else
1698
1713
  next unless space_type.standardsBuildingType.is_initialized
1699
1714
  next unless space_type.standardsSpaceType.is_initialized
1715
+
1700
1716
  space_type_hash[space_type] = space.floorArea # excluding space.multiplier since used to calc loads in zone
1701
1717
  end
1702
1718
  end
@@ -1716,6 +1732,7 @@ class Standard
1716
1732
  space_type_properties = space_type_get_standards_data(space_type)
1717
1733
  exhaust_per_area = space_type_properties['exhaust_per_area']
1718
1734
  next if exhaust_per_area.nil?
1735
+
1719
1736
  maximum_flow_rate_ip = exhaust_per_area * floor_area_ip
1720
1737
  maximum_flow_rate_si = OpenStudio.convert(maximum_flow_rate_ip, 'cfm', 'm^3/s').get
1721
1738
  if space_type_properties['exhaust_availability_schedule'].nil?
@@ -1726,7 +1743,7 @@ class Standard
1726
1743
  exhaust_schedule = model_add_schedule(thermal_zone.model, sch_name)
1727
1744
  flow_sch_name = space_type_properties['exhaust_flow_fraction_schedule']
1728
1745
  exhaust_flow_schedule = model_add_schedule(thermal_zone.model, flow_sch_name)
1729
- unless exhaust_schedule
1746
+ unless exhaust_schedule
1730
1747
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.Standards.ThermalZone', "Could not find an exhaust schedule called #{sch_name}, exhaust fans will run continuously.")
1731
1748
  exhaust_schedule = thermal_zone.model.alwaysOnDiscreteSchedule
1732
1749
  end
@@ -1802,6 +1819,7 @@ class Standard
1802
1819
  # skip if space is in current thermal zone.
1803
1820
  next unless space.thermalZone.is_initialized
1804
1821
  next if k.thermalZone.get == thermal_zone
1822
+
1805
1823
  adjacent_zones << k.thermalZone.get
1806
1824
  end
1807
1825
  end
@@ -1,4 +1,3 @@
1
-
2
1
  class Standard
3
2
  # @!group WaterHeaterMixed
4
3
 
@@ -9,7 +8,7 @@ class Standard
9
8
  #
10
9
  # @return [Bool] true if successful, false if not
11
10
  def water_heater_mixed_apply_efficiency(water_heater_mixed)
12
- # TODO remove this once workaround for HPWHs is removed
11
+ # TODO: remove this once workaround for HPWHs is removed
13
12
  if water_heater_mixed.partLoadFactorCurve.is_initialized
14
13
  if water_heater_mixed.partLoadFactorCurve.get.name.get.include?('HPWH_COP')
15
14
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.WaterHeaterMixed', "For #{water_heater_mixed.name}, the workaround for HPWHs has been applied, efficiency will not be changed.")
@@ -30,14 +29,14 @@ class Standard
30
29
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
31
30
 
32
31
  # Get the volume of the water heater
33
- # TODO add capability to pull autosized water heater volume
32
+ # TODO: add capability to pull autosized water heater volume
34
33
  # if the Sizing:WaterHeater object is ever implemented in OpenStudio.
35
34
  volume_m3 = water_heater_mixed.tankVolume
36
35
  if volume_m3.empty?
37
36
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.WaterHeaterMixed', "For #{water_heater_mixed.name}, cannot find volume, standard will not be applied.")
38
37
  return false
39
38
  else
40
- volume_m3 = @instvarbuilding_type == 'MidriseApartment' ? volume_m3.get / 23 : volume_m3.get / water_heater_mixed.component_quantity
39
+ volume_m3 = @instvarbuilding_type == 'MidriseApartment' ? volume_m3.get / 23 : volume_m3.get / water_heater_mixed.component_quantity
41
40
  end
42
41
  volume_gal = OpenStudio.convert(volume_m3, 'm^3', 'gal').get
43
42
 
@@ -95,14 +94,14 @@ class Standard
95
94
  # 0.82 = (ua*67.5+cap*re)/cap
96
95
  # Solutions to the system of equations were determined
97
96
  # for discrete values of EF and modeled using a regression
98
- re = -0.1137 * ef **2 + 0.1997 * ef + 0.731
97
+ re = -0.1137 * ef**2 + 0.1997 * ef + 0.731
99
98
  # Calculate the skin loss coefficient (UA)
100
99
  # Input capacity is assumed to be the output capacity
101
100
  # divided by a burner efficiency of 80%
102
101
  ua_btu_per_hr_per_f = (water_heater_eff - re) * capacity_btu_per_hr / 0.8 / 67.5
103
102
  end
104
103
  # Two booster water heaters
105
- ua_btu_per_hr_per_f = water_heater_mixed.name.to_s.include?('Booster') ? ua_btu_per_hr_per_f * 2 : ua_btu_per_hr_per_f
104
+ ua_btu_per_hr_per_f = water_heater_mixed.name.to_s.include?('Booster') ? ua_btu_per_hr_per_f * 2 : ua_btu_per_hr_per_f
106
105
  end
107
106
 
108
107
  # Typically specified this way for large electric water heaters
@@ -149,7 +148,7 @@ class Standard
149
148
  # Calculate the max allowable standby loss (SL)
150
149
  # Output capacity is assumed to be 10 * Tank volume
151
150
  # Input capacity = Output capacity / Et
152
- p_on = capacity_btu_per_hr / et
151
+ p_on = capacity_btu_per_hr / et
153
152
  sl_btu_per_hr = p_on / sl_cap_adj + sl_vol_drt * Math.sqrt(wh_tank_volume) + sl_tank
154
153
  # Calculate the skin loss coefficient (UA)
155
154
  ua_btu_per_hr_per_f = (sl_btu_per_hr * et) / 70
@@ -82,16 +82,98 @@ class Standard
82
82
  return true
83
83
  end
84
84
 
85
+ # Default occupancy fraction threshold for determining if the spaces served by the zone hvac are occupied
86
+ def zone_hvac_unoccupied_threshold
87
+ return 0.15
88
+ end
89
+
90
+ # If the supply air fan operating mode schedule is always off (to follow load),
91
+ # and the zone requires ventilation, override it to follow the zone occupancy schedule
92
+ def zone_hvac_component_occupancy_ventilation_control(zone_hvac_component)
93
+ ventilation = false
94
+ # Zone HVAC operating schedule if providing ventilation
95
+ # Zone HVAC components return an OptionalSchedule object for supplyAirFanOperatingModeSchedule
96
+ # except for ZoneHVACTerminalUnitVariableRefrigerantFlow which returns a Schedule
97
+ existing_sch = nil
98
+ if zone_hvac_component.to_ZoneHVACFourPipeFanCoil.is_initialized
99
+ zone_hvac_component = zone_hvac_component.to_ZoneHVACFourPipeFanCoil.get
100
+ if zone_hvac_component.maximumOutdoorAirFlowRate.is_initialized
101
+ oa_rate = zone_hvac_component.maximumOutdoorAirFlowRate.get
102
+ ventilation = true if oa_rate > 0.0
103
+ end
104
+ ventilation = true if zone_hvac_component.isMaximumOutdoorAirFlowRateAutosized
105
+ fan_op_sch = zone_hvac_component.supplyAirFanOperatingModeSchedule
106
+ existing_sch = fan_op_sch.get if fan_op_sch.is_initialized
107
+ elsif zone_hvac_component.to_ZoneHVACPackagedTerminalAirConditioner.is_initialized
108
+ zone_hvac_component = zone_hvac_component.to_ZoneHVACPackagedTerminalAirConditioner.get
109
+ if zone_hvac_component.outdoorAirFlowRateWhenNoCoolingorHeatingisNeeded.is_initialized
110
+ oa_rate = zone_hvac_component.outdoorAirFlowRateWhenNoCoolingorHeatingisNeeded.get
111
+ ventilation = true if oa_rate > 0.0
112
+ end
113
+ ventilation = true if zone_hvac_component.isOutdoorAirFlowRateWhenNoCoolingorHeatingisNeededAutosized
114
+ fan_op_sch = zone_hvac_component.supplyAirFanOperatingModeSchedule
115
+ existing_sch = fan_op_sch.get if fan_op_sch.is_initialized
116
+ elsif zone_hvac_component.to_ZoneHVACPackagedTerminalHeatPump.is_initialized
117
+ zone_hvac_component = zone_hvac_component.to_ZoneHVACPackagedTerminalHeatPump.get
118
+ if zone_hvac_component.outdoorAirFlowRateWhenNoCoolingorHeatingisNeeded.is_initialized
119
+ oa_rate = zone_hvac_component.outdoorAirFlowRateWhenNoCoolingorHeatingisNeeded.get
120
+ ventilation = true if oa_rate > 0.0
121
+ end
122
+ ventilation = true if zone_hvac_component.isOutdoorAirFlowRateWhenNoCoolingorHeatingisNeededAutosized
123
+ fan_op_sch = zone_hvac_component.supplyAirFanOperatingModeSchedule
124
+ existing_sch = fan_op_sch.get if fan_op_sch.is_initialized
125
+ elsif zone_hvac_component.to_ZoneHVACTerminalUnitVariableRefrigerantFlow.is_initialized
126
+ zone_hvac_component = zone_hvac_component.to_ZoneHVACTerminalUnitVariableRefrigerantFlow.get
127
+ if zone_hvac_component.outdoorAirFlowRateWhenNoCoolingorHeatingisNeeded.is_initialized
128
+ oa_rate = zone_hvac_component.outdoorAirFlowRateWhenNoCoolingorHeatingisNeeded.get
129
+ ventilation = true if oa_rate > 0.0
130
+ end
131
+ ventilation = true if zone_hvac_component.isOutdoorAirFlowRateWhenNoCoolingorHeatingisNeededAutosized
132
+ existing_sch = zone_hvac_component.supplyAirFanOperatingModeSchedule
133
+ elsif zone_hvac_component.to_ZoneHVACWaterToAirHeatPump.is_initialized
134
+ zone_hvac_component = zone_hvac_component.to_ZoneHVACWaterToAirHeatPump.get
135
+ if zone_hvac_component.outdoorAirFlowRateWhenNoCoolingorHeatingisNeeded.is_initialized
136
+ oa_rate = zone_hvac_component.outdoorAirFlowRateWhenNoCoolingorHeatingisNeeded.get
137
+ ventilation = true if oa_rate > 0.0
138
+ end
139
+ ventilation = true if zone_hvac_component.isOutdoorAirFlowRateWhenNoCoolingorHeatingisNeededAutosized
140
+ fan_op_sch = zone_hvac_component.supplyAirFanOperatingModeSchedule
141
+ existing_sch = fan_op_sch.get if fan_op_sch.is_initialized
142
+ end
143
+ return false unless ventilation
144
+
145
+ # if supply air fan operating schedule is always off,
146
+ # override to provide ventilation during occupied hours
147
+ unless existing_sch.nil?
148
+ if existing_sch.name.is_initialized
149
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.Standards.ZoneHVACComponent', "#{zone_hvac_component.name} has ventilation, and schedule is set to always on; keeping always on schedule.")
150
+ return false if existing_sch.name.get.to_s.downcase.include? 'always on discrete'
151
+ end
152
+ end
153
+
154
+ thermal_zone = zone_hvac_component.thermalZone.get
155
+ occ_threshold = zone_hvac_unoccupied_threshold
156
+ occ_sch = thermal_zones_get_occupancy_schedule([thermal_zone],
157
+ sch_name: "#{zone_hvac_component.name} Occ Sch",
158
+ occupied_percentage_threshold: occ_threshold)
159
+ zone_hvac_component.setSupplyAirFanOperatingModeSchedule(occ_sch)
160
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.Standards.ZoneHVACComponent', "#{zone_hvac_component.name} has ventilation. Setting fan operating mode schedule to align with zone occupancy schedule.")
161
+
162
+ return true
163
+ end
164
+
85
165
  # Apply all standard required controls to the zone equipment
86
166
  #
87
167
  # @return [Bool] returns true if successful, false if not
88
168
  def zone_hvac_component_apply_standard_controls(zone_hvac_component)
89
-
90
169
  # Vestibule heating control
91
170
  if zone_hvac_component_vestibule_heating_control_required?(zone_hvac_component)
92
171
  zone_hvac_component_apply_vestibule_heating_control(zone_hvac_component)
93
172
  end
94
173
 
174
+ # zone ventilation occupancy control for systems with ventilation
175
+ zone_hvac_component_occupancy_ventilation_control(zone_hvac_component)
176
+
95
177
  return true
96
178
  end
97
179
 
@@ -108,7 +190,6 @@ class Standard
108
190
  #
109
191
  # @return [Bool] returns true if successful, false if not
110
192
  def zone_hvac_component_apply_vestibule_heating_control(zone_hvac_component)
111
-
112
193
  # Ensure that the equipment is assigned to a thermal zone
113
194
  if zone_hvac_component.thermalZone.empty?
114
195
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.ZoneHVACComponent', "For #{zone_hvac_component.name}: equipment is not assigned to a thermal zone, cannot apply vestibule heating control.")
@@ -124,8 +205,6 @@ class Standard
124
205
  zone_hvac_component.to_ZoneHVACPackagedTerminalAirConditioner.get
125
206
  elsif zone_hvac_component.to_ZoneHVACPackagedTerminalHeatPump.is_initialized
126
207
  zone_hvac_component.to_ZoneHVACPackagedTerminalHeatPump.get
127
- else
128
- nil
129
208
  end
130
209
 
131
210
  # Do nothing for other types of zone HVAC equipment
@@ -185,8 +264,8 @@ class Standard
185
264
  oat_db_c_sen = zone_hvac_component.model.getEnergyManagementSystemSensorByName('OATVestibule').get
186
265
  else
187
266
  oat_db_c_sen = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Site Outdoor Air Drybulb Temperature')
188
- oat_db_c_sen.setName("OATVestibule")
189
- oat_db_c_sen.setKeyName("Environment")
267
+ oat_db_c_sen.setName('OATVestibule')
268
+ oat_db_c_sen.setKeyName('Environment')
190
269
  end
191
270
 
192
271
  # Actuators
@@ -214,5 +293,4 @@ class Standard
214
293
 
215
294
  return true
216
295
  end
217
-
218
296
  end