openstudio-standards 0.8.3 → 0.8.5.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAECollege.osm +30 -30
  3. data/data/geometry/ASHRAECourthouse.osm +22 -22
  4. data/data/geometry/ASHRAESmallOfficeDetailed.osm +2 -2
  5. data/data/geometry/DEER_Asm.osm +1 -1
  6. data/data/geometry/DEER_ECC.osm +1 -1
  7. data/data/geometry/DEER_EPr.osm +1 -1
  8. data/data/geometry/DEER_ERC.osm +1 -1
  9. data/data/geometry/DEER_ESe.osm +1 -1
  10. data/data/geometry/DEER_EUn.osm +1 -1
  11. data/data/geometry/DEER_Hsp.osm +1 -1
  12. data/data/geometry/DEER_Htl.osm +1 -1
  13. data/data/geometry/DEER_MBT.osm +1 -1
  14. data/data/geometry/DEER_MFm.osm +1 -1
  15. data/data/geometry/DEER_Nrs.osm +1 -1
  16. data/data/geometry/DEER_OfL.osm +1 -1
  17. data/data/geometry/DEER_OfS.osm +1 -1
  18. data/data/geometry/DEER_RFF.osm +1 -1
  19. data/data/geometry/DEER_RSD.osm +1 -1
  20. data/data/geometry/DEER_Rt3.osm +1 -1
  21. data/data/geometry/DEER_RtS.osm +1 -1
  22. data/data/standards/export_OpenStudio_libraries.rb +2 -3
  23. data/data/standards/test_performance_expected_dd_results.csv +42 -42
  24. data/lib/openstudio-standards/btap/NECB_building_types.csv +35 -0
  25. data/lib/openstudio-standards/btap/NECB_space_types.csv +109 -0
  26. data/lib/openstudio-standards/btap/activity.rb +480 -0
  27. data/lib/openstudio-standards/btap/attributes.rb +166 -0
  28. data/lib/openstudio-standards/btap/bridging.rb +561 -1402
  29. data/lib/openstudio-standards/btap/btap.rb +4 -2
  30. data/lib/openstudio-standards/btap/btap_test_helper.rb +86 -0
  31. data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +177 -0
  32. data/lib/openstudio-standards/btap/common_paths.rb +81 -0
  33. data/lib/openstudio-standards/btap/common_resources/ConstructionProperties.csv +52 -0
  34. data/lib/openstudio-standards/btap/common_resources/Constructions.csv +37 -0
  35. data/lib/openstudio-standards/btap/common_resources/carbon_frame.csv +35 -0
  36. data/lib/openstudio-standards/btap/common_resources/carbon_glazing.csv +35 -0
  37. data/lib/openstudio-standards/btap/common_resources/carbon_opaque.csv +164 -0
  38. data/lib/openstudio-standards/btap/common_resources/construction_sets.csv +1270 -0
  39. data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +121 -0
  40. data/lib/openstudio-standards/btap/common_resources/constructions_opaque.csv +2256 -0
  41. data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
  42. data/lib/openstudio-standards/btap/common_resources/costs_local_factors.csv +2315 -0
  43. data/lib/openstudio-standards/btap/common_resources/hvac_vent_ahu.csv +925 -0
  44. data/lib/openstudio-standards/btap/common_resources/lighting.csv +364 -0
  45. data/lib/openstudio-standards/btap/common_resources/lighting_sets.csv +2667 -0
  46. data/lib/openstudio-standards/btap/common_resources/locations.csv +75 -0
  47. data/lib/openstudio-standards/btap/common_resources/materials_glazing.csv +35 -0
  48. data/lib/openstudio-standards/btap/common_resources/materials_hvac.csv +1686 -0
  49. data/lib/openstudio-standards/btap/common_resources/materials_lighting.csv +267 -0
  50. data/lib/openstudio-standards/btap/common_resources/materials_opaque.csv +164 -0
  51. data/lib/openstudio-standards/btap/costing/README.md +502 -0
  52. data/lib/openstudio-standards/btap/costing/btap_costing.rb +469 -0
  53. data/lib/openstudio-standards/btap/costing/btap_measure_helper.rb +359 -0
  54. data/lib/openstudio-standards/btap/costing/btap_workflow.rb +117 -0
  55. data/lib/openstudio-standards/btap/costing/copy_test_results_files_to_expected_results.rb +11 -0
  56. data/lib/openstudio-standards/btap/costing/cost_building_from_file.rb +136 -0
  57. data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +173 -0
  58. data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +354 -0
  59. data/lib/openstudio-standards/btap/costing/dcv_costing.rb +314 -0
  60. data/lib/openstudio-standards/btap/costing/dummy.epw +8768 -0
  61. data/lib/openstudio-standards/btap/costing/dummy.osm +5320 -0
  62. data/lib/openstudio-standards/btap/costing/envelope_costing.rb +215 -0
  63. data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +2584 -0
  64. data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +156 -0
  65. data/lib/openstudio-standards/btap/costing/lighting_costing.rb +209 -0
  66. data/lib/openstudio-standards/btap/costing/mech_sizing.json +502 -0
  67. data/lib/openstudio-standards/btap/costing/neb_end_use_prices.csv +42 -0
  68. data/lib/openstudio-standards/btap/costing/necb_2011_spacetype_info.csv +225 -0
  69. data/lib/openstudio-standards/btap/costing/necb_reference_runs.csv +28705 -0
  70. data/lib/openstudio-standards/btap/costing/nv_costing.rb +547 -0
  71. data/lib/openstudio-standards/btap/costing/parallel_tests.rb +92 -0
  72. data/lib/openstudio-standards/btap/costing/pv_ground_costing.rb +687 -0
  73. data/lib/openstudio-standards/btap/costing/shw_costing.rb +705 -0
  74. data/lib/openstudio-standards/btap/costing/test_list.txt +15 -0
  75. data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +27 -0
  76. data/lib/openstudio-standards/btap/costing/test_run_costing_tests.rb +80 -0
  77. data/lib/openstudio-standards/btap/costing/ventilation_costing.rb +2616 -0
  78. data/lib/openstudio-standards/btap/geometry.rb +86 -6
  79. data/lib/openstudio-standards/btap/structure.rb +657 -0
  80. data/lib/openstudio-standards/constructions/modify.rb +2 -1
  81. data/lib/openstudio-standards/create_typical/create_typical.rb +17 -33
  82. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +36 -36
  83. data/lib/openstudio-standards/equipment/create_transformer.rb +104 -0
  84. data/lib/openstudio-standards/equipment/create_typical_equipment.rb +117 -0
  85. data/lib/openstudio-standards/equipment/data/electric_equipment_space_types.json +1514 -0
  86. data/lib/openstudio-standards/equipment/data/gas_equipment_space_types.json +227 -0
  87. data/lib/openstudio-standards/exterior_lighting/create.rb +22 -22
  88. data/lib/openstudio-standards/exterior_lighting/information.rb +3 -2
  89. data/lib/openstudio-standards/hvac/components/air_conditioner_vrf.rb +482 -0
  90. data/lib/openstudio-standards/hvac/components/air_terminal.rb +31 -0
  91. data/lib/openstudio-standards/hvac/components/boiler_hot_water.rb +163 -0
  92. data/lib/openstudio-standards/hvac/components/central_air_source_heat_pump.rb +220 -0
  93. data/lib/openstudio-standards/hvac/components/chiller.rb +25 -0
  94. data/lib/openstudio-standards/hvac/components/coil.rb +276 -0
  95. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_multi_speed.rb +40 -0
  96. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_single_speed.rb +300 -0
  97. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_two_speed.rb +187 -0
  98. data/lib/openstudio-standards/hvac/components/coil_cooling_water.rb +80 -0
  99. data/lib/openstudio-standards/hvac/components/coil_cooling_water_to_air_heat_pump_equation_fit.rb +182 -0
  100. data/lib/openstudio-standards/hvac/components/coil_heating_dx_single_speed.rb +220 -0
  101. data/lib/openstudio-standards/hvac/components/coil_heating_electric.rb +56 -0
  102. data/lib/openstudio-standards/hvac/components/coil_heating_gas.rb +90 -0
  103. data/lib/openstudio-standards/hvac/components/coil_heating_gas_multi_stage.rb +33 -0
  104. data/lib/openstudio-standards/hvac/components/coil_heating_water.rb +98 -0
  105. data/lib/openstudio-standards/hvac/components/coil_heating_water_to_air_heat_pump_equation_fit.rb +147 -0
  106. data/lib/openstudio-standards/hvac/components/component.rb +39 -0
  107. data/lib/openstudio-standards/{standards/ashrae_90_1/data/ashrae_90_1.fans.json → hvac/components/data/fans.json} +6 -6
  108. data/lib/openstudio-standards/hvac/components/fan.rb +363 -0
  109. data/lib/openstudio-standards/hvac/components/heat_exchanger_air_to_air.rb +203 -0
  110. data/lib/openstudio-standards/hvac/components/pump.rb +181 -0
  111. data/lib/openstudio-standards/hvac/controls/radiant_system_controls.rb +594 -0
  112. data/lib/openstudio-standards/hvac/conversions.rb +222 -0
  113. data/lib/openstudio-standards/hvac/curves.rb +192 -0
  114. data/lib/openstudio-standards/hvac/helpers.rb +357 -0
  115. data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +4 -4
  116. data/lib/openstudio-standards/interior_lighting/create_lights.rb +52 -0
  117. data/lib/openstudio-standards/interior_lighting/create_typical_interior_lighting.rb +254 -0
  118. data/lib/openstudio-standards/interior_lighting/data/convert_lighting_data.rb +249 -0
  119. data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.csv +96 -0
  120. data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.json +1429 -0
  121. data/lib/openstudio-standards/interior_lighting/data/lighting_technology.csv +46 -0
  122. data/lib/openstudio-standards/interior_lighting/data/lighting_technology.json +859 -0
  123. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  124. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  125. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  126. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -4
  127. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  128. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -4
  129. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  130. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  131. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +6 -7
  132. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +15 -15
  133. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +4 -4
  134. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +5 -5
  135. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +6 -6
  136. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +7 -7
  137. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +4 -4
  138. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +6 -6
  139. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +5 -1
  140. data/lib/openstudio-standards/prototypes/common/data/prototype_space_type_map.json +2594 -0
  141. data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +2108 -0
  142. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -0
  143. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -140
  144. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -73
  145. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -69
  146. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +0 -116
  147. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +0 -61
  148. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +2 -2
  149. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +128 -13
  150. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +606 -607
  151. data/lib/openstudio-standards/prototypes/common/prototype_space_type_map.rb +41 -0
  152. data/lib/openstudio-standards/prototypes/common/space_type_equipment_map.rb +184 -0
  153. data/lib/openstudio-standards/prototypes/common/space_type_thermostat_schedule_map.rb +116 -0
  154. data/lib/openstudio-standards/qaqc/hvac.rb +12 -12
  155. data/lib/openstudio-standards/refrigeration/create_compressor.rb +2 -5
  156. data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +4 -4
  157. data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +1 -2
  158. data/lib/openstudio-standards/service_water_heating/create_water_use.rb +5 -5
  159. data/lib/openstudio-standards/space_type/data/level_1_space_types.json +612 -0
  160. data/lib/openstudio-standards/space_type/standards_space_type.rb +53 -0
  161. data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +8 -26
  162. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +13 -13
  163. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -24
  164. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +6 -43
  165. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +7 -24
  166. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +19 -44
  167. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +25 -50
  168. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +25 -33
  169. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -22
  170. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +15 -157
  171. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -2
  172. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +18 -105
  173. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +3 -23
  174. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +0 -24
  175. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -86
  176. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +0 -107
  177. data/lib/openstudio-standards/standards/Standards.Model.rb +45 -20
  178. data/lib/openstudio-standards/standards/Standards.People.rb +113 -0
  179. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -11
  180. data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -147
  181. data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +57 -41
  182. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +30 -153
  183. data/lib/openstudio-standards/standards/Standards.Ventilation.rb +74 -0
  184. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +1 -1
  185. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -4
  186. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +3 -3
  187. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +37 -112
  188. 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 +37 -102
  189. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +3 -3
  190. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +37 -112
  191. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  192. 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 +37 -37
  193. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +6 -6
  194. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +37 -37
  195. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  196. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.BoilerHotWater.rb +1 -1
  197. 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 +37 -102
  198. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +6 -6
  199. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +37 -37
  200. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  201. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.BoilerHotWater.rb +1 -1
  202. 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 +45 -109
  203. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +6 -6
  204. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +37 -37
  205. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
  206. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  207. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.BoilerHotWater.rb +1 -1
  208. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoilHeatingGas.rb +1 -1
  209. 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 +45 -109
  210. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +6 -6
  211. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +37 -37
  212. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +0 -200
  213. 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 +37 -37
  214. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +37 -37
  215. 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 +37 -37
  216. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +37 -37
  217. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  218. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +5 -5
  219. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  220. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +5 -5
  221. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
  222. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +2 -2
  223. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +2 -68
  224. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +2 -35
  225. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +42 -0
  226. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +5 -2
  227. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +2 -2
  228. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +2 -2
  229. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +3 -3
  230. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -1
  231. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +1 -0
  232. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +2 -4
  233. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +0 -200
  234. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +5 -5
  235. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +7 -1
  236. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +0 -1
  237. data/lib/openstudio-standards/standards/cbes/data/cbes.curves.json +0 -200
  238. data/lib/openstudio-standards/standards/deer/data/deer.curves.json +0 -200
  239. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +21 -37
  240. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
  241. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +68 -27
  242. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +64 -25
  243. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +9 -14
  244. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +4 -4
  245. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +1 -1
  246. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +115 -112
  247. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +637 -249
  248. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +16 -12
  249. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +799 -46
  250. data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +33 -51
  251. data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +75 -7
  252. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +25 -1
  253. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/HighriseApartmentMult.osm +14272 -0
  254. data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
  255. data/lib/openstudio-standards/standards/necb/NECB2011/data/necb_2015_table_c1.json +1 -1
  256. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +437 -437
  257. data/lib/openstudio-standards/standards/necb/NECB2011/data/systems.json +516 -0
  258. data/lib/openstudio-standards/standards/necb/NECB2011/data/systems_including_sys5.json +588 -0
  259. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +489 -0
  260. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +18 -6
  261. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +48 -5
  262. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +2 -2
  263. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +35 -27
  264. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +34 -23
  265. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +8 -6
  266. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +68 -150
  267. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +444 -134
  268. data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +61 -1
  269. data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
  270. data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +636 -636
  271. data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +38 -38
  272. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +17 -8
  273. data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +636 -636
  274. data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +71 -71
  275. data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +16 -6
  276. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +60 -61
  277. data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +30 -30
  278. data/lib/openstudio-standards/standards/necb/README.md +343 -0
  279. data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +79 -0
  280. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +206 -32
  281. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +75 -43
  282. data/lib/openstudio-standards/standards/necb/common/eccc_electric_grid_intensity_20250311.csv +14 -0
  283. data/lib/openstudio-standards/standards/necb/common/nir_gas_grid_intensity_20250311.csv +14 -0
  284. data/lib/openstudio-standards/standards/necb/common/system_types.yaml +0 -0
  285. data/lib/openstudio-standards/thermal_zone/{thermal_zone.rb → information.rb} +12 -45
  286. data/lib/openstudio-standards/thermal_zone/thermostat_schedules.rb +152 -0
  287. data/lib/openstudio-standards/utilities/logging.rb +18 -14
  288. data/lib/openstudio-standards/version.rb +1 -1
  289. data/lib/openstudio-standards/weather/modify.rb +2 -2
  290. data/lib/openstudio-standards/weather/stat_file.rb +2 -2
  291. data/lib/openstudio-standards.rb +67 -38
  292. metadata +141 -50
  293. data/lib/openstudio-standards/hvac/components/create.rb +0 -169
  294. data/lib/openstudio-standards/hvac/components/modify.rb +0 -42
  295. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +0 -438
  296. data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +0 -123
  297. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +0 -216
  298. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +0 -273
  299. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +0 -159
  300. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +0 -77
  301. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -154
  302. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +0 -214
  303. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +0 -53
  304. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +0 -72
  305. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +0 -95
  306. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -125
  307. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +0 -17
  308. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +0 -90
  309. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +0 -4
  310. data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +0 -70
  311. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +0 -590
  312. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +0 -901
  313. data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -5
  314. data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -5
  315. data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -5
  316. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -5
  317. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -55
  318. data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -5
  319. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +0 -5
  320. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +0 -5
  321. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +0 -5
  322. data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +0 -328
  323. data/lib/openstudio-standards/standards/deer/data/deer.fans.json +0 -328
  324. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +0 -0
  325. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +0 -0
  326. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +0 -0
  327. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +0 -0
  328. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +0 -0
  329. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +0 -0
  330. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +0 -0
