openstudio-standards 0.2.16.rc2 → 0.2.17.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAECollege.osm +117 -117
  3. data/data/standards/manage_OpenStudio_Standards.rb +31 -4
  4. data/data/standards/test_performance_expected_dd_results.csv +287 -287
  5. data/lib/openstudio-standards/btap/geometry.rb +1 -1
  6. data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +354 -2
  7. data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +79 -0
  8. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +1 -1
  9. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +1 -1
  10. data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +3376 -63
  11. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +12 -0
  12. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +3 -4
  13. data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +1 -1
  14. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +168 -93
  15. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +2 -4
  16. data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +2 -1
  17. data/lib/openstudio-standards/refs/references.rb +3 -0
  18. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +279 -6
  19. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +50 -2
  20. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +4 -0
  21. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -1
  22. data/lib/openstudio-standards/standards/Standards.Construction.rb +185 -3
  23. data/lib/openstudio-standards/standards/Standards.Fan.rb +14 -6
  24. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +1 -0
  25. data/lib/openstudio-standards/standards/Standards.Model.rb +1752 -384
  26. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +130 -9
  27. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +50 -3
  28. data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +44 -0
  29. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +27 -0
  30. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +543 -0
  31. data/lib/openstudio-standards/standards/Standards.Space.rb +665 -15
  32. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +141 -4
  33. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +2 -1
  34. data/lib/openstudio-standards/standards/Standards.Surface.rb +117 -0
  35. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +197 -49
  36. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +41 -0
  37. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Model.rb +6 -8
  38. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/ashrae_90_1.schedules.json +45 -45
  39. 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 +7 -7
  40. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +19 -19
  41. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/ashrae_90_1.schedules.json +45 -45
  42. 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 +7 -7
  43. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +5 -5
  44. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/ashrae_90_1.schedules.json +45 -45
  45. 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 +9 -9
  46. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +3 -3
  47. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/ashrae_90_1.schedules.json +45 -45
  48. 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 +4 -4
  49. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +6 -6
  50. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/ashrae_90_1.schedules.json +45 -45
  51. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +5 -5
  52. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +6 -6
  53. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +5 -5
  54. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/ashrae_90_1.schedules.json +45 -45
  55. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +5 -5
  56. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +6 -6
  57. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +2 -2
  58. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.fans.json +12 -0
  59. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/ashrae_90_1.schedules.json +45 -45
  60. 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 +10 -10
  61. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/ashrae_90_1.schedules.json +45 -45
  62. 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 +10 -10
  63. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +1 -0
  64. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +792 -0
  65. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +10 -0
  66. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +31 -0
  67. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +91 -0
  68. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +84 -0
  69. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +145 -0
  70. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +106 -0
  71. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +71 -0
  72. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +194 -0
  73. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +120 -0
  74. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +110 -0
  75. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +5 -0
  76. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +73 -0
  77. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +5 -0
  78. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +5 -0
  79. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +24 -0
  80. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +5 -0
  81. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +55 -0
  82. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +3045 -0
  83. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +187 -0
  84. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +450 -0
  85. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +106 -0
  86. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +666 -0
  87. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +54 -0
  88. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +168 -0
  89. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +132 -0
  90. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +239 -0
  91. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +176 -0
  92. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +25 -0
  93. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.boilers.json +52 -0
  94. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.chillers.json +112 -0
  95. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.climate_zone_sets.json +210 -0
  96. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.construction_properties.json +10384 -0
  97. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.construction_sets.json +133 -0
  98. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.furnaces.json +43 -0
  99. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps.json +119 -0
  100. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps_heating.json +130 -0
  101. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_rejection.json +13 -0
  102. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.lpd_space_type.json +568 -0
  103. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +264 -0
  104. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_baseline_hvac.json +439 -0
  105. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_constructions.json +685 -0
  106. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_economizers.json +213 -0
  107. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_ext_ltg.json +32 -0
  108. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_heat_type.json +136 -0
  109. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_hvac_bldg_type.json +32 -0
  110. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_interior_lighting.json +1837 -0
  111. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_swh_bldg_type.json +184 -0
  112. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_wwr_bldg_type.json +84 -0
  113. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.unitary_acs.json +148 -0
  114. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.water_heaters.json +157 -0
  115. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.climate_zone_sets.json +210 -0
  116. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +18329 -0
  117. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +340 -0
  118. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.materials.json +49924 -0
  119. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_building_rotation_exception.md +44 -0
  120. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/check_pump_power_and_control.md +71 -0
  121. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/dcv.md +68 -0
  122. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/dcv_implementation.png +0 -0
  123. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/elevators.md +14 -0
  124. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/exhaust_air_energy_recovery.md +36 -0
  125. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/f_c_factors.md +19 -0
  126. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/fan_power_credits.md +15 -0
  127. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/preheat_coil.md +59 -0
  128. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/pump_power_control.md +46 -0
  129. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/return_air_type.md +31 -0
  130. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_baseline_wwr.md +191 -0
  131. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_hw_and_chw_supply_water_temp_reset_control.md +24 -0
  132. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_num_boilers_chillers_towers.md +49 -0
  133. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +80 -0
  134. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_space_lpd.md +73 -0
  135. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/unenclosed_and_unconditioned_spaces.md +11 -0
  136. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/unmet_load_hours.md +20 -0
  137. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/vav_parallel_piu_terminals_fan_control.md +23 -0
  138. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/vav_terminals_min_flow_setpoint.md +21 -0
  139. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac.csv +1 -0
  140. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac_doas.csv +1 -0
  141. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_building.csv +1 -0
  142. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_design_specification_outdoor_air.csv +1 -0
  143. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_electric_equipment.csv +1 -0
  144. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_exterior_lights.csv +1 -0
  145. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_gas_equipment.csv +1 -0
  146. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_lights.csv +1 -0
  147. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -0
  148. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_spacetype.csv +1 -0
  149. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_thermal_zone.csv +1 -0
  150. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_connections.csv +1 -0
  151. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_equipment.csv +1 -0
  152. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_equipment_definition.csv +1 -0
  153. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_zone_hvac.csv +1 -0
  154. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_zone_infiltration.csv +1 -0
  155. data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +12 -0
  156. data/lib/openstudio-standards/standards/deer/data/deer.fans.json +12 -0
  157. data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps.json +1 -1
  158. data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps_heating.json +1 -1
  159. data/lib/openstudio-standards/standards/necb/ECMS/data/unitary_acs.json +24 -11
  160. data/lib/openstudio-standards/standards/necb/ECMS/erv.rb +13 -15
  161. data/lib/openstudio-standards/standards/necb/NECB2011/data/province_map.json +17 -0
  162. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +1 -1
  163. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +1 -1
  164. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +2 -2
  165. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +6 -5
  166. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +3 -2
  167. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +2 -3
  168. data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +2 -2
  169. data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +33 -924
  170. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +15 -15
  171. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +135 -29
  172. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +16 -4
  173. data/lib/openstudio-standards/standards/necb/common/neb_end_use_prices.csv +40 -42
  174. data/lib/openstudio-standards/standards/necb/common/necb_reference_runs.csv +1 -1
  175. data/lib/openstudio-standards/standards/necb/common/space_type_upgrade_map.json +89 -89
  176. data/lib/openstudio-standards/utilities/array.rb +11 -0
  177. data/lib/openstudio-standards/utilities/logging.rb +48 -0
  178. data/lib/openstudio-standards/utilities/object_info.rb +20 -0
  179. data/lib/openstudio-standards/utilities/schedule_translator.rb +348 -0
  180. data/lib/openstudio-standards/utilities/sqlfile.rb +68 -0
  181. data/lib/openstudio-standards/version.rb +2 -2
  182. data/lib/openstudio-standards/weather/Weather.Model.rb +42 -55
  183. data/lib/openstudio-standards/weather/Weather.stat_file.rb +1 -1
  184. data/lib/openstudio-standards.rb +35 -1
  185. metadata +111 -6
  186. data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
  187. data/data/standards/OpenStudio_Standards-ashrae_90_1_28Jan2022.xlsx +0 -0
  188. data/data/standards/OpenStudio_Standards-ashrae_90_1_28_Jan2022_2.xlsx +0 -0
  189. data/data/standards/openstudio_standards_duplicates_log.csv +0 -143
