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
@@ -84,6 +84,7 @@ class NECB2011
84
84
  # Create MAU
85
85
  # TO DO: MAU sizing, characteristics (fan operation schedules, temperature setpoints, outdoor air, etc)
86
86
 
87
+
87
88
  if mau_type == true
88
89
  mau_air_loop = common_air_loop(model: model, system_data: system_data)
89
90
  mau_fan = OpenStudio::Model::FanConstantVolume.new(model, always_on)
@@ -99,6 +100,7 @@ class NECB2011
99
100
 
100
101
  # Set up Single Speed DX coil with
101
102
  mau_clg_coil = self.add_onespeed_DX_coil(model, always_on)
103
+ mau_clg_coil.setName("CoilCoolingDXSingleSpeed_dx")
102
104
 
103
105
  # Set up OA system
104
106
  oa_controller = OpenStudio::Model::ControllerOutdoorAir.new(model)
@@ -122,7 +124,6 @@ class NECB2011
122
124
  setpoint_mgr.addToNode(mau_air_loop.supplyOutletNode)
123
125
  end
124
126
 
125
-
126
127
  zones.each do |zone|
127
128
  # Zone sizing temperature
128
129
  sizing_zone = zone.sizingZone
@@ -158,6 +159,21 @@ class NECB2011
158
159
  mau_air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
159
160
  end # components for MAU
160
161
  end # of zone loop
162
+ if mau_type
163
+ sys_name_pars = {}
164
+ sys_name_pars["sys_hr"] = "none"
165
+ sys_name_pars["sys_clg"] = "dx"
166
+ sys_name_pars["sys_htg"] = mau_heating_coil_type
167
+ sys_name_pars["sys_sf"] = "cv"
168
+ sys_name_pars["zone_htg"] = baseboard_type
169
+ sys_name_pars["zone_clg"] = "ptac"
170
+ sys_name_pars["sys_rf"] = "none"
171
+ assign_base_sys_name(mau_air_loop,
172
+ sys_abbr: "sys_1",
173
+ sys_oa: "doas",
174
+ sys_name_pars: sys_name_pars)
175
+ end
176
+
161
177
  return true
162
178
  end
163
179
  end
@@ -87,6 +87,7 @@ class NECB2011
87
87
  # Add DX or hydronic cooling coil
88
88
  if mau_cooling_type == 'DX'
89
89
  clg_coil = self.add_onespeed_DX_coil(model, tpfc_clg_availability_sch)
90
+ clg_coil.setName("CoilCoolingDXSingleSpeed_dx")
90
91
  elsif mau_cooling_type == 'Hydronic'
91
92
  clg_coil = OpenStudio::Model::CoilCoolingWater.new(model, tpfc_clg_availability_sch)
92
93
  chw_loop.addDemandBranchForComponent(clg_coil)
@@ -154,5 +155,19 @@ class NECB2011
154
155
  diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
155
156
  air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
156
157
  end # zone loop
158
+ sys_abbr = "sys_2"
159
+ sys_abbr = "sys_5" if fan_coil_type == "TPFC"
160
+ sys_name_pars = {}
161
+ sys_name_pars["sys_hr"] = "none"
162
+ sys_name_pars["sys_clg"] = mau_cooling_type
163
+ sys_name_pars["sys_htg"] = "g"
164
+ sys_name_pars["sys_sf"] = "cv"
165
+ sys_name_pars["zone_htg"] = fan_coil_type
166
+ sys_name_pars["zone_clg"] = fan_coil_type
167
+ sys_name_pars["sys_rf"] = "none"
168
+ assign_base_sys_name(mau_air_loop,
169
+ sys_abbr: sys_abbr,
170
+ sys_oa: "doas",
171
+ sys_name_pars: sys_name_pars)
157
172
  end
158
173
  end
@@ -91,7 +91,6 @@ class NECB2011
91
91
  zone)
92
92
 
93
93
  end
94
- return true
95
94
  else
96
95
  zones.each do |zone|
97
96
  air_loop = add_system_3_and_8_airloop(heating_coil_type, model, system_data, zone)
@@ -101,8 +100,20 @@ class NECB2011
101
100
  model,
102
101
  zone)
103
102
  end
104
- return true
105
103
  end
104
+ sys_name_pars = {}
105
+ sys_name_pars["sys_hr"] = "none"
106
+ sys_name_pars["sys_clg"] = "dx"
107
+ sys_name_pars["sys_htg"] = heating_coil_type
108
+ sys_name_pars["sys_sf"] = "cv"
109
+ sys_name_pars["zone_htg"] = baseboard_type
110
+ sys_name_pars["zone_clg"] = "none"
111
+ sys_name_pars["sys_rf"] = "none"
112
+ assign_base_sys_name(air_loop,
113
+ sys_abbr: "sys_3",
114
+ sys_oa: "mixed",
115
+ sys_name_pars: sys_name_pars)
116
+ return true
106
117
  end
107
118
 
108
119
 
@@ -151,6 +162,7 @@ class NECB2011
151
162
 
152
163
  # Set up DX coil with NECB performance curve characteristics;
153
164
  clg_coil = OpenStudio::Model::CoilCoolingDXSingleSpeed.new(model)