@@ -52,7 +52,10 @@ class BTAPPRE1980
52
52
  air_loop = add_system_3_and_8_airloop(heating_coil_type,
53
53
  model,
54
54
  system_data,
55
- determine_control_zone(zones))
55
+ determine_control_zone(zones),
56
+ necb_reference_hp: necb_reference_hp,
57
+ necb_reference_hp_supp_fuel: necb_reference_hp_supp_fuel,
58
+ hw_loop: hw_loop)
56
59
  # Add Zone equipment
57
60
  zones.each do |zone| # Zone sizing temperature
58
61
  sizing_zone = zone.sizingZone
@@ -60,8 +63,13 @@ class BTAPPRE1980
60
63
  sizing_zone.setZoneCoolingDesignSupplyAirTemperatureDifference(system_data[:ZoneCoolingDesignSupplyAirTemperatureDifference])
61
64
  sizing_zone.setZoneHeatingDesignSupplyAirTemperatureInputMethod(system_data[:ZoneHeatingDesignSupplyAirTemperatureInputMethod])
62
65
  sizing_zone.setZoneHeatingDesignSupplyAirTemperatureDifference(system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference])
63
- sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
64
- sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
66
+ if necb_reference_hp
67
+ sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneDXCoolingSizingFactor])
68
+ sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneDXHeatingSizingFactor])
69
+ else
70
+ sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
71
+ sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
72
+ end
65
73
  add_sys3_and_8_zone_equip(air_loop,
66
74
  baseboard_type,
67
75
  hw_loop,
@@ -70,7 +78,7 @@ class BTAPPRE1980
70
78
  end
71
79
  else
72
80
  zones.each do |zone|
73
- air_loop = add_system_3_and_8_airloop(heating_coil_type, model, system_data, zone)
81
+ air_loop = add_system_3_and_8_airloop(heating_coil_type, model, system_data, zone, necb_reference_hp: necb_reference_hp, necb_reference_hp_supp_fuel: necb_reference_hp_supp_fuel, hw_loop: hw_loop)
74
82
  add_sys3_and_8_zone_equip(air_loop,
75
83
  baseboard_type,
76
84
  hw_loop,
@@ -83,19 +91,22 @@ class BTAPPRE1980
83
91
  sys_name_pars = {}
84
92
  sys_name_pars['sys_hr'] = 'none'
85
93
  sys_name_pars['sys_clg'] = 'dx'
94
+ sys_name_pars['sys_clg'] = 'ashp' if necb_reference_hp
86
95
  sys_name_pars['sys_htg'] = heating_coil_type
96
+ sys_name_pars['sys_htg'] = 'ashp>c-g' if necb_reference_hp && (necb_reference_hp_supp_fuel == "NaturalGas" || necb_reference_hp_supp_fuel == "Gas")
97
+ sys_name_pars['sys_htg'] = 'ashp>c-e' if necb_reference_hp && (necb_reference_hp_supp_fuel == "Electricity" || necb_reference_hp_supp_fuel == "Electric" || necb_reference_hp_supp_fuel == "FuelOilNo2")
98
+ sys_name_pars['sys_htg'] = 'ashp>c-hw' if necb_reference_hp && (necb_reference_hp_supp_fuel == "Hot Water" || necb_reference_hp_supp_fuel == "HotWater")
87
99
  sys_name_pars['sys_sf'] = 'cv'
88
100
  sys_name_pars['zone_htg'] = baseboard_type
89
101
  sys_name_pars['zone_clg'] = 'none'
90
102
  sys_name_pars['sys_rf'] = 'none'
91
- assign_base_sys_name(air_loop,
103
+ return assign_base_sys_name(air_loop: air_loop,
92
104
  sys_abbr: 'sys_3',
93
105
  sys_oa: 'mixed',
94
106
  sys_name_pars: sys_name_pars)
95
- return true
96
107
  end
97
108
 
98
- def add_system_3_and_8_airloop(heating_coil_type, model, system_data, control_zone)
109
+ def add_system_3_and_8_airloop(heating_coil_type, model, system_data, control_zone, necb_reference_hp:false, necb_reference_hp_supp_fuel:'DefaultFuel', necb_reference_hp_fancoil: false, hw_loop: nil)
99
110
  # System Type 3: PSZ-AC
100
111
  # This measure creates:
101
112
  # -a constant volume packaged single-zone A/C unit
@@ -118,25 +129,43 @@ class BTAPPRE1980
118
129
  sizing_zone.setZoneCoolingDesignSupplyAirTemperatureDifference(system_data[:ZoneCoolingDesignSupplyAirTemperatureDifference])
119
130
  sizing_zone.setZoneHeatingDesignSupplyAirTemperatureInputMethod(system_data[:ZoneHeatingDesignSupplyAirTemperatureInputMethod])
120
131
  sizing_zone.setZoneHeatingDesignSupplyAirTemperatureDifference(system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference])
121
- sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
122
- sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
132
+ if necb_reference_hp
133
+ sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneDXCoolingSizingFactor])
134
+ sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneDXHeatingSizingFactor])
135
+ else
136
+ sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
137
+ sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
138
+ end
123
139
 
