openstudio-standards 0.2.16 → 0.2.17.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. checksums.yaml +4 -4
  2. data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
  3. data/data/standards/manage_OpenStudio_Standards.rb +31 -4
  4. data/data/standards/openstudio_standards_duplicates_log.csv +4 -142
  5. data/lib/openstudio-standards/btap/btap_result.rb +138 -138
  6. data/lib/openstudio-standards/btap/economics.rb +58 -53
  7. data/lib/openstudio-standards/btap/envelope.rb +1 -1
  8. data/lib/openstudio-standards/btap/fileio.rb +12 -12
  9. data/lib/openstudio-standards/btap/geometry.rb +1 -1
  10. data/lib/openstudio-standards/btap/measures.rb +63 -59
  11. data/lib/openstudio-standards/btap/vintagizer.rb +1 -1
  12. data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +354 -2
  13. data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +79 -0
  14. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +1 -1
  15. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +1 -1
  16. data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +3313 -0
  17. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +12 -0
  18. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +3 -4
  19. data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +10 -4
  20. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +217 -115
  21. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +2 -4
  22. data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +1 -0
  23. data/lib/openstudio-standards/refs/references.rb +3 -0
  24. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +294 -7
  25. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +50 -2
  26. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +4 -0
  27. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -1
  28. data/lib/openstudio-standards/standards/Standards.Construction.rb +185 -3
  29. data/lib/openstudio-standards/standards/Standards.Fan.rb +14 -6
  30. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +1 -0
  31. data/lib/openstudio-standards/standards/Standards.Model.rb +1752 -384
  32. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +131 -10
  33. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +50 -3
  34. data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +44 -0
  35. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +27 -0
  36. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +543 -0
  37. data/lib/openstudio-standards/standards/Standards.Space.rb +665 -15
  38. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +141 -4
  39. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +2 -1
  40. data/lib/openstudio-standards/standards/Standards.Surface.rb +117 -0
  41. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +197 -49
  42. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +44 -2
  43. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Model.rb +6 -8
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +48 -45
  55. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +2 -1
  56. 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
  57. 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
  58. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +2 -2
  59. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.entryways.json +8 -8
  60. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.fans.json +12 -0
  61. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.parking.json +2 -2
  62. 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
  63. 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
  64. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +11 -0
  65. 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
  66. 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
  67. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +11 -0
  68. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +1 -0
  69. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +792 -0
  70. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +10 -0
  71. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +31 -0
  72. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +91 -0
  73. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +84 -0
  74. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +145 -0
  75. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +106 -0
  76. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +71 -0
  77. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +194 -0
  78. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +120 -0
  79. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +110 -0
  80. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +5 -0
  81. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +73 -0
  82. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +5 -0
  83. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +5 -0
  84. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +24 -0
  85. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +5 -0
  86. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +55 -0
  87. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +3045 -0
  88. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +187 -0
  89. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +454 -0
  90. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +106 -0
  91. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +666 -0
  92. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +54 -0
  93. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +168 -0
  94. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +132 -0
  95. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +239 -0
  96. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +176 -0
  97. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +25 -0
  98. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.boilers.json +52 -0
  99. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.chillers.json +112 -0
  100. 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
  101. 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
  102. 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
  103. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.furnaces.json +43 -0
  104. 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
  105. 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
  106. 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
  107. 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
  108. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +264 -0
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.climate_zone_sets.json +210 -0
  121. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +18329 -0
  122. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +340 -0
  123. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.materials.json +49924 -0
  124. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_building_rotation_exception.md +44 -0
  125. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/check_pump_power_and_control.md +71 -0
  126. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/dcv.md +68 -0
  127. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/dcv_implementation.png +0 -0
  128. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/elevators.md +14 -0
  129. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/exhaust_air_energy_recovery.md +36 -0
  130. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/f_c_factors.md +19 -0
  131. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/fan_power_credits.md +15 -0
  132. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/preheat_coil.md +59 -0
  133. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/pump_power_control.md +46 -0
  134. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/return_air_type.md +31 -0
  135. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_baseline_wwr.md +191 -0
  136. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_hw_and_chw_supply_water_temp_reset_control.md +24 -0
  137. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_num_boilers_chillers_towers.md +49 -0
  138. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +80 -0
  139. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_space_lpd.md +73 -0
  140. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/unenclosed_and_unconditioned_spaces.md +11 -0
  141. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/unmet_load_hours.md +20 -0
  142. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/vav_parallel_piu_terminals_fan_control.md +23 -0
  143. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/vav_terminals_min_flow_setpoint.md +21 -0
  144. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac.csv +1 -0
  145. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac_doas.csv +1 -0
  146. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_building.csv +1 -0
  147. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_design_specification_outdoor_air.csv +1 -0
  148. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_electric_equipment.csv +1 -0
  149. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_exterior_lights.csv +1 -0
  150. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_gas_equipment.csv +1 -0
  151. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_lights.csv +1 -0
  152. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -0
  153. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_spacetype.csv +1 -0
  154. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_thermal_zone.csv +1 -0
  155. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_connections.csv +1 -0
  156. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_equipment.csv +1 -0
  157. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_equipment_definition.csv +1 -0
  158. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_zone_hvac.csv +1 -0
  159. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_zone_infiltration.csv +1 -0
  160. data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +12 -0
  161. data/lib/openstudio-standards/standards/deer/data/deer.fans.json +12 -0
  162. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +5 -1
  163. data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps.json +1 -1
  164. data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps_heating.json +1 -1
  165. data/lib/openstudio-standards/standards/necb/ECMS/data/unitary_acs.json +24 -11
  166. data/lib/openstudio-standards/standards/necb/ECMS/erv.rb +13 -15
  167. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +8 -4
  168. data/lib/openstudio-standards/standards/necb/ECMS/nv.rb +8 -2
  169. data/lib/openstudio-standards/standards/necb/NECB2011/data/province_map.json +17 -0
  170. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +1 -1
  171. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +1 -1
  172. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +2 -2
  173. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +6 -5
  174. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +7 -2
  175. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +2 -3
  176. data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +4 -4
  177. data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +2 -2
  178. data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +33 -924
  179. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +15 -15
  180. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +135 -29
  181. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +16 -4
  182. data/lib/openstudio-standards/standards/necb/common/neb_end_use_prices.csv +40 -42
  183. data/lib/openstudio-standards/standards/necb/common/necb_reference_runs.csv +1 -1
  184. data/lib/openstudio-standards/standards/necb/common/space_type_upgrade_map.json +89 -89
  185. data/lib/openstudio-standards/utilities/array.rb +11 -0
  186. data/lib/openstudio-standards/utilities/logging.rb +48 -0
  187. data/lib/openstudio-standards/utilities/object_info.rb +20 -0
  188. data/lib/openstudio-standards/utilities/schedule_translator.rb +348 -0
  189. data/lib/openstudio-standards/utilities/sqlfile.rb +68 -0
  190. data/lib/openstudio-standards/version.rb +2 -2
  191. data/lib/openstudio-standards/weather/Weather.Model.rb +42 -55
  192. data/lib/openstudio-standards/weather/Weather.stat_file.rb +1 -1
  193. data/lib/openstudio-standards.rb +35 -1
  194. metadata +111 -4
  195. data/data/standards/OpenStudio_Standards-ashrae_90_1_28Jan2022.xlsx +0 -0
  196. data/data/standards/OpenStudio_Standards-ashrae_90_1_28_Jan2022_2.xlsx +0 -0
