openstudio-standards 0.8.4 → 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 (289) 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/{costing/common_paths.rb → common_paths.rb} +14 -11
  33. data/lib/openstudio-standards/btap/common_resources/carbon_frame.csv +35 -0
  34. data/lib/openstudio-standards/btap/common_resources/carbon_glazing.csv +35 -0
  35. data/lib/openstudio-standards/btap/common_resources/carbon_opaque.csv +164 -0
  36. data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +121 -0
  37. data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
  38. data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting.csv +59 -59
  39. data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_hvac.csv +1019 -1032
  40. data/lib/openstudio-standards/btap/costing/btap_costing.rb +3 -7
  41. data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +1 -5
  42. data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +5 -4
  43. data/lib/openstudio-standards/btap/costing/dcv_costing.rb +1 -1
  44. data/lib/openstudio-standards/btap/costing/envelope_costing.rb +112 -181
  45. data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +4 -4
  46. data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +2 -1
  47. data/lib/openstudio-standards/btap/costing/lighting_costing.rb +3 -3
  48. data/lib/openstudio-standards/btap/costing/test_list.txt +15 -17
  49. data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +10 -9
  50. data/lib/openstudio-standards/btap/geometry.rb +86 -6
  51. data/lib/openstudio-standards/btap/structure.rb +657 -0
  52. data/lib/openstudio-standards/create_typical/create_typical.rb +17 -33
  53. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +36 -36
  54. data/lib/openstudio-standards/equipment/create_transformer.rb +104 -0
  55. data/lib/openstudio-standards/equipment/create_typical_equipment.rb +117 -0
  56. data/lib/openstudio-standards/equipment/data/electric_equipment_space_types.json +1514 -0
  57. data/lib/openstudio-standards/equipment/data/gas_equipment_space_types.json +227 -0
  58. data/lib/openstudio-standards/exterior_lighting/create.rb +22 -22
  59. data/lib/openstudio-standards/exterior_lighting/information.rb +3 -2
  60. data/lib/openstudio-standards/hvac/components/air_conditioner_vrf.rb +482 -0
  61. data/lib/openstudio-standards/hvac/components/air_terminal.rb +31 -0
  62. data/lib/openstudio-standards/hvac/components/boiler_hot_water.rb +163 -0
  63. data/lib/openstudio-standards/hvac/components/central_air_source_heat_pump.rb +220 -0
  64. data/lib/openstudio-standards/hvac/components/chiller.rb +25 -0
  65. data/lib/openstudio-standards/hvac/components/coil.rb +276 -0
  66. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_multi_speed.rb +40 -0
  67. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_single_speed.rb +300 -0
  68. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_two_speed.rb +187 -0
  69. data/lib/openstudio-standards/hvac/components/coil_cooling_water.rb +80 -0
  70. data/lib/openstudio-standards/hvac/components/coil_cooling_water_to_air_heat_pump_equation_fit.rb +182 -0
  71. data/lib/openstudio-standards/hvac/components/coil_heating_dx_single_speed.rb +220 -0
  72. data/lib/openstudio-standards/hvac/components/coil_heating_electric.rb +56 -0
  73. data/lib/openstudio-standards/hvac/components/coil_heating_gas.rb +90 -0
  74. data/lib/openstudio-standards/hvac/components/coil_heating_gas_multi_stage.rb +33 -0
  75. data/lib/openstudio-standards/hvac/components/coil_heating_water.rb +98 -0
  76. data/lib/openstudio-standards/hvac/components/coil_heating_water_to_air_heat_pump_equation_fit.rb +147 -0
  77. data/lib/openstudio-standards/hvac/components/component.rb +39 -0
  78. data/lib/openstudio-standards/{standards/ashrae_90_1/data/ashrae_90_1.fans.json → hvac/components/data/fans.json} +6 -6
  79. data/lib/openstudio-standards/hvac/components/fan.rb +363 -0
  80. data/lib/openstudio-standards/hvac/components/heat_exchanger_air_to_air.rb +203 -0
  81. data/lib/openstudio-standards/hvac/components/pump.rb +181 -0
  82. data/lib/openstudio-standards/hvac/controls/radiant_system_controls.rb +594 -0
  83. data/lib/openstudio-standards/hvac/conversions.rb +222 -0
  84. data/lib/openstudio-standards/hvac/curves.rb +192 -0
  85. data/lib/openstudio-standards/hvac/helpers.rb +357 -0
  86. data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +4 -4
  87. data/lib/openstudio-standards/interior_lighting/create_lights.rb +52 -0
  88. data/lib/openstudio-standards/interior_lighting/create_typical_interior_lighting.rb +254 -0
  89. data/lib/openstudio-standards/interior_lighting/data/convert_lighting_data.rb +249 -0
  90. data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.csv +96 -0
  91. data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.json +1429 -0
  92. data/lib/openstudio-standards/interior_lighting/data/lighting_technology.csv +46 -0
  93. data/lib/openstudio-standards/interior_lighting/data/lighting_technology.json +859 -0
  94. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  95. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  96. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  97. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -4
  98. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  99. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -4
  100. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  101. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  102. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +6 -7
  103. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +15 -15
  104. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +4 -4
  105. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +5 -5
  106. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +6 -6
  107. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +7 -7
  108. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +4 -4
  109. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +6 -6
  110. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +5 -1
  111. data/lib/openstudio-standards/prototypes/common/data/prototype_space_type_map.json +2594 -0
  112. data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +2108 -0
  113. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -0
  114. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -140
  115. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -73
  116. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -69
  117. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +0 -116
  118. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +0 -61
  119. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +2 -2
  120. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +128 -13
  121. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +606 -607
  122. data/lib/openstudio-standards/prototypes/common/prototype_space_type_map.rb +41 -0
  123. data/lib/openstudio-standards/prototypes/common/space_type_equipment_map.rb +184 -0
  124. data/lib/openstudio-standards/prototypes/common/space_type_thermostat_schedule_map.rb +116 -0
  125. data/lib/openstudio-standards/qaqc/hvac.rb +12 -12
  126. data/lib/openstudio-standards/refrigeration/create_compressor.rb +2 -5
  127. data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +4 -4
  128. data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +1 -2
  129. data/lib/openstudio-standards/service_water_heating/create_water_use.rb +5 -5
  130. data/lib/openstudio-standards/space_type/data/level_1_space_types.json +612 -0
  131. data/lib/openstudio-standards/space_type/standards_space_type.rb +53 -0
  132. data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +8 -26
  133. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +13 -13
  134. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -24
  135. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +6 -43
  136. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +7 -24
  137. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +19 -44
  138. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +25 -50
  139. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +25 -33
  140. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -22
  141. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +15 -157
  142. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -2
  143. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +18 -105
  144. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +3 -23
  145. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +0 -24
  146. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -86
  147. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +0 -107
  148. data/lib/openstudio-standards/standards/Standards.Model.rb +6 -11
  149. data/lib/openstudio-standards/standards/Standards.People.rb +113 -0
  150. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -11
  151. data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -147
  152. data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +57 -41
  153. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +30 -153
  154. data/lib/openstudio-standards/standards/Standards.Ventilation.rb +74 -0
  155. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +1 -1
  156. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -4
  157. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +3 -3
  158. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +37 -112
  159. 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
  160. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +3 -3
  161. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +37 -112
  162. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  163. 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
  164. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +6 -6
  165. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +37 -37
  166. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  167. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.BoilerHotWater.rb +1 -1
  168. 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
  169. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +6 -6
  170. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +37 -37
  171. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  172. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.BoilerHotWater.rb +1 -1
  173. 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
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +6 -6
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +37 -37
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.BoilerHotWater.rb +1 -1
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoilHeatingGas.rb +1 -1
  180. 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
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +6 -6
  182. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +37 -37
  183. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +0 -200
  184. 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
  185. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +37 -37
  186. 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
  187. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +37 -37
  188. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  189. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +5 -5
  190. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  191. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +5 -5
  192. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
  193. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +2 -2
  194. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +2 -68
  195. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +2 -35
  196. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +42 -0
  197. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +5 -2
  198. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +2 -2
  199. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +3 -3
  200. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -1
  201. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +1 -0
  202. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +2 -4
  203. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +0 -200
  204. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +5 -5
  205. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +1 -0
  206. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +0 -1
  207. data/lib/openstudio-standards/standards/cbes/data/cbes.curves.json +0 -200
  208. data/lib/openstudio-standards/standards/deer/data/deer.curves.json +0 -200
  209. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +19 -10
  210. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
  211. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +4 -4
  212. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +1 -1
  213. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +69 -92
  214. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +2 -1
  215. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +16 -12
  216. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +799 -46
  217. data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +33 -51
  218. data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +32 -0
  219. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +18 -0
  220. data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
  221. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +5 -5
  222. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +2 -0
  223. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +30 -141
  224. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +233 -112
  225. data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
  226. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -2
  227. data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +16 -6
  228. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +60 -61
  229. data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +30 -30
  230. data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +79 -0
  231. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +16 -4
  232. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +65 -42
  233. data/lib/openstudio-standards/thermal_zone/{thermal_zone.rb → information.rb} +12 -45
  234. data/lib/openstudio-standards/thermal_zone/thermostat_schedules.rb +152 -0
  235. data/lib/openstudio-standards/version.rb +1 -1
  236. data/lib/openstudio-standards/weather/stat_file.rb +2 -2
  237. data/lib/openstudio-standards.rb +55 -38
  238. metadata +106 -66
  239. data/lib/openstudio-standards/btap/costing/common_resources/constructions_glazing.csv +0 -61
  240. data/lib/openstudio-standards/btap/costing/common_resources/costs.csv +0 -1904
  241. data/lib/openstudio-standards/hvac/components/create.rb +0 -169
  242. data/lib/openstudio-standards/hvac/components/modify.rb +0 -42
  243. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +0 -438
  244. data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +0 -123
  245. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +0 -216
  246. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +0 -273
  247. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +0 -159
  248. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +0 -77
  249. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -154
  250. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +0 -214
  251. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +0 -53
  252. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +0 -72
  253. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +0 -95
  254. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -125
  255. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +0 -17
  256. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +0 -90
  257. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +0 -4
  258. data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +0 -70
  259. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +0 -590
  260. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +0 -901
  261. data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -5
  262. data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -5
  263. data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -5
  264. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -5
  265. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -55
  266. data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -5
  267. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +0 -5
  268. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +0 -5
  269. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +0 -5
  270. data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +0 -328
  271. data/lib/openstudio-standards/standards/deer/data/deer.fans.json +0 -328
  272. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/ConstructionProperties.csv +0 -0
  273. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/Constructions.csv +0 -0
  274. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/construction_sets.csv +0 -0
  275. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/constructions_opaque.csv +0 -0
  276. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/costs_local_factors.csv +0 -0
  277. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/hvac_vent_ahu.csv +0 -0
  278. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting_sets.csv +0 -0
  279. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/locations.csv +0 -0
  280. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_glazing.csv +0 -0
  281. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_lighting.csv +0 -0
  282. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_opaque.csv +0 -0
  283. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +0 -0
  284. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +0 -0
  285. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +0 -0
  286. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +0 -0
  287. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +0 -0
  288. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +0 -0
  289. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +0 -0
