openstudio-standards 0.2.10 → 0.2.11.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (252) hide show
  1. checksums.yaml +5 -5
  2. data/data/geometry/ASHRAE90120042007LargeHotel.osm +101 -0
  3. data/data/geometry/ASHRAE90120042007RetailStandalone.osm +220 -0
  4. data/data/geometry/ASHRAE9012010LargeHotel.osm +101 -0
  5. data/data/geometry/ASHRAE9012010RetailStandalone.osm +218 -32
  6. data/data/geometry/ASHRAE9012013FullServiceRestaurant.osm +17 -0
  7. data/data/geometry/ASHRAE9012013Hospital.osm +288 -0
  8. data/data/geometry/ASHRAE9012013LargeHotel.osm +113 -12
  9. data/data/geometry/ASHRAE9012013LargeOffice.osm +205 -1
  10. data/data/geometry/ASHRAE9012013MediumOffice.osm +103 -1
  11. data/data/geometry/ASHRAE9012013Outpatient.osm +390 -102
  12. data/data/geometry/ASHRAE9012013PrimarySchool.osm +424 -0
  13. data/data/geometry/ASHRAE9012013QuickServiceRestaurant.osm +16 -0
  14. data/data/geometry/ASHRAE9012013RetailStandalone.osm +220 -0
  15. data/data/geometry/ASHRAE9012013SecondarySchool.osm +543 -0
  16. data/data/geometry/ASHRAE9012013SmallHotel.osm +50 -0
  17. data/data/geometry/ASHRAE9012013SmallOffice.osm +33 -0
  18. data/data/geometry/ASHRAE9012013Warehouse.osm +475 -238
  19. data/data/geometry/ASHRAEFullServiceRestaurant.osm +16 -0
  20. data/data/geometry/ASHRAEHospital.osm +288 -0
  21. data/data/geometry/ASHRAELargeOffice.osm +205 -1
  22. data/data/geometry/ASHRAELargeOfficeDetailed.osm +32 -32
  23. data/data/geometry/ASHRAEMediumOffice.osm +103 -1
  24. data/data/geometry/ASHRAEOutpatient.osm +390 -102
  25. data/data/geometry/ASHRAEPrimarySchool.osm +424 -0
  26. data/data/geometry/ASHRAEQuickServiceRestaurant.osm +16 -0
  27. data/data/geometry/ASHRAESecondarySchool.osm +1011 -162
  28. data/data/geometry/ASHRAESmallHotel.osm +50 -0
  29. data/data/geometry/ASHRAESmallOffice.osm +33 -0
  30. data/data/geometry/ASHRAEWarehouse.osm +476 -238
  31. data/data/standards/manage_OpenStudio_Standards.rb +1 -1
  32. data/data/standards/openstudio_standards_duplicates_log.csv +16 -0
  33. data/data/standards/test_performance_expected_dd_results.csv +1216 -1216
  34. data/data/weather/ARE_Abu.Dhabi.412170_IWEC.ddy +536 -0
  35. data/data/weather/ARE_Abu.Dhabi.412170_IWEC.epw +8768 -0
  36. data/data/weather/ARE_Abu.Dhabi.412170_IWEC.stat +544 -0
  37. data/data/weather/ARE_Dubai.Intl.AP.411940_IWEC2.ddy +533 -0
  38. data/data/weather/ARE_Dubai.Intl.AP.411940_IWEC2.epw +8768 -0
  39. data/data/weather/ARE_Dubai.Intl.AP.411940_IWEC2.stat +553 -0
  40. data/data/weather/VNM_Hanoi.488200_IWEC.ddy +533 -0
  41. data/data/weather/VNM_Hanoi.488200_IWEC.epw +8768 -0
  42. data/data/weather/VNM_Hanoi.488200_IWEC.stat +544 -0
  43. data/data/weather/VNM_Ho.Chi.Minh.City-Tan.Son.Nhat.AP.489000_IWEC2.ddy +533 -0
  44. data/data/weather/VNM_Ho.Chi.Minh.City-Tan.Son.Nhat.AP.489000_IWEC2.epw +8768 -0
  45. data/data/weather/VNM_Ho.Chi.Minh.City-Tan.Son.Nhat.AP.489000_IWEC2.stat +546 -0
  46. data/lib/openstudio-standards.rb +27 -0
  47. data/lib/openstudio-standards/btap/btap.model.rb +4 -4
  48. data/lib/openstudio-standards/btap/btap_result.rb +8 -8
  49. data/lib/openstudio-standards/btap/economics.rb +11 -11
  50. data/lib/openstudio-standards/btap/envelope.rb +5 -5
  51. data/lib/openstudio-standards/btap/hvac.rb +55 -11
  52. data/lib/openstudio-standards/btap/measures.rb +7 -7
  53. data/lib/openstudio-standards/btap/spaceloads.rb +4 -4
  54. data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVAC.rb +105 -1
  55. data/lib/openstudio-standards/hvac_sizing/Siz.ControllerOutdoorAir.rb +2 -2
  56. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +0 -8
  57. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +0 -8
  58. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +0 -8
  59. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +0 -8
  60. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +6 -1
  61. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.HeatExchangerAirToAirSensibleAndLatent.rb +9 -0
  62. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +3 -1
  63. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +22 -0
  64. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanConstantVolume.rb +32 -0
  65. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanOnOff.rb +33 -0
  66. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanVariableVolume.rb +32 -0
  67. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerAirToAirSensibleAndLatent.rb +9 -0
  68. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.elevators.rb +25 -0
  69. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +35 -0
  70. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.hvac_systems.rb +11 -0
  71. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +17 -3
  72. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +9 -0
  73. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +9 -0
  74. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +22 -3
  75. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +9 -0
  76. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +9 -0
  77. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +107 -5
  78. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +9 -0
  79. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +3 -0
  80. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +9 -0
  81. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +0 -8
  82. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +2 -2
  83. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +2 -4
  84. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +15 -4
  85. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +2 -2
  86. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +45 -5
  87. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +1 -1
  88. data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +21 -2
  89. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +251 -364
  90. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +4 -0
  91. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +4 -5
  92. data/lib/openstudio-standards/refs/references.rb +4 -0
  93. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +283 -97
  94. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +2 -2
  95. data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +1 -1
  96. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +1 -1
  97. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +1 -1
  98. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +5 -5
  99. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +3 -1
  100. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +1 -1
  101. data/lib/openstudio-standards/standards/Standards.Construction.rb +53 -45
  102. data/lib/openstudio-standards/standards/Standards.Fan.rb +10 -2
  103. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +4 -4
  104. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +1 -1
  105. data/lib/openstudio-standards/standards/Standards.Model.rb +39 -18
  106. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +8 -8
  107. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +12 -12
  108. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +1 -1
  109. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +2 -2
  110. data/lib/openstudio-standards/standards/Standards.Space.rb +190 -181
  111. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +36 -59
  112. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +3 -3
  113. data/lib/openstudio-standards/standards/Standards.Surface.rb +1 -1
  114. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +16 -12
  115. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +1 -1
  116. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +16 -5
  117. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +1 -1
  118. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/ashrae_90_1.schedules.json +159 -8
  119. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.spc_typ.json +1354 -1075
  120. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +557 -17
  121. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +28 -28
  122. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ground_temperatures.json +36 -36
  123. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +233 -6
  124. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/ashrae_90_1.schedules.json +159 -8
  125. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +1356 -1077
  126. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +480 -0
  127. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +28 -28
  128. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ground_temperatures.json +36 -36
  129. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +241 -14
  130. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +0 -8
  131. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +12 -7
  132. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/ashrae_90_1.schedules.json +159 -8
  133. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +1367 -1087
  134. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +480 -0
  135. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ground_temperatures.json +36 -36
  136. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +233 -5
  137. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +20 -27
  138. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +8 -3
  139. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/ashrae_90_1.schedules.json +159 -8
  140. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +1432 -1138
  141. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +480 -0
  142. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ground_temperatures.json +36 -36
  143. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +241 -5
  144. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.climate_zone_sets.json +37 -0
  145. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.climate_zones.json +39 -15
  146. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +489 -7
  147. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +250 -0
  148. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.fans.json +12 -0
  149. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.materials.json +1920 -0
  150. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +5265 -9
  151. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/ashrae_90_1.schedules.json +159 -8
  152. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +2441 -1925
  153. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.construction_properties.json +16658 -2578
  154. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +212 -8
  155. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +11 -1
  156. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/ashrae_90_1.schedules.json +159 -8
  157. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +2403 -1889
  158. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.construction_properties.json +16664 -2584
  159. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +209 -7
  160. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +11 -1
  161. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.construction_properties.json +4113 -513
  162. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.construction_sets.json +40 -40
  163. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.elevators.json +1 -1
  164. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.ground_temperatures.json +650 -0
  165. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.heat_pumps.json +90 -2
  166. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.heat_pumps_heating.json +25 -5
  167. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +1909 -32
  168. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.water_heaters.json +8 -8
  169. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +147 -155
  170. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  171. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.HeatExchangerSensLat.rb +29 -10
  172. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +4 -4
  173. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +45 -73
  174. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.ZoneHVACComponent.rb +4 -72
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.boilers.json +20 -0
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.chillers.json +400 -0
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.construction_properties.json +4444 -0
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.construction_sets.json +391 -0
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.economizers.json +536 -0
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.elevators.json +36 -0
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ext_ltg.json +169 -0
  182. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ground_temperatures.json +650 -0
  183. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.heat_pumps.json +290 -0
  184. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.heat_pumps_heating.json +164 -0
  185. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.heat_rejection.json +40 -0
  186. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.motors.json +274 -0
  187. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.prototype_inputs.json +704 -0
  188. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.refrigeration_compressors.json +22 -0
  189. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +6424 -0
  190. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.unitary_acs.json +142 -0
  191. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.water_heaters.json +72 -0
  192. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.water_source_heat_pumps.json +31 -0
  193. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.water_source_heat_pumps_heating.json +13 -0
  194. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +829 -0
  195. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +24 -0
  196. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTower.rb +19 -0
  197. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerSingleSpeed.rb +5 -0
  198. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerTwoSpeed.rb +5 -0
  199. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +16 -0
  200. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanVariableVolume.rb +37 -0
  201. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +34 -0
  202. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +80 -0
  203. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +68 -0
  204. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +146 -0
  205. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.ThermalZone.rb +23 -0
  206. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.ZoneHVACComponent.rb +8 -0
  207. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.rb +16 -0
  208. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.heat_pumps_heating.json +5 -5
  209. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.economizers.json +18 -0
  210. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.heat_pumps_heating.json +5 -5
  211. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.heat_pumps_heating.json +5 -5
  212. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.heat_pumps_heating.json +5 -5
  213. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.heat_pumps_heating.json +5 -5
  214. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.heat_pumps_heating.json +5 -5
  215. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.heat_pumps_heating.json +5 -5
  216. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.heat_pumps_heating.json +1 -1
  217. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.heat_pumps_heating.json +5 -5
  218. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.heat_pumps_heating.json +5 -5
  219. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.heat_pumps_heating.json +5 -5
  220. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.heat_pumps_heating.json +5 -5
  221. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.heat_pumps_heating.json +5 -5
  222. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.heat_pumps_heating.json +5 -5
  223. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.heat_pumps_heating.json +5 -5
  224. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.heat_pumps_heating.json +5 -5
  225. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.heat_pumps_heating.json +5 -5
  226. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.heat_pumps_heating.json +5 -5
  227. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.heat_pumps_heating.json +5 -5
  228. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.heat_pumps_heating.json +5 -5
  229. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.heat_pumps_heating.json +5 -5
  230. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +5 -1
  231. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +5 -1
  232. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +5 -2
  233. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +8 -2
  234. data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +12 -12
  235. data/lib/openstudio-standards/version.rb +1 -1
  236. data/lib/openstudio-standards/weather/Weather.Model.rb +4 -0
  237. metadata +102 -18
  238. data/data/standards/OpenStudio_Standards-ashrae_90_1(space_types).xlsx +0 -0
  239. data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
  240. data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
  241. data/data/standards/OpenStudio_Standards-cbes(space_types).xlsx +0 -0
  242. data/data/standards/OpenStudio_Standards-cbes.xlsx +0 -0
  243. data/data/standards/OpenStudio_Standards-deer(space_types).xlsx +0 -0
  244. data/data/standards/OpenStudio_Standards-deer-ALL-comstock(space_types).xlsx +0 -0
  245. data/data/standards/OpenStudio_Standards-deer.xlsx +0 -0
  246. data/data/standards/OpenStudio_Standards_LA100.xlsx +0 -0
  247. data/data/standards/junk/legacy_dd_results - Copy.csv +0 -960
  248. data/data/standards/junk/legacy_dd_results.csv +0 -960
  249. data/data/standards/junk/legacy_dd_results_new - Copy.csv +0 -960
  250. data/data/standards/junk/legacy_dd_results_new.csv +0 -960
  251. data/data/standards/junk/legacy_dd_results_original.csv +0 -960
  252. data/lib/openstudio-standards/standards/necb/NECB2011/newway.json +0 -8102