165
+ clg_coil.setName("CoilCoolingDXSingleSpeed_dx")
154
166
 
155
167
  # oa_controller
156
168
  oa_controller = OpenStudio::Model::ControllerOutdoorAir.new(model)
@@ -86,6 +86,7 @@ class NECB2011
86
86
  # Set up DX coil with NECB performance curve characteristics;
87
87
 
88
88
  clg_coil = self.add_onespeed_DX_coil(model, always_on)
89
+ clg_coil.setName("CoilCoolingDXSingleSpeed_dx")
89
90
 
90
91
  # oa_controller
91
92
  oa_controller = OpenStudio::Model::ControllerOutdoorAir.new(model)
@@ -141,6 +142,18 @@ class NECB2011
141
142
  model: model,
142
143
  zone: zone)
143
144
  end # zone loop
145
+ sys_name_pars = {}
146
+ sys_name_pars["sys_hr"] = "none"
147
+ sys_name_pars["sys_clg"] = "dx"
148
+ sys_name_pars["sys_htg"] = heating_coil_type
149
+ sys_name_pars["sys_sf"] = "cv"
150
+ sys_name_pars["zone_htg"] = baseboard_type
151
+ sys_name_pars["zone_clg"] = "none"
152
+ sys_name_pars["sys_rf"] = "none"
153
+ assign_base_sys_name(air_loop,
154
+ sys_abbr: "sys_4",
155
+ sys_oa: "mixed",
156
+ sys_name_pars: sys_name_pars)
144
157
 
145
158
  return true
146
159
  end
@@ -133,6 +133,18 @@ class NECB2011
133
133
  baseboard_type: baseboard_type,
134
134
  hw_loop: hw_loop)
135
135
  end
136
+ sys_name_pars = {}
137
+ sys_name_pars["sys_hr"] = "none"
138
+ sys_name_pars["sys_htg"] = heating_coil_type
139
+ sys_name_pars["sys_clg"] = "Chilled Water"
140
+ sys_name_pars["sys_sf"] = "vv"
141
+ sys_name_pars["zone_htg"] = baseboard_type
142
+ sys_name_pars["zone_clg"] = "none"
143
+ sys_name_pars["sys_rf"] = "vv"
144
+ assign_base_sys_name(air_loop,
145
+ sys_abbr: "sys_6",
146
+ sys_oa: "mixed",
147
+ sys_name_pars: sys_name_pars)
136
148
  end
137
149
  end # next story
138
150
 
@@ -295,6 +295,7 @@ class NECB2011
295
295
  end
296
296
 
297
297
  # Create an ERV
298
+
298
299
  erv = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(air_loop_hvac.model)
299
300
  erv.setName("#{air_loop_hvac.name} ERV")
300
301
  erv.setSensibleEffectivenessat100HeatingAirFlow(0.5)
@@ -372,10 +373,9 @@ class NECB2011
372
373
  def heat_exchanger_air_to_air_sensible_and_latent_apply_efficiency(heat_exchanger_air_to_air_sensible_and_latent, erv_name = nil)
373
374
  # Assumed to be sensible and latent at all flow
374
375
  # This will now get data of the erv from the json file instead of hardcoding it. Defaults to NECB2011 erv we have been using.
375
- erv_name = 'Rotary-Minimum-Eff-Existing' if erv_name.nil?
376
- erv_info = @standards_data['erv'].detect { |item| item['erv_name'] == erv_name }
377
-
378
- raise("Could not find #{erv_name} in #{self.class.name} class' erv.json file or it's parents. The available ervs are #{@standards_data['erv'].map{|item| item['erv_name']}}") if erv_info.nil?
376
+ erv_name = 'NECB_Default' if erv_name.nil?
377
+ erv_info = @standards_data['tables']['erv']['table'].detect { |item| item['erv_name'] == erv_name }
378
+ raise("Could not find #{erv_name} in #{self.class.name} class' erv.json file or it's parents. The available ervs are #{@standards_data['tables']['erv']['table'].map{|item| item['erv_name']}}") if erv_info.nil?
379
379
 
380
380
  heat_exchanger_air_to_air_sensible_and_latent.setHeatExchangerType(erv_info['HeatExchangerType'])
381
381
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(erv_info['SensibleEffectivenessat100HeatingAirFlow'])
@@ -391,6 +391,8 @@ class NECB2011
391
391
  heat_exchanger_air_to_air_sensible_and_latent.setEconomizerLockout(erv_info['EconomizerLockout'])
392
392
  heat_exchanger_air_to_air_sensible_and_latent.setThresholdTemperature(erv_info['ThresholdTemperature'])
393
393
  heat_exchanger_air_to_air_sensible_and_latent.setInitialDefrostTimeFraction(erv_info['InitialDefrostTimeFraction'])
394
+ update_sys_name(heat_exchanger_air_to_air_sensible_and_latent.airLoopHVAC.get,sys_hr: "erv")
395
+
394
396
  return true
395
397
  end
396
398
 
@@ -939,7 +941,7 @@ class NECB2011
939
941
  # Make the COOL-CAP-FT curve
940
942
  cool_cap_ft = model_add_curve(model, ac_props['cool_cap_ft'])
941
943
  if cool_cap_ft