@@ -23,24 +23,6 @@ class Standard
23
23
  return search_criteria
24
24
  end
25
25
 
26
- # Find capacity in W
27
- #
28
- # @param air_conditioner_variable_refrigerant_flow [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] vrf unit
29
- # @return [Double] capacity in W
30
- def air_conditioner_variable_refrigerant_flow_find_capacity(air_conditioner_variable_refrigerant_flow)
31
- capacity_w = nil
32
- if air_conditioner_variable_refrigerant_flow.grossRatedTotalCoolingCapacity.is_initialized
33
- capacity_w = air_conditioner_variable_refrigerant_flow.grossRatedTotalCoolingCapacity.get
34
- elsif air_conditioner_variable_refrigerant_flow.autosizedGrossRatedTotalCoolingCapacity.is_initialized
35
- capacity_w = air_conditioner_variable_refrigerant_flow.autosizedGrossRatedTotalCoolingCapacity.get
36
- else
37
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{air_conditioner_variable_refrigerant_flow.name} capacity is not available, cannot apply efficiency standard.")
38
- return false
39
- end
40
-
41
- return capacity_w
42
- end
43
-
44
26
  # Finds lookup object in standards and return minimum thermal efficiency
45
27
  #
46
28
  # @param air_conditioner_variable_refrigerant_flow [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] vrf unit