124
140
  fan = OpenStudio::Model::FanConstantVolume.new(model, always_on)
125
141
 
142
+ # Set up DX coil
143
+ if necb_reference_hp #NECB curve characteristics
144
+ clg_coil = add_onespeed_DX_coil(model, always_on)
145
+ clg_coil.setName('CoilCoolingDXSingleSpeed_ashp')
146
+ else
147
+ clg_coil = OpenStudio::Model::CoilCoolingDXSingleSpeed.new(model) #sets default OS curve (but will be replaced with NECB curves later)
148
+ clg_coil.setName('CoilCoolingDXSingleSpeed_dx')
149
+ end
126
150
  # Create a return fan for BTAPPRE1980 system 3 systems
127
151
  return_fan = OpenStudio::Model::FanConstantVolume.new(model, always_on)
128
152
  return_fan.setName('Sys3 Return Fan')
129
153
  return_fan.setEndUseSubcategory('Return_Fan')
130
154
 
155
+ raise("Flag 'necb_reference_hp' is set to true while parameter 'heating_coil_type' is not set to DX") if (necb_reference_hp && (heating_coil_type != 'DX'))
131
156
  case heating_coil_type
132
- when 'Electric' # electric coil
157
+ when 'Electric', 'Electricity', "FuelOilNo2" # electric coil
133
158
  htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