942
- clg_stages.each do |stage|
944
+ clg_stages.sort.each do |stage|
943
945
  stage.setTotalCoolingCapacityFunctionofTemperatureCurve(cool_cap_ft)
944
946
  end
945
947
  else
@@ -951,7 +953,7 @@ class NECB2011
951
953
  # Make the COOL-CAP-FFLOW curve
952
954
  cool_cap_fflow = model_add_curve(model, ac_props['cool_cap_fflow'])
953
955
  if cool_cap_fflow
954
- clg_stages.each do |stage|
956
+ clg_stages.sort.each do |stage|
955
957
  stage.setTotalCoolingCapacityFunctionofFlowFractionCurve(cool_cap_fflow)
956
958
  end
957
959
  else
@@ -963,7 +965,7 @@ class NECB2011
963
965
  # Make the COOL-EIR-FT curve
964
966
  cool_eir_ft = model_add_curve(model, ac_props['cool_eir_ft'])
965
967
  if cool_eir_ft
966
- clg_stages.each do |stage|
968
+ clg_stages.sort.each do |stage|
967
969
  stage.setEnergyInputRatioFunctionofTemperatureCurve(cool_eir_ft)
968
970
  end
969
971
  else
@@ -975,7 +977,7 @@ class NECB2011
975
977
  # Make the COOL-EIR-FFLOW curve
976
978
  cool_eir_fflow = model_add_curve(model, ac_props['cool_eir_fflow'])
977
979
  if cool_eir_fflow
978
- clg_stages.each do |stage|
980
+ clg_stages.sort.each do |stage|
979
981
  stage.setEnergyInputRatioFunctionofFlowFractionCurve(cool_eir_fflow)
980
982
  end
981
983
  else
@@ -987,7 +989,7 @@ class NECB2011
987
989
  # Make the COOL-PLF-FPLR curve
988
990
  cool_plf_fplr = model_add_curve(model, ac_props['cool_plf_fplr'])
989
991
  if cool_plf_fplr
990
- clg_stages.each do |stage|
992
+ clg_stages.sort.each do |stage|
991
993
  stage.setPartLoadFractionCorrelationCurve(cool_plf_fplr)
992
994
  end
993
995
  else
@@ -999,7 +1001,7 @@ class NECB2011
999
1001
  # Set the COP values
1000
1002
  cop, new_comp_name = coil_cooling_dx_multi_speed_standard_minimum_cop(coil_cooling_dx_multi_speed)
1001
1003
  unless cop.nil?
1002
- clg_stages.each do |istage|
1004
+ clg_stages.sort.each do |istage|
1003
1005
  istage.setGrossRatedCoolingCOP(cop)
1004
1006
  end
1005
1007
  end
@@ -1077,7 +1079,7 @@ class NECB2011
1077
1079
  # get multi speed heat pump and air loop
1078
1080
  multi_speed_heat_pump = nil
1079
1081
  multi_speed_heat_pumps = model.getAirLoopHVACUnitaryHeatPumpAirToAirMultiSpeeds
1080
- multi_speed_heat_pumps.each do |iheat_pump|
1082
+ multi_speed_heat_pumps.sort.each do |iheat_pump|
1081
1083
  htg_coil = iheat_pump.heatingCoil
1082
1084
  if htg_coil.name.to_s.strip == coil_heating_gas_multi_stage.name.to_s.strip
1083
1085
  multi_speed_heat_pump = iheat_pump
@@ -1239,7 +1241,7 @@ class NECB2011
1239
1241
 
1240
1242
  # Set the efficiency values
1241
1243
  unless thermal_eff.nil?
1242
- htg_stages.each do |stage|
1244
+ htg_stages.sort.each do |stage|
1243
1245
  stage.setGasBurnerEfficiency(thermal_eff)
1244
1246
  end
1245
1247
  end
@@ -1459,6 +1461,15 @@ class NECB2011
1459
1461
  return true
1460
1462
  end
1461
1463
 
1464
+ # Determine and set type of part load control type for heating and chilled
1465
+ # water variable speed pumps
1466
+ #
1467
+ # @param pump [OpenStudio::Model::PumpVariableSpeed] OpenStudio pump object
1468
+ # @return [Boolean] Returns true if applicable, false otherwise
1469
+ def pump_variable_speed_control_type(pump)
1470
+ return false
1471
+ end
1472
+
1462
1473
  # Sets the fan pressure rise based on the Prototype buildings inputs
1463
1474
  # which are governed by the flow rate coming through the fan
1464
1475
  # and whether the fan lives inside a unit heater, PTAC, etc.
@@ -2042,5 +2053,136 @@ class NECB2011
2042
2053
  return clg_availability_sch, htg_availability_sch
2043
2054
  end
2044
2055
 