@@ -53,7 +35,7 @@ class Standard
53
35
  search_criteria = air_conditioner_variable_refrigerant_flow_find_search_criteria(air_conditioner_variable_refrigerant_flow)
54
36
 
55
37
  # Get the capacity
56
- capacity_w = air_conditioner_variable_refrigerant_flow_find_capacity(air_conditioner_variable_refrigerant_flow)
38
+ capacity_w = OpenstudioStandards::HVAC.air_conditioner_variable_refrigerant_flow_get_cooling_capacity(air_conditioner_variable_refrigerant_flow)
57
39
 
58
40
  # Convert capacity to Btu/hr
59
41
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
@@ -82,7 +64,7 @@ class Standard
82
64
  # If specified as SEER
83
65
  unless vrf_props_cooling['minimum_seasonal_energy_efficiency_ratio'].nil?
84
66
  min_seer = vrf_props_cooling['minimum_seasonal_energy_efficiency_ratio']
85
- cooling_cop = seer_to_cop_no_fan(min_seer)
67
+ cooling_cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
86
68
  new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
87
69
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
88
70
  end
@@ -91,7 +73,7 @@ class Standard
91
73
  # TODO: assumed to be the same as SEER for now
92
74
  unless vrf_props_cooling['minimum_seasonal_energy_efficiency_ratio_2'].nil?
93
75
  min_seer = vrf_props_cooling['minimum_seasonal_energy_efficiency_ratio_2']
94
- cooling_cop = seer_to_cop_no_fan(min_seer)
76
+ cooling_cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
95
77
  new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
96
78
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
97
79
  end
@@ -99,7 +81,7 @@ class Standard
99
81
  # If specified as EER
100
82
  unless vrf_props_cooling['minimum_energy_efficiency_ratio'].nil?
101
83
  min_eer = vrf_props_cooling['minimum_energy_efficiency_ratio']
102
- cooling_cop = eer_to_cop_no_fan(min_eer)
84
+ cooling_cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
103
85
  new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
104
86
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
105
87
  end
@@ -108,7 +90,7 @@ class Standard
108
90
  # TODO: assumed to be the same as EER for now
109
91
  unless vrf_props_cooling['minimum_energy_efficiency_ratio_2'].nil?
110
92
  min_eer = vrf_props_cooling['minimum_energy_efficiency_ratio_2']
111
- cooling_cop = eer_to_cop_no_fan(min_eer)
93
+ cooling_cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
112
94
  new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
113
95
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
114
96
  end
@@ -116,7 +98,7 @@ class Standard
116
98
  # If specified as HSPF