@@ -153,4 +153,13 @@ module MediumOffice
153
153
 
154
154
  return true
155
155
  end
156
+
157
+ def air_terminal_single_duct_vav_reheat_apply_initial_prototype_damper_position(air_terminal_single_duct_vav_reheat, zone_oa_per_area)
158
+ min_damper_position = template == '90.1-2010' || template == '90.1-2013' ? 0.2 : 0.3
159
+
160
+ # Set the minimum flow fraction
161
+ air_terminal_single_duct_vav_reheat.setConstantMinimumAirFlowFraction(min_damper_position)
162
+
163
+ return true
164
+ end
156
165
  end
@@ -132,4 +132,13 @@ module MediumOfficeDetailed
132
132
 
133
133
  return true
134
134
  end
135
+
136
+ def air_terminal_single_duct_vav_reheat_apply_initial_prototype_damper_position(air_terminal_single_duct_vav_reheat, zone_oa_per_area)
137
+ min_damper_position = template == '90.1-2010' || template == '90.1-2013' ? 0.2 : 0.3
138
+
139
+ # Set the minimum flow fraction
140
+ air_terminal_single_duct_vav_reheat.setConstantMinimumAirFlowFraction(min_damper_position)
141
+
142
+ return true
143
+ end
135
144
  end
@@ -249,8 +249,33 @@ module Outpatient
249
249
  end