2056
+ # Method to set the base system name based on the following syntax:
2057
+ # |sys_abbr|sys_oa|sh>?|sc>?|ssf>?|zh>?|zc>?|srf>?|
2058
+ # "sys_abbr" designates the NECB system type ("sys_1, sys_2, ... sys_6")
2059
+ # "sys_oa": "mixed" or "doas"
2060
+ # "sys_name_pars" is a hash for the remaining system name parts for heat recovery,
2061
+ # heating, cooling, supply fan, zone heating, zone cooling, and return fan
2062
+ def assign_base_sys_name(airloop,sys_abbr:,sys_oa:,sys_name_pars:)
2063
+ sys_name = "#{sys_abbr}|#{sys_oa}|"
2064
+
2065
+ sys_name_pars.each do |key,value|
2066
+ case key.downcase
2067
+ when "sys_hr"
2068
+ case value.downcase
2069
+ when "none"
2070
+ sys_name += "shr>none"
2071
+ end
2072
+
2073
+ when "sys_htg"
2074
+ case value.downcase
2075
+ when "none"
2076
+ sys_name += "sh>none"
2077
+ when "electric"
2078
+ sys_name += "sh>c-e"
2079
+ when "hot water"
2080
+ sys_name += "sh>c-hw"
2081
+ when "gas"
2082
+ sys_name += "sh>c-g"
2083
+ when "dx"
2084
+ sys_name += "sh>ashp"
2085
+ end
2086
+
2087
+ when "sys_clg"
2088
+ case value.downcase
2089
+ when "none"
2090
+ sys_name += "sc>none"
2091
+ when "chilled water"
2092
+ sys_name += "sc>c-chw"
2093
+ when "dx"
2094
+ sys_name += "sc>dx"
2095
+ sys_name += "sc>ashp" if sys_name_pars["sys_htg"] == "dx"
2096
+ end
2097
+
2098
+ when "sys_sf"
2099
+ case value.downcase
2100
+ when "none"
2101
+ sys_name += "ssf>none"
2102
+ when "cv"
2103
+ sys_name += "ssf>cv"
2104
+ when "vv"
2105
+ sys_name += "ssf>vv"
2106
+ end
2107
+
2108
+ when "zone_htg"
2109
+ case value.downcase
2110
+ when "none"
2111
+ sys_name += "zh>none"
2112
+ when "electric"
2113
+ sys_name += "zh>b-e"
2114
+ when "hot water"
2115
+ sys_name += "zh>b-hw"
2116
+ when "tpfc"
2117
+ sys_name += "zh>fpfc"
2118
+ when "fpfc"
2119
+ sys_name += "zh>tpfc"
2120
+ end
2121
+
2122
+ when "zone_clg"
2123
+ case value.downcase
2124
+ when "none"
2125
+ sys_name += "zc>none"
2126
+ when "tpfc"
2127
+ sys_name += "zc>tpfc"
2128
+ when "fpfc"
2129
+ sys_name += "zc>fpfc"
2130
+ when "ptac"
2131
+ sys_name += "zc>ptac"
2132
+ end
2133
+
2134
+ when "sys_rf"
2135
+ case value.downcase
2136
+ when "none"
2137
+ sys_name += "srf>none"
2138
+ when "cv"
2139
+ sys_name += "srf>cv"
2140
+ when "vv"
2141
+ sys_name += "srf>vv"
2142
+ end
2143
+ end
2144
+ sys_name += "|"
2145
+ end
2146
+
2147
+ airloop.setName(sys_name)
2148
+ end
2149
+
2150
+ # Method to update the base system name based on the inputs provided.
2151
+ # Only the parts of the name with string inputs are updated
2152
+ def update_sys_name(airloop,
2153
+ sys_abbr: nil,
2154
+ sys_oa: nil,
2155
+ sys_hr: nil,
2156
+ sys_htg: nil,
2157
+ sys_clg: nil,
2158
+ sys_sf: nil,
2159
+ zone_htg: nil,
2160
+ zone_clg: nil,
2161
+ sys_rf: nil)
2162
+ name_parts = airloop.name.to_s.split("|").select {|part| !part.empty?}
2163
+ if sys_abbr.is_a? String then name_parts[0] = sys_abbr end
2164
+ if sys_oa.is_a? String then name_parts[1] = sys_oa end
2165
+ for i in 0..name_parts.size-1
2166
+ if (name_parts[i].include? "shr>") && (sys_hr.is_a? String)
2167
+ name_parts[i] = "shr>#{sys_hr}"
2168
+ elsif (name_parts[i].include? "sh>") && (sys_htg.is_a? String)
2169
+ name_parts[i] = "sh>#{sys_htg}"
2170
+ elsif (name_parts[i].include? "sc>") && (sys_clg.is_a? String)
2171
+ name_parts[i] = "sc>#{sys_clg}"
2172
+ elsif (name_parts[i].include? "ssf") && (sys_sf.is_a? String)
2173
+ name_parts[i] = "ssf>#{sys_sf}"
2174
+ elsif (name_parts[i].include? "zh>") && (zone_htg.is_a? String)
2175
+ name_parts[i] = "zh>#{zone_htg}"
2176
+ elsif (name_parts[i].include? "zc>") && (zone_clg.is_a? String)
2177
+ name_parts[i] = "zc>#{zone_clg}"
2178
+ elsif (name_parts[i].include? "srf>") && (sys_rf.is_a? String)
2179
+ name_parts[i] = "srf>#{sys_rf}"
2180
+ end
2181
+ end
2182
+ sys_name = ""
2183
+ name_parts.each {|part| sys_name += "#{part}|"}
2184
+ sys_name = sys_name.chop if (Integer(name_parts.last.strip) rescue false)
2045
2185
 
2186
+ airloop.setName(sys_name)
2187
+ end
2046
2188
  end