117
99
  unless vrf_props_heating['minimum_heating_seasonal_performance_factor'].nil?
118
100
  min_hspf = vrf_props_heating['minimum_heating_seasonal_performance_factor']
119
- heating_cop = hspf_to_cop_no_fan(min_hspf)
101
+ heating_cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
120
102
  new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round} Clg kBtu/hr #{min_hspf.round(1)}HSPF"
121
103
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; HSPF = #{min_hspf}")
122
104
  end
@@ -125,7 +107,7 @@ class Standard
125
107
  # TODO: assumed to be the same as HSPF for now
126
108
  unless vrf_props_heating['minimum_heating_seasonal_performance_factor_2'].nil?
127
109
  min_hspf = vrf_props_heating['minimum_heating_seasonal_performance_factor_2']
128
- heating_cop = hspf_to_cop_no_fan(min_hspf)
110
+ heating_cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
129
111
  new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round} Clg kBtu/hr #{min_hspf.round(1)}HSPF"
130
112
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; HSPF = #{min_hspf}")
131
113
  end
@@ -133,7 +115,7 @@ class Standard
133
115
  # If specified as COP
134
116
  unless vrf_props_heating['minimum_coefficient_of_performance_heating'].nil?
135
117
  min_coph = vrf_props_heating['minimum_coefficient_of_performance_heating']
136
- heating_cop = cop_heating_to_cop_heating_no_fan(min_coph, OpenStudio.convert(capacity_kbtu_per_hr, 'kBtu/hr', 'W').get)
118
+ heating_cop = OpenstudioStandards::HVAC.cop_heating_to_cop_heating_no_fan(min_coph, OpenStudio.convert(capacity_kbtu_per_hr, 'kBtu/hr', 'W').get)
137
119
  new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round} Clg kBtu/hr #{min_coph.round(1)}COPH"
138
120
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; COPH = #{min_coph}")
139
121
  end
@@ -76,10 +76,10 @@ class Standard
76
76
  # Part Load Fan Pressure Control
77
77
  if plr_req
78
78
  vsd_curve_type = air_loop_hvac_set_vsd_curve_type
79
- fan_variable_volume_set_control_type(fan, vsd_curve_type)
79
+ OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: vsd_curve_type)
80
80
  # No Part Load Fan Pressure Control
81
81
  else
82
- fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with discharge dampers')
82
+ OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Discharge Dampers')
83
83
  end
84
84
  else
85
85
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{fan}: This is not a multizone VAV fan system.")
@@ -95,16 +95,16 @@ class Standard
95
95
  ## plr_req = fan_variable_volume_part_load_fan_power_limitation?(fan, template)
96
96
  ## # Part Load Fan Pressure Control & Static Pressure Reset
97
97
  ## if plr_req && spr_req
98
- ## fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with VSD and Static Pressure Reset')
98
+ ## OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Static Pressure Setpoint Reset')
99
99
  ## # Part Load Fan Pressure Control only
100
100
  ## elsif plr_req && !spr_req
101
- ## fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with VSD and Fixed SP Setpoint')
101
+ ## OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Fixed Static Pressure Setpoint')
102
102
  ## # Static Pressure Reset only
103
103
  ## elsif !plr_req && spr_req
104
- ## fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with VSD and Fixed SP Setpoint')
104
+ ## OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Fixed Static Pressure Setpoint')
105
105
  ## # No Control Required
106
106
  ## else
107
- ## fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with AF or BI Riding Curve')
107
+ ## OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Airfoil or Backward Incline riding the curve')
108
108
  ## end
109
109
  ## else
110
110
  ## OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', "For #{name}: there is a constant volume fan on a multizone vav system. Cannot apply static pressure reset controls.")
@@ -159,7 +159,7 @@ class Standard
159
159
  if air_loop_hvac.thermalZones.size == 1
160
160
  air_loop_hvac_supply_return_exhaust_relief_fans(air_loop_hvac).each do |fan|
161
161
  if fan.to_FanVariableVolume.is_initialized
162
- fan_variable_volume_set_control_type(fan, 'Single Zone VAV Fan')
162
+ OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Single Zone VAV')
163
163
  end
164
164
  end
165
165
  air_loop_hvac_apply_single_zone_controls(air_loop_hvac, climate_zone)
@@ -211,7 +211,7 @@ class Standard
211
211
  air_loop_hvac_supply_return_exhaust_relief_fans(air_loop_hvac).each do |fan|
212
212
  if fan.to_FanVariableVolume.is_initialized
213
213
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Setting fan part load curve per G3.1.3.15.")
214
- fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with VSD and Fixed SP Setpoint')
214
+ OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Fixed Static Pressure Setpoint')
215
215
  end
216
216
  end
217
217
 
@@ -297,7 +297,7 @@ class Standard
297
297
  end
298
298
 
299
299
  # Clean name of airloop
300
- loop_name_clean = ems_friendly_name(air_loop_hvac.name)
300
+ loop_name_clean = OpenstudioStandards::HVAC.ems_friendly_name(air_loop_hvac.name)
301
301
 
302
302
  # Sensors