250
250
  end
251
251
 
252
- # For operating room 1&2 in 2010 and 2013, VAV minimum air flow is set by schedule
253
252
  def model_adjust_vav_minimum_damper(model)
253
+ # Minimum damper position for Outpatient prototype
254
+ # Based on AIA 2001 ventilation requirements
255
+ # See Section 5.2.2.16 in Thornton et al. 2010
256
+ # https://www.energycodes.gov/sites/default/files/documents/BECP_Energy_Cost_Savings_STD2010_May2011_v00.pdf
257
+ init_mdp = {
258
+ 'FLOOR 1 ANESTHESIA' => 1.0,
259
+ 'FLOOR 1 CLEAN' => 1.0,
260
+ 'FLOOR 1 CLEAN WORK' => 1.0,
261
+ 'FLOOR 1 LOBBY TOILET' => 1.0,
262
+ 'FLOOR 1 MRI TOILET' => 1.0,
263
+ 'FLOOR 1 NURSE TOILET' => 1.0,
264
+ 'FLOOR 1 OPERATING ROOM 1' => 1.0,
265
+ 'FLOOR 1 OPERATING ROOM 2' => 1.0,
266
+ 'FLOOR 1 OPERATING ROOM 3' => 1.0,
267
+ 'FLOOR 1 PACU' => 1.0,
268
+ 'FLOOR 1 PRE-OP ROOM 1' => 1.0,
269
+ 'FLOOR 1 PRE-OP ROOM 2' => 1.0,
270
+ 'FLOOR 1 PRE-OP TOILET' => 1.0,
271
+ 'FLOOR 1 PROCEDURE ROOM' => 1.0,
272
+ 'FLOOR 1 RECOVERY ROOM' => 1.0,
273
+ 'FLOOR 1 SOIL' => 1.0,
274
+ 'FLOOR 1 SOIL HOLD' => 1.0,
275
+ 'FLOOR 1 SOIL WORK' => 1.0,
276
+ 'FLOOR 1 STEP DOWN' => 1.0
277
+ }
278
+
254
279
  model.getThermalZones.each do |zone|