@@ -1,9 +1,27 @@
1
1
  class NECB2011
2
2
 
3
3
  def apply_standard_lights(set_lights: true,
4
- space_type:, space_type_properties:,
5
- lights_type: 'NECB_Default',
6
- lights_scale: 1.0)
4
+ space_type:,
5
+ space_type_properties:,
6
+ lights_type:,
7
+ lights_scale:)
8
+
9
+ ##### Remove leading or trailing whitespace in case users add them in inputs
10
+ if lights_scale.instance_of?(String)
11
+ lights_scale = lights_scale.strip
12
+ end
13
+
14
+ if lights_type.nil? || lights_type == 'none'
15
+ lights_type = 'NECB_Default'
16
+ end
17
+ if lights_scale.nil? || lights_scale == 'none' || lights_scale == 'NECB_Default'
18
+ lights_scale = 1.0
19
+ end
20
+
21
+ ##### Convert a string to a float
22
+ if lights_scale.instance_of?(String)
23
+ lights_scale = lights_scale.to_f
24
+ end
7
25
 
8
26
  lights_have_info = false
9
27
  lighting_per_area = space_type_properties['lighting_per_area'].to_f
@@ -8,6 +8,19 @@ class NECB2011 < Standard
8
8
  attr_accessor :space_type_map
9
9
  attr_accessor :space_multiplier_map
10
10
 
11
+ # This is a helper method to convert arguments that may support 'NECB_Default, and nils to convert to float'
12
+ def convert_arg_to_f(variable:,default:)
13
+ if variable.instance_of?(Numeric)
14
+ return variable
15
+ elsif variable.nil? or variable == 'NECB_Default'
16
+ return default
17
+ elsif variable.instance_of?(String)
18
+ variable = variable.strip
19
+ return variable.to_f
20
+ end
21
+ end
22
+
23
+
11
24
  def get_standards_table(table_name:)
12
25
  if @standards_data["tables"][table_name].nil?
13
26
  message = "Could not find table #{table_name} in database."
@@ -163,7 +176,7 @@ class NECB2011 < Standard
163
176
  end
164
177
 
165
178
 
166
- # This method is a wrapper to create the 16 archetypes easily.
179
+ # This method is a wrapper to create the 16 archetypes easily. # 37 args
167
180
  def model_create_prototype_model(template:,
168
181
  building_type:,
169
182
  epw_file:,
@@ -177,6 +190,7 @@ class NECB2011 < Standard
177
190
  ecm_system_name: 'NECB_Default',
178
191
  erv_package: 'NECB_Default',
179
192
  boiler_eff: nil,
193
+ unitary_cop: nil,
180
194
  furnace_eff: nil,
181
195
  shw_eff: nil,
182
196
  ext_wall_cond: nil,
@@ -193,11 +207,24 @@ class NECB2011 < Standard
193
207
  glass_door_solar_trans: nil,
194
208
  fixed_wind_solar_trans: nil,
195
209
  skylight_solar_trans: nil,
210
+ rotation_degrees: nil,
196
211
  fdwr_set: -1.0,
197
- srr_set: -1.0
198
-
212
+ srr_set: -1.0,
213
+ nv_type: nil,
214
+ nv_opening_fraction: nil,
215
+ nv_Tout_min: nil,
216
+ nv_Delta_Tin_Tout: nil,
217
+ scale_x: nil,
218
+ scale_y: nil,
219
+ scale_z: nil,
220
+ pv_ground_type: nil,
221
+ pv_ground_total_area_pv_panels_m2: nil,
222
+ pv_ground_tilt_angle: nil,
223
+ pv_ground_azimuth_angle: nil,
224
+ pv_ground_module_description: nil
199
225
  )
200
226
 
227
+
201
228
  model = load_building_type_from_library(building_type: building_type)
202
229
  return model_apply_standard(model: model,
203
230
  epw_file: epw_file,
@@ -210,6 +237,7 @@ class NECB2011 < Standard
210
237
  ecm_system_name: ecm_system_name,
211
238
  erv_package: erv_package,
212
239
  boiler_eff: boiler_eff,
240
+ unitary_cop: unitary_cop,
213
241
  furnace_eff: furnace_eff,
214
242
  shw_eff: shw_eff,
215
243
  ext_wall_cond: ext_wall_cond,
@@ -226,10 +254,23 @@ class NECB2011 < Standard
226
254
  glass_door_solar_trans: glass_door_solar_trans,
227
255
  fixed_wind_solar_trans: fixed_wind_solar_trans,
228
256
  skylight_solar_trans: skylight_solar_trans,
257
+ rotation_degrees: rotation_degrees,
229
258
  fdwr_set: fdwr_set,
230
- srr_set: srr_set
231
-
259
+ srr_set: srr_set,
260
+ nv_type: 'NECB_Default', # Two options: (1) nil/none/false/'NECB_Default', (2) true
261
+ nv_opening_fraction: nv_opening_fraction, #options: (1) nil/none/false (2) 'NECB_Default' (i.e. 0.1)
262
+ nv_Tout_min: nv_Tout_min, #options: (1) nil/none/false(2) 'NECB_Default' (i.e. 13.0 based on inputs from Michel Tardif re a real school in QC)
263
+ nv_Delta_Tin_Tout: nv_Delta_Tin_Tout, #options: (1) nil/none/false (2) 'NECB_Default' (i.e. 1.0 based on inputs from Michel Tardif re a real school in QC)
264
+ scale_x: scale_x,
265
+ scale_y: scale_y,
266
+ scale_z: scale_z,
267
+ pv_ground_type: 'NECB_Default', # Two options: (1) nil/none/false/'NECB_Default', (2) true
268
+ pv_ground_total_area_pv_panels_m2: pv_ground_total_area_pv_panels_m2, # Options: (1) nil/none/false, (2) 'NECB_Default' (i.e. building footprint), (3) area value (e.g. 50)
269
+ pv_ground_tilt_angle: pv_ground_tilt_angle, # Options: (1) nil/none/false, (2) 'NECB_Default' (i.e. latitude), (3) tilt angle value (e.g. 20)
270
+ pv_ground_azimuth_angle: pv_ground_azimuth_angle, # Options: (1) nil/none/false, (2) 'NECB_Default' (i.e. south), (3) azimuth angle value (e.g. 90)
271
+ pv_ground_module_description: pv_ground_module_description # Options: (1) nil/none/false, (2) 'NECB_Default' (i.e. Standard), (3) other options ('Standard', 'Premium', ThinFilm')
232
272
  )