303
303
  oat_db_c_sen = OpenStudio::Model::EnergyManagementSystemSensor.new(air_loop_hvac.model, 'Site Outdoor Air Drybulb Temperature')
@@ -372,7 +372,7 @@ class Standard
372
372
  # Set default fan curve to be VSD with static pressure reset
373
373
  # @return [String name of appropriate curve for this code version
374
374
  def air_loop_hvac_set_vsd_curve_type
375
- return 'Multi Zone VAV with VSD and SP Setpoint Reset'
375
+ return 'Multi Zone VAV with Static Pressure Setpoint Reset'
376
376
  end
377
377
 
378
378
  # Calculate and apply the performance rating method baseline fan power to this air loop.
@@ -892,7 +892,7 @@ class Standard
892
892
  # CoilCoolingDXMultSpeed
893
893
  if clg_coil.to_CoilCoolingDXMultiSpeed.is_initialized
894
894
  coil = clg_coil.to_CoilCoolingDXMultiSpeed.get
895
- total_cooling_capacity_w = coil_cooling_dx_multi_speed_find_capacity(coil)
895
+ total_cooling_capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_multi_speed_get_capacity(coil)
896
896
  end
897
897
  elsif sc.to_CoilCoolingDXVariableSpeed.is_initialized
898
898
  coil = sc.to_CoilCoolingDXVariableSpeed.get
@@ -2955,11 +2955,11 @@ class Standard
2955
2955
  fan_control = air_loop_hvac_multi_stage_dx_cooling?(air_loop_hvac)
2956
2956
 
2957
2957
  # Scrub special characters from the system name
2958
- snc = ems_friendly_name(air_loop_hvac.name)
2958
+ snc = OpenstudioStandards::HVAC.ems_friendly_name(air_loop_hvac.name)
2959
2959
 
2960
2960
  # Get the zone name
2961
2961
  zone = air_loop_hvac.thermalZones[0]
2962
- zn_name_clean = ems_friendly_name(zone.name)
2962
+ zn_name_clean = OpenstudioStandards::HVAC.ems_friendly_name(zone.name)
2963
2963
 
2964
2964
  # Zone air node
2965
2965
  zone_air_node = zone.zoneAirNode
@@ -61,28 +61,4 @@ class Standard
61
61
  end
62
62
  return true
63
63
  end
64
-
65
- # Determines whether the terminal has a NaturalGas, Electricity, or HotWater reheat coil.
66
- #
67
- # @param air_terminal_single_duct_vav_reheat [OpenStudio::Model::AirTerminalSingleDuctVAVReheat] the air terminal object
68
- # @return [String] reheat type. One of NaturalGas, Electricity, or HotWater.
69
- def air_terminal_single_duct_vav_reheat_reheat_type(air_terminal_single_duct_vav_reheat)
70
- type = nil
71
-
72
- if air_terminal_single_duct_vav_reheat.to_AirTerminalSingleDuctVAVNoReheat.is_initialized
73
- return nil
74
- end
75
-
76
- # Get the reheat coil
77
- rht_coil = air_terminal_single_duct_vav_reheat.reheatCoil
78
- if rht_coil.to_CoilHeatingElectric.is_initialized
79
- type = 'Electricity'
80
- elsif rht_coil.to_CoilHeatingWater.is_initialized
81
- type = 'HotWater'
82
- elsif rht_coil.to_CoilHeatingGas.is_initialized
83
- type = 'NaturalGas'
84
- end
85
-
86
- return type
87
- end
88
64
  end
@@ -34,43 +34,6 @@ class Standard
34
34
  return search_criteria
35
35
  end
36
36
 
37
- # Find capacity in W
38
- #
39
- # @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
40
- # @return [Double] capacity in W
41
- def boiler_hot_water_find_capacity(boiler_hot_water)
42
- capacity_w = nil
43
- if boiler_hot_water.nominalCapacity.is_initialized
44
- capacity_w = boiler_hot_water.nominalCapacity.get
45
- elsif boiler_hot_water.autosizedNominalCapacity.is_initialized
46
- capacity_w = boiler_hot_water.autosizedNominalCapacity.get
47
- else
48
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{boiler_hot_water.name} capacity is not available, cannot apply efficiency standard.")
49
- successfully_set_all_properties = false
50
- return successfully_set_all_properties
51
- end
52
-
53
- return capacity_w
54
- end
55
-
56
- # Find design water flow rate in m^3/s
57
- #
58
- # @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
59
- # @return [Double] design water flow rate in m^3/s
60
- def boiler_hot_water_find_design_water_flow_rate(boiler_hot_water)
61
- design_water_flow_rate_m3_per_s = nil
62
- if boiler_hot_water.designWaterFlowRate.is_initialized
63
- design_water_flow_rate_m3_per_s = boiler_hot_water.designWaterFlowRate.get
64
- elsif boiler_hot_water.autosizedDesignWaterFlowRate.is_initialized
65
- design_water_flow_rate_m3_per_s = boiler_hot_water.autosizedDesignWaterFlowRate.get
66
- else
67
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{boiler_hot_water.name} design water flow rate is not available.")
68
- return false
69
- end
70
-
71
- return design_water_flow_rate_m3_per_s
72
- end
73
-
74
37
  # Finds lookup object in standards and return minimum thermal efficiency