134
- when 'Gas'
159
+ when 'Gas', 'NaturalGas'
135
160
  htg_coil = OpenStudio::Model::CoilHeatingGas.new(model, always_on)
161
+ when 'Hot Water', 'HotWater'
162
+ htg_coil = OpenStudio::Model::CoilHeatingWater.new(model, always_on)
163
+ hw_loop.addDemandBranchForComponent(htg_coil)
136
164
  when 'DX'
137
- htg_coil = OpenStudio::Model::CoilHeatingDXSingleSpeed.new(model)
138
- supplemental_htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
165
+ #create main DX heating coil
166
+ htg_coil = add_onespeed_htg_DX_coil(model, always_on)
139
167
  htg_coil.setMinimumOutdoorDryBulbTemperatureforCompressorOperation(system_data[:MinimumOutdoorDryBulbTemperatureforCompressorOperation])
168
+ htg_coil.setName('CoilHeatingDXSingleSpeed_ashp')
140
169
  sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneDXHeatingSizingFactor])
141
170
  sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneDXCoolingSizingFactor])
142
171
  else
@@ -145,9 +174,7 @@ class BTAPPRE1980
145
174
 
146
175
  # TO DO: other fuel-fired heating coil types? (not available in OpenStudio/E+ - may need to play with efficiency to mimic other fuel types)