273
+
233
274
  end
234
275
 
235
276
  def load_building_type_from_library(building_type:)
@@ -248,12 +289,13 @@ class NECB2011 < Standard
248
289
  primary_heating_fuel: 'DefaultFuel',
249
290
  dcv_type: 'NECB_Default',
250
291
  lights_type: 'NECB_Default',
251
- lights_scale: 1.0,
292
+ lights_scale: 'NECB_Default',
252
293
  daylighting_type: 'NECB_Default',
253
294
  ecm_system_name: 'NECB_Default',
254
295
  erv_package: 'NECB_Default',
255
296
  boiler_eff: nil,
256
297
  furnace_eff: nil,
298
+ unitary_cop: nil,
257
299
  shw_eff: nil,
258
300
  ext_wall_cond: nil,
259
301
  ext_floor_cond: nil,
@@ -269,22 +311,49 @@ class NECB2011 < Standard
269
311
  glass_door_solar_trans: nil,
270
312
  fixed_wind_solar_trans: nil,
271
313
  skylight_solar_trans: nil,
272
- fdwr_set: -1,
273
- srr_set: -1,
314
+ fdwr_set: nil,
315
+ srr_set: nil,
274
316
  rotation_degrees: nil,
275
317
  scale_x: nil,
276
318
  scale_y: nil,
277
- scale_z: nil
319
+ scale_z: nil,
320
+ nv_type: nil,
321
+ nv_opening_fraction: nil,
322
+ nv_Tout_min: nil,
323
+ nv_Delta_Tin_Tout: nil,
324
+ pv_ground_type: nil,
325
+ pv_ground_total_area_pv_panels_m2: nil ,
326
+ pv_ground_tilt_angle: nil,
327
+ pv_ground_azimuth_angle: nil,
328
+ pv_ground_module_description: nil
278
329
  )
279
-
280
- BTAP::Geometry::rotate_building(model: model,degrees: rotation_degrees) unless rotation_degrees.nil?
281
- unless scale_x.nil? && scale_y.nil? && scale_z.nil?
282
- scale_x = 1 if scale_x.nil?
283
- scale_y = 1 if scale_y.nil?
284
- scale_z = 1 if scale_y.nil?
285
- BTAP::Geometry::scale_model(model, scale_x, scale_y, scale_z)
330
+ #clean model..
331
+ model = remove_all_HVAC(model)
332
+ model.getThermalZones.sort.each {|zone| zone.setUseIdealAirLoads(true)}
333
+ model.getZoneHVACPackagedTerminalAirConditioners.each(&:remove)
334
+ model.getCoilCoolingDXSingleSpeeds.each(&:remove)
335
+ model.getZoneHVACBaseboardConvectiveWaters.each(&:remove)
336
+ model.getAirLoopHVACZoneMixers.each(&:remove)
337
+ model.getAirLoopHVACZoneSplitters.each(&:remove)
338
+ model.getAirTerminalSingleDuctConstantVolumeNoReheats.each(&:remove)
339
+ model.getWaterUseEquipmentDefinitions.each(&:remove)
340
+ model.getWaterUseEquipments.each(&:remove)
341
+ model.getWaterUseConnectionss.each(&:remove)
342
+
343
+ rotation_degrees = convert_arg_to_f(variable: rotation_degrees,default: 0.0)
344
+ BTAP::Geometry::rotate_building(model: model,degrees: rotation_degrees) unless rotation_degrees == 0.0
345
+ scale_x = convert_arg_to_f(variable: scale_x,default: 1.0)
346
+ scale_y = convert_arg_to_f(variable: scale_y,default: 1.0)
347
+ scale_z = convert_arg_to_f(variable: scale_z,default: 1.0)
348
+ if scale_x != 1.0 || scale_y != 1.0 || scale_z != 1.0
349
+ BTAP::Geometry::scale_model(model, scale_x, scale_x, scale_x)
286
350
  end
287
351
 