255
280
  air_terminal = zone.airLoopHVACTerminal
256
281
  if air_terminal.is_initialized
@@ -258,17 +283,24 @@ module Outpatient
258
283
  if air_terminal.to_AirTerminalSingleDuctVAVReheat.is_initialized
259
284
  air_terminal = air_terminal.to_AirTerminalSingleDuctVAVReheat.get
260
285
  vav_name = air_terminal.name.get
286
+ zone_oa_per_area = thermal_zone_outdoor_airflow_rate_per_area(zone)
287
+ case template
261
288
  # High OA zones
262
289
  # Determine whether or not to use the high minimum guess.
263
290
  # Cutoff was determined by correlating apparent minimum guesses
264
291
  # to OA rates in prototypes since not well documented in papers.
265
- zone_oa_per_area = thermal_zone_outdoor_airflow_rate_per_area(zone)
266
- case template
267
292
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
268
293
  air_terminal.setConstantMinimumAirFlowFraction(1.0) if vav_name.include?('Floor 1')
294
+ # Minimum damper position for Outpatient prototype
295
+ # Based on AIA 2001 ventilation requirements
296
+ # See Section 5.2.2.16 in Thornton et al. 2010
297
+ # https://www.energycodes.gov/sites/default/files/documents/BECP_Energy_Cost_Savings_STD2010_May2011_v00.pdf
269
298
  when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
270
- air_terminal.setConstantMinimumAirFlowFraction(1.0) if zone_oa_per_area > 0.001 # 0.001 m^3/s*m^2 = .196 cfm/ft2
271
- end
299
+ zone_name = zone.name.to_s.upcase.gsub(' ZN', '').strip
300
+ if init_mdp.key? zone_name
301
+ air_terminal.setConstantMinimumAirFlowFraction(init_mdp[zone_name])
302
+ end
303
+ end
272
304
  end
273
305
  end
274
306
  end
@@ -368,4 +400,74 @@ module Outpatient
368
400
 
369
401
  return true
370
402
  end
403
+
404
+ def air_terminal_single_duct_vav_reheat_apply_initial_prototype_damper_position(air_terminal_single_duct_vav_reheat, zone_oa_per_area)
405
+ # Minimum damper position
406
+ # Based on AIA 2001 ventilation requirements
407
+ # See Section 5.2.2.16 in Thornton et al. 2010
408
+ # https://www.energycodes.gov/sites/default/files/documents/BECP_Energy_Cost_Savings_STD2010_May2011_v00.pdf
409
+ if template == '90.1-2004' || template == '90.1-2007'
410
+ min_damper_position = 0.3
411
+ init_mdp = {
412
+ 'FLOOR 2 CONFERENCE TOILET' => 1.0,
413
+ 'FLOOR 2 EXAM 1' => 1.0,
414
+ 'FLOOR 2 EXAM 2' => 1.0,
415
+ 'FLOOR 2 EXAM 3' => 1.0,
416
+ 'FLOOR 2 EXAM 4' => 1.0,
417
+ 'FLOOR 2 EXAM 5' => 1.0,
418
+ 'FLOOR 2 EXAM 6' => 1.0,
419
+ 'FLOOR 2 EXAM 7' => 1.0,
420
+ 'FLOOR 2 EXAM 8' => 1.0,
421
+ 'FLOOR 2 EXAM 9' => 1.0,
422
+ 'FLOOR 2 RECEPTION TOILET' => 1.0,
423
+ 'FLOOR 2 WORK TOILET' => 1.0,
424
+ 'FLOOR 3 LOUNGE TOILET' => 1.0,
425
+ 'FLOOR 3 OFFICE TOILET' => 1.0,
426
+ 'FLOOR 3 PHYSICAL THERAPY 1' => 1.0,
427
+ 'FLOOR 3 PHYSICAL THERAPY 2' => 1.0,
428
+ 'FLOOR 3 PHYSICAL THERAPY TOILET' => 1.0,
429
+ 'FLOOR 3 STORAGE 1' => 1.0,
430
+ 'FLOOR 3 TREATMENT' => 1.0
431
+ }
432
+ elsif template == '90.1-2010' || template == '90.1-2013'
433
+ min_damper_position = 0.2
434
+ init_mdp = {
435
+ 'FLOOR 2 CONFERENCE TOILET' => 1.0,
436
+ 'FLOOR 2 EXAM 1' => 0.51,
437
+ 'FLOOR 2 EXAM 2' => 1.0,
438
+ 'FLOOR 2 EXAM 3' => 1.0,
439
+ 'FLOOR 2 EXAM 4' => 0.64,
440
+ 'FLOOR 2 EXAM 5' => 0.69,
441
+ 'FLOOR 2 EXAM 6' => 0.94,
442
+ 'FLOOR 2 EXAM 7' => 1.0,
443
+ 'FLOOR 2 EXAM 8' => 0.93,
444
+ 'FLOOR 2 EXAM 9' => 1.0,
445
+ 'FLOOR 2 RECEPTION TOILET' => 1.0,
446
+ 'FLOOR 2 WORK TOILET' => 1.0,
447
+ 'FLOOR 3 LOUNGE TOILET' => 1.0,
448
+ 'FLOOR 3 OFFICE TOILET' => 1.0,
449
+ 'FLOOR 3 PHYSICAL THERAPY 1' => 0.69,
450
+ 'FLOOR 3 PHYSICAL THERAPY 2' => 0.83,
451
+ 'FLOOR 3 PHYSICAL THERAPY TOILET' => 1.0,
452
+ 'FLOOR 3 STORAGE 1' => 1.0,
453
+ 'FLOOR 3 TREATMENT' => 0.81
454
+ }
455
+ end
456
+
457
+ if !init_mdp.nil?
458
+ airlp = air_terminal_single_duct_vav_reheat.airLoopHVAC.get
459
+ init_mdp.each do |zn_name, mdp|
460
+ if air_terminal_single_duct_vav_reheat.name.to_s.upcase.strip.include? zn_name.to_s.strip
461
+ min_damper_position = mdp
462
+ end
463
+ end
464
+ else
465
+ min_damper_position = 0.3
466
+ end
467
+
468
+ # Set the minimum flow fraction
469
+ air_terminal_single_duct_vav_reheat.setConstantMinimumAirFlowFraction(min_damper_position)
470
+
471
+ return true
472
+ end
371
473
  end