147
176
 
148
- # Set up DX coil with NECB performance curve characteristics;
149
- clg_coil = OpenStudio::Model::CoilCoolingDXSingleSpeed.new(model)
150
- clg_coil.setName('CoilCoolingDXSingleSpeed_dx')
177
+
151
178
 
152
179
  # oa_controller
153
180
  oa_controller = OpenStudio::Model::ControllerOutdoorAir.new(model)
@@ -163,17 +190,31 @@ class BTAPPRE1980
163
190
  # Add the components to the air loop
164
191
  # in order from closest to zone to furthest from zone
165
192
  supply_inlet_node = air_loop.supplyInletNode
166
- if heating_coil_type == 'DX'
167
- air_to_air_heatpump = OpenStudio::Model::AirLoopHVACUnitaryHeatPumpAirToAir.new(model, always_on, fan, htg_coil, clg_coil, supplemental_htg_coil)
168
- air_to_air_heatpump.setName("#{control_zone.name} ASHP")
169
- air_to_air_heatpump.setControllingZone(control_zone)
170
- air_to_air_heatpump.setSupplyAirFanOperatingModeSchedule(always_on)
171
- air_to_air_heatpump.addToNode(supply_inlet_node)
172
- else
173
- fan.addToNode(supply_inlet_node)
174
- htg_coil.addToNode(supply_inlet_node)
175
- clg_coil.addToNode(supply_inlet_node)
193
+ fan.addToNode(supply_inlet_node)
194
+ if necb_reference_hp
195
+ #create supplemental heating coil based on default regional fuel type
196
+ if necb_reference_hp_supp_fuel == 'DefaultFuel'
197
+ epw = OpenStudio::EpwFile.new(model.weatherFile.get.path.get)
198
+ necb_reference_hp_supp_fuel = @standards_data['regional_fuel_use'].detect { |fuel_sources| fuel_sources['state_province_regions'].include?(epw.stateProvinceRegion) }['fueltype_set']
199
+ end
200
+ if necb_reference_hp_supp_fuel == 'NaturalGas' || necb_reference_hp_supp_fuel == 'Gas'
201
+ supplemental_htg_coil = OpenStudio::Model::CoilHeatingGas.new(model, always_on)
202
+ elsif necb_reference_hp_supp_fuel == 'Electricity' || necb_reference_hp_supp_fuel == 'Electric' || necb_reference_hp_supp_fuel == 'FuelOilNo2'
203
+ supplemental_htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
204
+ elsif necb_reference_hp_supp_fuel == 'Hot Water' || necb_reference_hp_supp_fuel == "HotWater"
205
+ supplemental_htg_coil = OpenStudio::Model::CoilHeatingWater.new(model, always_on)
206
+ hw_loop.addDemandBranchForComponent(supplemental_htg_coil)
207
+ else
208
+ raise('Invalid fuel type selected for heat pump supplemental coil')
209
+ end
210
+ #air_to_air_heatpump.setName("#{control_zone.name} ASHP")
211
+ #air_to_air_heatpump.setControllingZone(control_zone)
212
+ #air_to_air_heatpump.setSupplyAirFanOperatingModeSchedule(always_on)
213
+ #air_to_air_heatpump.addToNode(supply_inlet_node)
214
+ supplemental_htg_coil.addToNode(supply_inlet_node)
176
215
  end