352
+
353
+ fdwr_set = convert_arg_to_f(variable: fdwr_set,default: -1)
354
+ srr_set = convert_arg_to_f(variable: srr_set,default: -1)
355
+
356
+
288
357
  apply_weather_data(model: model, epw_file: epw_file)
289
358
  apply_loads(model: model, lights_type: lights_type, lights_scale: lights_scale)
290
359
  apply_envelope(model: model,
@@ -316,10 +385,21 @@ class NECB2011 < Standard
316
385
  ecm_system_name: ecm_system_name,
317
386
  erv_package: erv_package,
318
387
  boiler_eff: boiler_eff,
388
+ unitary_cop: unitary_cop,
319
389
  furnace_eff: furnace_eff,
320
390
  shw_eff: shw_eff,
321
- daylighting_type: daylighting_type
391
+ daylighting_type: daylighting_type,
392
+ nv_type: nv_type,
393
+ nv_opening_fraction: nv_opening_fraction,
394
+ nv_Tout_min: nv_Tout_min,
395
+ nv_Delta_Tin_Tout: nv_Delta_Tin_Tout,
396
+ pv_ground_type: pv_ground_type,
397
+ pv_ground_total_area_pv_panels_m2: pv_ground_total_area_pv_panels_m2,
398
+ pv_ground_tilt_angle: pv_ground_tilt_angle,
399
+ pv_ground_azimuth_angle: pv_ground_azimuth_angle,
400
+ pv_ground_module_description: pv_ground_module_description
322
401
  )
402
+
323
403
  return model
324
404
  end
325
405
 
@@ -332,8 +412,20 @@ class NECB2011 < Standard
332
412
  erv_package: 'NECB_Default',
333
413
  boiler_eff: nil,
334
414
  furnace_eff: nil,
415
+ unitary_cop: nil,
335
416
  shw_eff: nil,
336
- daylighting_type: 'NECB_Default')
417
+ daylighting_type: 'NECB_Default',
418
+ nv_type: nil,
419
+ nv_opening_fraction: nil,
420
+ nv_Tout_min: nil,
421
+ nv_Delta_Tin_Tout:nil,
422
+ pv_ground_type:,
423
+ pv_ground_total_area_pv_panels_m2:,
424
+ pv_ground_tilt_angle:,
425
+ pv_ground_azimuth_angle:,
426
+ pv_ground_module_description:
427
+ )
428
+
337
429
  # Create ECM object.
338
430
  ecm = ECMS.new
339
431
 
@@ -343,7 +435,7 @@ class NECB2011 < Standard
343
435
  apply_systems(model: model, primary_heating_fuel: primary_heating_fuel, sizing_run_dir: sizing_run_dir)
344
436
 
345
437
  # Apply new ECM system. Overwrite standard as required.
346
- ecm.apply_system_ecm(model: model, ecm_system_name: ecm_system_name, template_standard: self)
438
+ ecm.apply_system_ecm(model: model, ecm_system_name: ecm_system_name, template_standard: self, primary_heating_fuel: primary_heating_fuel)
347
439
 
348
440
  # Apply ERV equipment as required.
349
441
  ecm.apply_erv_ecm(model: model, erv_package: erv_package)
@@ -352,7 +444,7 @@ class NECB2011 < Standard
352
444
  # -------- Performace, Efficiencies, Controls and Sensors ------------
353
445
  #
354
446
  # Set code standard equipment charecteristics.
355
- apply_standard_efficiencies(model: model, sizing_run_dir: sizing_run_dir)
447
+ sql_db_vars_map = apply_standard_efficiencies(model: model, sizing_run_dir: sizing_run_dir)
356
448
  # Apply System
357
449
  ecm.apply_system_efficiencies_ecm(model: model, ecm_system_name: ecm_system_name)
358
450
 
@@ -364,6 +456,8 @@ class NECB2011 < Standard
364
456
  ecm.modify_boiler_efficiency(model: model, boiler_eff: boiler_eff)
365
457
  # Apply Furnace Efficiency
366
458
  ecm.modify_furnace_efficiency(model: model, furnace_eff: furnace_eff)
459
+ # Apply Unitary efficiency
460
+ ecm.modify_unitary_cop(model: model,unitary_cop: unitary_cop,sql_db_vars_map: sql_db_vars_map)
367
461
  # Apply SHW Efficiency
368
462
  ecm.modify_shw_efficiency(model: model, shw_eff: shw_eff)
369
463
  # Apply daylight controls.
@@ -373,10 +467,29 @@ class NECB2011 < Standard
373
467
  # -------Pump sizing required by some vintages----------------
374
468
  # Apply Pump power as required.
375
469
  apply_loop_pump_power(model: model, sizing_run_dir: sizing_run_dir)
470
+
471
+ # -------Natural ventilation----------------
472
+ # Apply natural ventilation using simplified method.
473
+ ecm.apply_nv(model: model,
474
+ nv_type: nv_type,
475
+ nv_opening_fraction: nv_opening_fraction,
476
+ nv_Tout_min: nv_Tout_min,
477
+ nv_Delta_Tin_Tout: nv_Delta_Tin_Tout)
478
+
479
+ # -------Ground-mounted PV panels---------------- #Sara
480
+ # Apply ground-mounted PV panels as required.
481
+ ecm.apply_pv_ground(model: model,
482
+ pv_ground_type: pv_ground_type,
483
+ pv_ground_total_area_pv_panels_m2: pv_ground_total_area_pv_panels_m2,
484
+ pv_ground_tilt_angle: pv_ground_tilt_angle,
485
+ pv_ground_azimuth_angle: pv_ground_azimuth_angle,
486
+ pv_ground_module_description: pv_ground_module_description)
487
+
376
488
  end