@@ -68,4 +68,13 @@ module PrimarySchool
68
68
 
69
69
  return true
70
70
  end
71
+
72
+ def air_terminal_single_duct_vav_reheat_apply_initial_prototype_damper_position(air_terminal_single_duct_vav_reheat, zone_oa_per_area)
73
+ min_damper_position = template == '90.1-2010' || template == '90.1-2013' ? 0.2 : 0.3
74
+
75
+ # Set the minimum flow fraction
76
+ air_terminal_single_duct_vav_reheat.setConstantMinimumAirFlowFraction(min_damper_position)
77
+
78
+ return true
79
+ end
71
80
  end
@@ -84,6 +84,9 @@ module RetailStandalone
84
84
  IF OAT_F > 45
85
85
  SET FrontEntry_Coil = 0
86
86
  SET FrontEntry_Fan = 0
87
+ ELSE
88
+ SET FrontEntry_Coil = 1
89
+ SET FrontEntry_Fan = 1
87
90
  ENDIF
88
91
  EMS
89
92
  frt_entry_prg.setBody(frt_entry_prg_body)
@@ -95,4 +95,13 @@ module SecondarySchool
95
95
 
96
96
  return true
97
97
  end
98
+
99
+ def air_terminal_single_duct_vav_reheat_apply_initial_prototype_damper_position(air_terminal_single_duct_vav_reheat, zone_oa_per_area)
100
+ min_damper_position = template == '90.1-2010' || template == '90.1-2013' ? 0.2 : 0.3
101
+
102
+ # Set the minimum flow fraction
103
+ air_terminal_single_duct_vav_reheat.setConstantMinimumAirFlowFraction(min_damper_position)
104
+
105
+ return true
106
+ end
98
107
  end
@@ -10,14 +10,6 @@ class Standard
10
10
  def air_terminal_single_duct_vav_reheat_apply_initial_prototype_damper_position(air_terminal_single_duct_vav_reheat, zone_oa_per_area)
11
11
  min_damper_position = 0.3
12
12
 
13
- # High OA zones
14
- # Determine whether or not to use the high minimum guess.
15
- # Cutoff was determined by correlating apparent minimum guesses
16
- # to OA rates in prototypes since not well documented in papers.
17
- if zone_oa_per_area > 0.001 # 0.001 m^3/s*m^2 = .196 cfm/ft2
18
- min_damper_position = 0.7
19
- end
20
-
21
13
  # Set the minimum flow fraction
22
14
  air_terminal_single_duct_vav_reheat.setConstantMinimumAirFlowFraction(min_damper_position)
23
15
 
@@ -9,7 +9,7 @@ class Standard
9
9
  # @param type [String] the type of two speed DX coil to reference the correct curve set
10
10
  def create_coil_cooling_dx_two_speed(model,
11
11
  air_loop_node: nil,
12
- name: "2spd DX Clg Coil",
12
+ name: '2spd DX Clg Coil',
13
13
  schedule: nil,
14
14
  type: nil)
15
15
 
@@ -28,7 +28,7 @@ class Standard
28
28
  elsif schedule.class == String
29
29
  coil_availability_schedule = model_add_schedule(model, schedule)
30
30
 
31
- if coil_availability_schedule.nil? && schedule == "alwaysOffDiscreteSchedule"
31
+ if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
32
32
  coil_availability_schedule = model.alwaysOffDiscreteSchedule
33
33
  elsif coil_availability_schedule.nil?