216
+ htg_coil.addToNode(supply_inlet_node)
217
+ clg_coil.addToNode(supply_inlet_node)
177
218
  oa_system.addToNode(supply_inlet_node)
178
219
 
179
220
  # Find return air node and add a return air fan to it for BTAPPRE1980 system 3 airloops.
@@ -195,8 +236,8 @@ class BTAPPRE1980
195
236
  hw_loop, model,
196
237
  zone)
197
238
  always_on = model.alwaysOnDiscreteSchedule
239
+ add_zone_baseboards(baseboard_type: baseboard_type, hw_loop: hw_loop, model: model, zone: zone)
198
240
  diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
199
241
  air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
200
- add_zone_baseboards(baseboard_type: baseboard_type, hw_loop: hw_loop, model: model, zone: zone)
201
242
  end
202
243
  end
@@ -37,6 +37,9 @@ class BTAPPRE1980
37
37
  system_data[:ZoneCoolingDesignSupplyAirTemperatureDifference] = 11.0
38
38
  system_data[:ZoneHeatingDesignSupplyAirTemperatureInputMethod] = 'TemperatureDifference'
39
39
  system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference] = 21.0
40
+ system_data[:ZoneHeatingDesignSupplyAirTemperature] = 43.0
41
+ system_data[:ZoneDXCoolingSizingFactor] = 1.0
42
+ system_data[:ZoneDXHeatingSizingFactor] = 1.3
40
43
  system_data[:ZoneCoolingSizingFactor] = 1.1
41
44
  system_data[:ZoneHeatingSizingFactor] = 1.3
42
45
 
@@ -53,9 +56,7 @@ class BTAPPRE1980
53
56
  # NOTE: This is the same as system type 3 (single zone make-up air unit and single zone rooftop unit are both PSZ systems)
54
57
  # SHOULD WE COMBINE sys3 and sys4 into one script?
55
58
  #
56
- # control_zone = determine_control_zone(zones)
57
- # Todo change this when control zone method is working.
58
- control_zone = zones.first
59
+ control_zone = determine_control_zone(zones)
59
60
 
60
61
  always_on = model.alwaysOnDiscreteSchedule
61
62
 
@@ -73,27 +74,37 @@ class BTAPPRE1980
73
74
  sizing_zone.setZoneCoolingDesignSupplyAirTemperatureInputMethod(system_data[:ZoneCoolingDesignSupplyAirTemperatureInputMethod])
74
75
  sizing_zone.setZoneCoolingDesignSupplyAirTemperatureDifference(system_data[:ZoneCoolingDesignSupplyAirTemperatureDifference])
75
76
  sizing_zone.setZoneHeatingDesignSupplyAirTemperatureInputMethod(system_data[:ZoneHeatingDesignSupplyAirTemperatureInputMethod])
76
- sizing_zone.setZoneHeatingDesignSupplyAirTemperatureDifference(system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference])
77
- sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
78
- sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
77
+ sizing_zone.setZoneCoolingDesignSupplyAirTemperatureDifference(system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference])
78
+ if necb_reference_hp
79
+ sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneDXCoolingSizingFactor])
80
+ sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneDXHeatingSizingFactor])
81
+ else
82
+ sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
83
+ sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
84
+ end
79
85
 
80
86
  fan = OpenStudio::Model::FanConstantVolume.new(model, always_on)
81
87
 
82
- if heating_coil_type == 'Electric' # electric coil
83
- htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
84
- end
88
+ # Set up DX coil with NECB performance curve characteristics;
89
+ clg_coil = add_onespeed_DX_coil(model, always_on)
90
+ clg_coil.setName('CoilCoolingDXSingleSpeed_dx')
91
+ clg_coil.setName('CoilCoolingDXSingleSpeed_ashp') if necb_reference_hp
85
92
 
86
- if heating_coil_type == 'Gas'
93
+ raise("Flag 'necb_reference_hp' is set to true while parameter 'heating_coil_type' is not set to DX") if (necb_reference_hp && (heating_coil_type != 'DX'))
94
+ if heating_coil_type == 'Electric' || heating_coil_type == 'FuelOilNo2' # electric coil
95
+ htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
96
+ elsif heating_coil_type == 'Gas'
87
97
  htg_coil = OpenStudio::Model::CoilHeatingGas.new(model, always_on)
98
+ elsif heating_coil_type == 'DX'
99
+ htg_coil = add_onespeed_htg_DX_coil(model, always_on)
100
+ htg_coil.setName('CoilHeatingDXSingleSpeed_ashp')
101
+ elsif heating_coil_type == 'Hot Water'
102
+ htg_coil = OpenStudio::Model::CoilHeatingWater.new(model, always_on)
103
+ hw_loop.addDemandBranchForComponent(htg_coil)
88
104
  end
89
105
 
90
106
  # TO DO: other fuel-fired heating coil types? (not available in OpenStudio/E+ - may need to play with efficiency to mimic other fuel types)
91
107
 
92
- # Set up DX coil with NECB performance curve characteristics;
93
-
94
- clg_coil = add_onespeed_DX_coil(model, always_on)
95
- clg_coil.setName('CoilCoolingDXSingleSpeed_dx')
96
-
97
108
  # oa_controller