@@ -5548,7 +5548,7 @@
5548
5548
  "lpd_fraction_high_bay": 0.0,
5549
5549
  "lpd_fraction_specialty_lighting": 0.0563,
5550
5550
  "lpd_fraction_exit_lighting": 0.0,
5551
- "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2010",
5551
+ "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2013",
5552
5552
  "compact_fluorescent_lighting_schedule": null,
5553
5553
  "high_bay_lighting_schedule": null,
5554
5554
  "specialty_lighting_schedule": null,
@@ -5636,7 +5636,7 @@
5636
5636
  "lpd_fraction_high_bay": 0.0,
5637
5637
  "lpd_fraction_specialty_lighting": 0.0563,
5638
5638
  "lpd_fraction_exit_lighting": 0.0,
5639
- "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2010",
5639
+ "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2013",
5640
5640
  "compact_fluorescent_lighting_schedule": null,
5641
5641
  "high_bay_lighting_schedule": null,
5642
5642
  "specialty_lighting_schedule": null,
@@ -5724,7 +5724,7 @@
5724
5724
  "lpd_fraction_high_bay": 0.0,
5725
5725
  "lpd_fraction_specialty_lighting": 0.0563,
5726
5726
  "lpd_fraction_exit_lighting": 0.0,
5727
- "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2010",
5727
+ "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2013",
5728
5728
  "compact_fluorescent_lighting_schedule": null,
5729
5729
  "high_bay_lighting_schedule": null,
5730
5730
  "specialty_lighting_schedule": null,
@@ -5812,7 +5812,7 @@
5812
5812
  "lpd_fraction_high_bay": 0.0,
5813
5813
  "lpd_fraction_specialty_lighting": 0.0563,
5814
5814
  "lpd_fraction_exit_lighting": 0.0,
5815
- "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2010",
5815
+ "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2013",
5816
5816
  "compact_fluorescent_lighting_schedule": null,
5817
5817
  "high_bay_lighting_schedule": null,
5818
5818
  "specialty_lighting_schedule": null,
@@ -6047,7 +6047,7 @@
6047
6047
  "lpd_fraction_high_bay": null,
6048
6048
  "lpd_fraction_specialty_lighting": null,
6049
6049
  "lpd_fraction_exit_lighting": null,
6050
- "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2010",
6050
+ "lighting_schedule": "HotelLarge BLDG_LIGHT_GUESTROOM_SCH_2013",
6051
6051
  "compact_fluorescent_lighting_schedule": null,