34
34
  coil_availability_schedule = model.alwaysOnDiscreteSchedule
@@ -85,10 +85,8 @@ class Standard
85
85
  def_eir_f_of_temp = create_curve_biquadratic(model, defrost_eir_coeffs, 'DefrostEIR', -100, 100, -100, 100, nil, nil)
86
86
  elsif type == 'Residential Minisplit HP'
87
87
  # Performance curves
88
- # These coefficients are in IP UNITS
89
- heat_cap_ft_coeffs_ip = [1.0029281211538501, -0.010386676170938, 0, 0.025961538461538501, 0, 0]
90
- heat_cap_ft_coeffs_si = convert_curve_biquadratic(heat_cap_ft_coeffs_ip)
91
88
  # These coefficients are in SI UNITS
89
+ heat_cap_ft_coeffs_si = [1.14715889038462, -0.010386676170938, 0, 0.00865384615384615, 0, 0]
92
90
  heat_eir_ft_coeffs_si = [0.9999941697687026, 0.004684593830254383, 5.901286675833333e-05, -0.0028624467783091973, 1.3041120194135802e-05, -0.00016172918478765433]
93
91
  heat_cap_fflow_coeffs = [1, 0, 0]
94
92
  heat_eir_fflow_coeffs = [1, 0, 0]
@@ -102,7 +100,7 @@ class Standard
102
100
  htg_part_load_fraction = create_curve_quadratic(model, heat_plf_fplr_coeffs, 'Heat-PLF-fPLR', 0, 1, 0.6, 1, is_dimensionless = true)
103
101
 
104
102
  # Heating defrost curve for reverse cycle
105
- def_eir_f_of_temp = create_curve_biquadratic(model, defrost_eir_coeffs, 'DefrostEIR', -100, 100, -100, 100, nil, nil)
103
+ def_eir_f_of_temp = create_curve_biquadratic(model, defrost_eir_coeffs, 'Defrost EIR', -100, 100, -100, 100, nil, nil)
106
104
  else # default curve set
107
105
  htg_cap_f_of_temp = OpenStudio::Model::CurveCubic.new(model)
108
106
  htg_cap_f_of_temp.setName("#{htg_coil.name} Htg Cap Func of Temp Curve")
@@ -1,6 +1,13 @@
1
1
  class Standard
2
2
  # @!group HeatExchangerAirToAirSensibleAndLatent
3
3
 
4
+ # Default fan efficiency assumption for the prm added fan power
5
+ def heat_exchanger_air_to_air_sensible_and_latent_prototype_default_fan_efficiency
6
+ default_fan_efficiency = 0.5
7
+ return default_fan_efficiency
8
+ end
9
+
10
+ # Sets the motor power to account for the extra fan energy from the increase in fan total static pressure
4
11
  def heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_nominal_electric_power(heat_exchanger_air_to_air_sensible_and_latent)
5
12
  # Get the nominal supply air flow rate
6
13
  supply_air_flow_m3_per_s = nil
@@ -43,14 +50,18 @@ class Standard
43
50
  # Convert the flow rate to cfm
44
51
  supply_air_flow_cfm = OpenStudio.convert(supply_air_flow_m3_per_s, 'm^3/s', 'cfm').get
45
52
 
46
- # Calculate the motor power for the rotatry wheel per:
53
+ # Calculate the motor power for the rotary wheel per:
47
54
  # Power (W) = (Nominal Supply Air Flow Rate (CFM) * 0.3386) + 49.5
48
55
  # power = (supply_air_flow_cfm * 0.3386) + 49.5
49
56
 
50
- # Calculate the motor power for the rotatry wheel per:
57
+ # Calculate the motor power for the rotary wheel per:
51
58
  # Power (W) = (Minimum Outdoor Air Flow Rate (m^3/s) * 212.5 / 0.5) + (Minimum Outdoor Air Flow Rate (m^3/s) * 162.5 / 0.5) + 50
52
- power = (supply_air_flow_m3_per_s * 212.5 / 0.5) + (supply_air_flow_m3_per_s * 0.9 * 162.5 / 0.5) + 50
53
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.HeatExchangerAirToAirSensibleAndLatent', "For #{heat_exchanger_air_to_air_sensible_and_latent.name}, ERV power is calculated to be #{power.round} W, based on a min OA flow of #{supply_air_flow_cfm.round} cfm.")
59
+ # This power is largely the added fan power from the extra static pressure drop from the enthalpy wheel.
60
+ # It is included as motor power so it is only added when the enthalpy wheel is active, rather than a universal increase to the fan total static pressure.
61
+ # From p.96 of https://www.pnnl.gov/main/publications/external/technical_reports/PNNL-20405.pdf
62
+ default_fan_efficiency = heat_exchanger_air_to_air_sensible_and_latent_prototype_default_fan_efficiency
63
+ power = (supply_air_flow_m3_per_s * 212.5 / default_fan_efficiency) + (supply_air_flow_m3_per_s * 0.9 * 162.5 / default_fan_efficiency) + 50
64
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.HeatExchangerAirToAirSensibleAndLatent', "For #{heat_exchanger_air_to_air_sensible_and_latent.name}, ERV power is calculated to be #{power.round} W, based on a min OA flow of #{supply_air_flow_cfm.round} cfm. This power represents mostly the added fan energy from the extra static pressure, and is active only when the ERV is operating.")
54
65
 