@@ -0,0 +1,49 @@
1
+ Set number and types of boilers, chillers, and towers in baseline.
2
+
3
+ # ASHRAE 90.1-2019
4
+
5
+ G3.1.3.7 Type and Number of Chillers (Systems 7, 8, 11, 12, and 13)
6
+ Electric chillers shall be used in the baseline building design regardless of the cooling
7
+ energy source, e.g. direct-fired absorption or absorption from purchased steam. The
8
+ baseline building design’s chiller plant shall be modeled with chillers having the number
9
+ and type as indicated in Table G3.1.3.7 as a function of building peak cooling load.
10
+ Exception to G3.1.3.7
11
+ Systems using purchased chilled water shall be modeled in accordance with Section G3.1.1.3.
12
+
13
+ Table G3.1.3.7 Type and Number of Chillers
14
+
15
+ Building Peak Cooling Load Number and Type of Chillers
16
+ <=300 tons: 1 water-cooled screw chiller
17
+ \>300 tons, <600 tons: 2 water-cooled screw chillers sized equally
18
+ \>=600 tons: 2 water-cooled centrifugal chillers minimum with chillers added so that no chiller is larger than 800 tons, all sized equally
19
+
20
+ G3.1.3.2 Type and Number of Boilers (Systems 1, 5, 7, 11, and 12)
21
+ The boiler plant shall be natural draft, except as noted in Section G3.1.1.1. The baseline
22
+ building design boiler plant shall be modeled as having a single boiler if the baseline
23
+ building design plant serves a conditioned floor area of 15,000 ft2 or less, and as having
24
+ two equally sized boilers for plants serving more than 15,000 ft2. Boilers shall be
25
+ staged as required by the load.
26
+
27
+ G3.1.3.11 Heat Rejection (Systems 7, 8, 11, 12, and 13)
28
+ The heat-rejection device shall be an axial-fan open-circuit cooling tower with variablespeed
29
+ fan control and shall have an efficiency of 38.2 gpm/hp at the conditions specified
30
+ in Table 6.8.1-7.
31
+
32
+
33
+ # Key Ruby Methods
34
+
35
+ ## plant_loop_apply_prm_number_of_boilers(plant_loop)
36
+
37
+ Set boiler type and number of boilers based on floor area served by the boiler plant loop.
38
+ Set staging to sequential.
39
+
40
+ ## plant_loop_apply_prm_number_of_chillers(plant_loop, sizing_run_dir)
41
+
42
+ Set chiller type and number of chillers based on total cooling capacity
43
+ Set staging to sequential.
44
+
45
+ ## plant_loop_apply_prm_number_of_cooling_towers(plant_loop)
46
+
47
+ An alternate version of this method is located in ashrae_90_1_prm.PlantLoop.rb.
48
+ This version keeps a single cooling tower, but adds a headered pump bank with one pump per chiller.
49
+
@@ -0,0 +1,80 @@
1
+ Handle plug-load credits
2
+
3
+ # ASHRAE 90.1-2019
4
+ - G3.1 (12) Proposed: Receptacle and *process loads*, such as those for office and other equipment, shall be estimated based on the building area type or space type category and shall be assumed to be identical in the *proposed design* and *baseline building design*, except as specifically approved by the *rating authority* only when quantifying performance that exceeds the requirements of Standard 90.1 but not when the *Performance Rating Method* is used as an alternative path for minimum standard compliance in accordance with Section 4.2.1.1
5
+ - G3.1 (12) Proposed: When receptacle controls installed in *spaces* where not required by Section 8.4.2 are included in the *proposed building design*, the hourly receptacle shall be reduced as follows:
6
+
7
+ ![RPC= RC * 10%](https://latex.codecogs.com/svg.latex?RPC=&space;RC&space;*&space;10%)
8
+
9
+ where:
10
+ - *RPC* = receptacle power credit
11
+ - *EPS<sub>pro</sub>* = EPS<sub>bas</sub> x (1-RPC)
12
+ - *RC* = percentage of all controlled receptacles
13
+ - *EPS<sub>bas</sub>* = baseline equipment power hourly schedule (fraction)
14
+ - *EPS<sub>pro</sub>* = proposed equipment power hourly schedule (fraction)
15
+ - G3.1 (12) Baseline: Motors shall be modeled as having the *efficiency* ratings found in Table G3.9.1 Other systems covered by Section 10 and miscellaneous loads shall be modeled as identical to those in the *proposed design*, including schedules of operation and *control of the equipment*.
16
+
17
+ # Code Requirement Interpretation
18
+ For each space in the proposed building indicate which receptacle control strategies from the control list are included and the percentage of receptacles that are controlled.
19
+
20
+ When receptacle controls are installed in spaces not required by 90.1-2019 Section 8.4.2, credit for receptacle controls in the proposed design can be taken by decreasing the receptacle schedule in the proposed building design according to the following:
21
+
22
+ ![RPC= RC * 10%](https://latex.codecogs.com/svg.latex?RPC=&space;RC&space;*&space;10%)
23
+
24
+ # Implementation Methodology
25
+ - **Step 1:** Check the required room types in Section 8.4.2, if matched, then skip the plug-load credits.
26
+ The matching rule is based on closest space functions as described in Section 8.4.2. The Table below shows the mapping. It subjects to changes.
27
+
28
+ | Rooms | Space type category 1 | Space type category 2 |
29
+ |-----------------------------------------------------------|----------------------------------------|------------------------------------------------|
30
+ | Private Offices | office - enclosed <= 250 sf | |
31
+ | Conference Rooms | conference/meeting/multipurpose | |
32
+ | Room used primarily for printing and/or copying functions | copy/print | |
33
+ | Break rooms | lounge/breakroom - all other | lounge/breakroom - healthcare facility |
34
+ | Classrooms | classroom/lecture/training - all other | classroom/lecture/training - preschool to 12th |
35
+ | Individual workstation | office - open | |
36
+
37
+ - **Step 2:** Check *userdata_electric_equipment* to verify user data
38
+ - **Step 2.1:** Check *userdata_electric_equipment* to identify if the the electric equipment is a motor / refrigeration / elevator.
39
+ - **Step 2.1.1:** If motor, retrieve data and save in the electric equipment object.
40
+ - **Step 2.1.2:** If refrigeration or elevator, skip the processing.
41
+ - **Step 2.2:** Else if *fraction_of_controlled_receptacle* (RC) data is available. If yes, get the user data (RC) and calculate the RPC
42
+ - **Step 2.3:** Else: check *receptacle_power_savings* (RPC) data is available. If yes, get the user data (RPC) and apply the credit.
43
+ - **Step 3:** If apply credit, apply the credit at every hour of the existing electric equipment schedule with the equation:
44
+ - ![hr_{new} = {hr_{ex}}/{1.0-RPC}](https://latex.codecogs.com/svg.image?hr_{new}&space;=&space;{hr_{ex}}&space;/&space;(1.0-RPC))
45
+ - hr<sub>new</sub>: the adjusted hourly value
46
+ - hr<sub>ex</sub>: the original hourly value
47
+ - **Step 4:** Repeat the similar process for *userdata_gas_equipment* user data.
48
+
49
+ ## Key Ruby Methods
50
+ The above logic is implemented in the `space_type_apply_internal_loads` in the ashrae_90_1_prm.SpaceType class.
51
+ Sub-logics are implemented in the `update_power_equipment_credits` function, which is called by `space_type_apply_internal_loads`
52
+
53
+ ## Test Case Documentation
54
+ ### Test case 1:
55
+ - Prototype: Small Office
56
+ - User data folder: */userdata_pe_01*
57
+ - Summary:
58
+ This case will test whether *fraction_of_controlled_receptacles* is read correctly for an electric equipment (*Office WholeBuilding - Sm Office Elec Equip*).
59
+ Expected output: the baseline schedule is 5% higher than proposed schedule for the electric equipment: *Office WholeBuilding - Sm Office Elec Equip*.
60
+
61
+ ### Test case 2:
62
+ - Prototype: Small Office
63
+ - User data folder: */userdata_pe_02*
64
+ - Summary:
65
+ This case will test whether *receptacle_power_savings* is read correctly for an electric equipment (*Office WholeBuilding - Sm Office Elec Equip*).
66
+ Expected output: the baseline schedule is 15% higher than proposed schedule for the electric equipment: *Office WholeBuilding - Sm Office Elec Equip*.
67
+
68
+ ### Test case 3
69
+ - Prototype: Small Office
70
+ - User data folder: */userdata_pe_03*
71
+ - Summary:
72
+ This case will test whether *motor_horsepower*, *motor_efficiency* and *motor_is_exempt* are read correctly for an electric equipment (*Office WholeBuilding - Sm Office Elec Equip*).
73
+ Expected output: the electric equipment in the baseline shall have three additional properties *motor_horsepower = 10.0*, *motor_efficiency = 0.72* and *motor_is_exempt = No*
74
+
75
+
76
+ ### Test case 4
77
+ - Prototype: Small Office
78
+ - User data folder: */userdata_pe_04*
79
+ - Summary:
80
+ This case added space and space type to the user data. For equipment **Office WholeBuilding - Sm Office Elec Equip 4**, the receptacle credit was set to 0.05 however, it is then adjusted to 0.025 because one of the space type (conference/meeting/multipurpose) is on the exception list.
@@ -0,0 +1,73 @@
1
+ Set lighting power density for each space by standard space category.
2
+
3
+ # ASHRAE 90.1-2019
4
+ - G3.1 (6) Baseline: Interior lighting power in the baseline building design shall be determined using the values in Table G3.7
5
+ - G3.1 (6) Baseline: Lighting shall be modeled by having the automatic shutoff controls in buildings > 5000 ft2 (2500 m2) and occupancy sensors in employee lunch break rooms, conference/meeting rooms, and classrooms (not including shop classrooms, laboratory classrooms, and preschool through 12th-grade classrooms). These controls shall be reflected in the baseline building design lighting schedules. No additional automatic lighting controls, e.g., automatic controls for daylight utilization and occupancy sensors in space types not listed above, shall be modeled in the baseline building design.
6
+
7
+ # Code Requirement Interpretation
8
+ The requirement aim to determine the interior lighting power density according to the Table G3.7.
9
+ For spaces mixed multiple space types, weighted LPD is calculated and the occupancy sensor reduction is weighted by the lighting power density of the space.
10
+
11
+ # Implementation Methodology
12
+ The method of assigning interior lighting power density for a single-type space is straightforward. However, when the space is a mixed-type, the lighting power density and occupancy sensor reduction are calculated in the example below.
13
+
14
+ Example:
15
+
16
+ | Space | num_std_ltg_types | std_ltg_type01 | std_ltg_type_frac01 | std_ltg_type02 | std_ltg_type_frac02 |
17
+ |---------------------|-------------------|---------------------------|---------------------|-----------------------|---------------------|
18
+ | Perimeter_ZN_2 | 2 | retail - whole building | 0.8 | retail dressing room | 0.2 |
19
+
20
+ Where:
21
+
22
+ | Space Type | lighting per area (W/ft2) | occupancy sensor reduction |
23
+ |---------------------------|---------------------------|----------------------------|
24
+ | retail - whole building | 1.5 | 0.1 |
25
+ | retail dressing room | 0.89 | 0.1 |
26
+
27
+ The lighting power density of Perimeter_ZN_2 shall be determined as:
28
+
29
+ **Weighted LPD** = 1.5 W/ft2 * 0.8 + 0.89 W/ft2 * 0.2 = 1.2 W/ft2 + 0.178 W/ft2 = 1.378 W/ft2
30
+
31
+ **Weighted occupancy sensor reduction** = (0.1 * 1.2 W/ft2 + 0.1 * 0.178 W/ft2) / 1.378 W/ft2 = 0.1
32
+
33
+ ## Key Ruby Methods
34
+ The function `space_type_apply_internal_loads` is used to calculate the LPDs and occupancy sensor reduction for each `Space` or `Space Type`. The logic is implemented by overriding this method in the `ashrae_90_1_prm_2019.SpaceType` class.
35
+
36
+ ## Test Case Documentation
37
+
38
+ ### Test case 1:
39
+ - Prototype: Small Office
40
+ - User data folder: */userdata_lpd_01*
41
+ - Summary:
42
+
43
+ | Space | num_std_ltg_types | std_ltg_type01 | std_ltg_type_frac01 | std_ltg_type02 | std_ltg_type_frac02 | std_ltg_type03 | std_ltg_type_frac03 | Target_LPD (W/m2) |
44
+ |------------------|-------------------|--------------------------|---------------------|-------------------------|---------------------|----------------------|---------------------|-------------------|
45
+ | `Perimeter_ZN_2` | 2 | retail - whole building | 0.8 | retail dressing room | 0.2 | | | 14.83267494 |
46
+ | `Perimeter_ZN_1` | 3 | retail mall concourse | 0.2 | retail - whole building | 0.6 | retail dressing room | 0.2 | 15.26323154 |
47
+ | `Perimeter_ZN_4` | 1 | kitchen | 1.0 | | | | | 12.91669806 |
48
+ | `Perimeter_ZN_3` | 1 | office | 1.0 | | | | | 10.7639 |
49
+ | `Perimeter_ZN_5` | 1 | office | 1.0 | | | | | 10.7639 |
50
+ | `Attic` | 2 | warehouse - bulk storage | 0.5 | workshop | 0.5 | | | 15.06948107 |
51
+
52
+
53
+ ### Test case 2:
54
+ - Prototype: Small Office
55
+ - User data folder: */userdata_lpd_02*
56
+ - Summary:
57
+
58
+ | Space Type | num_std_ltg_types | std_ltg_type01 | std_ltg_type_frac01 | std_ltg_type02 | std_ltg_type_frac02 | Target_LPD (W/m2) |
59
+ |------------------------------------|-------------------|-------------------------|---------------------|----------------|---------------------|-------------------|
60
+ | `Office WholeBuilding - Sm Office` | 2 | atrium <= 40 ft height | 0.5 | workshop | 0.5 | 12.2452724 |
61
+
62
+ The `Office WholeBuilding - Sm Office` is the space type used by `Perimeter_ZN_1` through `Perimeter_ZN_5`.
63
+
64
+ - Note: In this test case, we also expect `Attic` to have `0 W/m2` LPD.
65
+
66
+
67
+ ### Test case 2:
68
+ - Prototype: Small Office
69
+ - User data folder: *N/A*
70
+ - Summary:
71
+
72
+ `Office` is used as the standard space type for all spaces except `Attic`. Therefore, in this test case, we are expecting LPD to be 10.7639 for spaces `Perimeter_ZN_1` through `Perimeter_ZN_5` except `Attic`.
73
+
@@ -0,0 +1,11 @@
1
+ Unenclosed and Unconditioned Spaces
2
+
3
+ # ASHRAE 90.1-2019 PRM Reference Manual
4
+ Space types such as ventilated parking garage, attics, and crawlspaces are defined by Standard 90.1-2019 as unenclosed spaces, and for the purposes of envelope requirements, envelope components adjacent to them are treated as exterior surfaces.
5
+
6
+ # Implementation
7
+ # Key Ruby Methods
8
+ ## Existing
9
+ * `model_apply_standard_constructions`: this method applies the standard construction to each surface in the model, based on the construction type currently assigned; code was added to handle surfaces adjacent to another space: if the space is conditioned, then the surface should be handled just like an exterior surface and be assigned the baseline constructions
10
+ ## New
11
+ * `model_apply_constructions`: generic method used to call the PRM and non-PRM specific `model_apply_standard_constructions()` method
@@ -0,0 +1,20 @@
1
+ Unmet Load Hours (UMLH)
2
+
3
+ # ASHRAE 90.1-2019
4
+ Unmet load hours for the proposed design or baseline building design shall not exceed 300 (of the 8760 hours simulated). Alternatively, unmet load hours exceeding these limits shall be permitted to be accepted upon approval of the rating authority, provided that sufficient justification is given indicating that the accuracy of the simulation is not significantly compromised by these unmet loads.
5
+
6
+ # ASHRAE 90.1-2019 PRM Reference Manual
7
+ If the automatic oversizing percentage is not sufficient to meet demands, then UMLH are evaluated at the building level by looking at the UMLH for each thermal zone being modeled. The first step would be to determine if the UMLH are high (>300) for the proposed building design as well as the baseline building. If that is the case, the issue is usually related to fan operation, HVAC availability, and occupancy schedules where the HVAC system has an incorrectly specified schedule that makes it unavailable during occupied hours. Optimal start controls, if a part of the building design, can also help eliminate UMLH during startup times. Since the same schedules are used for the baseline design, UMLH are seen in the baseline building as well. Other user inputs that could cause UMLH include incorrectly specified zone minimum airflows, which could result in unmet heating load hours. In this case, the software should notify the user and ask the user to verify schedules of operation. If a space is being conditioned via transfer air, it might be that the temperature of the transfer air is not sufficient to meet space conditioning requirements.
8
+ * If this is not the case and UMLH are seen only with the baseline design, the user or software tool is required to incrementally increase system airflows and equipment capacities, following the steps outlined below.
9
+ * In the case where UMLH for cooling are a bigger problem, the equipment in the baseline building model is resized by first increasing the design airflow of all zones with significant UMLH (greater than 150 for an individual zone) by 10%, increasing the design airflow of all zones with some UMLH (between 50 and 150) by 5%. Then, the equipment capacity for the system(s) serving the affected zones is increased to handle the increased zone loads. For the central plant, the chiller(s) and towers are resized proportionally to handle the increased system loads.
10
+ * In the case where UMLH for heating are a bigger problem, the same procedure is followed, with zone airflows resized first, then heating secondary equipment capacity and then boiler capacity as necessary. The capacity of the boiler or furnace shall be increased in proportion to capacities of coils required to meet the increased airflows at the baseline supply air. For heat pumps, the capacity of the coil is increased so that the additional load is not met by auxiliary heat.
11
+
12
+ # Implementation
13
+ The user model unmet load hours are checked as the first step of the baseline generation process. If the number is greater than 300, an error is published and the process is stopped. This requires the user to address the UMLH in the user/proposed model prior to generating the baseline model(s) which can be take some time.
14
+
15
+ At the end of the process, each baseline model's UMLH are checked. if the number is greater than 300, the process go through each zone and adjust the zone sizing factor by either increasing it by 5% or 10% for zones having respectively UMLH between 50 and 150 and greater than 150. Then, the model is re-ran and the check/adjustments are performed again until the number of UMLH is below 300.
16
+
17
+ # Key Ruby Methods
18
+ ## New
19
+ * `model_get_unmet_load_hours`: get the total unmet load hours during occupancy of a model that has been simulated
20
+ * `thermal_zone_get_unmet_load_hours`: determine the number of unmet load hours during occupancy for a thermal zone
@@ -0,0 +1,23 @@
1
+ Fan power and control for systems 6 and 8
2
+
3
+ # ASHRAE 90.1-2019
4
+ G3.1.3.14
5
+ Fans in parallel VAV fan-powered boxes shall run as the first stage of heating before the reheat coil is energized. Fans in parallel VAV fan-powered boxes shall be sized for 50% of the peak design primary air (from the VAV air-handling unit) flow rate and shall be modeled with 0.35 W/cfm fan power. Minimum volume set points for fan-powered boxes shall be equal to 30% of peak design primary airflow rate or the rate required to meet the minimum outdoor air ventilation requirement, whichever is larger. The supply air temperature set point shall be constant at the design condition.
6
+ # PRM-RM
7
+ * Fan Control: With parallel style fan-powered VAV boxes, the constant volume terminal unit fan is only on when the primary airflow is at design minimum and the zone temperature is less than 2°F above the heating setpoint schedule. When the system is scheduled to operate and the zone terminal fan is running, the box mixes plenum air with primary air.
8
+ * Heating Operation: During heating mode, the terminal unit discharge air temperature is increased from minimum to the design heating temperature. Throughout occupied heating the cooling, primary airflow is kept at design minimum and the terminal unit fan is running.
9
+ * Deadband Operation: The cooling primary airflow is kept at minimum airflow and the heating valve is closed. The terminal unit fan will energize as the first stage of heating when the zone temperature drops to 2F. above heating setpoint.
10
+ * Cooling Operation: As the space temperature increases, the cooling supply airflow is increased from minimum to design cooling maximum. Throughout cooling the box fan is off. To comply with Standard 90.1-2019 Section 6.5.2.1, Exception (1), the minimum primary airflow for this control logic must be no larger than 30% of the zone design cooling airflow or the minimum airflow for ventilation.
11
+ * Night Cycle Heating Control: A call for heating during night cycle control shall be met by running the terminal fan and increasing the terminal unit discharge air temperature from minimum to the design heating temperature without the use of primary air.
12
+ # Code Requirement Intepretation
13
+ The PRM-RM provides a good interpretation of the code requirement. It does miss to describe night cycle cooling operation. We believe that during these periods, the terminal fan should be off and that the central system fan should turn on to allows the central system to meet the load (as the terminals don't have any cooling coils).
14
+ # Implementation
15
+ Night cycle operation: will be implemented in `air_loop_hvac_enable_unoccupied_fan_shutoff` and the `CycleOnAnyCoolingOrHeatingZone` control type will be used to achieve the desired strategy. Note that we've identified a temporary issue with that control type in OpenStudio (see [here](https://github.com/NREL/OpenStudio/issues/4566)).
16
+
17
+ Cooling and heating operation: the terminal fan should be off when the primary airflow fraction is greater than the minimum primary air flow. In EnergyPlus, this is dictated by the "Fan On Flow Fraction". The Fan On Flow Fraction will be set to 0.0 to allow operating of the secondary fan only when reheat is needed and when the primary air flow is at the minimum.
18
+ # Key Ruby Methods
19
+ ## Exisiting
20
+ * `air_loop_hvac_enable_unoccupied_fan_shutoff`: Shut off the system during unoccupied periods and handle night cycling operation.
21
+ ## New
22
+ * `air_loop_hvac_has_parallel_piu_air_terminals?`: Determine if the air loop serves parallel PIU air terminals.
23
+ * `air_terminal_single_duct_parallel_piu_reheat_fan_on_flow_fraction`: Return the fan on flow fraction for a parallel PIU terminal
@@ -0,0 +1,21 @@
1
+ Minimum flow set points for VAV and fan powered terminals
2
+
3
+ # ASHRAE 90.1-2019
4
+ G3.1.3.13
5
+ Minimum volume set points for VAV reheat boxes shall be 30% of zone peak airflow, the minimum outdoor airflow rate, or the airflow rate required to comply with applicable codes or accreditation standards, whichever is larger.
6
+
7
+ G3.1.3.14
8
+ Minimum volume set points for fan-powered boxes shall be equal to 30% of peak design primary airflow rate or the rate required to meet the minimum outdoor air ventilation requirement, whichever is larger.
9
+ # Code Requirement Interpretation
10
+ These requirements aim to determine the minimum damper position of standard VAV and parallel PIU air terminals. The position is based on either the minimum outdoor air requirement or 30% of the peak zone/primary airflow.
11
+ # Implementation
12
+ For each terminal, the zone outdoor airflow is calculated and the minimum damper position is determined by taking the largest of the 0.3 or the zone outdoor airflow divided by the maximum terminal airflow (or primary airflow for parallel PIU terminals). The determination is initiated in `air_loop_hvac_apply_minimum_vav_damper_positions` and the calculation and assignment is done in `air_terminal_single_duct_vav_reheat_apply_minimum_damper_position` and `air_terminal_single_duct_parallel_piu_reheat_apply_minimum_primary_airflow_fraction`.
13
+ # Key Ruby Methods
14
+ ## Existing
15
+ * `air_loop_hvac_apply_minimum_vav_damper_positions`: Set the minimum VAV damper positions.
16
+ * `air_terminal_single_duct_vav_reheat_apply_minimum_damper_position`: Set the minimum damper position based on OA rate of the space and the template.
17
+ * `air_terminal_single_duct_vav_reheat_minimum_damper_position`: Specifies the minimum damper position for VAV dampers.
18
+ * `air_terminal_single_duct_parallel_piu_reheat_apply_prm_baseline_fan_power`: Sets the fan power of a PIU fan based on the W/cfm specified in the standard.
19
+ ## New
20
+ * `air_terminal_single_duct_parallel_reheat_piu_minimum_primary_airflow_fraction`: Specifies the minimum primary air flow fraction for PFB boxes.
21
+ * `air_terminal_single_duct_parallel_piu_reheat_apply_minimum_primary_airflow_fraction`: Set the minimum primary air flow fraction based on OA rate of the space and the template.
@@ -0,0 +1 @@
1
+ name,has_fan_power_credit_fully_ducted,has_fan_power_credit_return_or_exhaust_flow_control,fan_power_credit_exhaust_treatment,has_fan_power_credit_filtration_m9to12,has_fan_power_credit_filtration_m13to15,clean_filter_pressure_drop_for_fan_power_credit_filtration_m16plus,fan_power_credit_gas_phase_cleaners,fan_power_credit_biosafety,fan_power_credit_other_than_coil_runaround,has_fan_power_credit_coil_runaround,fan_power_credit_evaporative_humidifier_or_cooler,has_fan_power_credit_sound_attenuation,has_fan_power_credit_exhaust_serving_fume_hoods,has_fan_power_credit_lab_or_vivarium_highrise_vertical_duct,economizer_exception_for_gas_phase_air_cleaning,economizer_exception_for_open_refrigerated_cases,exhaust_energy_recovery_exception_for_toxic_fumes_etc,exhaust_energy_recovery_exception_for_type1_kitchen_hoods,exhaust_energy_recovery_exception_for_type_distributed_exhaust,exhaust_energy_recovery_exception_for_dehumidifcation_with_series_cooling_recovery,dcv_exception_airloop
@@ -0,0 +1 @@
1
+ name,has_fan_power_credit_fully_ducted,has_fan_power_credit_return_or_exhaust_flow_control,fan_power_credit_exhaust_treatment,has_fan_power_credit_filtration_m9to12,has_fan_power_credit_filtration_m13to15,clean_filter_pressure_drop_for_fan_power_credit_filtration_m16plus,fan_power_credit_gas_phase_cleaners,fan_power_credit_biosafety,fan_power_credit_other_than_coil_runaround,has_fan_power_credit_coil_runaround,fan_power_credit_evaporative_humidifier_or_cooler,has_fan_power_credit_sound_attenuation,has_fan_power_credit_exhaust_serving_fume_hoods,has_fan_power_credit_lab_or_vivarium_highrise_vertical_duct
@@ -0,0 +1 @@
1
+ name,building_type_for_hvac,building_type_for_swh,building_type_for_wwr,is_exempt_from_rotations
@@ -0,0 +1 @@
1
+ name,outdoor_airflow_per_person,outdoor_airflow_per_floor_area,outdoor_air_flowrate,outdoor_air_flow_air_changes_per_hour
@@ -0,0 +1 @@
1
+ name,fraction_of_controlled_receptacles,receptacle_power_savings,motor_horsepower,motor_efficiency,motor_is_exempt,elevator_weight_of_car,elevator_rated_load,elevator_counter_weight_of_car,elevator_speed_of_car,elevator_number_of_stories,elevator_number_of_lifts,elevator_area_ft2,elevator_ventilation_cfm,refrigeration_equipment_class,refrigeration_equipment_volume,refrigeration_equipment_total_display_area,,
@@ -0,0 +1 @@
1
+ name,num_ext_lights_subcats,end_use_subcategory_01,end_use_measurement_value_01,end_use_subcategory_02,end_use_measurement_value_02,end_use_subcategory_03,end_use_measurement_value_03,end_use_subcategory_04,end_use_measurement_value_04,end_use_subcategory_05,end_use_measurement_value_05,end_use_subcategory_06,end_use_measurement_value_06,end_use_subcategory_07,end_use_measurement_value_07,end_use_subcategory_08,end_use_measurement_value_08,end_use_subcategory_09
@@ -0,0 +1 @@
1
+ name,fraction_of_controlled_receptacles,receptacle_power_savings
@@ -0,0 +1 @@
1
+ name,has_retail_display_exception,has_unregulated_exception,unregulated_category
@@ -0,0 +1 @@
1
+ name,building_type_for_wwr,num_std_ltg_types,std_ltg_type01,std_ltg_type_frac01,std_ltg_type02,std_ltg_type_frac02,std_ltg_type03,std_ltg_type_frac03,std_ltg_type04,std_ltg_type_frac04,std_ltg_type05,std_ltg_type_frac05,std_ltg_type06,std_ltg_type_frac06,std_ltg_type07,std_ltg_type_frac07,std_ltg_type08,std_ltg_type_frac08,std_ltg_type09,std_ltg_type_frac09,std_ltg_type10,std_ltg_type_frac10,std_ltg_type11,std_ltg_type_frac11,std_ltg_type12,std_ltg_type_frac12,std_ltg_type13,std_ltg_type_frac13,std_ltg_type14,std_ltg_type_frac14,std_ltg_type15,std_ltg_type_frac15,std_ltg_type16,std_ltg_type_frac16,std_ltg_type17,std_ltg_type_frac17,std_ltg_type18,std_ltg_type_frac18,std_ltg_type19,std_ltg_type_frac19,std_ltg_type20,std_ltg_type_frac20
@@ -0,0 +1 @@
1
+ name,num_std_ltg_types,std_ltg_type01,std_ltg_type_frac01,std_ltg_type02,std_ltg_type_frac02,std_ltg_type03,std_ltg_type_frac03,std_ltg_type04,std_ltg_type_frac04,std_ltg_type05,std_ltg_type_frac05,std_ltg_type06,std_ltg_type_frac06,std_ltg_type07,std_ltg_type_frac07,std_ltg_type08,std_ltg_type_frac08,std_ltg_type09,std_ltg_type_frac09,std_ltg_type10,std_ltg_type_frac10,std_ltg_type11,std_ltg_type_frac11,std_ltg_type12,std_ltg_type_frac12,std_ltg_type13,std_ltg_type_frac13,std_ltg_type14,std_ltg_type_frac14,std_ltg_type15,std_ltg_type_frac15,std_ltg_type16,std_ltg_type_frac16,std_ltg_type17,std_ltg_type_frac17,std_ltg_type18,std_ltg_type_frac18,std_ltg_type19,std_ltg_type_frac19,std_ltg_type20,std_ltg_type_frac20
@@ -0,0 +1 @@
1
+ name,building_type_for_hvac,number_of_systems, dcv_exception_thermal_zone,has_health_safety_night_cycle_exception
@@ -0,0 +1 @@
1
+ name,hot_water_supply_temperature_schedule,cold_water_supply_temperature_schedule
@@ -0,0 +1 @@
1
+ name,peak_flow_rate,flow_rate_fraction_schedule,target_temperature_schedule
@@ -0,0 +1 @@
1
+ name,zone_hvac_object_type_name,has_fan_power_credit_fully_ducted,has_fan_power_credit_return_or_exhaust_flow_control,fan_power_credit_exhaust_treatment,has_fan_power_credit_filtration_m9to12,has_fan_power_credit_filtration_m13to15,clean_filter_pressure_drop_for_fan_power_credit_filtration_m16plus,fan_power_credit_gas_phase_cleaners,fan_power_credit_biosafety,fan_power_credit_other_than_coil_runaround,has_fan_power_credit_coil_runaround,fan_power_credit_evaporative_humidifier_or_cooler,has_fan_power_credit_sound_attenuation,has_fan_power_credit_exhaust_serving_fume_hoods,has_fan_power_credit_lab_or_vivarium_highrise_vertical_duct,exhaust_energy_recovery_exception_for_toxic_fumes_etc,exhaust_energy_recovery_exception_for_type1_kitchen_hoods,exhaust_energy_recovery_exception_for_type_distributed_exhaust,exhaust_energy_recovery_exception_for_dehumidifcation_with_series_cooling_recovery
@@ -264,6 +264,18 @@
264
264
  "fan_curve": "Multi zone VAV with static pressure reset",
265
265
  "notes": null
266
266
  },
267
+ {
268
+ "name": "PSZ_VAV_System_Fan",
269
+ "type": "VariableVolume",
270
+ "pressure_rise": 2.5,
271
+ "fan_efficiency": 0.54,
272
+ "motor_efficiency": 0.9,
273
+ "motor_in_airstream_fraction": 1.0,
274
+ "fan_power_minimum_flow_rate_fraction": 0.25,
275
+ "fan_power_minimum_flow_rate_input_method": "Fraction",
276
+ "fan_curve": "Multi zone VAV with static pressure reset",
277
+ "notes": null
278
+ },
267
279
  {
268
280
  "name": "VAV_default",
269
281
  "type": "VariableVolume",
@@ -264,6 +264,18 @@
264
264
  "fan_curve": "Multi zone VAV with static pressure reset",
265
265
  "notes": null
266
266
  },
267
+ {
268
+ "name": "PSZ_VAV_System_Fan",
269
+ "type": "VariableVolume",
270
+ "pressure_rise": 2.5,
271
+ "fan_efficiency": 0.54,
272
+ "motor_efficiency": 0.9,
273
+ "motor_in_airstream_fraction": 1.0,
274
+ "fan_power_minimum_flow_rate_fraction": 0.25,
275
+ "fan_power_minimum_flow_rate_input_method": "Fraction",
276
+ "fan_curve": "Multi zone VAV with static pressure reset",
277
+ "notes": null
278
+ },
267
279
  {
268
280
  "name": "VAV_default",
269
281
  "type": "VariableVolume",
@@ -846,7 +846,7 @@
846
846
  {
847
847
  "name": "NECB2015_ASHP",
848
848
  "minimum_capacity": 238840.0,
849
- "maximum_capacity": 9999999.0,
849
+ "maximum_capacity": 9999999999.0,
850
850
  "minimum_seasonal_efficiency": null,
851
851
  "minimum_full_load_efficiency": 9.5,
852
852
  "minimum_iplv": null,
@@ -816,7 +816,7 @@
816
816
  {
817
817
  "name": "NECB2015_ASHP",
818
818
  "minimum_capacity": 238840.0,
819
- "maximum_capacity": 9999999.0,
819
+ "maximum_capacity": 9999999999.0,
820
820
  "minimum_heating_seasonal_performance_factor": null,
821
821
  "minimum_coefficient_of_performance_heating": null,
822
822
  "minimum_energy_efficiency_ratio": 9.2,
@@ -8,20 +8,20 @@
8
8
  {
9
9
  "name": "Carrier WeatherExpert",
10
10
  "minimum_capacity": 0.0,
11
- "maximum_capacity": 19044.8,
12
- "minimum_energy_efficiency_ratio": null,
13
- "minimum_seasonal_energy_efficiency_ratio": 17.3,
11
+ "maximum_capacity": 17418.7,
12
+ "minimum_energy_efficiency_ratio": 12.9,
13
+ "minimum_seasonal_energy_efficiency_ratio": null,
14
14
  "cool_cap_ft": null,
15
15
  "cool_cap_fflow": null,
16
16
  "cool_eir_ft": null,
17
17
  "cool_eir_fflow": null,
18
18
  "cool_plf_fplr": null,
19
- "notes": "Carrier WeatherExpert 3-5 Nominal Tons average"
19
+ "notes": "Carrier WeatherExpert 3-5 Nominal Tons units average EIR (capacities in Watts)"
20
20
  },
21
21
  {
22
22
  "name": "Carrier WeatherExpert",
23
- "minimum_capacity": 19044.8,
24
- "maximum_capacity": 77960.0,
23
+ "minimum_capacity": 17418.7,
24
+ "maximum_capacity": 34601.5,
25
25
  "minimum_energy_efficiency_ratio": 13.1,
26
26
  "minimum_seasonal_energy_efficiency_ratio": null,
27
27
  "cool_cap_ft": null,
@@ -29,22 +29,35 @@
29
29
  "cool_eir_ft": null,
30
30
  "cool_eir_fflow": null,
31
31
  "cool_plf_fplr": null,
32
- "notes": "Carrier WeatherExpert 6-10 Nominal Tons average"
32
+ "notes": "Carrier WeatherExpert 6-10 Nominal Tons units average EIR (Capacities in Watts)"
33
+ },
34
+ {
35
+ "name": "Carrier WeatherExpert",
36
+ "minimum_capacity": 34601.5,
37
+ "maximum_capacity": 68904.8,
38
+ "minimum_energy_efficiency_ratio": 12.2,
39
+ "minimum_seasonal_energy_efficiency_ratio": null,
40
+ "cool_cap_ft": null,
41
+ "cool_cap_fflow": null,
42
+ "cool_eir_ft": null,
43
+ "cool_eir_fflow": null,
44
+ "cool_plf_fplr": null,
45
+ "notes": "Carrier WeatherExpert 12.5-20 Tons units average (Capacities in Watts)"
33
46
  },
34
47
  {
35
48
  "name": "Carrier WeatherExpert",
36
- "minimum_capacity": 77960.0,
49
+ "minimum_capacity": 68904.8,
37
50
  "maximum_capacity": 9999999.0,
38
- "minimum_energy_efficiency_ratio": 12.0,
51
+ "minimum_energy_efficiency_ratio": 11.1,
39
52
  "minimum_seasonal_energy_efficiency_ratio": null,
40
53
  "cool_cap_ft": null,
41
54
  "cool_cap_fflow": null,
42
55
  "cool_eir_ft": null,
43
56
  "cool_eir_fflow": null,
44
57
  "cool_plf_fplr": null,
45
- "notes": "Carrier WeatherExpert 12.5-23 Tons average"
58
+ "notes": "Carrier WeatherExpert 23 Ton unit (Capacities in Watts)"
46
59
  }
47
60
  ]
48
61
  }
49
62
  }
50
- }
63
+ }
@@ -1,6 +1,7 @@
1
1
  class ECMS
2
- # This method will add a skeleton erv to all air loops if requested.
3
- def apply_erv_ecm(model:, erv_package: nil)
2
+ # This method will set the properties of the ERV. Must be run after the standard efficiency is complete as this will overwrite
3
+ # those values. See data/erv.json to view/add different erv packages available.
4
+ def apply_erv_ecm_efficiency(model:, erv_package: nil)
4
5
  # If erv is nil.. do nothing.
5
6
  return if erv_package.nil? || erv_package == 'none' || erv_package == 'NECB_Default'
6
7
 
@@ -13,20 +14,17 @@ class ECMS
13
14
  raise("ERV package name #{erv_package} does not exist. must be #{valid} /n Stopping.")
14
15
  end
15
16
 
16
- # remove all existing ERVs
17
- model.getHeatExchangerAirToAirSensibleAndLatents.each(&:remove) if erv_info['application'] == 'Add_ERVs_To_All_Airloops'
18
- # add ervs
19
- # Adds default erv to all air_loops. This will be changed in the set efficiency methods.
20
- model.getAirLoopHVACs.each { |air_loop| air_loop_hvac_apply_energy_recovery_ventilator(air_loop, nil) } if erv_info['application'] == 'Add_ERVs_To_All_Airloops'
21
- end
22
-
23
- # This method will set the properties of the ERV that was added above. Must be run after the standard efficiency is complete as this will overwrite
24
- # those values. See data/erv.json to view/add different erv packages.
25
- def apply_erv_ecm_efficiency(model:, erv_package: nil)
26
- # If erv is nil.. do nothing.
27
- return if erv_package.nil? || erv_package == 'none' || erv_package == 'NECB_Default'
17
+ # add ervs if required
18
+ model.getAirLoopHVACs.sort.each do |air_loop|
19
+ if air_loop.airLoopHVACOutdoorAirSystem.is_initialized
20
+ erv = air_loop.airLoopHVACOutdoorAirSystem.get.components.select{|comp| comp.to_HeatExchangerAirToAirSensibleAndLatent.is_initialized}
21
+ if (erv.empty? && (erv_info['application'] == 'Add_ERVs_To_All_Airloops'))
22
+ air_loop_hvac_apply_energy_recovery_ventilator(air_loop, nil)
23
+ end
24
+ end
25
+ end
28
26
 
29
- # This calls the NECB2011 implementation of the method.
27
+ # Apply ecm effectiveness values
30
28
  model.getHeatExchangerAirToAirSensibleAndLatents.each { |erv| heat_exchanger_air_to_air_sensible_and_latent_apply_effectiveness(erv, erv_package) }
31
29
  end
32
30
  end
@@ -0,0 +1,17 @@
1
+ {
2
+ "province_map": {
3
+ "QC": "Quebec",
4
+ "NL": "Newfoundland and Labrador",
5
+ "NS": "Nova Scotia",
6
+ "PE": "Prince Edward Island",
7
+ "ON": "Ontario",
8
+ "MB": "Manitoba",
9
+ "SK": "Saskatchewan",
10
+ "AB": "Alberta",
11
+ "BC": "British Columbia",
12
+ "YT": "Yukon",
13
+ "NT": "Northwest Territories",
14
+ "NB": "New Brunswick",
15
+ "NU": "Nunavut"
16
+ }
17
+ }
@@ -67,12 +67,12 @@ class NECB2011
67
67
  return true
68
68
  else
69
69
  zones.each do |zone|
70
- air_loop = add_system_3_and_8_airloop_multi_speed(heating_coil_type, model, system_data, zone)
71
70
  add_sys3_and_8_zone_equip(air_loop,
72
71
  baseboard_type,
73
72
  hw_loop,
74
73
  model,
75
74
  zone)
75
+ air_loop = add_system_3_and_8_airloop_multi_speed(heating_coil_type, model, system_data, zone)
76
76
  end
77
77
  return true
78
78
  end
@@ -204,8 +204,8 @@ class NECB2011
204
204
  hw_loop, model,
205
205
  zone)