98
109
  oa_controller = OpenStudio::Model::ControllerOutdoorAir.new(model)
99
110
  oa_controller.autosizeMinimumOutdoorAirFlowRate
@@ -109,10 +120,33 @@ class BTAPPRE1980
109
120
  # in order from closest to zone to furthest from zone
110
121
  supply_inlet_node = air_loop.supplyInletNode
111
122
  fan.addToNode(supply_inlet_node)
123
+ if necb_reference_hp
124
+ #create supplemental heating coil based on default regional fuel type
125
+ if necb_reference_hp_supp_fuel == 'DefaultFuel'
126
+ epw = OpenStudio::EpwFile.new(model.weatherFile.get.path.get)
127
+ necb_reference_hp_supp_fuel = @standards_data['regional_fuel_use'].detect { |fuel_sources| fuel_sources['state_province_regions'].include?(epw.stateProvinceRegion) }['fueltype_set']
128
+ end
129
+ if necb_reference_hp_supp_fuel == 'NaturalGas'
130
+ supplemental_htg_coil = OpenStudio::Model::CoilHeatingGas.new(model, always_on)
131
+ elsif necb_reference_hp_supp_fuel == 'Electricity' or necb_reference_hp_supp_fuel == 'FuelOilNo2'
132
+ supplemental_htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
133
+ elsif necb_reference_hp_supp_fuel == 'Hot Water'
134
+ supplemental_htg_coil = OpenStudio::Model::CoilHeatingWater.new(model, always_on)
135
+ hw_loop.addDemandBranchForComponent(supplemental_htg_coil)
136
+ else
137
+ raise('Invalid fuel type selected for heat pump supplemental coil')
138
+ end
139
+ supplemental_htg_coil.addToNode(supply_inlet_node)
140
+ # This method will seem like an error in number of args..but this is due to swig voodoo.
141
+ #air_to_air_heatpump = OpenStudio::Model::AirLoopHVACUnitaryHeatPumpAirToAir.new(model, always_on, fan, htg_coil, clg_coil, supplemental_htg_coil)
142
+ #air_to_air_heatpump.setName("#{control_zone.name} ASHP")
143
+ #air_to_air_heatpump.setControllingZone(control_zone)
144
+ #air_to_air_heatpump.setSupplyAirFanOperatingModeSchedule(always_on)
145
+ #air_to_air_heatpump.addToNode(supply_inlet_node)
146
+ end
112
147
  htg_coil.addToNode(supply_inlet_node)
113
148
  clg_coil.addToNode(supply_inlet_node)
114
149
  oa_system.addToNode(supply_inlet_node)
115
-
116
150
  # Add a setpoint manager single zone reheat to control the
117
151
  # supply air temperature based on the needs of this zone
118
152
  setpoint_mgr_single_zone_reheat = OpenStudio::Model::SetpointManagerSingleZoneReheat.new(model)
@@ -144,34 +178,39 @@ class BTAPPRE1980
144
178
  sizing_zone.setZoneCoolingDesignSupplyAirTemperatureDifference(system_data[:ZoneCoolingDesignSupplyAirTemperatureDifference])
145
179
  sizing_zone.setZoneHeatingDesignSupplyAirTemperatureInputMethod(system_data[:ZoneHeatingDesignSupplyAirTemperatureInputMethod])
146
180
  sizing_zone.setZoneHeatingDesignSupplyAirTemperatureDifference(system_data[:ZoneHeatingDesignSupplyAirTemperatureDifference])
147
- sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
148
- sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
181
+ if necb_reference_hp
182
+ sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneDXCoolingSizingFactor])
183
+ sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneDXHeatingSizingFactor])
184
+ else
185
+ sizing_zone.setZoneCoolingSizingFactor(system_data[:ZoneCoolingSizingFactor])
186
+ sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
187
+ end
149
188
  # Create a diffuser and attach the zone/diffuser pair to the air loop
150
189
  # diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model,always_on)
151
- diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
152
- air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
153
190
  add_zone_baseboards(baseboard_type: baseboard_type,
154
191
  hw_loop: hw_loop,
155
192
  model: model,
156
193
  zone: zone)
157
194
  add_exhaust_fan(zone: zone, model: model, name: exhaust_fan_name)
195
+ diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
196
+ air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
158
197
  end
159
- # zone loop
160
-
161
- # Modifying airloop name
162
198
  sys_name_pars = {}
163
199
  sys_name_pars['sys_hr'] = 'none'
164
200
  sys_name_pars['sys_clg'] = 'dx'
201
+ sys_name_pars['sys_clg'] = 'ashp' if necb_reference_hp
165
202
  sys_name_pars['sys_htg'] = heating_coil_type
203
+ sys_name_pars['sys_htg'] = 'ashp>c-g' if necb_reference_hp and necb_reference_hp_supp_fuel == "NaturalGas"
204
+ sys_name_pars['sys_htg'] = 'ashp>c-e' if necb_reference_hp and necb_reference_hp_supp_fuel == "Electricity"
205
+ sys_name_pars['sys_htg'] = 'ashp>c-hw' if necb_reference_hp and necb_reference_hp_supp_fuel == "Hot Water"
166
206
  sys_name_pars['sys_sf'] = 'cv'
167
207
  sys_name_pars['zone_htg'] = baseboard_type
168
208
  sys_name_pars['zone_clg'] = 'none'
169
209
  sys_name_pars['sys_rf'] = 'none'