55
66
  # Set the power for the HX
56
67
  heat_exchanger_air_to_air_sensible_and_latent.setNominalElectricPower(power)
@@ -225,7 +225,7 @@ class Standard
225
225
  name_prefix = 'Drive Through Windows'
226
226
 
227
227
  # create ext light def
228
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power} W/drive through window of lighting for #{multiplier} drie through windows.")
228
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power} W/drive through window of lighting for #{multiplier} drive through windows.")
229
229
  ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
230
230
  ext_lights_def.setName("#{name_prefix} Def (W/ft^2)")
231
231
  ext_lights_def.setDesignLevel(power)
@@ -259,7 +259,7 @@ class Standard
259
259
  name_prefix = 'Base Site Allowance'
260
260
 
261
261
  # create ext light def
262
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power} W of non landscape tradable exterior lighting. Wil follow occupancy setback reduction.")
262
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.prototype.exterior_lights', "Added #{power} W of non landscape tradable exterior lighting. Will follow occupancy setback reduction.")
263
263
  ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
264
264
  ext_lights_def.setName("#{name_prefix} Def (W)")
265
265
  ext_lights_def.setDesignLevel(power)
@@ -572,7 +572,7 @@ Standard.class_eval do
572
572
 
573
573
  # Loop through thermal zones and model_run(model) thermal_zone.add_exhaust
574
574
  # If kitchen_makeup is "None" then exhaust will be modeled in every kitchen zone without makeup air
575
- # If kitchen_makeup is "Adjacent" then exhaust will be modeled in every kitchen zone. Makeup air will be provided when there as an adjacent dining,cafe, or cafeteria zone of the same buidling type.
575
+ # If kitchen_makeup is "Adjacent" then exhaust will be modeled in every kitchen zone. Makeup air will be provided when there as an adjacent dining,cafe, or cafeteria zone of the same building type.
576
576
  # If kitchen_makeup is "Largest Zone" then exhaust will only be modeled in the largest kitchen zone, but the flow rate will be based on the kitchen area for all zones. Makeup air will be modeled in the largest dining,cafe, or cafeteria zone of the same building type.
577
577
  #
578
578
  # @param kitchen_makeup [String] Valid choices are
@@ -694,7 +694,7 @@ Standard.class_eval do
694
694
 
695
695
  end
696
696
 
697
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "Largest #{makeup_target} is #{largest_target_zone.name} which will provide exahust for #{target_effective_floor_area} m^2")
697
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "Largest #{makeup_target} is #{largest_target_zone.name} which will provide exhaust for #{target_effective_floor_area} m^2")
698
698
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "Largest #{makeup_source} is #{largest_source_zone.name} which will provide makeup air for #{makeup_target}")
699
699
 
700
700
  # add in extra arguments for makeup air
@@ -927,7 +927,7 @@ Standard.class_eval do
927
927
  nondimming_ext_lts.setControlOption('AstronomicalClock')
928
928
  end
929
929
 
930
- # Fuel Equipment
930
+ # Fuel Equipment being used to model external elevators
931
931
  unless prototype_input['exterior_fuel_equipment1_power'].nil?
932
932
  fuel_ext_power = prototype_input['exterior_fuel_equipment1_power']
933
933
  fuel_ext_sch_name = prototype_input['exterior_fuel_equipment1_schedule']
@@ -937,6 +937,7 @@ Standard.class_eval do
937
937
  fuel_ext_def.setDesignLevel(fuel_ext_power)
938
938
  fuel_ext_sch = model_add_schedule(model, fuel_ext_sch_name)
939
939
  fuel_ext_lts = OpenStudio::Model::ExteriorFuelEquipment.new(fuel_ext_def, fuel_ext_sch)
940
+ fuel_ext_lts.setFuelType('Electricity')
940
941
  fuel_ext_lts.setName(fuel_ext_name.to_s)
941
942
  end
942
943
 
@@ -949,6 +950,7 @@ Standard.class_eval do
949
950
  fuel_ext_def.setDesignLevel(fuel_ext_power)
950
951
  fuel_ext_sch = model_add_schedule(model, fuel_ext_sch_name)
951
952
  fuel_ext_lts = OpenStudio::Model::ExteriorFuelEquipment.new(fuel_ext_def, fuel_ext_sch)
953
+ fuel_ext_lts.setFuelType('Electricity')
952
954
  fuel_ext_lts.setName(fuel_ext_name.to_s)
953
955
  end
954
956
 
@@ -1780,7 +1782,45 @@ Standard.class_eval do
1780
1782
 
1781
1783
  # Check each airloop
1782
1784
  model.getAirLoopHVACs.sort.each do |air_loop|