75
38
  #
76
39
  # @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
@@ -79,7 +42,7 @@ class Standard
79
42
  def boiler_hot_water_standard_minimum_thermal_efficiency(boiler_hot_water, rename = false)
80
43
  # Get the boiler properties
81
44
  search_criteria = boiler_hot_water_find_search_criteria(boiler_hot_water)
82
- capacity_w = boiler_hot_water_find_capacity(boiler_hot_water)
45
+ capacity_w = OpenstudioStandards::HVAC.boiler_hot_water_get_capacity(boiler_hot_water)
83
46
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
84
47
  capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
85
48
 
@@ -100,7 +63,7 @@ class Standard
100
63
  # If specified as AFUE
101
64
  unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil?
102
65
  min_afue = blr_props['minimum_annual_fuel_utilization_efficiency']
103
- thermal_eff = afue_to_thermal_eff(min_afue)
66
+ thermal_eff = OpenstudioStandards::HVAC.afue_to_thermal_eff(min_afue)
104
67
  new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE"
105
68
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}")
106
69
  end
@@ -115,7 +78,7 @@ class Standard
115
78
  # If specified as combustion efficiency
116
79
  unless blr_props['minimum_combustion_efficiency'].nil?
117
80
  min_comb_eff = blr_props['minimum_combustion_efficiency']
118
- thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
81
+ thermal_eff = OpenstudioStandards::HVAC.combustion_eff_to_thermal_eff(min_comb_eff)
119
82
  new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
120
83
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
121
84
  end
@@ -150,7 +113,7 @@ class Standard
150
113
  fluid_type = search_criteria['fluid_type']
151
114
 
152
115
  # Get the capacity
153
- capacity_w = boiler_hot_water_find_capacity(boiler_hot_water)
116
+ capacity_w = OpenstudioStandards::HVAC.boiler_hot_water_get_capacity(boiler_hot_water)
154
117
 
155
118
  # Convert capacity to Btu/hr
156
119
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
@@ -185,7 +148,7 @@ class Standard
185
148
  # If specified as AFUE
186
149
  unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil?
187
150
  min_afue = blr_props['minimum_annual_fuel_utilization_efficiency']
188
- thermal_eff = afue_to_thermal_eff(min_afue)
151
+ thermal_eff = OpenstudioStandards::HVAC.afue_to_thermal_eff(min_afue)
189
152
  new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE"
190
153
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}")
191
154
  end
@@ -200,7 +163,7 @@ class Standard
200
163
  # If specified as combustion efficiency
201
164
  unless blr_props['minimum_combustion_efficiency'].nil?
202
165
  min_comb_eff = blr_props['minimum_combustion_efficiency']
203
- thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
166
+ thermal_eff = OpenstudioStandards::HVAC.combustion_eff_to_thermal_eff(min_comb_eff)
204
167
  new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
205
168
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
206
169
  end
@@ -65,23 +65,6 @@ class Standard
65
65
  return search_criteria
66
66
  end
67
67
 
68
- # Finds capacity in W
69
- #
70
- # @param chiller_electric_eir [OpenStudio::Model::ChillerElectricEIR] chiller object
71
- # @return [Double] capacity in W to be used for find object
72
- def chiller_electric_eir_find_capacity(chiller_electric_eir)
73
- if chiller_electric_eir.referenceCapacity.is_initialized
74
- capacity_w = chiller_electric_eir.referenceCapacity.get
75
- elsif chiller_electric_eir.autosizedReferenceCapacity.is_initialized
76
- capacity_w = chiller_electric_eir.autosizedReferenceCapacity.get
77
- else
78
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name} capacity is not available, cannot apply efficiency standard.")
79
- return false
80
- end
81
-
82
- return capacity_w
83
- end
84
-
85
68
  # Finds lookup object in standards and return full load efficiency
86
69
  #
87
70
  # @param chiller_electric_eir [OpenStudio::Model::ChillerElectricEIR] chiller object
@@ -89,7 +72,7 @@ class Standard
89
72
  def chiller_electric_eir_standard_minimum_full_load_efficiency(chiller_electric_eir)
90
73
  # Get the chiller properties
91
74
  search_criteria = chiller_electric_eir_find_search_criteria(chiller_electric_eir)
92
- capacity_w = chiller_electric_eir_find_capacity(chiller_electric_eir)
75
+ capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(chiller_electric_eir)
93
76
  return nil unless capacity_w
94
77
 
95
78
  capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
@@ -107,9 +90,9 @@ class Standard
107
90
  if !chlr_props['minimum_coefficient_of_performance'].nil?
108
91
  cop = chlr_props['minimum_coefficient_of_performance']
109
92
  elsif !chlr_props['minimum_energy_efficiency_ratio'].nil?