6052
6052
  "high_bay_lighting_schedule": null,
6053
6053
  "specialty_lighting_schedule": null,
@@ -15452,7 +15452,7 @@
15452
15452
  "lpd_fraction_high_bay": 0.215622,
15453
15453
  "lpd_fraction_specialty_lighting": 0.081,
15454
15454
  "lpd_fraction_exit_lighting": 0.0109,
15455
- "lighting_schedule": "RestaurantFastFood BLDG_LIGHT_DINING_SCH_2010",
15455
+ "lighting_schedule": "FoodService_Restaurant BLDG_LIGHT_EndUseData",
15456
15456
  "compact_fluorescent_lighting_schedule": null,
15457
15457
  "high_bay_lighting_schedule": null,
15458
15458
  "specialty_lighting_schedule": null,
@@ -15540,7 +15540,7 @@
15540
15540
  "lpd_fraction_high_bay": 0.0,
15541
15541
  "lpd_fraction_specialty_lighting": 0.11,
15542
15542
  "lpd_fraction_exit_lighting": 0.015,
15543
- "lighting_schedule": "RestaurantFastFood BLDG_LIGHT_KITCHEN_SCH_2010_2013",
15543
+ "lighting_schedule": "FoodService_Restaurant BLDG_LIGHT_EndUseData",
15544
15544
  "compact_fluorescent_lighting_schedule": null,
15545
15545
  "high_bay_lighting_schedule": null,
15546
15546
  "specialty_lighting_schedule": null,
@@ -18004,7 +18004,7 @@
18004
18004
  "lpd_fraction_high_bay": 0.0,
18005
18005
  "lpd_fraction_specialty_lighting": 0.0437,
18006
18006
  "lpd_fraction_exit_lighting": 0.0229,
18007
- "lighting_schedule": "HotelSmall BLDG_LIGHT_GUESTROOM_SCH_2010",
18007
+ "lighting_schedule": "SmallHotel GuestRoom Light",
18008
18008
  "compact_fluorescent_lighting_schedule": null,
18009
18009
  "high_bay_lighting_schedule": null,
18010
18010
  "specialty_lighting_schedule": null,
@@ -18180,7 +18180,7 @@
18180
18180
  "lpd_fraction_high_bay": 0.0,
18181
18181
  "lpd_fraction_specialty_lighting": 0.0437,
18182
18182
  "lpd_fraction_exit_lighting": 0.0229,
18183
- "lighting_schedule": "HotelSmall BLDG_LIGHT_GUESTROOM_SCH_2010",
18183
+ "lighting_schedule": "SmallHotel GuestRoom Light",
18184
18184
  "compact_fluorescent_lighting_schedule": null,
18185
18185
  "high_bay_lighting_schedule": null,
18186
18186
  "specialty_lighting_schedule": null,
@@ -270983,32 +270983,32 @@
270983
270983
  "start_date": "2020-01-01T00:00:00+00:00",
270984
270984
  "end_date": "2020-12-31T00:00:00+00:00",
270985
270985
  "type": "Hourly",
270986
- "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project",
270987
- "values": [
270988
- 0.042575155,
270989
- 0.03399742,
270990
- 0.035513913,
270991
- 0.043202006,
270992
- 0.036947985,
270993
- 0.037735029,
270994
- 0.06295506,
270995
- 0.119435295,
270996
- 0.31817894,
270997
- 0.44737377,
270998
- 0.486605124,
270999
- 0.490400177,
271000
- 0.472467901,
271001
- 0.444558105,
271002
- 0.458064863,
271003
- 0.44297138,
271004
- 0.376717347,
271005
- 0.182711787,
271006
- 0.090701469,
271007
- 0.066120372,
271008
- 0.063250053,
271009
- 0.063842363,
271010
- 0.063529429,
271011
- 0.045156833
270986
+ "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project, scaled to 0.85 peak value",
270987
+ "values": [
270988
+ 0.049334,
270989
+ 0.033997,
270990
+ 0.036709,
270991
+ 0.050454,
270992
+ 0.039273,
270993
+ 0.04068,
270994
+ 0.085771,
270995
+ 0.186752,
270996
+ 0.542086,
270997
+ 0.773073,
270998
+ 0.843215,
270999
+ 0.85,
271000
+ 0.817939,
271001
+ 0.768039,
271002
+ 0.792188,
271003
+ 0.765202,
271004
+ 0.646746,
271005
+ 0.299884,
271006
+ 0.135379,
271007
+ 0.09143,
271008
+ 0.086298,
271009
+ 0.087357,
271010
+ 0.086798,
271011
+ 0.053949
271012
271012
  ]
271013
271013
  },