377
489
 
378
490
 
379
491
  def apply_loads(model:, lights_type: 'NECB_Default', lights_scale: 1.0, validate: true)
492
+ lights_scale = convert_arg_to_f(variable: lights_scale,default: 1.0)
380
493
  if validate
381
494
  raise('validation of model failed.') unless validate_initial_model(model)
382
495
  raise('validation of spacetypes failed.') unless validate_and_upate_space_types(model)
@@ -448,6 +561,10 @@ class NECB2011 < Standard
448
561
  # # <-3.1: Remove all the windows/skylights
449
562
  # # > 1: Do nothing
450
563
  def apply_fdwr_srr_daylighting(model:, fdwr_set: -1.0, srr_set: -1.0)
564
+ fdwr_set = -1.0 if fdwr_set == 'NECB_default' or fdwr_set.nil?
565
+ srr_set = -1.0 if srr_set == 'NECB_default' or srr_set.nil?
566
+ fdwr_set = fdwr_set.to_f
567
+ srr_set = srr_set.to_f
451
568
  apply_standard_window_to_wall_ratio(model: model, fdwr_set: fdwr_set)
452
569
  apply_standard_skylight_to_roof_ratio(model: model, srr_set: srr_set)
453
570
  # model_add_daylighting_controls(model) # to be removed after refactor.
@@ -462,8 +579,57 @@ class NECB2011 < Standard
462
579
  # Apply the prototype HVAC assumptions
463
580
  model_apply_prototype_hvac_assumptions(model, nil, climate_zone)
464
581
  # Apply the HVAC efficiency standard
465
- model_apply_hvac_efficiency_standard(model, climate_zone)
582
+ sql_db_vars_map = {}
583
+ model_apply_hvac_efficiency_standard(model, climate_zone, sql_db_vars_map: sql_db_vars_map)
466
584
  model_enable_demand_controlled_ventilation(model, dcv_type)
585
+ return sql_db_vars_map
586
+ end
587
+
588
+ # Shut off the system during unoccupied periods.
589
+ # During these times, systems will cycle on briefly
590
+ # if temperature drifts below setpoint. For systems
591
+ # with fan-powered terminals, the whole system
592
+ # (not just the terminal fans) will cycle on.
593
+ # Terminal-only night cycling is not used because the terminals cannot
594
+ # provide cooling, so terminal-only night cycling leads to excessive
595
+ # unmet cooling hours during unoccupied periods.
596
+ # If the system already has a schedule other than
597
+ # Always-On, no change will be made. If the system has
598
+ # an Always-On schedule assigned, a new schedule will be created.
599
+ # In this case, occupied is defined as the total percent
600
+ # occupancy for the loop for all zones served.
601
+ #
602
+ # @param min_occ_pct [Double] the fractional value below which
603
+ # the system will be considered unoccupied.
604
+ # @return [Bool] true if successful, false if not
605
+ def air_loop_hvac_enable_unoccupied_fan_shutoff(air_loop_hvac, min_occ_pct = 0.05)
606
+ # Set the system to night cycle
607
+ air_loop_hvac.setNightCycleControlType('CycleOnAny')
608
+
609
+ # Check if already using a schedule other than always on
610
+ avail_sch = air_loop_hvac.availabilitySchedule
611
+ unless avail_sch == air_loop_hvac.model.alwaysOnDiscreteSchedule
612
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Availability schedule is already set to #{avail_sch.name}. Will assume this includes unoccupied shut down; no changes will be made.")
613
+ return true
614
+ end
615
+
616
+ # Get the airloop occupancy schedule
617
+ loop_occ_sch = air_loop_hvac_get_occupancy_schedule(air_loop_hvac, occupied_percentage_threshold: min_occ_pct)
618
+ flh = schedule_ruleset_annual_equivalent_full_load_hrs(loop_occ_sch)
619
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Annual occupied hours = #{flh.round} hr/yr, assuming a #{min_occ_pct} occupancy threshold. This schedule will be used as the HVAC operation schedule.")
620
+
621
+ # Set HVAC availability schedule to follow occupancy
622
+ air_loop_hvac.setAvailabilitySchedule(loop_occ_sch)
623
+ air_loop_hvac.supplyComponents('OS:AirLoopHVAC:UnitaryHeatPump:AirToAir:MultiSpeed'.to_IddObjectType).each do |comp|
624
+ comp.to_AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.get.setAvailabilitySchedule(loop_occ_sch)
625
+ end
626
+
627
+ return true
628
+ end
629
+
630
+ # do not apply zone hvac ventilation control
631
+ def zone_hvac_component_occupancy_ventilation_control(zone_hvac_component)
632
+ return false
467
633
  end
468
634
 
469
635
  def apply_loop_pump_power(model:, sizing_run_dir:)