110
- cop = eer_to_cop(chlr_props['minimum_energy_efficiency_ratio'])
93
+ cop = OpenstudioStandards::HVAC.eer_to_cop(chlr_props['minimum_energy_efficiency_ratio'])
111
94
  elsif !chlr_props['minimum_kilowatts_per_tons'].nil?
112
- cop = kw_per_ton_to_cop(chlr_props['minimum_kilowatts_per_tons'])
95
+ cop = OpenstudioStandards::HVAC.kw_per_ton_to_cop(chlr_props['minimum_kilowatts_per_tons'])
113
96
  end
114
97
  if cop.nil?
115
98
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find minimum full load efficiency.")
@@ -218,7 +201,7 @@ class Standard
218
201
  compliance_path = search_criteria['compliance_path']
219
202
 
220
203
  # Get the chiller capacity
221
- capacity_w = chiller_electric_eir_find_capacity(chiller_electric_eir)
204
+ capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(chiller_electric_eir)
222
205
 
223
206
  # Convert capacity to tons
224
207
  capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
@@ -238,9 +221,9 @@ class Standard
238
221
  if !chlr_props['minimum_coefficient_of_performance'].nil?
239
222
  cop = chlr_props['minimum_coefficient_of_performance']
240
223
  elsif !chlr_props['minimum_energy_efficiency_ratio'].nil?
241
- cop = eer_to_cop(chlr_props['minimum_energy_efficiency_ratio'])
224
+ cop = OpenstudioStandards::HVAC.eer_to_cop(chlr_props['minimum_energy_efficiency_ratio'])
242
225
  elsif !chlr_props['minimum_kilowatts_per_tons'].nil?
243
- cop = kw_per_ton_to_cop(chlr_props['minimum_kilowatts_per_tons'])
226
+ cop = OpenstudioStandards::HVAC.kw_per_ton_to_cop(chlr_props['minimum_kilowatts_per_tons'])
244
227
  end
245
228
  if cop.nil?
246
229
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find minimum full load efficiency.")
@@ -299,7 +282,7 @@ class Standard
299
282
  successfully_set_all_properties = false
300
283
  else
301
284
  chiller_electric_eir.setReferenceCOP(cop)
302
- kw_per_ton = cop_to_kw_per_ton(cop)
285
+ kw_per_ton = OpenstudioStandards::HVAC.cop_to_kw_per_ton(cop)
303
286
  end
304
287
 
305
288
  # Append the name with size and kw/ton
@@ -81,7 +81,7 @@ class Standard
81
81
  capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
82
82
 
83
83
  # Get efficiencies data depending on whether it is a unitary AC or a heat pump
84
- coil_efficiency_data = if coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
84
+ coil_efficiency_data = if OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
85
85
  standards_data['heat_pumps']
86
86
  else
87
87
  standards_data['unitary_acs']
@@ -89,7 +89,7 @@ class Standard
89
89
 
90
90
  # Additional search criteria
91
91
  if (coil_efficiency_data[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
92
- (template == 'BTAP1980TO2010'))) && !coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
92
+ (template == 'BTAP1980TO2010'))) && !OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
93
93
  search_criteria['equipment_type'] = 'Air Conditioners'
94
94
  end
95
95
  if coil_efficiency_data[0].keys.include?('region')
@@ -194,7 +194,7 @@ class Standard
194
194
  capacity_btu_per_hr = 7000 if capacity_btu_per_hr < 7000
195
195
  capacity_btu_per_hr = 15_000 if capacity_btu_per_hr > 15_000
196
196
  ptac_eer = ptac_eer_coeff_1 + (ptac_eer_coeff_2 * capacity_btu_per_hr)
197
- cop = eer_to_cop_no_fan(ptac_eer)
197
+ cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(ptac_eer)
198
198
  new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{ptac_eer}EER"
199
199
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{subcategory} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{ptac_eer}")
200
200
  end
@@ -220,31 +220,6 @@ class Standard
220
220
  return sql_db_vars_map
221
221
  end
222
222
 
223
- # Finds capacity in W
224
- #
225
- # @param coil_cooling_dx_multi_speed [OpenStudio::Model::CoilCoolingDXMultiSpeed] coil cooling dx multi speed object
226
- # @return [Double] capacity in W to be used for find object
227
- def coil_cooling_dx_multi_speed_find_capacity(coil_cooling_dx_multi_speed)
228
- capacity_w = nil
229
- clg_stages = coil_cooling_dx_multi_speed.stages
230
- if clg_stages.last.grossRatedTotalCoolingCapacity.is_initialized
231
- capacity_w = clg_stages.last.grossRatedTotalCoolingCapacity.get
232
- elsif (clg_stages.size == 1) && coil_cooling_dx_multi_speed.stages[0].autosizedSpeedRatedTotalCoolingCapacity.is_initialized
233
- capacity_w = coil_cooling_dx_multi_speed.stages[0].autosizedSpeedRatedTotalCoolingCapacity.get
234
- elsif (clg_stages.size == 2) && coil_cooling_dx_multi_speed.stages[1].autosizedGrossRatedTotalCoolingCapacity.is_initialized
235
- capacity_w = coil_cooling_dx_multi_speed.stages[1].autosizedGrossRatedTotalCoolingCapacity.get
236
- elsif (clg_stages.size == 3) && coil_cooling_dx_multi_speed.stages[2].autosizedGrossRatedTotalCoolingCapacity.is_initialized
237
- capacity_w = coil_cooling_dx_multi_speed.stages[2].autosizedSpeedRatedTotalCoolingCapacity.get
238
- elsif (clg_stages.size == 4) && coil_cooling_dx_multi_speed.stages[3].autosizedGrossRatedTotalCoolingCapacity.is_initialized
239
- capacity_w = coil_cooling_dx_multi_speed.stages[3].autosizedGrossRatedTotalCoolingCapacity.get
240
- else
241
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{coil_cooling_dx_multi_speed.name} capacity is not available, cannot apply efficiency standard.")
242
- return false
243
- end
244
-
245
- return capacity_w
246
- end
247
-
248
223
  # Finds lookup object in standards and return efficiency
