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
@@ -0,0 +1,482 @@
1
+ module OpenstudioStandards
2
+ # The HVAC module provides methods create, modify, and get information about HVAC systems in the model
3
+ module HVAC
4
+ # @!group Component:VRF
5
+ # Methods to create, modify, and get information about VRF systems
6
+
7
+ # Create AirConditionerVariableRefrigerantFlow object
8
+ # Enters in default curves for coil by type of coil
9
+ #
10
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
11
+ # @param name [String] the name of the system, or nil in which case it will be defaulted
12
+ # @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
13
+ # @param type [String] the type of unit to reference for the correct curve set
14
+ # @param cooling_cop [Double] rated cooling coefficient of performance
15
+ # @param heating_cop [Double] rated heating coefficient of performance
16
+ # @param heat_recovery [Boolean] does the unit have heat recovery
17
+ # @param defrost_strategy [String] type of defrost strategy. options are ReverseCycle or Resistive. Default curve set is for ReverseCycle.
18
+ # @param condenser_type [String] type of condenser
19
+ # options are AirCooled (default), WaterCooled, and EvaporativelyCooled.
20
+ # if WaterCooled, the user most include a condenser_loop
21
+ # @param master_zone [<OpenStudio::Model::ThermalZone>] master control zone to switch between heating and cooling
22
+ # @param priority_control_type [String] type of master thermostat priority control type
23
+ # options are LoadPriority, ZonePriority, ThermostatOffsetPriority, MasterThermostatPriority
24
+ # @return [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] the vrf unit
25
+ def self.create_air_conditioner_variable_refrigerant_flow(model,
26
+ name: 'VRF System',
27
+ schedule: nil,
28
+ type: nil,
29
+ cooling_cop: 4.287,
30
+ heating_cop: 4.147,
31
+ heat_recovery: true,
32
+ defrost_strategy: 'ReverseCycle',
33
+ condenser_type: 'AirCooled',
34
+ condenser_loop: nil,
35
+ master_zone: nil,
36
+ priority_control_type: 'LoadPriority')
37
+ vrf_outdoor_unit = OpenStudio::Model::AirConditionerVariableRefrigerantFlow.new(model)
38
+
39
+ # set name
40
+ if name.nil?
41
+ vrf_outdoor_unit.setName('VRF System')
42
+ else
43
+ vrf_outdoor_unit.setName(name)
44
+ end
45
+
46
+ # set availability schedule
47
+ if schedule.nil?
48
+ # default always on
49
+ availability_schedule = model.alwaysOnDiscreteSchedule
50
+ elsif schedule.instance_of?(String)
51
+ availability_schedule = model_add_schedule(model, schedule)
52
+
53
+ if availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
54
+ availability_schedule = model.alwaysOffDiscreteSchedule
55
+ elsif availability_schedule.nil?
56
+ availability_schedule = model.alwaysOnDiscreteSchedule
57
+ end
58
+ elsif !schedule.to_Schedule.empty?
59
+ availability_schedule = schedule
60
+ else
61
+ availability_schedule = model.alwaysOnDiscreteSchedule
62
+ end
63
+ vrf_outdoor_unit.setAvailabilitySchedule(availability_schedule)
64
+
65
+ # set cops
66
+ if model.version < OpenStudio::VersionString.new('2.9.0')
67
+ vrf_outdoor_unit.setRatedCoolingCOP(cooling_cop)
68
+ else
69
+ vrf_outdoor_unit.setGrossRatedCoolingCOP(cooling_cop)
70
+ end
71
+ vrf_outdoor_unit.setRatedHeatingCOP(heating_cop)
72
+
73
+ # heat recovery
74
+ if heat_recovery
75
+ vrf_outdoor_unit.setHeatPumpWasteHeatRecovery(true)
76
+ else
77
+ vrf_outdoor_unit.setHeatPumpWasteHeatRecovery(false)
78
+ end
79
+
80
+ # defrost strategy
81
+ vrf_outdoor_unit.setDefrostStrategy(defrost_strategy)
82
+
83
+ # defaults
84
+ vrf_outdoor_unit.setMinimumOutdoorTemperatureinCoolingMode(-15.0)
85
+ vrf_outdoor_unit.setMaximumOutdoorTemperatureinCoolingMode(50.0)
86
+ vrf_outdoor_unit.setMinimumOutdoorTemperatureinHeatingMode(-25.0)
87
+ vrf_outdoor_unit.setMaximumOutdoorTemperatureinHeatingMode(16.1)
88
+ vrf_outdoor_unit.setMinimumOutdoorTemperatureinHeatRecoveryMode(-10.0)
89
+ vrf_outdoor_unit.setMaximumOutdoorTemperatureinHeatRecoveryMode(27.2)
90
+ vrf_outdoor_unit.setEquivalentPipingLengthusedforPipingCorrectionFactorinCoolingMode(30.48)
91
+ vrf_outdoor_unit.setEquivalentPipingLengthusedforPipingCorrectionFactorinHeatingMode(30.48)
92
+ vrf_outdoor_unit.setVerticalHeightusedforPipingCorrectionFactor(10.668)
93
+
94
+ # condenser type
95
+ if condenser_type == 'WaterCooled'
96
+ vrf_outdoor_unit.setString(56, condenser_type)
97
+ # require condenser_loop
98
+ unless condenser_loop
99
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.HVAC', 'Must specify condenser_loop for vrf_outdoor_unit if WaterCooled')
100
+ end
101
+ condenser_loop.addDemandBranchForComponent(vrf_outdoor_unit)
102
+ elsif condenser_type == 'EvaporativelyCooled'
103
+ vrf_outdoor_unit.setString(56, condenser_type)
104
+ end
105
+
106
+ # set master zone
107
+ unless master_zone.nil?
108
+ vrf_outdoor_unit.setZoneforMasterThermostatLocation(master_zone)
109
+ vrf_outdoor_unit.setMasterThermostatPriorityControlType(priority_control_type)
110
+ end
111
+
112
+ vrf_cool_cap_f_of_low_temp = nil
113
+ vrf_cool_cap_ratio_boundary = nil
114
+ vrf_cool_cap_f_of_high_temp = nil
115
+ vrf_cool_eir_f_of_low_temp = nil
116
+ vrf_cool_eir_ratio_boundary = nil
117
+ vrf_cool_eir_f_of_high_temp = nil
118
+ vrf_cooling_eir_low_plr = nil
119
+ vrf_cooling_eir_high_plr = nil
120
+ vrf_cooling_comb_ratio = nil
121
+ vrf_cooling_cplffplr = nil
122
+ vrf_heat_cap_f_of_low_temp = nil
123
+ vrf_heat_cap_ratio_boundary = nil
124
+ vrf_heat_cap_f_of_high_temp = nil
125
+ vrf_heat_eir_f_of_low_temp = nil
126
+ vrf_heat_eir_boundary = nil
127
+ vrf_heat_eir_f_of_high_temp = nil
128
+ vrf_heating_eir_low_plr = nil
129
+ vrf_heating_eir_hi_plr = nil
130
+ vrf_heating_comb_ratio = nil
131
+ vrf_heating_cplffplr = nil
132
+ vrf_defrost_eir_f_of_temp = nil
133
+
134
+ # curve sets
135
+ if type == 'OS default'
136
+
137
+ # use OS default curves
138
+
139
+ else # default curve set
140
+
141
+ # based on DAIKINREYQ 120 on BCL
142
+
143
+ # Cooling Capacity Ratio Modifier Function of Low Temperature Curve
144
+ vrf_cool_cap_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
145
+ vrf_cool_cap_f_of_low_temp.setName('vrf_cool_cap_f_of_low_temp')
146
+ vrf_cool_cap_f_of_low_temp.setCoefficient1Constant(-1.69653019339465)
147
+ vrf_cool_cap_f_of_low_temp.setCoefficient2x(0.207248180531939)
148
+ vrf_cool_cap_f_of_low_temp.setCoefficient3xPOW2(-0.00343146229659024)
149
+ vrf_cool_cap_f_of_low_temp.setCoefficient4y(0.016381597419714)
150
+ vrf_cool_cap_f_of_low_temp.setCoefficient5yPOW2(-6.7387172629965e-05)
151
+ vrf_cool_cap_f_of_low_temp.setCoefficient6xTIMESY(-0.000849848402870241)
152
+ vrf_cool_cap_f_of_low_temp.setMinimumValueofx(13.9)
153
+ vrf_cool_cap_f_of_low_temp.setMaximumValueofx(23.9)
154
+ vrf_cool_cap_f_of_low_temp.setMinimumValueofy(-5.0)
155
+ vrf_cool_cap_f_of_low_temp.setMaximumValueofy(43.3)
156
+ vrf_cool_cap_f_of_low_temp.setMinimumCurveOutput(0.59)
157
+ vrf_cool_cap_f_of_low_temp.setMaximumCurveOutput(1.33)
158
+
159
+ # Cooling Capacity Ratio Boundary Curve
160
+ vrf_cool_cap_ratio_boundary = OpenStudio::Model::CurveCubic.new(model)
161
+ vrf_cool_cap_ratio_boundary.setName('vrf_cool_cap_ratio_boundary')
162
+ vrf_cool_cap_ratio_boundary.setCoefficient1Constant(25.73)
163
+ vrf_cool_cap_ratio_boundary.setCoefficient2x(-0.03150043)
164
+ vrf_cool_cap_ratio_boundary.setCoefficient3xPOW2(-0.01416595)
165
+ vrf_cool_cap_ratio_boundary.setCoefficient4xPOW3(0.0)
166
+ vrf_cool_cap_ratio_boundary.setMinimumValueofx(11.0)
167
+ vrf_cool_cap_ratio_boundary.setMaximumValueofx(30.0)
168
+
169
+ # Cooling Capacity Ratio Modifier Function of High Temperature Curve
170
+ vrf_cool_cap_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
171
+ vrf_cool_cap_f_of_high_temp.setName('vrf_cool_cap_f_of_high_temp')
172
+ vrf_cool_cap_f_of_high_temp.setCoefficient1Constant(0.6867358)
173
+ vrf_cool_cap_f_of_high_temp.setCoefficient2x(0.0207631)
174
+ vrf_cool_cap_f_of_high_temp.setCoefficient3xPOW2(0.0005447)
175
+ vrf_cool_cap_f_of_high_temp.setCoefficient4y(-0.0016218)
176
+ vrf_cool_cap_f_of_high_temp.setCoefficient5yPOW2(-4.259e-07)
177
+ vrf_cool_cap_f_of_high_temp.setCoefficient6xTIMESY(-0.0003392)
178
+ vrf_cool_cap_f_of_high_temp.setMinimumValueofx(15.0)
179
+ vrf_cool_cap_f_of_high_temp.setMaximumValueofx(24.0)
180
+ vrf_cool_cap_f_of_high_temp.setMinimumValueofy(16.0)
181
+ vrf_cool_cap_f_of_high_temp.setMaximumValueofy(43.0)
182
+
183
+ # Cooling Energy Input Ratio Modifier Function of Low Temperature Curve
184
+ vrf_cool_eir_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
185
+ vrf_cool_eir_f_of_low_temp.setName('vrf_cool_eir_f_of_low_temp')
186
+ vrf_cool_eir_f_of_low_temp.setCoefficient1Constant(-1.61908214818635)
187
+ vrf_cool_eir_f_of_low_temp.setCoefficient2x(0.185964818731756)
188
+ vrf_cool_eir_f_of_low_temp.setCoefficient3xPOW2(-0.00389610393381592)
189
+ vrf_cool_eir_f_of_low_temp.setCoefficient4y(-0.00901995326324613)
190
+ vrf_cool_eir_f_of_low_temp.setCoefficient5yPOW2(0.00030340007815629)
191
+ vrf_cool_eir_f_of_low_temp.setCoefficient6xTIMESY(0.000476048529099348)
192
+ vrf_cool_eir_f_of_low_temp.setMinimumValueofx(13.9)
193
+ vrf_cool_eir_f_of_low_temp.setMaximumValueofx(23.9)
194
+ vrf_cool_eir_f_of_low_temp.setMinimumValueofy(-5.0)
195
+ vrf_cool_eir_f_of_low_temp.setMaximumValueofy(43.3)
196
+ vrf_cool_eir_f_of_low_temp.setMinimumCurveOutput(0.27)
197
+ vrf_cool_eir_f_of_low_temp.setMaximumCurveOutput(1.15)
198
+
199
+ # Cooling Energy Input Ratio Boundary Curve
200
+ vrf_cool_eir_ratio_boundary = OpenStudio::Model::CurveCubic.new(model)
201
+ vrf_cool_eir_ratio_boundary.setName('vrf_cool_eir_ratio_boundary')
202
+ vrf_cool_eir_ratio_boundary.setCoefficient1Constant(25.73473775)
203
+ vrf_cool_eir_ratio_boundary.setCoefficient2x(-0.03150043)
204
+ vrf_cool_eir_ratio_boundary.setCoefficient3xPOW2(-0.01416595)
205
+ vrf_cool_eir_ratio_boundary.setCoefficient4xPOW3(0.0)
206
+ vrf_cool_eir_ratio_boundary.setMinimumValueofx(15.0)
207
+ vrf_cool_eir_ratio_boundary.setMaximumValueofx(24.0)
208
+
209
+ # Cooling Energy Input Ratio Modifier Function of High Temperature Curve
210
+ vrf_cool_eir_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
211
+ vrf_cool_eir_f_of_high_temp.setName('vrf_cool_eir_f_of_high_temp')
212
+ vrf_cool_eir_f_of_high_temp.setCoefficient1Constant(-1.4395110176)
213
+ vrf_cool_eir_f_of_high_temp.setCoefficient2x(0.1619850459)
214
+ vrf_cool_eir_f_of_high_temp.setCoefficient3xPOW2(-0.0034911781)
215
+ vrf_cool_eir_f_of_high_temp.setCoefficient4y(0.0269442645)
216
+ vrf_cool_eir_f_of_high_temp.setCoefficient5yPOW2(0.0001346163)
217
+ vrf_cool_eir_f_of_high_temp.setCoefficient6xTIMESY(-0.0006714941)
218
+ vrf_cool_eir_f_of_high_temp.setMinimumValueofx(15.0)
219
+ vrf_cool_eir_f_of_high_temp.setMaximumValueofx(23.9)
220
+ vrf_cool_eir_f_of_high_temp.setMinimumValueofy(16.8)
221
+ vrf_cool_eir_f_of_high_temp.setMaximumValueofy(43.3)
222
+
223
+ # Cooling Energy Input Ratio Modifier Function of Low Part-Load Ratio Curve
224
+ vrf_cooling_eir_low_plr = OpenStudio::Model::CurveCubic.new(model)
225
+ vrf_cooling_eir_low_plr.setName('vrf_cool_eir_f_of_low_temp')
226
+ vrf_cooling_eir_low_plr.setCoefficient1Constant(0.0734992169827752)
227
+ vrf_cooling_eir_low_plr.setCoefficient2x(0.334783365234032)
228
+ vrf_cooling_eir_low_plr.setCoefficient3xPOW2(0.591613015486343)
229
+ vrf_cooling_eir_low_plr.setCoefficient4xPOW3(0.0)
230
+ vrf_cooling_eir_low_plr.setMinimumValueofx(0.25)
231
+ vrf_cooling_eir_low_plr.setMaximumValueofx(1.0)
232
+ vrf_cooling_eir_low_plr.setMinimumCurveOutput(0.0)
233
+ vrf_cooling_eir_low_plr.setMaximumCurveOutput(1.0)
234
+
235
+ # Cooling Energy Input Ratio Modifier Function of High Part-Load Ratio Curve
236
+ vrf_cooling_eir_high_plr = OpenStudio::Model::CurveCubic.new(model)
237
+ vrf_cooling_eir_high_plr.setName('vrf_cooling_eir_high_plr')
238
+ vrf_cooling_eir_high_plr.setCoefficient1Constant(1.0)
239
+ vrf_cooling_eir_high_plr.setCoefficient2x(0.0)
240
+ vrf_cooling_eir_high_plr.setCoefficient3xPOW2(0.0)
241
+ vrf_cooling_eir_high_plr.setCoefficient4xPOW3(0.0)
242
+ vrf_cooling_eir_high_plr.setMinimumValueofx(1.0)
243
+ vrf_cooling_eir_high_plr.setMaximumValueofx(1.5)
244
+
245
+ # Cooling Combination Ratio Correction Factor Curve
246
+ vrf_cooling_comb_ratio = OpenStudio::Model::CurveCubic.new(model)
247
+ vrf_cooling_comb_ratio.setName('vrf_cooling_comb_ratio')
248
+ vrf_cooling_comb_ratio.setCoefficient1Constant(0.24034)
249
+ vrf_cooling_comb_ratio.setCoefficient2x(-0.21873)
250
+ vrf_cooling_comb_ratio.setCoefficient3xPOW2(1.97941)
251
+ vrf_cooling_comb_ratio.setCoefficient4xPOW3(-1.02636)
252
+ vrf_cooling_comb_ratio.setMinimumValueofx(0.5)
253
+ vrf_cooling_comb_ratio.setMaximumValueofx(2.0)
254
+ vrf_cooling_comb_ratio.setMinimumCurveOutput(0.5)
255
+ vrf_cooling_comb_ratio.setMaximumCurveOutput(1.056)
256
+
257
+ # Cooling Part-Load Fraction Correlation Curve
258
+ vrf_cooling_cplffplr = OpenStudio::Model::CurveCubic.new(model)
259
+ vrf_cooling_cplffplr.setName('vrf_cooling_cplffplr')
260
+ vrf_cooling_cplffplr.setCoefficient1Constant(0.85)
261
+ vrf_cooling_cplffplr.setCoefficient2x(0.15)
262
+ vrf_cooling_cplffplr.setCoefficient3xPOW2(0.0)
263
+ vrf_cooling_cplffplr.setCoefficient4xPOW3(0.0)
264
+ vrf_cooling_cplffplr.setMinimumValueofx(1.0)
265
+ vrf_cooling_cplffplr.setMaximumValueofx(1.0)
266
+
267
+ # Heating Capacity Ratio Modifier Function of Low Temperature Curve Name
268
+ vrf_heat_cap_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
269
+ vrf_heat_cap_f_of_low_temp.setName('vrf_heat_cap_f_of_low_temp')
270
+ vrf_heat_cap_f_of_low_temp.setCoefficient1Constant(0.983220174655636)
271
+ vrf_heat_cap_f_of_low_temp.setCoefficient2x(0.0157167577703294)
272
+ vrf_heat_cap_f_of_low_temp.setCoefficient3xPOW2(-0.000835032422884084)
273
+ vrf_heat_cap_f_of_low_temp.setCoefficient4y(0.0522939264581759)
274
+ vrf_heat_cap_f_of_low_temp.setCoefficient5yPOW2(-0.000531556035364549)
275
+ vrf_heat_cap_f_of_low_temp.setCoefficient6xTIMESY(-0.00190605953116024)
276
+ vrf_heat_cap_f_of_low_temp.setMinimumValueofx(16.1)
277
+ vrf_heat_cap_f_of_low_temp.setMaximumValueofx(23.9)
278
+ vrf_heat_cap_f_of_low_temp.setMinimumValueofy(-25.0)
279
+ vrf_heat_cap_f_of_low_temp.setMaximumValueofy(13.3)
280
+ vrf_heat_cap_f_of_low_temp.setMinimumCurveOutput(0.515151515151515)
281
+ vrf_heat_cap_f_of_low_temp.setMaximumCurveOutput(1.2)
282
+
283
+ # Heating Capacity Ratio Boundary Curve Name
284
+ vrf_heat_cap_ratio_boundary = OpenStudio::Model::CurveCubic.new(model)
285
+ vrf_heat_cap_ratio_boundary.setName('vrf_heat_cap_ratio_boundary')
286
+ vrf_heat_cap_ratio_boundary.setCoefficient1Constant(58.577)
287
+ vrf_heat_cap_ratio_boundary.setCoefficient2x(-3.0255)
288
+ vrf_heat_cap_ratio_boundary.setCoefficient3xPOW2(0.0193)
289
+ vrf_heat_cap_ratio_boundary.setCoefficient4xPOW3(0.0)
290
+ vrf_heat_cap_ratio_boundary.setMinimumValueofx(15)
291
+ vrf_heat_cap_ratio_boundary.setMaximumValueofx(23.9)
292
+
293
+ # Heating Capacity Ratio Modifier Function of High Temperature Curve Name
294
+ vrf_heat_cap_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
295
+ vrf_heat_cap_f_of_high_temp.setName('vrf_heat_cap_f_of_high_temp')
296
+ vrf_heat_cap_f_of_high_temp.setCoefficient1Constant(2.5859872368)
297
+ vrf_heat_cap_f_of_high_temp.setCoefficient2x(-0.0953227101)
298
+ vrf_heat_cap_f_of_high_temp.setCoefficient3xPOW2(0.0009553288)
299
+ vrf_heat_cap_f_of_high_temp.setCoefficient4y(0.0)
300
+ vrf_heat_cap_f_of_high_temp.setCoefficient5yPOW2(0.0)
301
+ vrf_heat_cap_f_of_high_temp.setCoefficient6xTIMESY(0.0)
302
+ vrf_heat_cap_f_of_high_temp.setMinimumValueofx(21.1)
303
+ vrf_heat_cap_f_of_high_temp.setMaximumValueofx(27.2)
304
+ vrf_heat_cap_f_of_high_temp.setMinimumValueofy(-944)
305
+ vrf_heat_cap_f_of_high_temp.setMaximumValueofy(15)
306
+
307
+ # Heating Energy Input Ratio Modifier Function of Low Temperature Curve Name
308
+ vrf_heat_eir_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
309
+ vrf_heat_eir_f_of_low_temp.setName('vrf_heat_eir_f_of_low_temp')
310
+ vrf_heat_eir_f_of_low_temp.setCoefficient1Constant(0.756830029796909)
311
+ vrf_heat_eir_f_of_low_temp.setCoefficient2x(0.0457499799042671)
312
+ vrf_heat_eir_f_of_low_temp.setCoefficient3xPOW2(-0.00136357240431388)
313
+ vrf_heat_eir_f_of_low_temp.setCoefficient4y(0.0554884599902023)
314
+ vrf_heat_eir_f_of_low_temp.setCoefficient5yPOW2(-0.00120700875497686)
315
+ vrf_heat_eir_f_of_low_temp.setCoefficient6xTIMESY(-0.00303329271420931)
316
+ vrf_heat_eir_f_of_low_temp.setMinimumValueofx(16.1)
317
+ vrf_heat_eir_f_of_low_temp.setMaximumValueofx(23.9)
318
+ vrf_heat_eir_f_of_low_temp.setMinimumValueofy(-25.0)
319
+ vrf_heat_eir_f_of_low_temp.setMaximumValueofy(13.3)
320
+ vrf_heat_eir_f_of_low_temp.setMinimumCurveOutput(0.7)
321
+ vrf_heat_eir_f_of_low_temp.setMaximumCurveOutput(1.184)
322
+
323
+ # Heating Energy Input Ratio Boundary Curve Name
324
+ vrf_heat_eir_boundary = OpenStudio::Model::CurveCubic.new(model)
325
+ vrf_heat_eir_boundary.setName('vrf_heat_eir_boundary')
326
+ vrf_heat_eir_boundary.setCoefficient1Constant(58.577)
327
+ vrf_heat_eir_boundary.setCoefficient2x(-3.0255)
328
+ vrf_heat_eir_boundary.setCoefficient3xPOW2(0.0193)
329
+ vrf_heat_eir_boundary.setCoefficient4xPOW3(0.0)
330
+ vrf_heat_eir_boundary.setMinimumValueofx(15.0)
331
+ vrf_heat_eir_boundary.setMaximumValueofx(23.9)
332
+
333
+ # Heating Energy Input Ratio Modifier Function of High Temperature Curve Name
334
+ vrf_heat_eir_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
335
+ vrf_heat_eir_f_of_high_temp.setName('vrf_heat_eir_f_of_high_temp')
336
+ vrf_heat_eir_f_of_high_temp.setCoefficient1Constant(1.3885703646)
337
+ vrf_heat_eir_f_of_high_temp.setCoefficient2x(-0.0229771462)
338
+ vrf_heat_eir_f_of_high_temp.setCoefficient3xPOW2(0.000537274)
339
+ vrf_heat_eir_f_of_high_temp.setCoefficient4y(-0.0273936962)
340
+ vrf_heat_eir_f_of_high_temp.setCoefficient5yPOW2(0.0004030426)
341
+ vrf_heat_eir_f_of_high_temp.setCoefficient6xTIMESY(-5.9786e-05)
342
+ vrf_heat_eir_f_of_high_temp.setMinimumValueofx(21.1)
343
+ vrf_heat_eir_f_of_high_temp.setMaximumValueofx(27.2)
344
+ vrf_heat_eir_f_of_high_temp.setMinimumValueofy(0.0)
345
+ vrf_heat_eir_f_of_high_temp.setMaximumValueofy(1.0)
346
+
347
+ # Heating Performance Curve Outdoor Temperature Type
348
+ vrf_outdoor_unit.setHeatingPerformanceCurveOutdoorTemperatureType('WetBulbTemperature')
349
+
350
+ # Heating Energy Input Ratio Modifier Function of Low Part-Load Ratio Curve Name
351
+ vrf_heating_eir_low_plr = OpenStudio::Model::CurveCubic.new(model)
352
+ vrf_heating_eir_low_plr.setName('vrf_heating_eir_low_plr')
353
+ vrf_heating_eir_low_plr.setCoefficient1Constant(0.0724906507105475)
354
+ vrf_heating_eir_low_plr.setCoefficient2x(0.658189977561701)
355
+ vrf_heating_eir_low_plr.setCoefficient3xPOW2(0.269259536275246)
356
+ vrf_heating_eir_low_plr.setCoefficient4xPOW3(0.0)
357
+ vrf_heating_eir_low_plr.setMinimumValueofx(0.25)
358
+ vrf_heating_eir_low_plr.setMaximumValueofx(1.0)
359
+ vrf_heating_eir_low_plr.setMinimumCurveOutput(0.0)
360
+ vrf_heating_eir_low_plr.setMaximumCurveOutput(1.0)
361
+
362
+ # Heating Energy Input Ratio Modifier Function of High Part-Load Ratio Curve Name
363
+ vrf_heating_eir_hi_plr = OpenStudio::Model::CurveCubic.new(model)
364
+ vrf_heating_eir_hi_plr.setName('vrf_heating_eir_hi_plr')
365
+ vrf_heating_eir_hi_plr.setCoefficient1Constant(1.0)
366
+ vrf_heating_eir_hi_plr.setCoefficient2x(0.0)
367
+ vrf_heating_eir_hi_plr.setCoefficient3xPOW2(0.0)
368
+ vrf_heating_eir_hi_plr.setCoefficient4xPOW3(0.0)
369
+ vrf_heating_eir_hi_plr.setMinimumValueofx(1.0)
370
+ vrf_heating_eir_hi_plr.setMaximumValueofx(1.5)
371
+
372
+ # Heating Combination Ratio Correction Factor Curve Name
373
+ vrf_heating_comb_ratio = OpenStudio::Model::CurveCubic.new(model)
374
+ vrf_heating_comb_ratio.setName('vrf_heating_comb_ratio')
375
+ vrf_heating_comb_ratio.setCoefficient1Constant(0.62115)
376
+ vrf_heating_comb_ratio.setCoefficient2x(-1.55798)
377
+ vrf_heating_comb_ratio.setCoefficient3xPOW2(3.36817)
378
+ vrf_heating_comb_ratio.setCoefficient4xPOW3(-1.4224)
379
+ vrf_heating_comb_ratio.setMinimumValueofx(0.5)
380
+ vrf_heating_comb_ratio.setMaximumValueofx(2.0)
381
+ vrf_heating_comb_ratio.setMinimumCurveOutput(0.5)
382
+ vrf_heating_comb_ratio.setMaximumCurveOutput(1.155)
383
+
384
+ # Heating Part-Load Fraction Correlation Curve Name
385
+ vrf_heating_cplffplr = OpenStudio::Model::CurveCubic.new(model)
386
+ vrf_heating_cplffplr.setName('vrf_heating_cplffplr')
387
+ vrf_heating_cplffplr.setCoefficient1Constant(0.85)
388
+ vrf_heating_cplffplr.setCoefficient2x(0.15)
389
+ vrf_heating_cplffplr.setCoefficient3xPOW2(0.0)
390
+ vrf_heating_cplffplr.setCoefficient4xPOW3(0.0)
391
+ vrf_heating_cplffplr.setMinimumValueofx(1.0)
392
+ vrf_heating_cplffplr.setMaximumValueofx(1.0)
393
+
394
+ # Defrost Energy Input Ratio Modifier Function of Temperature Curve
395
+ vrf_defrost_eir_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
396
+ vrf_defrost_eir_f_of_temp.setName('vrf_defrost_eir_f_of_temp')
397
+ vrf_defrost_eir_f_of_temp.setCoefficient1Constant(-1.61908214818635)
398
+ vrf_defrost_eir_f_of_temp.setCoefficient2x(0.185964818731756)
399
+ vrf_defrost_eir_f_of_temp.setCoefficient3xPOW2(-0.00389610393381592)
400
+ vrf_defrost_eir_f_of_temp.setCoefficient4y(-0.00901995326324613)
401
+ vrf_defrost_eir_f_of_temp.setCoefficient5yPOW2(0.00030340007815629)
402
+ vrf_defrost_eir_f_of_temp.setCoefficient6xTIMESY(0.000476048529099348)
403
+ vrf_defrost_eir_f_of_temp.setMinimumValueofx(13.9)
404
+ vrf_defrost_eir_f_of_temp.setMaximumValueofx(23.9)
405
+ vrf_defrost_eir_f_of_temp.setMinimumValueofy(-5.0)
406
+ vrf_defrost_eir_f_of_temp.setMaximumValueofy(50.0)
407
+ vrf_defrost_eir_f_of_temp.setMinimumCurveOutput(0.27)
408
+ vrf_defrost_eir_f_of_temp.setMaximumCurveOutput(1.155)
409
+
410
+ # set defrost control
411
+ vrf_outdoor_unit.setDefrostStrategy('ReverseCycle')
412
+ vrf_outdoor_unit.setDefrostControl('OnDemand')
413
+ end
414
+
415
+ # override defrost strategy if specified
416
+ if defrost_strategy == 'Resistive'
417
+ vrf_defrost_eir_f_of_temp = nil
418
+ vrf_outdoor_unit.setDefrostStrategy('Resistive')
419
+ end
420
+
421
+ vrf_outdoor_unit.setCoolingCapacityRatioModifierFunctionofLowTemperatureCurve(vrf_cool_cap_f_of_low_temp) unless vrf_cool_cap_f_of_low_temp.nil?
422
+ vrf_outdoor_unit.setCoolingCapacityRatioBoundaryCurve(vrf_cool_cap_ratio_boundary) unless vrf_cool_cap_ratio_boundary.nil?
423
+ vrf_outdoor_unit.setCoolingCapacityRatioModifierFunctionofHighTemperatureCurve(vrf_cool_cap_f_of_high_temp) unless vrf_cool_cap_f_of_high_temp.nil?
424
+ vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofLowTemperatureCurve(vrf_cool_eir_f_of_low_temp) unless vrf_cool_eir_f_of_low_temp.nil?
425
+ vrf_outdoor_unit.setCoolingEnergyInputRatioBoundaryCurve(vrf_cool_eir_ratio_boundary) unless vrf_cool_eir_ratio_boundary.nil?
426
+ vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofHighTemperatureCurve(vrf_cool_eir_f_of_high_temp) unless vrf_cool_eir_f_of_high_temp.nil?
427
+ vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofLowPartLoadRatioCurve(vrf_cooling_eir_low_plr) unless vrf_cooling_eir_low_plr.nil?
428
+ vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofHighPartLoadRatioCurve(vrf_cooling_eir_high_plr) unless vrf_cooling_eir_high_plr.nil?
429
+ vrf_outdoor_unit.setCoolingCombinationRatioCorrectionFactorCurve(vrf_cooling_comb_ratio) unless vrf_cooling_comb_ratio.nil?
430
+ vrf_outdoor_unit.setCoolingPartLoadFractionCorrelationCurve(vrf_cooling_cplffplr) unless vrf_cooling_cplffplr.nil?
431
+ vrf_outdoor_unit.setHeatingCapacityRatioModifierFunctionofLowTemperatureCurve(vrf_heat_cap_f_of_low_temp) unless vrf_heat_cap_f_of_low_temp.nil?
432
+ vrf_outdoor_unit.setHeatingCapacityRatioBoundaryCurve(vrf_heat_cap_ratio_boundary) unless vrf_heat_cap_ratio_boundary.nil?
433
+ vrf_outdoor_unit.setHeatingCapacityRatioModifierFunctionofHighTemperatureCurve(vrf_heat_cap_f_of_high_temp) unless vrf_heat_cap_f_of_high_temp.nil?
434
+ vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofLowTemperatureCurve(vrf_heat_eir_f_of_low_temp) unless vrf_heat_eir_f_of_low_temp.nil?
435
+ vrf_outdoor_unit.setHeatingEnergyInputRatioBoundaryCurve(vrf_heat_eir_boundary) unless vrf_heat_eir_boundary.nil?
436
+ vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofHighTemperatureCurve(vrf_heat_eir_f_of_high_temp) unless vrf_heat_eir_f_of_high_temp.nil?
437
+ vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofLowPartLoadRatioCurve(vrf_heating_eir_low_plr) unless vrf_heating_eir_low_plr.nil?
438
+ vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofHighPartLoadRatioCurve(vrf_heating_eir_hi_plr) unless vrf_heating_eir_hi_plr.nil?
439
+ vrf_outdoor_unit.setHeatingCombinationRatioCorrectionFactorCurve(vrf_heating_comb_ratio) unless vrf_heating_comb_ratio.nil?
440
+ vrf_outdoor_unit.setHeatingPartLoadFractionCorrelationCurve(vrf_heating_cplffplr) unless vrf_heating_cplffplr.nil?
441
+ vrf_outdoor_unit.setDefrostEnergyInputRatioModifierFunctionofTemperatureCurve(vrf_defrost_eir_f_of_temp) unless vrf_defrost_eir_f_of_temp.nil?
442
+
443
+ return vrf_outdoor_unit
444
+ end
445
+
446
+ # Return the cooling capacity in W of a AirConditionerVariableRefrigerantFlow
447
+ #
448
+ # @param air_conditioner_variable_refrigerant_flow [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] vrf unit
449
+ # @return [Double] cooling capacity in W
450
+ def self.air_conditioner_variable_refrigerant_flow_get_cooling_capacity(air_conditioner_variable_refrigerant_flow)
451
+ capacity_w = nil
452
+ if air_conditioner_variable_refrigerant_flow.grossRatedTotalCoolingCapacity.is_initialized
453
+ capacity_w = air_conditioner_variable_refrigerant_flow.grossRatedTotalCoolingCapacity.get
454
+ elsif air_conditioner_variable_refrigerant_flow.autosizedGrossRatedTotalCoolingCapacity.is_initialized
455
+ capacity_w = air_conditioner_variable_refrigerant_flow.autosizedGrossRatedTotalCoolingCapacity.get
456
+ else
457
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.HVAC.air_conditioner_vrf', "For #{air_conditioner_variable_refrigerant_flow.name} cooling capacity is not available.")
458
+ return 0.0
459
+ end
460
+
461
+ return capacity_w
462
+ end
463
+
464
+ # Return the heating capacity in W of a AirConditionerVariableRefrigerantFlow
465
+ #
466
+ # @param air_conditioner_variable_refrigerant_flow [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] vrf unit
467
+ # @return [Double] heating capacity in W
468
+ def self.air_conditioner_variable_refrigerant_flow_get_heating_capacity(air_conditioner_variable_refrigerant_flow)
469
+ capacity_w = nil
470
+ if air_conditioner_variable_refrigerant_flow.grossRatedHeatingCapacity.is_initialized
471
+ capacity_w = air_conditioner_variable_refrigerant_flow.grossRatedHeatingCapacity.get
472
+ elsif air_conditioner_variable_refrigerant_flow.autosizedGrossRatedHeatingCapacity.is_initialized
473
+ capacity_w = air_conditioner_variable_refrigerant_flow.autosizedGrossRatedHeatingCapacity.get
474
+ else
475
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.HVAC.air_conditioner_vrf', "For #{air_conditioner_variable_refrigerant_flow.name} heating capacity is not available.")
476
+ return 0.0
477
+ end
478
+
479
+ return capacity_w
480
+ end
481
+ end
482
+ end
@@ -0,0 +1,31 @@
1
+ module OpenstudioStandards
2
+ # The HVAC module provides methods create, modify, and get information about HVAC systems in the model
3
+ module HVAC
4
+ # @!group Component:Air Terminal
5
+ # Methods to create, modify, and get information about air terminals
6
+
7
+ # Determines whether the terminal has a NaturalGas, Electricity, or HotWater reheat coil.
8
+ #
9
+ # @param air_terminal_single_duct_vav_reheat [OpenStudio::Model::AirTerminalSingleDuctVAVReheat] the air terminal object
10
+ # @return [String] reheat type. One of NaturalGas, Electricity, or HotWater.
11
+ def self.air_terminal_single_duct_vav_reheat_reheat_type(air_terminal_single_duct_vav_reheat)
12
+ type = nil
13
+
14
+ if air_terminal_single_duct_vav_reheat.to_AirTerminalSingleDuctVAVNoReheat.is_initialized
15
+ return type
16
+ end
17
+
18
+ # Get the reheat coil
19
+ rht_coil = air_terminal_single_duct_vav_reheat.reheatCoil
20
+ if rht_coil.to_CoilHeatingElectric.is_initialized
21
+ type = 'Electricity'
22
+ elsif rht_coil.to_CoilHeatingWater.is_initialized
23
+ type = 'HotWater'
24
+ elsif rht_coil.to_CoilHeatingGas.is_initialized
25
+ type = 'NaturalGas'
26
+ end
27
+
28
+ return type
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,163 @@
1
+ module OpenstudioStandards
2
+ # The HVAC module provides methods create, modify, and get information about HVAC systems in the model
3
+ module HVAC
4
+ # @!group Component:Boiler
5
+ # Methods to create, modify, and get information about boilers
6
+
7
+ # Create BoilerHotWater object
8
+ #
9
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
10
+ # @param hot_water_loop [<OpenStudio::Model::PlantLoop>] a hot water loop served by the boiler
11
+ # @param name [String] the name of the boiler, or nil in which case it will be defaulted
12
+ # @param fuel_type [String] type of fuel serving the boiler
13
+ # @param draft_type [String] Boiler type Condensing, MechanicalNoncondensing, Natural (default)
14
+ # @param nominal_thermal_efficiency [Double] boiler nominal thermal efficiency
15
+ # @param eff_curve_temp_eval_var [String] LeavingBoiler or EnteringBoiler temperature for the boiler efficiency curve
16
+ # @param flow_mode [String] boiler flow mode
17
+ # @param lvg_temp_dsgn_f [Double] boiler leaving design temperature in degrees Fahrenheit
18
+ # note that this field is deprecated in OS versions 3.0+
19
+ # @param out_temp_lmt_f [Double] boiler outlet temperature limit in degrees Fahrenheit
20
+ # @param min_plr [Double] boiler minimum part load ratio
21
+ # @param max_plr [Double] boiler maximum part load ratio
22
+ # @param opt_plr [Double] boiler optimum part load ratio
23
+ # @param sizing_factor [Double] boiler oversizing factor
24
+ # @return [OpenStudio::Model::BoilerHotWater] the boiler object
25
+ def self.create_boiler_hot_water(model,
26
+ hot_water_loop: nil,
27
+ name: 'Boiler',
28
+ fuel_type: 'NaturalGas',
29
+ draft_type: 'Natural',
30
+ nominal_thermal_efficiency: 0.80,
31
+ eff_curve_temp_eval_var: 'LeavingBoiler',
32
+ flow_mode: 'LeavingSetpointModulated',
33
+ lvg_temp_dsgn_f: 180.0, # 82.22 degrees Celsius
34
+ out_temp_lmt_f: 203.0, # 95.0 degrees Celsius
35
+ min_plr: 0.0,
36
+ max_plr: 1.2,
37
+ opt_plr: 1.0,
38
+ sizing_factor: nil)
39
+
40
+ # create the boiler
41
+ boiler = OpenStudio::Model::BoilerHotWater.new(model)
42
+ if name.nil?
43
+ if hot_water_loop.nil?
44
+ boiler.setName('Boiler')
45
+ else
46
+ boiler.setName("#{hot_water_loop.name} Boiler")
47
+ end
48
+ else
49
+ boiler.setName(name)
50
+ end
51
+
52
+ if fuel_type.nil? || fuel_type == 'Gas'
53
+ boiler.setFuelType('NaturalGas')
54
+ elsif fuel_type == 'Propane' || fuel_type == 'PropaneGas'
55
+ boiler.setFuelType('Propane')
56
+ else
57
+ boiler.setFuelType(fuel_type)
58
+ end
59
+
60
+ if nominal_thermal_efficiency.nil?
61
+ boiler.setNominalThermalEfficiency(0.8)
62
+ else
63
+ boiler.setNominalThermalEfficiency(nominal_thermal_efficiency)
64
+ end
65
+
66
+ if eff_curve_temp_eval_var.nil?
67
+ boiler.setEfficiencyCurveTemperatureEvaluationVariable('LeavingBoiler')
68
+ else
69
+ boiler.setEfficiencyCurveTemperatureEvaluationVariable(eff_curve_temp_eval_var)
70
+ end
71
+
72
+ if flow_mode.nil?
73
+ boiler.setBoilerFlowMode('LeavingSetpointModulated')
74
+ else
75
+ boiler.setBoilerFlowMode(flow_mode)
76
+ end
77
+
78
+ if model.version < OpenStudio::VersionString.new('3.0.0')
79
+ if lvg_temp_dsgn_f.nil?
80
+ boiler.setDesignWaterOutletTemperature(OpenStudio.convert(180.0, 'F', 'C').get)
81
+ else
82
+ boiler.setDesignWaterOutletTemperature(OpenStudio.convert(lvg_temp_dsgn_f, 'F', 'C').get)
83
+ end
84
+ end
85
+
86
+ if out_temp_lmt_f.nil?
87
+ boiler.setWaterOutletUpperTemperatureLimit(OpenStudio.convert(203.0, 'F', 'C').get)
88
+ else
89
+ boiler.setWaterOutletUpperTemperatureLimit(OpenStudio.convert(out_temp_lmt_f, 'F', 'C').get)
90
+ end
91
+
92
+ # logic to set different defaults for condensing boilers if not specified
93
+ if draft_type == 'Condensing'
94
+ if model.version < OpenStudio::VersionString.new('3.0.0') && lvg_temp_dsgn_f.nil?
95
+ # default to 120 degrees Fahrenheit (48.49 degrees Celsius)
96
+ boiler.setDesignWaterOutletTemperature(OpenStudio.convert(120.0, 'F', 'C').get)
97
+ end
98
+ boiler.setNominalThermalEfficiency(0.96) if nominal_thermal_efficiency.nil?
99
+ end
100
+
101
+ if min_plr.nil?
102
+ boiler.setMinimumPartLoadRatio(0.0)
103
+ else
104
+ boiler.setMinimumPartLoadRatio(min_plr)
105
+ end
106
+
107
+ if max_plr.nil?
108
+ boiler.setMaximumPartLoadRatio(1.2)
109
+ else
110
+ boiler.setMaximumPartLoadRatio(max_plr)
111
+ end
112
+
113
+ if opt_plr.nil?
114
+ boiler.setOptimumPartLoadRatio(1.0)
115
+ else
116
+ boiler.setOptimumPartLoadRatio(opt_plr)
117
+ end
118
+
119
+ boiler.setSizingFactor(sizing_factor) unless sizing_factor.nil?
120
+
121
+ # add to supply side of hot water loop if specified
122
+ hot_water_loop&.addSupplyBranchForComponent(boiler)
123
+
124
+ return boiler
125
+ end
126
+
127
+ # Return the capacity in W of a BoilerHotWater
128
+ #
129
+ # @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
130
+ # @return [Double] capacity in W
131
+ def self.boiler_hot_water_get_capacity(boiler_hot_water)
132
+ capacity_w = nil
133
+ if boiler_hot_water.nominalCapacity.is_initialized
134
+ capacity_w = boiler_hot_water.nominalCapacity.get
135
+ elsif boiler_hot_water.autosizedNominalCapacity.is_initialized
136
+ capacity_w = boiler_hot_water.autosizedNominalCapacity.get
137
+ else
138
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.HVAC.boiler_hot_water', "For #{boiler_hot_water.name} capacity is not available.")
139
+ return capacity_w
140
+ end
141
+
142
+ return capacity_w
143
+ end
144
+
145
+ # Return the design water flow rate in m^3/s of a BoilerHotWater
146
+ #
147
+ # @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
148
+ # @return [Double] design water flow rate in m^3/s
149
+ def self.boiler_hot_water_get_water_flow_rate(boiler_hot_water)
150
+ design_water_flow_rate_m3_per_s = nil
151
+ if boiler_hot_water.designWaterFlowRate.is_initialized
152
+ design_water_flow_rate_m3_per_s = boiler_hot_water.designWaterFlowRate.get
153
+ elsif boiler_hot_water.autosizedDesignWaterFlowRate.is_initialized
154
+ design_water_flow_rate_m3_per_s = boiler_hot_water.autosizedDesignWaterFlowRate.get
155
+ else
156
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.HVAC.boiler_hot_water', "For #{boiler_hot_water.name} design water flow rate is not available.")
157
+ return design_water_flow_rate_m3_per_s
158
+ end
159
+
160
+ return design_water_flow_rate_m3_per_s
161
+ end
162
+ end
163
+ end