271014
271014
  {
@@ -271019,7 +271019,7 @@
271019
271019
  "start_date": "2020-01-01T00:00:00+00:00",
271020
271020
  "end_date": "2020-12-31T00:00:00+00:00",
271021
271021
  "type": "Hourly",
271022
- "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project",
271022
+ "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project, scaled to 0.85 peak value",
271023
271023
  "values": [
271024
271024
  0.044066259,
271025
271025
  0.044439702,
@@ -271068,7 +271068,7 @@
271068
271068
  "start_date": "2020-01-01T00:00:00+00:00",
271069
271069
  "end_date": "2020-12-31T00:00:00+00:00",
271070
271070
  "type": "Hourly",
271071
- "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project",
271071
+ "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project, scaled to 0.85 peak value",
271072
271072
  "values": [
271073
271073
  0.044813145,
271074
271074
  0.043346048,
@@ -334883,7 +334883,7 @@
334883
334883
  "start_date": "2014-01-01T00:00:00+00:00",
334884
334884
  "end_date": "2014-12-31T00:00:00+00:00",
334885
334885
  "type": "Hourly",
334886
- "notes": "From DOE Reference Buildings ",
334886
+ "notes": "From DOE Reference Buildings; reduced midday value to 0.15",
334887
334887
  "values": [
334888
334888
  0.22,
334889
334889
  0.17,
@@ -334896,13 +334896,13 @@
334896
334896
  0.44,
334897
334897
  0.44,
334898
334898
  0.28,
334899
- 0.28,
334900
- 0.28,
334901
- 0.28,
334902
- 0.28,
334903
- 0.28,
334904
- 0.28,
334905
- 0.28,
334899
+ 0.15,
334900
+ 0.15,
334901
+ 0.15,
334902
+ 0.15,
334903
+ 0.15,
334904
+ 0.15,
334905
+ 0.15,
334906
334906
  0.67,
334907
334907
  0.89,
334908
334908
  1.0,
@@ -334932,7 +334932,7 @@
334932
334932
  "start_date": "2014-01-01T00:00:00+00:00",
334933
334933
  "end_date": "2014-12-31T00:00:00+00:00",
334934
334934
  "type": "Hourly",
334935
- "notes": "From DOE Reference Buildings ",
334935
+ "notes": "From DOE Reference Buildings; reduce midday value to 0.15",
334936
334936
  "values": [
334937
334937
  0.26,
334938
334938
  0.26,
@@ -334944,14 +334944,14 @@
334944
334944
  0.41,
334945
334945
  0.56,
334946
334946
  0.56,
334947
- 0.41,
334948
- 0.33,
334949
- 0.33,
334950
- 0.33,
334951
- 0.33,
334952
- 0.33,
334953
- 0.33,
334954
- 0.33,
334947
+ 0.35,
334948
+ 0.15,
334949
+ 0.15,
334950
+ 0.15,
334951
+ 0.15,
334952
+ 0.15,
334953
+ 0.15,
334954
+ 0.5,
334955
334955
  0.85,
334956
334956
  1.0,
334957
334957
  1.0,
@@ -15718,7 +15718,7 @@
15718
15718
  "lpd_fraction_high_bay": 0.215622,
15719
15719
  "lpd_fraction_specialty_lighting": 0.081,
15720
15720
  "lpd_fraction_exit_lighting": 0.0109,
15721
- "lighting_schedule": "RestaurantFastFood BLDG_LIGHT_DINING_SCH_2013",
15721
+ "lighting_schedule": "FoodService_Restaurant BLDG_LIGHT_EndUseData",
15722
15722
  "compact_fluorescent_lighting_schedule": null,
15723
15723
  "high_bay_lighting_schedule": null,
15724
15724
  "specialty_lighting_schedule": null,
@@ -15806,7 +15806,7 @@
15806
15806
  "lpd_fraction_high_bay": 0.0,
15807
15807
  "lpd_fraction_specialty_lighting": 0.11,
15808
15808
  "lpd_fraction_exit_lighting": 0.015,
15809
- "lighting_schedule": "RestaurantFastFood BLDG_LIGHT_KITCHEN_SCH_2010_2013",
15809
+ "lighting_schedule": "FoodService_Restaurant BLDG_LIGHT_EndUseData",
15810
15810
  "compact_fluorescent_lighting_schedule": null,
15811
15811
  "high_bay_lighting_schedule": null,
15812
15812
  "specialty_lighting_schedule": null,
@@ -18336,7 +18336,7 @@
18336
18336
  "lpd_fraction_high_bay": 0.0,
18337
18337
  "lpd_fraction_specialty_lighting": 0.0437,
18338
18338
  "lpd_fraction_exit_lighting": 0.0229,
18339
- "lighting_schedule": "HotelSmall BLDG_LIGHT_GUESTROOM_SCH_2013",
18339
+ "lighting_schedule": "SmallHotel GuestRoom Light",
18340
18340
  "compact_fluorescent_lighting_schedule": null,
18341
18341
  "high_bay_lighting_schedule": null,
18342
18342
  "specialty_lighting_schedule": null,
@@ -18512,7 +18512,7 @@
18512
18512
  "lpd_fraction_high_bay": 0.0,
18513
18513
  "lpd_fraction_specialty_lighting": 0.0437,
18514
18514
  "lpd_fraction_exit_lighting": 0.0229,
18515
- "lighting_schedule": "HotelSmall BLDG_LIGHT_GUESTROOM_SCH_2013",
18515
+ "lighting_schedule": "SmallHotel GuestRoom Light",
18516
18516
  "compact_fluorescent_lighting_schedule": null,
18517
18517
  "high_bay_lighting_schedule": null,
18518
18518
  "specialty_lighting_schedule": null,
@@ -270983,32 +270983,32 @@
270983
270983
  "start_date": "2020-01-01T00:00:00+00:00",
270984
270984
  "end_date": "2020-12-31T00:00:00+00:00",
270985
270985
  "type": "Hourly",
270986
- "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project",
270987
- "values": [
270988
- 0.042575155,
270989
- 0.03399742,
270990
- 0.035513913,
270991
- 0.043202006,
270992
- 0.036947985,
270993
- 0.037735029,
270994
- 0.06295506,
270995
- 0.119435295,
270996
- 0.31817894,
270997
- 0.44737377,
270998
- 0.486605124,
270999
- 0.490400177,
271000
- 0.472467901,
271001
- 0.444558105,
271002
- 0.458064863,
271003
- 0.44297138,
271004
- 0.376717347,
271005
- 0.182711787,
271006
- 0.090701469,
271007
- 0.066120372,
271008
- 0.063250053,
271009
- 0.063842363,
271010
- 0.063529429,
271011
- 0.045156833
270986
+ "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project, scaled to 0.85 peak value",
270987
+ "values": [
270988
+ 0.049334,
270989
+ 0.033997,
270990
+ 0.036709,
270991
+ 0.050454,
270992
+ 0.039273,
270993
+ 0.04068,
270994
+ 0.085771,
270995
+ 0.186752,
270996
+ 0.542086,
270997
+ 0.773073,
270998
+ 0.843215,
270999
+ 0.85,
271000
+ 0.817939,
271001
+ 0.768039,
271002
+ 0.792188,
271003
+ 0.765202,
271004
+ 0.646746,
271005
+ 0.299884,
271006
+ 0.135379,
271007
+ 0.09143,
271008
+ 0.086298,
271009
+ 0.087357,
271010
+ 0.086798,
271011
+ 0.053949
271012
271012
  ]
271013
271013
  },
271014
271014
  {
@@ -271019,7 +271019,7 @@
271019
271019
  "start_date": "2020-01-01T00:00:00+00:00",
271020
271020
  "end_date": "2020-12-31T00:00:00+00:00",
271021
271021
  "type": "Hourly",
271022
- "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project",
271022
+ "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project, scaled to 0.85 peak value",
271023
271023
  "values": [
271024
271024
  0.044066259,
271025
271025
  0.044439702,
@@ -271068,7 +271068,7 @@
271068
271068
  "start_date": "2020-01-01T00:00:00+00:00",
271069
271069
  "end_date": "2020-12-31T00:00:00+00:00",
271070
271070
  "type": "Hourly",
271071
- "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project",
271071
+ "notes": "From end use data sources (Enertiv, PowerhouseDynamics) under EULP project, scaled to 0.85 peak value",
271072
271072
  "values": [
271073
271073
  0.044813145,
271074
271074
  0.043346048,
@@ -334883,7 +334883,7 @@
334883
334883
  "start_date": "2014-01-01T00:00:00+00:00",
334884
334884
  "end_date": "2014-12-31T00:00:00+00:00",
334885
334885
  "type": "Hourly",
334886
- "notes": "From DOE Reference Buildings ",
334886
+ "notes": "From DOE Reference Buildings; reduced midday value to 0.15",
334887
334887
  "values": [
334888
334888
  0.22,
334889
334889
  0.17,
@@ -334896,13 +334896,13 @@
334896
334896
  0.44,
334897
334897
  0.44,
334898
334898
  0.28,
334899
- 0.28,
334900
- 0.28,
334901
- 0.28,
334902
- 0.28,
334903
- 0.28,
334904
- 0.28,
334905
- 0.28,
334899
+ 0.15,
334900
+ 0.15,
334901
+ 0.15,
334902
+ 0.15,
334903
+ 0.15,
334904
+ 0.15,
334905
+ 0.15,
334906
334906
  0.67,
334907
334907
  0.89,
334908
334908
  1.0,
@@ -334932,7 +334932,7 @@
334932
334932
  "start_date": "2014-01-01T00:00:00+00:00",
334933
334933
  "end_date": "2014-12-31T00:00:00+00:00",
334934
334934
  "type": "Hourly",
334935
- "notes": "From DOE Reference Buildings ",
334935
+ "notes": "From DOE Reference Buildings; reduce midday value to 0.15",
334936
334936
  "values": [
334937
334937
  0.26,
334938
334938
  0.26,
@@ -334944,14 +334944,14 @@
334944
334944
  0.41,
334945
334945
  0.56,
334946
334946
  0.56,
334947
- 0.41,
334948
- 0.33,
334949
- 0.33,
334950
- 0.33,
334951
- 0.33,
334952
- 0.33,
334953
- 0.33,
334954
- 0.33,
334947
+ 0.35,
334948
+ 0.15,
334949
+ 0.15,
334950
+ 0.15,
334951
+ 0.15,
334952
+ 0.15,
334953
+ 0.15,
334954
+ 0.5,
334955
334955
  0.85,
334956
334956
  1.0,
334957
334957
  1.0,
@@ -16817,7 +16817,7 @@
16817
16817
  "lpd_fraction_high_bay": 0.215622,
16818
16818
  "lpd_fraction_specialty_lighting": 0.081,
16819
16819
  "lpd_fraction_exit_lighting": 0.0109,
16820
- "lighting_schedule": "RestaurantFastFood BLDG_LIGHT_DINING_SCH_2013",
16820
+ "lighting_schedule": "FoodService_Restaurant BLDG_LIGHT_EndUseData",
16821
16821
  "compact_fluorescent_lighting_schedule": null,
16822
16822
  "high_bay_lighting_schedule": null,
16823
16823
  "specialty_lighting_schedule": null,
@@ -16904,7 +16904,7 @@
16904
16904
  "lpd_fraction_high_bay": 0.0,
16905
16905
  "lpd_fraction_specialty_lighting": 0.11,
16906
16906
  "lpd_fraction_exit_lighting": 0.015,
16907
- "lighting_schedule": "RestaurantFastFood BLDG_LIGHT_KITCHEN_SCH_2010_2013",
16907
+ "lighting_schedule": "FoodService_Restaurant BLDG_LIGHT_EndUseData",
16908
16908
  "compact_fluorescent_lighting_schedule": null,
16909
16909
  "high_bay_lighting_schedule": null,
16910
16910
  "specialty_lighting_schedule": null,
@@ -19268,7 +19268,7 @@
19268
19268
  "lpd_fraction_high_bay": 0.0,
19269
19269
  "lpd_fraction_specialty_lighting": 0.0437,
19270
19270
  "lpd_fraction_exit_lighting": 0.0229,
19271
- "lighting_schedule": "Hospital BLDG_LIGHT_LOBBYFLR1_SCH",
19271
+ "lighting_schedule": "SmallHotel GuestRoom Light",
19272
19272
  "compact_fluorescent_lighting_schedule": null,
19273
19273
  "high_bay_lighting_schedule": null,
19274
19274
  "specialty_lighting_schedule": null,
@@ -19343,7 +19343,7 @@
19343
19343
  "lpd_fraction_high_bay": 0.0,
19344
19344
  "lpd_fraction_specialty_lighting": 0.0437,
19345
19345
  "lpd_fraction_exit_lighting": 0.0229,
19346
- "lighting_schedule": "HotelSmall BLDG_LIGHT_GUESTROOM_SCH_2013",
19346
+ "lighting_schedule": "SmallHotel GuestRoom Light",
19347
19347
  "compact_fluorescent_lighting_schedule": null,
19348
19348
  "high_bay_lighting_schedule": null,
19349
19349
  "specialty_lighting_schedule": null,
@@ -19517,7 +19517,7 @@
19517
19517
  "lpd_fraction_high_bay": 0.0,
19518
19518
  "lpd_fraction_specialty_lighting": 0.0437,
19519
19519
  "lpd_fraction_exit_lighting": 0.0229,
19520
- "lighting_schedule": "HotelSmall BLDG_LIGHT_GUESTROOM_SCH_2013",
19520
+ "lighting_schedule": "SmallHotel GuestRoom Light",
19521
19521
  "compact_fluorescent_lighting_schedule": null,
19522
19522
  "high_bay_lighting_schedule": null,
19523
19523
  "specialty_lighting_schedule": null,
@@ -428,12 +428,12 @@ class ASHRAE9012019 < ASHRAE901
428
428
  'climate_zone' => climate_zone,
429
429
  'under_8000_hours' => true,
430
430
  'nontransient_dwelling' => false,
431
- 'enthalpy_recovery_ratio_design_conditions' => "Cooling"
431
+ 'enthalpy_recovery_ratio_design_conditions' => 'Cooling'
432
432
  }
433
433
  energy_recovery_limits = model_find_object(standards_data['energy_recovery'], search_criteria)
434
434
  if energy_recovery_limits.nil?
435
435
  # Repeat the search for heating
436
- search_criteria['enthalpy_recovery_ratio_design_conditions'] = "Heating"
436
+ search_criteria['enthalpy_recovery_ratio_design_conditions'] = 'Heating'
437
437
  energy_recovery_limits = model_find_object(standards_data['energy_recovery'], search_criteria)
438
438
  if energy_recovery_limits.nil?
439
439
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.ashrae_90_1_2019.AirLoopHVAC', "Cannot find energy recovery limits for template '#{template}', climate zone '#{climate_zone}', and under 8000 hours, assuming no energy recovery required.")
@@ -464,7 +464,7 @@ class ASHRAE9012019 < ASHRAE901
464
464
  # Check if air loop serves a non-transient dwelling unit,
465
465
  # currently non-transient dwelling units are residential
466
466
  # spaces in the apartment prototypes
467
- building_data = model_get_building_climate_zone_and_building_type(air_loop_hvac.model)
467
+ building_data = model_get_building_properties(air_loop_hvac.model)
468
468
  building_type = building_data['building_type']
469
469
  nontrans_dwel = false
470
470
  if building_type == 'MidriseApartment' || building_type == 'HighriseApartment'
@@ -481,12 +481,12 @@ class ASHRAE9012019 < ASHRAE901
481
481
  'climate_zone' => climate_zone,
482
482
  'under_8000_hours' => false,
483
483
  'nontransient_dwelling' => nontrans_dwel,
484
- 'enthalpy_recovery_ratio_design_conditions' => "Cooling"
484
+ 'enthalpy_recovery_ratio_design_conditions' => 'Cooling'
485
485
  }
486
486
  energy_recovery_limits = model_find_object(standards_data['energy_recovery'], search_criteria)
487
487
  if energy_recovery_limits.nil?
488
488
  # Repeat the search for heating
489
- search_criteria['enthalpy_recovery_ratio_design_conditions'] = "Heating"
489
+ search_criteria['enthalpy_recovery_ratio_design_conditions'] = 'Heating'
490
490
  energy_recovery_limits = model_find_object(standards_data['energy_recovery'], search_criteria)
491
491
  if energy_recovery_limits.nil?
492
492
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.ashrae_90_1_2019.AirLoopHVAC', "Cannot find energy recovery limits for template '#{template}', climate zone '#{climate_zone}', and under 8000 hours, assuming no energy recovery required.")
@@ -640,46 +640,49 @@ class ASHRAE9012019 < ASHRAE901
640
640
  # Controller:MechanicalVentilation object
641
641
  # to the design v_ot using the maximum OA
642
642
  # fraction schedule
643
-
644
- # Add EMS sensors
645
- # OA mass flow calculated by the Controller:MechanicalVentilation
646
- air_loop_hvac_name_ems = "EMS_#{air_loop_hvac.name.to_s.gsub(' ', '_')}"
647
- oa_vrp_mass_flow = OpenStudio::Model::EnergyManagementSystemSensor.new(air_loop_hvac.model, 'Air System Outdoor Air Mechanical Ventilation Requested Mass Flow Rate')
648
- oa_vrp_mass_flow.setKeyName(air_loop_hvac.name.to_s)
649
- oa_vrp_mass_flow.setName("#{air_loop_hvac_name_ems}_OA_VRP")
650
- # Actual sensed OA mass flow
651
- oa_mass_flow = OpenStudio::Model::EnergyManagementSystemSensor.new(air_loop_hvac.model, 'Air System Outdoor Air Mass Flow Rate')
652
- oa_mass_flow.setKeyName(air_loop_hvac.name.to_s)
653
- oa_mass_flow.setName("#{air_loop_hvac_name_ems}_OA")
654
- # Actual sensed volumetric OA flow
655
- oa_vol_flow = OpenStudio::Model::EnergyManagementSystemSensor.new(air_loop_hvac.model, 'System Node Standard Density Volume Flow Rate')
656
- oa_vol_flow.setKeyName("#{air_loop_hvac.name} Mixed Air Node")
657
- oa_vol_flow.setName("#{air_loop_hvac_name_ems}_SUPPLY_FLOW")
658
-
659
- # Add EMS actuator
660
- max_oa_fraction = OpenStudio::Model::EnergyManagementSystemActuator.new(max_oa_frac_sch, max_oa_frac_sch_type, 'Schedule Value')
661
- max_oa_fraction.setName("#{air_loop_hvac_name_ems}_MAX_OA_FRAC")
662
-
663
- # Add EMS program
664
- max_oa_ems_prog = OpenStudio::Model::EnergyManagementSystemProgram.new(air_loop_hvac.model)
665
- max_oa_ems_prog.setName("#{air_loop_hvac.name}_MAX_OA_FRAC")
666
- max_oa_ems_prog_body = <<-EMS
667
- IF #{air_loop_hvac_name_ems}_OA > #{air_loop_hvac_name_ems}_OA_VRP,
668
- SET #{air_loop_hvac_name_ems}_MAX_OA_FRAC = NULL,
669
- ELSE,
670
- IF #{air_loop_hvac_name_ems}_SUPPLY_FLOW > 0,
671
- SET #{air_loop_hvac_name_ems}_MAX_OA_FRAC = #{v_ot} / #{air_loop_hvac_name_ems}_SUPPLY_FLOW,
672
- ELSE,
673
- SET #{air_loop_hvac_name_ems}_MAX_OA_FRAC = NULL,
674
- ENDIF,
675
- ENDIF
676
- EMS
677
- max_oa_ems_prog.setBody(max_oa_ems_prog_body)
678
-
679
- max_oa_ems_prog_manager = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(air_loop_hvac.model)
680
- max_oa_ems_prog_manager.setName("SET_#{air_loop_hvac.name.to_s.gsub(' ', '_')}_MAX_OA_FRAC")
681
- max_oa_ems_prog_manager.setCallingPoint('InsideHVACSystemIterationLoop')
682
- max_oa_ems_prog_manager.addProgram(max_oa_ems_prog)
643
+ # In newer EnergyPlus versions, this is handled by Standard62.1VentilationRateProcedureWithLimit
644
+ # in the Controller:MechanicalVentilation object
645
+ if air_loop_hvac.model.version < OpenStudio::VersionString.new('3.3.0')
646
+ # Add EMS sensors
647
+ # OA mass flow calculated by the Controller:MechanicalVentilation
648
+ air_loop_hvac_name_ems = "EMS_#{air_loop_hvac.name.to_s.gsub(' ', '_')}"
649
+ oa_vrp_mass_flow = OpenStudio::Model::EnergyManagementSystemSensor.new(air_loop_hvac.model, 'Air System Outdoor Air Mechanical Ventilation Requested Mass Flow Rate')
650
+ oa_vrp_mass_flow.setKeyName(air_loop_hvac.name.to_s)
651
+ oa_vrp_mass_flow.setName("#{air_loop_hvac_name_ems}_OA_VRP")
652
+ # Actual sensed OA mass flow
653
+ oa_mass_flow = OpenStudio::Model::EnergyManagementSystemSensor.new(air_loop_hvac.model, 'Air System Outdoor Air Mass Flow Rate')
654
+ oa_mass_flow.setKeyName(air_loop_hvac.name.to_s)
655
+ oa_mass_flow.setName("#{air_loop_hvac_name_ems}_OA")
656
+ # Actual sensed volumetric OA flow
657
+ oa_vol_flow = OpenStudio::Model::EnergyManagementSystemSensor.new(air_loop_hvac.model, 'System Node Standard Density Volume Flow Rate')
658
+ oa_vol_flow.setKeyName("#{air_loop_hvac.name} Mixed Air Node")
659
+ oa_vol_flow.setName("#{air_loop_hvac_name_ems}_SUPPLY_FLOW")
660
+
661
+ # Add EMS actuator
662
+ max_oa_fraction = OpenStudio::Model::EnergyManagementSystemActuator.new(max_oa_frac_sch, max_oa_frac_sch_type, 'Schedule Value')
663
+ max_oa_fraction.setName("#{air_loop_hvac_name_ems}_MAX_OA_FRAC")
664
+
665
+ # Add EMS program
666
+ max_oa_ems_prog = OpenStudio::Model::EnergyManagementSystemProgram.new(air_loop_hvac.model)
667
+ max_oa_ems_prog.setName("#{air_loop_hvac.name}_MAX_OA_FRAC")
668
+ max_oa_ems_prog_body = <<-EMS
669
+ IF #{air_loop_hvac_name_ems}_OA > #{air_loop_hvac_name_ems}_OA_VRP,
670
+ SET #{air_loop_hvac_name_ems}_MAX_OA_FRAC = NULL,
671
+ ELSE,
672
+ IF #{air_loop_hvac_name_ems}_SUPPLY_FLOW > 0,
673
+ SET #{air_loop_hvac_name_ems}_MAX_OA_FRAC = #{v_ot} / #{air_loop_hvac_name_ems}_SUPPLY_FLOW,
674
+ ELSE,
675
+ SET #{air_loop_hvac_name_ems}_MAX_OA_FRAC = NULL,
676
+ ENDIF,
677
+ ENDIF
678
+ EMS
679
+ max_oa_ems_prog.setBody(max_oa_ems_prog_body)
680
+
681
+ max_oa_ems_prog_manager = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(air_loop_hvac.model)
682
+ max_oa_ems_prog_manager.setName("SET_#{air_loop_hvac.name.to_s.gsub(' ', '_')}_MAX_OA_FRAC")
683
+ max_oa_ems_prog_manager.setCallingPoint('InsideHVACSystemIterationLoop')
684
+ max_oa_ems_prog_manager.addProgram(max_oa_ems_prog)
685
+ end
683
686
 
684
687
  # Hard-size the sizing:system
685
688
  # object with the calculated min OA flow rate
@@ -44,7 +44,8 @@ class ASHRAE9012019 < ASHRAE901
44
44
  end
45
45
 
46
46
  # Set fan operating schedule during assumed occupant standby mode time to 0 so the fan can cycle
47
- new_sch = model_set_schedule_value(zone_hvac_component.supplyAirFanOperatingModeSchedule.get, '12' => 0)
47
+ # ZoneHVACFourPipeFanCoil has it optional, PTAC/PTHP starting a 3.5.0 is required
48
+ new_sch = model_set_schedule_value(OpenStudio::Model::OptionalSchedule.new(zone_hvac_component.supplyAirFanOperatingModeSchedule).get, '12' => 0)
48
49
  zone_hvac_component.setSupplyAirFanOperatingModeSchedule(new_sch) unless new_sch == true
49
50
 
50
51
  return true