170
- assign_base_sys_name(air_loop,
210
+ return assign_base_sys_name(air_loop: air_loop,
171
211
  sys_abbr: 'sys_4',
172
212
  sys_oa: 'mixed',
173
213
  sys_name_pars: sys_name_pars)
174
214
 
175
- return true
176
215
  end
177
216
  end
@@ -131,18 +131,18 @@ class BTAPPRE1980
131
131
  reheat_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
132
132
  end
133
133
 
134
+ # Set zone baseboards
135
+ add_zone_baseboards(model: model,
136
+ zone: zone,
137
+ baseboard_type: baseboard_type,
138
+ hw_loop: hw_loop)
139
+
134
140
  vav_terminal = OpenStudio::Model::AirTerminalSingleDuctVAVReheat.new(model, always_on, reheat_coil)
135
141
  air_loop.addBranchForZone(zone, vav_terminal.to_StraightComponent)
136
142
  # NECB2011 minimum zone airflow setting
137
143
  vav_terminal.setFixedMinimumAirFlowRate(system_data[:ZoneVAVMinFlowFactorPerFloorArea] * zone.floorArea)
138
144
  vav_terminal.setMaximumReheatAirTemperature(system_data[:ZoneVAVMaxReheatTemp])
139
145
  vav_terminal.setDamperHeatingAction(system_data[:ZoneVAVDamperAction])
140
-
141
- # Set zone baseboards
142
- add_zone_baseboards(model: model,
143
- zone: zone,
144
- baseboard_type: baseboard_type,
145
- hw_loop: hw_loop)
146
146
  end
147
147
 
148
148
  # Modifying airloop name.
@@ -154,17 +154,15 @@ class BTAPPRE1980
154
154
  sys_name_pars['zone_htg'] = baseboard_type
155
155
  sys_name_pars['zone_clg'] = 'none'
156
156
  sys_name_pars['sys_rf'] = 'vv'
157
- assign_base_sys_name(air_loop,
157
+ assign_base_sys_name(air_loop: air_loop,
158
158
  sys_abbr: 'sys_6',
159
159
  sys_oa: 'mixed',
160
160
  sys_name_pars: sys_name_pars)
161
161
  end
162
+ # next story
162
163
  end
163
- # next story
164
-
165
164
  # for debugging
166
165
  # puts "end add_sys6_multi_zone_built_up_with_baseboard_heating"
167
-
168
166
  return true
169
167
  end
170
168
 
@@ -227,7 +225,6 @@ class BTAPPRE1980
227
225
  # Make a Packaged VAV w/ PFP Boxes for each story of the building
228
226
  model.getBuildingStorys.sort.each do |story|
229
227
  unless (OpenstudioStandards::Geometry.building_story_get_thermal_zones(story) & zones).empty?
230
-
231
228
  air_loop = common_air_loop(model: model, system_data: system_data)
232
229
  air_loop.setName(system_data[:name])
233
230
  air_loop_sizing = air_loop.sizingSystem
@@ -323,12 +320,10 @@ class BTAPPRE1980
323
320
  hw_loop: hw_loop)
324
321
  end
325
322
  end
323
+ # next story
326
324
  end
327
- # next story
328
-
329
325
  # for debugging
330
326
  # puts "end add_sys6_multi_zone_built_up_with_baseboard_heating"
331
-
332
327
  return true
333
328
  end
334
329
  end
@@ -23,13 +23,13 @@ class BTAPPRE1980
23
23
  compressor_type = search_criteria['compressor_type']
24
24
 
25
25
  # Get the chiller capacity
26
- capacity_w = chiller_electric_eir_find_capacity(chiller_electric_eir)
26
+ capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(chiller_electric_eir)
27
27
 
28
28
  # All chillers must be modulating down to 25% of their capacity
29
29
  chiller_electric_eir.setChillerFlowMode('LeavingSetpointModulated')
30
30
  chiller_electric_eir.setMinimumPartLoadRatio(0.25)
31
31
  chiller_electric_eir.setMinimumUnloadingRatio(0.25)
32
-
32
+
33
33
  chiller_capacity = capacity_w
34
34
  if (capacity_w / 1000.0) <= 700.0
35
35
  # As per MNECB if chiller capacity <= 700 kW the compressor should be reciprocating so change the type here in
@@ -106,11 +106,11 @@ class BTAPPRE1980
106
106
  cop = nil
107
107
  if chlr_props['cop']
108
108
  cop = chlr_props['cop']
109
- kw_per_ton = cop_to_kw_per_ton(cop)
109
+ kw_per_ton = OpenstudioStandards::HVAC.cop_to_kw_per_ton(cop)
110
110
  chiller_electric_eir.setReferenceCOP(cop)
111
111
  elsif !chlr_props['cop'] && chlr_props['minimum_full_load_efficiency']
112
112
  kw_per_ton = chlr_props['minimum_full_load_efficiency']
113
- cop = kw_per_ton_to_cop(kw_per_ton)
113
+ cop = OpenstudioStandards::HVAC.kw_per_ton_to_cop(kw_per_ton)
114
114
  chiller_electric_eir.setReferenceCOP(cop)
115
115
  else
116
116
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find minimum full load efficiency, will not be set.")
@@ -60,7 +60,7 @@ class ECMS < NECB2011
60
60
 
61
61
  # when the ecm is associated with adding a new HVAC system, then remove existing system components and loops
62
62
  ecm_std.remove_all_zone_eqpt(systems)
63
- ecm_std.remove_air_loops(model)
63
+ OpenstudioStandards::HVAC.remove_air_loops(model)
64
64
  ecm_std.remove_hw_loops(model)
65
65
  ecm_std.remove_chw_loops(model)
66
66
  ecm_std.remove_cw_loops(model)