249
224
  #
250
225
  # @param coil_cooling_dx_multi_speed [OpenStudio::Model::CoilCoolingDXMultiSpeed] coil cooling dx multi speed object
@@ -254,14 +229,14 @@ class Standard
254
229
  search_criteria = coil_dx_find_search_criteria(coil_cooling_dx_multi_speed)
255
230
  cooling_type = search_criteria['cooling_type']
256
231
  heating_type = search_criteria['heating_type']
257
- capacity_w = coil_cooling_dx_multi_speed_find_capacity(coil_cooling_dx_multi_speed)
232
+ capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_multi_speed_get_capacity(coil_cooling_dx_multi_speed)
258
233
 
259
234
  # Convert capacity to Btu/hr
260
235
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
261
236
  capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
262
237
 
263
238
  # Define database
264
- if coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
239
+ if OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
265
240
  database = standards_data['heat_pumps']
266
241
  else
267
242
  database = standards_data['unitary_acs']
@@ -269,7 +244,7 @@ class Standard
269
244
 
270
245
  # Additional search criteria
271
246
  if (database[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
272
- (template == 'BTAP1980TO2010'))) && !coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
247
+ (template == 'BTAP1980TO2010'))) && !OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
273
248
  search_criteria['equipment_type'] = 'Air Conditioners'
274
249
  end
275
250
  if database[0].keys.include?('region')
@@ -286,41 +261,41 @@ class Standard
286
261
  # If specified as SEER
287
262
  unless ac_props['minimum_seasonal_energy_efficiency_ratio'].nil?
288
263
  min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio']
289
- cop = seer_to_cop_no_fan(min_seer)
264
+ cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
290
265
  new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
291
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
266
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
292
267
  end
293
268
 
294
269
  # If specified as SEER2
295
270
  # TODO: assumed to be the same as SEER for now
296
271
  unless ac_props['minimum_seasonal_energy_efficiency_ratio_2'].nil?
297
272
  min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio_2']
298
- cop = seer_to_cop_no_fan(min_seer)
273
+ cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
299
274
  new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
300
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
275
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
301
276
  end
302
277
 
303
278
  # If specified as EER
304
279
  unless ac_props['minimum_energy_efficiency_ratio'].nil?
305
280
  min_eer = ac_props['minimum_energy_efficiency_ratio']
306
- cop = eer_to_cop_no_fan(min_eer)
281
+ cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
307
282
  new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
308
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
283
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
309
284
  end
310
285
 
311
286
  # If specified as EER2
312
287
  # TODO: assumed to be the same as EER for now
313
288
  unless ac_props['minimum_energy_efficiency_ratio_2'].nil?
314
289
  min_eer = ac_props['minimum_energy_efficiency_ratio_2']
315
- cop = eer_to_cop_no_fan(min_eer)
290
+ cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
316
291
  new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
317
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
292
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
318
293
  end
319
294
 
320
295
  # If specific as IEER
321
296
  if !ac_props['minimum_integrated_energy_efficiency_ratio'].nil? && cop.nil?
322
297
  min_ieer = ac_props['minimum_integrated_energy_efficiency_ratio']
323
- cop = ieer_to_cop_no_fan(min_ieer)
298
+ cop = OpenstudioStandards::HVAC.ieer_to_cop_no_fan(min_ieer)
324
299
  new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_ieer}IEER"
325
300
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; IEER = #{min_ieer}")
326
301
  end
@@ -328,17 +303,17 @@ class Standard
328
303
  # if specified as SEER (heat pump)
329
304
  unless ac_props['minimum_seasonal_efficiency'].nil?
330
305
  min_seer = ac_props['minimum_seasonal_efficiency']
331
- cop = seer_to_cop_no_fan(min_seer)
306
+ cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
332
307
  new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
333
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
308
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
334
309
  end
335
310
 
336
311
  # If specified as EER (heat pump)
337
312
  unless ac_props['minimum_full_load_efficiency'].nil?
338
313
  min_eer = ac_props['minimum_full_load_efficiency']
339
- cop = eer_to_cop_no_fan(min_eer)
314
+ cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
340
315
  new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
341
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
316
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
342
317
  end
343
318
 
344
319
  return cop, new_comp_name