1783
- if air_loop_hvac_economizer_required?(air_loop, climate_zone)
1785
+ economizer_required = false
1786
+
1787
+ if air_loop_hvac_humidifier_count(air_loop) > 0
1788
+ # If airloop includes it is assumed that exception c to 90.1-2004 Section 6.5.1 applies
1789
+ # This exception exist through 90.1-2013, see Section 6.5.1.3
1790
+ economizer_required = false
1791
+ elsif @instvarbuilding_type == 'LargeOffice' &&
1792
+ air_loop.name.to_s.downcase.include?('datacenter') &&
1793
+ air_loop.name.to_s.downcase.include?('basement') &&
1794
+ !(template == '90.1-2004' || template == '90.1-2007')
1795
+ # System serving the data center in the basement of the large
1796
+ # office is assumed to be always large enough to require an
1797
+ # economizer when economizer requirement is based on equipment
1798
+ # size.
1799
+ #
1800
+ # No economizer modeled for 90.1-2004 and 2007:
1801
+ # Specific economizer requirements for computer rooms were
1802
+ # introduced in 90.1-2010. Before that, although not explicitly
1803
+ # specified, economizer requirements were aimed at comfort
1804
+ # cooling, not computer room cooling (as per input from the MSC).
1805
+
1806
+ # Get the size threshold requirement
1807
+ search_criteria = {
1808
+ 'template' => template,
1809
+ 'climate_zone' => climate_zone,
1810
+ 'data_center' => true
1811
+ }
1812
+ econ_limits = model_find_object(standards_data['economizers'], search_criteria)
1813
+ minimum_capacity_btu_per_hr = econ_limits['capacity_limit']
1814
+ economizer_required = minimum_capacity_btu_per_hr.nil? ? false : true
1815
+ elsif @instvarbuilding_type == 'LargeOffice' && air_loop_hvac_include_wshp?(air_loop)
1816
+ # WSHP serving the IT closets are assumed to always be too
1817
+ # small to require an economizer
1818
+ economizer_required = false
1819
+ elsif air_loop_hvac_economizer_required?(air_loop, climate_zone)
1820
+ economizer_required = true
1821
+ end
1822
+
1823
+ if economizer_required
1784
1824
  # If an economizer is required, determine the economizer type
1785
1825
  # in the prototype buildings, which depends on climate zone.
1786
1826
  economizer_type = model_economizer_type(model, climate_zone)
@@ -1801,7 +1841,7 @@ Standard.class_eval do
1801
1841
  # Check that the economizer type set by the prototypes
1802
1842
  # is not prohibited by code. If it is, change to no economizer.
1803
1843
  unless air_loop_hvac_economizer_type_allowable?(air_loop, climate_zone)
1804
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.prototype.Model', "#{air_loop.name} is required to have an economizer, but the type chosen, #{economizer_type} is prohibited by code for , climate zone #{climate_zone}. Economizer type will be switched to No Economizer.")
1844
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.prototype.Model', "#{air_loop.name} is required to have an economizer, but the type chosen, #{economizer_type} is prohibited by code for climate zone #{climate_zone}. Economizer type will be switched to No Economizer.")
1805
1845
  oa_control.setEconomizerControlType('NoEconomizer')
1806
1846
  end
1807
1847
 
@@ -259,7 +259,7 @@ class Standard
259
259
  water_heater.setOffCycleLossCoefficienttoAmbientTemperature(6.0)
260
260
  water_heater.setOnCycleLossCoefficienttoAmbientTemperature(6.0)
261
261
  elsif water_heater_fuel == 'HeatPump'
262
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.Model.Model', 'Simple but crappy workaround to represent heat pump water heaters without incurring significant runtime penalty associated with using correct objects.')
262
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.Model.Model', 'Simple workaround to represent heat pump water heaters without incurring significant runtime penalty associated with using correct objects.')
263
263
  # Make a part-load efficiency modifier curve with a value above 1, which
264
264
  # is multiplied by the nominal efficiency of 100% to represent
265
265
  # the COP of a HPWH.
@@ -23,7 +23,11 @@ class Standard
23
23
  sizing_system.setPrecoolDesignHumidityRatio(0.008)
24
24
  sizing_system.setCentralCoolingDesignSupplyAirHumidityRatio(0.0085)
25
25
  sizing_system.setCentralHeatingDesignSupplyAirHumidityRatio(0.0080)
26
- sizing_system.setMinimumSystemAirFlowRatio(min_sys_airflow_ratio)
26
+ if air_loop_hvac.model.version < OpenStudio::VersionString.new('2.7.0')
27
+ sizing_system.setMinimumSystemAirFlowRatio(min_sys_airflow_ratio)
28
+ else
29
+ sizing_system.setCentralHeatingMaximumSystemAirFlowRatio(min_sys_airflow_ratio)
30
+ end
27
31
  sizing_system.setSizingOption(sizing_option)
28
32
  sizing_system.setAllOutdoorAirinCooling(false)
29
33
  sizing_system.setAllOutdoorAirinHeating(false)
@@ -33,4 +37,19 @@ class Standard
33
37
 
34
38
  return sizing_system
35
39
  end
36
- end
40
+
41
+ def model_system_outdoor_air_sizing_vrp_method(air_loop_hvac)
42
+ sizing_system = air_loop_hvac.sizingSystem
43
+ # sizing_system.setSystemOutdoorAirMethod("VentilationRateProcedure")
44
+ # Set the minimum zone ventilation efficiency to be 0.6
45
+ air_loop_hvac.thermalZones.sort.each do |zone|
46
+ sizing_zone = zone.sizingZone
47
+ # It is not yet possible to adjust the minimum zone ventilation efficiency
48
+ # @todo, update this section when OS allows to adjust minimum zone ventilation efficiency
49
+ # In EnergyPlus this is done through the DesignSpecification:ZoneAirDistribution object
50
+ # which is then assigned to a Sizing:Zone object
51
+ end
52
+
53
+ return true
54
+ end
55
+ end