206
206
  always_on = model.alwaysOnDiscreteSchedule
207
+ add_zone_baseboards(baseboard_type: baseboard_type, hw_loop: hw_loop, model: model, zone: zone)
207
208
  diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
208
209
  air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
209
- add_zone_baseboards(baseboard_type: baseboard_type, hw_loop: hw_loop, model: model, zone: zone)
210
210
  end
211
211
  end
@@ -143,12 +143,12 @@ class NECB2011
143
143
  sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
144
144
  # Create a diffuser and attach the zone/diffuser pair to the air loop
145
145
  # diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model,always_on)
146
- diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
147
- air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
148
146
  add_zone_baseboards(baseboard_type: baseboard_type,
149
147
  hw_loop: hw_loop,
150
148
  model: model,
151
149
  zone: zone)
150
+ diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
151
+ air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
152
152
  # zone loop
153
153
  end
154
154
  sys_name_pars = {}
@@ -126,6 +126,12 @@ class NECB2011
126
126
  reheat_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
127
127
  end
128
128
 
129
+ # Set zone baseboards
130
+ add_zone_baseboards(model: model,
131
+ zone: zone,
132
+ baseboard_type: baseboard_type,
133
+ hw_loop: hw_loop)
134
+
129
135
  vav_terminal = OpenStudio::Model::AirTerminalSingleDuctVAVReheat.new(model, always_on, reheat_coil)
130
136
  air_loop.addBranchForZone(zone, vav_terminal.to_StraightComponent)
131
137
  # NECB2011 minimum zone airflow setting
@@ -133,11 +139,6 @@ class NECB2011
133
139
  vav_terminal.setMaximumReheatAirTemperature(system_data[:ZoneVAVMaxReheatTemp])
134
140
  vav_terminal.setDamperHeatingAction(system_data[:ZoneVAVDamperAction])
135
141
 
136
- # Set zone baseboards
137
- add_zone_baseboards(model: model,
138
- zone: zone,
139
- baseboard_type: baseboard_type,
140
- hw_loop: hw_loop)
141
142
  end
142
143
  sys_name_pars = {}
143
144
  sys_name_pars['sys_hr'] = 'none'