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
@@ -1,169 +0,0 @@
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:Create
5
- # Methods to create HVAC component objects
6
-
7
- # creates HeatExchangerAirToAirSensibleAndLatent object with user-input effectiveness values
8
- #
9
- # @param model [OpenStudio::Model::Model] OpenStudio model
10
- # @param name [String]
11
- # @param type [String] Heat Exchanger Type. One of 'Plate', 'Rotary'
12
- # @param economizer_lockout [Boolean] whether hx is locked out during economizing
13
- # @param supply_air_outlet_temperature_control [Boolean]
14
- # @param frost_control_type [String] HX frost control type. One of 'None', 'ExhaustAirRecirculation', 'ExhaustOnly', 'MinimumExhaustTemperature'
15
- # @param nominal_electric_power [Float] Nominal electric power
16
- # @param sensible_heating_100_eff [Float]
17
- # @param sensible_heating_75_eff [Float]
18
- # @param latent_heating_100_eff [Float]
19
- # @param latent_heating_75_eff [Float]
20
- # @param sensible_cooling_100_eff [Float]
21
- # @param sensible_cooling_75_eff [Float]
22
- # @param latent_cooling_100_eff [Float]
23
- # @param latent_cooling_75_eff [Float]
24
- # @return [<OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent>]
25
- def self.create_hx_air_to_air_sensible_and_latent(model,
26
- name: nil,
27
- type: nil,
28
- economizer_lockout: nil,
29
- supply_air_outlet_temperature_control: nil,
30
- frost_control_type: nil,
31
- nominal_electric_power: nil,
32
- sensible_heating_100_eff: nil,
33
- sensible_heating_75_eff: nil,
34
- latent_heating_100_eff: nil,
35
- latent_heating_75_eff: nil,
36
- sensible_cooling_100_eff: nil,
37
- sensible_cooling_75_eff: nil,
38
- latent_cooling_100_eff: nil,
39
- latent_cooling_75_eff: nil)
40
-
41
- hx = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(model)
42
- hx.setName(name) unless name.nil?
43
-
44
- unless type.nil?
45
- if OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.heatExchangerTypeValues.include?(type)
46
- hx.setHeatExchangerType(type)
47
- else
48
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.Hvac', "Entered heat exchanger type #{type} not a valid type value. Enter one of #{OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.heatExchangerTypeValues}")
49
- end
50
- end
51
-
52
- unless frost_control_type.nil?
53
- if OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.frostControlTypeValues.include?(frost_control_type)
54
- hx.setFrostControlType(frost_control_type)
55
- else
56
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.Hvac', "Entered heat exchanger frost control type #{frost_control_type} not a valid type value. Enter one of #{OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.frostControlTypeValues}")
57
- end
58
- end
59
-
60
- hx.setEconomizerLockout(economizer_lockout) unless economizer_lockout.nil?
61
- hx.setSupplyAirOutletTemperatureControl(supply_air_outlet_temperature_control) unless supply_air_outlet_temperature_control.nil?
62
- hx.setNominalElectricPower(nominal_electric_power) unless nominal_electric_power.nil?
63
-
64
- if model.version < OpenStudio::VersionString.new('3.8.0')
65
- hx.setSensibleEffectivenessat100HeatingAirFlow(sensible_heating_100_eff) unless sensible_heating_100_eff.nil?
66
- hx.setSensibleEffectivenessat75HeatingAirFlow(sensible_heating_75_eff) unless sensible_heating_75_eff.nil?
67
- hx.setLatentEffectivenessat100HeatingAirFlow(latent_heating_100_eff) unless latent_heating_100_eff.nil?
68
- hx.setLatentEffectivenessat75HeatingAirFlow(latent_heating_75_eff) unless latent_heating_75_eff.nil?
69
- hx.setSensibleEffectivenessat100CoolingAirFlow(sensible_cooling_100_eff) unless sensible_cooling_100_eff.nil?
70
- hx.setSensibleEffectivenessat75CoolingAirFlow(sensible_cooling_75_eff) unless sensible_cooling_75_eff.nil?
71
- hx.setLatentEffectivenessat100CoolingAirFlow(latent_cooling_100_eff) unless latent_cooling_100_eff.nil?
72
- hx.setLatentEffectivenessat75CoolingAirFlow(latent_cooling_75_eff) unless latent_cooling_75_eff.nil?
73
- else
74
- effectiveness_inputs = Hash.new { |hash, key| hash[key] = {} }
75
- effectiveness_inputs['Sensible Heating'][0.75] = sensible_heating_75_eff.to_f unless sensible_heating_75_eff.nil?
76
- effectiveness_inputs['Sensible Heating'][1.0] = sensible_heating_100_eff.to_f unless sensible_heating_100_eff.nil?
77
- effectiveness_inputs['Latent Heating'][0.75] = latent_heating_75_eff.to_f unless latent_heating_75_eff.nil?
78
- effectiveness_inputs['Latent Heating'][1.0] = latent_heating_100_eff.to_f unless latent_heating_100_eff.nil?
79
- effectiveness_inputs['Sensible Cooling'][0.75] = sensible_cooling_75_eff.to_f unless sensible_cooling_75_eff.nil?
80
- effectiveness_inputs['Sensible Cooling'][1.0] = sensible_cooling_100_eff.to_f unless sensible_cooling_100_eff.nil?
81
- effectiveness_inputs['Latent Cooling'][0.75] = latent_cooling_75_eff.to_f unless latent_cooling_75_eff.nil?
82
- effectiveness_inputs['Latent Cooling'][1.0] = latent_cooling_100_eff.to_f unless latent_cooling_100_eff.nil?
83
-
84
- if effectiveness_inputs.values.all?(&:empty?)
85
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Hvac', 'Creating HX with historical effectiveness curves')
86
- defaults = true
87
- else
88
- defaults = false
89
- end
90
-
91
- OpenstudioStandards::HVAC.heat_exchanger_air_to_air_set_effectiveness_values(hx, defaults: defaults, values: effectiveness_inputs)
92
- end
93
-
94
- return hx
95
- end
96
-
97
- # creates LookupTable objects to define effectiveness of HeatExchangerAirToAirSensibleAndLatent objects
98
- #
99
- # @param hx [OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent] OpenStudio HX object to update
100
- # @param type [String] type of curve to create. one of 'Sensible Heating', 'Latent Heating, 'Sensible Cooling', 'Latent Cooling'
101
- # @param values_hash [Hash{Float=>Float}] user_input { flow decimal fraction => effectiveness } decimal fraction pairs, e.g. { 0.75 => 0.81, 1.0 => 0.76 }
102
- # @return [OpenStudio::Model::TableLookup] lookup table object
103
- def self.create_hx_effectiveness_table(hx, type, values_hash)
104
- # validate inputs
105
- types = ['Sensible Heating', 'Latent Heating', 'Sensible Cooling', 'Latent Cooling']
106
- unless types.include? type
107
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Hvac', "#{__method__} requires effectiveness type as one of #{types}")
108
- return false
109
- end
110
-
111
- def self.validate_effectiveness_hash(values_hash)
112
- values_hash.all? do |key, value|
113
- key.is_a?(Float) && value.is_a?(Float) && key.between?(0.0, 1.0) && value.between?(0.0, 1.0)
114
- end
115
- end
116
-
117
- if !validate_effectiveness_hash(values_hash)
118
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Hvac', "#{__method__} require values_hash to have keys and values between 0.0 and 1.0: #{values_hash}")
119
- return false
120
- end
121
-
122
- # look for existing curve
123
- type_a = type.split
124
- method_name = "#{type_a[0].downcase}Effectivenessof#{type_a[1]}AirFlowCurve"
125
-
126
- # use existing independent variable object if found and matches inputs
127
- iv = nil
128
- table = OpenStudio::Model::OptionalTableLookup.new
129
- if hx.send(method_name).is_initialized
130
- table = hx.send(method_name).get.to_TableLookup
131
- curve = table.get
132
- iv_existing = curve.independentVariables.first
133
- if values_hash.keys.sort == iv_existing.values.sort
134
- iv = iv_existing
135
- end
136
- end
137
-
138
- # otherwise create new independent variable
139
- if iv.nil?
140
- iv = OpenStudio::Model::TableIndependentVariable.new(hx.model)
141
- iv.setName("#{hx.name.get}_#{type.gsub(' ', '')}_IndependentVariable")
142
- iv.setInterpolationMethod('Linear')
143
- iv.setExtrapolationMethod('Linear')
144
- iv.setMinimumValue(0.0)
145
- iv.setMaximumValue(10.0)
146
- iv.setUnitType('Dimensionless')
147
- values_hash.keys.sort.each { |k| iv.addValue(k) }
148
- end
149
-
150
- # create new lookup table
151
- t = OpenStudio::Model::TableLookup.new(hx.model)
152
- t.setName("#{hx.name.get}_#{type.gsub(/ible|ent|ing|\s/, '')}Eff")
153
- t.addIndependentVariable(iv)
154
- t.setNormalizationMethod('DivisorOnly')
155
- t.setMinimumOutput(0.0)
156
- t.setMaximumOutput(10.0)
157
- t.setOutputUnitType('Dimensionless')
158
- values = values_hash.sort.map { |a| a[1] }
159
- # protect against setting normalization divisor to zero for zero effectiveness
160
- values[-1].zero? ? t.setNormalizationDivisor(1) : t.setNormalizationDivisor(values[-1])
161
- values.each { |v| t.addOutputValue(v) }
162
-
163
- # remove curve if found
164
- table.get.remove if table.is_initialized
165
-
166
- return t
167
- end
168
- end
169
- end
@@ -1,42 +0,0 @@
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:Modify
5
- # Methods to modify HVAC Component objects
6
-
7
- # Applies historical default or user-input effectiveness values to a HeatExchangerAirToAirSensibleAndLatent object
8
- #
9
- # @param hx [<OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent>] OpenStudio HX object to update
10
- # @param defaults [Boolean] flag to apply historical default curves
11
- # @param values [Hash{String=>Hash{Float=>Float}}] user-input effectiveness values, where keys are one of
12
- # 'Sensible Heating', 'Latent Heating, 'Sensible Cooling', 'Latent Cooling'
13
- # and value is a hash of { flow decimal fraction => effectivess decimal fraction }, e.g. { 0.75 => 0.81, 1.0 => 0.76 }
14
- # @return [<OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent>] modified OpenStudio HX object
15
- def self.heat_exchanger_air_to_air_set_effectiveness_values(hx, defaults: false, values: nil)
16
- if defaults
17
- hx.assignHistoricalEffectivenessCurves
18
- if values.nil?
19
- return hx
20
- end
21
- elsif values.nil?
22
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.Hvac', "#{__method__} called with defaults=false and no values provided. #{hx.name.get} will not be modified")
23
- return hx
24
- end
25
-
26
- values.each do |type, values_hash|
27
- # ensure values_hash has one value at 100% flow
28
- unless values_hash.key?(1.0)
29
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Hvac', "Effectiveness Values for #{type} do not include 100% flow effectivenss. Cannot set effectiveness curves")
30
- return false
31
- end
32
-
33
- lookup_table = OpenstudioStandards::HVAC.create_hx_effectiveness_table(hx, type, values_hash)
34
- type_a = type.split
35
- hx.send("set#{type_a[0]}Effectivenessat100#{type_a[1]}AirFlow", values_hash[1.0])
36
- hx.send("set#{type_a[0]}Effectivenessof#{type_a[1]}AirFlowCurve", lookup_table)
37
- end
38
-
39
- return hx
40
- end
41
- end
42
- end
@@ -1,438 +0,0 @@
1
- class Standard
2
- # @!group AirConditionerVariableRefrigerantFlow
3
-
4
- # Prototype AirConditionerVariableRefrigerantFlow object
5
- # Enters in default curves for coil by type of coil
6
- #
7
- # @param model [OpenStudio::Model::Model] OpenStudio model object
8
- # @param name [String] the name of the system, or nil in which case it will be defaulted
9
- # @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
10
- # @param type [String] the type of unit to reference for the correct curve set
11
- # @param cooling_cop [Double] rated cooling coefficient of performance
12
- # @param heating_cop [Double] rated heating coefficient of performance
13
- # @param heat_recovery [Boolean] does the unit have heat recovery
14
- # @param defrost_strategy [String] type of defrost strategy. options are ReverseCycle or Resistive
15
- # @param condenser_type [String] type of condenser
16
- # options are AirCooled (default), WaterCooled, and EvaporativelyCooled.
17
- # if WaterCooled, the user most include a condenser_loop
18
- # @param master_zone [<OpenStudio::Model::ThermalZone>] master control zone to switch between heating and cooling
19
- # @param priority_control_type [String] type of master thermostat priority control type
20
- # options are LoadPriority, ZonePriority, ThermostatOffsetPriority, MasterThermostatPriority
21
- # @return [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] the vrf unit
22
- def create_air_conditioner_variable_refrigerant_flow(model,
23
- name: 'VRF System',
24
- schedule: nil,
25
- type: nil,
26
- cooling_cop: 4.287,
27
- heating_cop: 4.147,
28
- heat_recovery: true,
29
- defrost_strategy: 'Resistive',
30
- condenser_type: 'AirCooled',
31
- condenser_loop: nil,
32
- master_zone: nil,
33
- priority_control_type: 'LoadPriority')
34
-
35
- vrf_outdoor_unit = OpenStudio::Model::AirConditionerVariableRefrigerantFlow.new(model)
36
-
37
- # set name
38
- if name.nil?
39
- vrf_outdoor_unit.setName('VRF System')
40
- else
41
- vrf_outdoor_unit.setName(name)
42
- end
43
-
44
- # set availability schedule
45
- if schedule.nil?
46
- # default always on
47
- availability_schedule = model.alwaysOnDiscreteSchedule
48
- elsif schedule.instance_of?(String)
49
- availability_schedule = model_add_schedule(model, schedule)
50
-
51
- if availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
52
- availability_schedule = model.alwaysOffDiscreteSchedule
53
- elsif availability_schedule.nil?
54
- availability_schedule = model.alwaysOnDiscreteSchedule
55
- end
56
- elsif !schedule.to_Schedule.empty?
57
- availability_schedule = schedule
58
- else
59
- availability_schedule = model.alwaysOnDiscreteSchedule
60
- end
61
- vrf_outdoor_unit.setAvailabilitySchedule(availability_schedule)
62
-
63
- # set cops
64
- if model.version < OpenStudio::VersionString.new('2.9.0')
65
- vrf_outdoor_unit.setRatedCoolingCOP(cooling_cop)
66
- else
67
- vrf_outdoor_unit.setGrossRatedCoolingCOP(cooling_cop)
68
- end
69
- vrf_outdoor_unit.setRatedHeatingCOP(heating_cop)
70
-
71
- # heat recovery
72
- if heat_recovery
73
- vrf_outdoor_unit.setHeatPumpWasteHeatRecovery(true)
74
- else
75
- vrf_outdoor_unit.setHeatPumpWasteHeatRecovery(false)
76
- end
77
-
78
- # defrost strategy
79
- vrf_outdoor_unit.setDefrostStrategy(defrost_strategy)
80
-
81
- # defaults
82
- vrf_outdoor_unit.setMinimumOutdoorTemperatureinCoolingMode(-15.0)
83
- vrf_outdoor_unit.setMaximumOutdoorTemperatureinCoolingMode(50.0)
84
- vrf_outdoor_unit.setMinimumOutdoorTemperatureinHeatingMode(-25.0)
85
- vrf_outdoor_unit.setMaximumOutdoorTemperatureinHeatingMode(16.1)
86
- vrf_outdoor_unit.setMinimumOutdoorTemperatureinHeatRecoveryMode(-10.0)
87
- vrf_outdoor_unit.setMaximumOutdoorTemperatureinHeatRecoveryMode(27.2)
88
- vrf_outdoor_unit.setEquivalentPipingLengthusedforPipingCorrectionFactorinCoolingMode(30.48)
89
- vrf_outdoor_unit.setEquivalentPipingLengthusedforPipingCorrectionFactorinHeatingMode(30.48)
90
- vrf_outdoor_unit.setVerticalHeightusedforPipingCorrectionFactor(10.668)
91
-
92
- # condenser type
93
- if condenser_type == 'WaterCooled'
94
- vrf_outdoor_unit.setString(56, condenser_type)
95
- # require condenser_loop
96
- unless condenser_loop
97
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.Model.Model', 'Must specify condenser_loop for vrf_outdoor_unit if WaterCooled')
98
- end
99
- condenser_loop.addDemandBranchForComponent(vrf_outdoor_unit)
100
- elsif condenser_type == 'EvaporativelyCooled'
101
- vrf_outdoor_unit.setString(56, condenser_type)
102
- end
103
-
104
- # set master zone
105
- unless master_zone.to_ThermalZone.empty?
106
- vrf_outdoor_unit.setZoneforMasterThermostatLocation(master_zone)
107
- vrf_outdoor_unit.setMasterThermostatPriorityControlType(priority_control_type)
108
- end
109
-
110
- vrf_cool_cap_f_of_low_temp = nil
111
- vrf_cool_cap_ratio_boundary = nil
112
- vrf_cool_cap_f_of_high_temp = nil
113
- vrf_cool_eir_f_of_low_temp = nil
114
- vrf_cool_eir_ratio_boundary = nil
115
- vrf_cool_eir_f_of_high_temp = nil
116
- vrf_cooling_eir_low_plr = nil
117
- vrf_cooling_eir_high_plr = nil
118
- vrf_cooling_comb_ratio = nil
119
- vrf_cooling_cplffplr = nil
120
- vrf_heat_cap_f_of_low_temp = nil
121
- vrf_heat_cap_ratio_boundary = nil
122
- vrf_heat_cap_f_of_high_temp = nil
123
- vrf_heat_eir_f_of_low_temp = nil
124
- vrf_heat_eir_boundary = nil
125
- vrf_heat_eir_f_of_high_temp = nil
126
- vrf_heating_eir_low_plr = nil
127
- vrf_heating_eir_hi_plr = nil
128
- vrf_heating_comb_ratio = nil
129
- vrf_heating_cplffplr = nil
130
- vrf_defrost_eir_f_of_temp = nil
131
-
132
- # curve sets
133
- if type == 'OS default'
134
-
135
- # use OS default curves
136
-
137
- else # default curve set
138
-
139
- # based on DAIKINREYQ 120 on BCL
140
-
141
- # Cooling Capacity Ratio Modifier Function of Low Temperature Curve
142
- vrf_cool_cap_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
143
- vrf_cool_cap_f_of_low_temp.setName('vrf_cool_cap_f_of_low_temp')
144
- vrf_cool_cap_f_of_low_temp.setCoefficient1Constant(-1.69653019339465)
145
- vrf_cool_cap_f_of_low_temp.setCoefficient2x(0.207248180531939)
146
- vrf_cool_cap_f_of_low_temp.setCoefficient3xPOW2(-0.00343146229659024)
147
- vrf_cool_cap_f_of_low_temp.setCoefficient4y(0.016381597419714)
148
- vrf_cool_cap_f_of_low_temp.setCoefficient5yPOW2(-6.7387172629965e-05)
149
- vrf_cool_cap_f_of_low_temp.setCoefficient6xTIMESY(-0.000849848402870241)
150
- vrf_cool_cap_f_of_low_temp.setMinimumValueofx(13.9)
151
- vrf_cool_cap_f_of_low_temp.setMaximumValueofx(23.9)
152
- vrf_cool_cap_f_of_low_temp.setMinimumValueofy(-5.0)
153
- vrf_cool_cap_f_of_low_temp.setMaximumValueofy(43.3)
154
- vrf_cool_cap_f_of_low_temp.setMinimumCurveOutput(0.59)
155
- vrf_cool_cap_f_of_low_temp.setMaximumCurveOutput(1.33)
156
-
157
- # Cooling Capacity Ratio Boundary Curve
158
- vrf_cool_cap_ratio_boundary = OpenStudio::Model::CurveCubic.new(model)
159
- vrf_cool_cap_ratio_boundary.setName('vrf_cool_cap_ratio_boundary')
160
- vrf_cool_cap_ratio_boundary.setCoefficient1Constant(25.73)
161
- vrf_cool_cap_ratio_boundary.setCoefficient2x(-0.03150043)
162
- vrf_cool_cap_ratio_boundary.setCoefficient3xPOW2(-0.01416595)
163
- vrf_cool_cap_ratio_boundary.setCoefficient4xPOW3(0.0)
164
- vrf_cool_cap_ratio_boundary.setMinimumValueofx(11.0)
165
- vrf_cool_cap_ratio_boundary.setMaximumValueofx(30.0)
166
-
167
- # Cooling Capacity Ratio Modifier Function of High Temperature Curve
168
- vrf_cool_cap_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
169
- vrf_cool_cap_f_of_high_temp.setName('vrf_cool_cap_f_of_high_temp')
170
- vrf_cool_cap_f_of_high_temp.setCoefficient1Constant(0.6867358)
171
- vrf_cool_cap_f_of_high_temp.setCoefficient2x(0.0207631)
172
- vrf_cool_cap_f_of_high_temp.setCoefficient3xPOW2(0.0005447)
173
- vrf_cool_cap_f_of_high_temp.setCoefficient4y(-0.0016218)
174
- vrf_cool_cap_f_of_high_temp.setCoefficient5yPOW2(-4.259e-07)
175
- vrf_cool_cap_f_of_high_temp.setCoefficient6xTIMESY(-0.0003392)
176
- vrf_cool_cap_f_of_high_temp.setMinimumValueofx(15.0)
177
- vrf_cool_cap_f_of_high_temp.setMaximumValueofx(24.0)
178
- vrf_cool_cap_f_of_high_temp.setMinimumValueofy(16.0)
179
- vrf_cool_cap_f_of_high_temp.setMaximumValueofy(43.0)
180
-
181
- # Cooling Energy Input Ratio Modifier Function of Low Temperature Curve
182
- vrf_cool_eir_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
183
- vrf_cool_eir_f_of_low_temp.setName('vrf_cool_eir_f_of_low_temp')
184
- vrf_cool_eir_f_of_low_temp.setCoefficient1Constant(-1.61908214818635)
185
- vrf_cool_eir_f_of_low_temp.setCoefficient2x(0.185964818731756)
186
- vrf_cool_eir_f_of_low_temp.setCoefficient3xPOW2(-0.00389610393381592)
187
- vrf_cool_eir_f_of_low_temp.setCoefficient4y(-0.00901995326324613)
188
- vrf_cool_eir_f_of_low_temp.setCoefficient5yPOW2(0.00030340007815629)
189
- vrf_cool_eir_f_of_low_temp.setCoefficient6xTIMESY(0.000476048529099348)
190
- vrf_cool_eir_f_of_low_temp.setMinimumValueofx(13.9)
191
- vrf_cool_eir_f_of_low_temp.setMaximumValueofx(23.9)
192
- vrf_cool_eir_f_of_low_temp.setMinimumValueofy(-5.0)
193
- vrf_cool_eir_f_of_low_temp.setMaximumValueofy(43.3)
194
- vrf_cool_eir_f_of_low_temp.setMinimumCurveOutput(0.27)
195
- vrf_cool_eir_f_of_low_temp.setMaximumCurveOutput(1.15)
196
-
197
- # Cooling Energy Input Ratio Boundary Curve
198
- vrf_cool_eir_ratio_boundary = OpenStudio::Model::CurveCubic.new(model)
199
- vrf_cool_eir_ratio_boundary.setName('vrf_cool_eir_ratio_boundary')
200
- vrf_cool_eir_ratio_boundary.setCoefficient1Constant(25.73473775)
201
- vrf_cool_eir_ratio_boundary.setCoefficient2x(-0.03150043)
202
- vrf_cool_eir_ratio_boundary.setCoefficient3xPOW2(-0.01416595)
203
- vrf_cool_eir_ratio_boundary.setCoefficient4xPOW3(0.0)
204
- vrf_cool_eir_ratio_boundary.setMinimumValueofx(15.0)
205
- vrf_cool_eir_ratio_boundary.setMaximumValueofx(24.0)
206
-
207
- # Cooling Energy Input Ratio Modifier Function of High Temperature Curve
208
- vrf_cool_eir_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
209
- vrf_cool_eir_f_of_high_temp.setName('vrf_cool_eir_f_of_high_temp')
210
- vrf_cool_eir_f_of_high_temp.setCoefficient1Constant(-1.4395110176)
211
- vrf_cool_eir_f_of_high_temp.setCoefficient2x(0.1619850459)
212
- vrf_cool_eir_f_of_high_temp.setCoefficient3xPOW2(-0.0034911781)
213
- vrf_cool_eir_f_of_high_temp.setCoefficient4y(0.0269442645)
214
- vrf_cool_eir_f_of_high_temp.setCoefficient5yPOW2(0.0001346163)
215
- vrf_cool_eir_f_of_high_temp.setCoefficient6xTIMESY(-0.0006714941)
216
- vrf_cool_eir_f_of_high_temp.setMinimumValueofx(15.0)
217
- vrf_cool_eir_f_of_high_temp.setMaximumValueofx(23.9)
218
- vrf_cool_eir_f_of_high_temp.setMinimumValueofy(16.8)
219
- vrf_cool_eir_f_of_high_temp.setMaximumValueofy(43.3)
220
-
221
- # Cooling Energy Input Ratio Modifier Function of Low Part-Load Ratio Curve
222
- vrf_cooling_eir_low_plr = OpenStudio::Model::CurveCubic.new(model)
223
- vrf_cooling_eir_low_plr.setName('vrf_cool_eir_f_of_low_temp')
224
- vrf_cooling_eir_low_plr.setCoefficient1Constant(0.0734992169827752)
225
- vrf_cooling_eir_low_plr.setCoefficient2x(0.334783365234032)
226
- vrf_cooling_eir_low_plr.setCoefficient3xPOW2(0.591613015486343)
227
- vrf_cooling_eir_low_plr.setCoefficient4xPOW3(0.0)
228
- vrf_cooling_eir_low_plr.setMinimumValueofx(0.25)
229
- vrf_cooling_eir_low_plr.setMaximumValueofx(1.0)
230
- vrf_cooling_eir_low_plr.setMinimumCurveOutput(0.0)
231
- vrf_cooling_eir_low_plr.setMaximumCurveOutput(1.0)
232
-
233
- # Cooling Energy Input Ratio Modifier Function of High Part-Load Ratio Curve
234
- vrf_cooling_eir_high_plr = OpenStudio::Model::CurveCubic.new(model)
235
- vrf_cooling_eir_high_plr.setName('vrf_cooling_eir_high_plr')
236
- vrf_cooling_eir_high_plr.setCoefficient1Constant(1.0)
237
- vrf_cooling_eir_high_plr.setCoefficient2x(0.0)
238
- vrf_cooling_eir_high_plr.setCoefficient3xPOW2(0.0)
239
- vrf_cooling_eir_high_plr.setCoefficient4xPOW3(0.0)
240
- vrf_cooling_eir_high_plr.setMinimumValueofx(1.0)
241
- vrf_cooling_eir_high_plr.setMaximumValueofx(1.5)
242
-
243
- # Cooling Combination Ratio Correction Factor Curve
244
- vrf_cooling_comb_ratio = OpenStudio::Model::CurveCubic.new(model)
245
- vrf_cooling_comb_ratio.setName('vrf_cooling_comb_ratio')
246
- vrf_cooling_comb_ratio.setCoefficient1Constant(0.24034)
247
- vrf_cooling_comb_ratio.setCoefficient2x(-0.21873)
248
- vrf_cooling_comb_ratio.setCoefficient3xPOW2(1.97941)
249
- vrf_cooling_comb_ratio.setCoefficient4xPOW3(-1.02636)
250
- vrf_cooling_comb_ratio.setMinimumValueofx(0.5)
251
- vrf_cooling_comb_ratio.setMaximumValueofx(2.0)
252
- vrf_cooling_comb_ratio.setMinimumCurveOutput(0.5)
253
- vrf_cooling_comb_ratio.setMaximumCurveOutput(1.056)
254
-
255
- # Cooling Part-Load Fraction Correlation Curve
256
- vrf_cooling_cplffplr = OpenStudio::Model::CurveCubic.new(model)
257
- vrf_cooling_cplffplr.setName('vrf_cooling_cplffplr')
258
- vrf_cooling_cplffplr.setCoefficient1Constant(0.85)
259
- vrf_cooling_cplffplr.setCoefficient2x(0.15)
260
- vrf_cooling_cplffplr.setCoefficient3xPOW2(0.0)
261
- vrf_cooling_cplffplr.setCoefficient4xPOW3(0.0)
262
- vrf_cooling_cplffplr.setMinimumValueofx(1.0)
263
- vrf_cooling_cplffplr.setMaximumValueofx(1.0)
264
-
265
- # Heating Capacity Ratio Modifier Function of Low Temperature Curve Name
266
- vrf_heat_cap_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
267
- vrf_heat_cap_f_of_low_temp.setName('vrf_heat_cap_f_of_low_temp')
268
- vrf_heat_cap_f_of_low_temp.setCoefficient1Constant(0.983220174655636)
269
- vrf_heat_cap_f_of_low_temp.setCoefficient2x(0.0157167577703294)
270
- vrf_heat_cap_f_of_low_temp.setCoefficient3xPOW2(-0.000835032422884084)
271
- vrf_heat_cap_f_of_low_temp.setCoefficient4y(0.0522939264581759)
272
- vrf_heat_cap_f_of_low_temp.setCoefficient5yPOW2(-0.000531556035364549)
273
- vrf_heat_cap_f_of_low_temp.setCoefficient6xTIMESY(-0.00190605953116024)
274
- vrf_heat_cap_f_of_low_temp.setMinimumValueofx(16.1)
275
- vrf_heat_cap_f_of_low_temp.setMaximumValueofx(23.9)
276
- vrf_heat_cap_f_of_low_temp.setMinimumValueofy(-25.0)
277
- vrf_heat_cap_f_of_low_temp.setMaximumValueofy(13.3)
278
- vrf_heat_cap_f_of_low_temp.setMinimumCurveOutput(0.515151515151515)
279
- vrf_heat_cap_f_of_low_temp.setMaximumCurveOutput(1.2)
280
-
281
- # Heating Capacity Ratio Boundary Curve Name
282
- vrf_heat_cap_ratio_boundary = OpenStudio::Model::CurveCubic.new(model)
283
- vrf_heat_cap_ratio_boundary.setName('vrf_heat_cap_ratio_boundary')
284
- vrf_heat_cap_ratio_boundary.setCoefficient1Constant(58.577)
285
- vrf_heat_cap_ratio_boundary.setCoefficient2x(-3.0255)
286
- vrf_heat_cap_ratio_boundary.setCoefficient3xPOW2(0.0193)
287
- vrf_heat_cap_ratio_boundary.setCoefficient4xPOW3(0.0)
288
- vrf_heat_cap_ratio_boundary.setMinimumValueofx(15)
289
- vrf_heat_cap_ratio_boundary.setMaximumValueofx(23.9)
290
-
291
- # Heating Capacity Ratio Modifier Function of High Temperature Curve Name
292
- vrf_heat_cap_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
293
- vrf_heat_cap_f_of_high_temp.setName('vrf_heat_cap_f_of_high_temp')
294
- vrf_heat_cap_f_of_high_temp.setCoefficient1Constant(2.5859872368)
295
- vrf_heat_cap_f_of_high_temp.setCoefficient2x(-0.0953227101)
296
- vrf_heat_cap_f_of_high_temp.setCoefficient3xPOW2(0.0009553288)
297
- vrf_heat_cap_f_of_high_temp.setCoefficient4y(0.0)
298
- vrf_heat_cap_f_of_high_temp.setCoefficient5yPOW2(0.0)
299
- vrf_heat_cap_f_of_high_temp.setCoefficient6xTIMESY(0.0)
300
- vrf_heat_cap_f_of_high_temp.setMinimumValueofx(21.1)
301
- vrf_heat_cap_f_of_high_temp.setMaximumValueofx(27.2)
302
- vrf_heat_cap_f_of_high_temp.setMinimumValueofy(-944)
303
- vrf_heat_cap_f_of_high_temp.setMaximumValueofy(15)
304
-
305
- # Heating Energy Input Ratio Modifier Function of Low Temperature Curve Name
306
- vrf_heat_eir_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
307
- vrf_heat_eir_f_of_low_temp.setName('vrf_heat_eir_f_of_low_temp')
308
- vrf_heat_eir_f_of_low_temp.setCoefficient1Constant(0.756830029796909)
309
- vrf_heat_eir_f_of_low_temp.setCoefficient2x(0.0457499799042671)
310
- vrf_heat_eir_f_of_low_temp.setCoefficient3xPOW2(-0.00136357240431388)
311
- vrf_heat_eir_f_of_low_temp.setCoefficient4y(0.0554884599902023)
312
- vrf_heat_eir_f_of_low_temp.setCoefficient5yPOW2(-0.00120700875497686)
313
- vrf_heat_eir_f_of_low_temp.setCoefficient6xTIMESY(-0.00303329271420931)
314
- vrf_heat_eir_f_of_low_temp.setMinimumValueofx(16.1)
315
- vrf_heat_eir_f_of_low_temp.setMaximumValueofx(23.9)
316
- vrf_heat_eir_f_of_low_temp.setMinimumValueofy(-25.0)
317
- vrf_heat_eir_f_of_low_temp.setMaximumValueofy(13.3)
318
- vrf_heat_eir_f_of_low_temp.setMinimumCurveOutput(0.7)
319
- vrf_heat_eir_f_of_low_temp.setMaximumCurveOutput(1.184)
320
-
321
- # Heating Energy Input Ratio Boundary Curve Name
322
- vrf_heat_eir_boundary = OpenStudio::Model::CurveCubic.new(model)
323
- vrf_heat_eir_boundary.setName('vrf_heat_eir_boundary')
324
- vrf_heat_eir_boundary.setCoefficient1Constant(58.577)
325
- vrf_heat_eir_boundary.setCoefficient2x(-3.0255)
326
- vrf_heat_eir_boundary.setCoefficient3xPOW2(0.0193)
327
- vrf_heat_eir_boundary.setCoefficient4xPOW3(0.0)
328
- vrf_heat_eir_boundary.setMinimumValueofx(15.0)
329
- vrf_heat_eir_boundary.setMaximumValueofx(23.9)
330
-
331
- # Heating Energy Input Ratio Modifier Function of High Temperature Curve Name
332
- vrf_heat_eir_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
333
- vrf_heat_eir_f_of_high_temp.setName('vrf_heat_eir_f_of_high_temp')
334
- vrf_heat_eir_f_of_high_temp.setCoefficient1Constant(1.3885703646)
335
- vrf_heat_eir_f_of_high_temp.setCoefficient2x(-0.0229771462)
336
- vrf_heat_eir_f_of_high_temp.setCoefficient3xPOW2(0.000537274)
337
- vrf_heat_eir_f_of_high_temp.setCoefficient4y(-0.0273936962)
338
- vrf_heat_eir_f_of_high_temp.setCoefficient5yPOW2(0.0004030426)
339
- vrf_heat_eir_f_of_high_temp.setCoefficient6xTIMESY(-5.9786e-05)
340
- vrf_heat_eir_f_of_high_temp.setMinimumValueofx(21.1)
341
- vrf_heat_eir_f_of_high_temp.setMaximumValueofx(27.2)
342
- vrf_heat_eir_f_of_high_temp.setMinimumValueofy(0.0)
343
- vrf_heat_eir_f_of_high_temp.setMaximumValueofy(1.0)
344
-
345
- # Heating Performance Curve Outdoor Temperature Type
346
- vrf_outdoor_unit.setHeatingPerformanceCurveOutdoorTemperatureType('WetBulbTemperature')
347
-
348
- # Heating Energy Input Ratio Modifier Function of Low Part-Load Ratio Curve Name
349
- vrf_heating_eir_low_plr = OpenStudio::Model::CurveCubic.new(model)
350
- vrf_heating_eir_low_plr.setName('vrf_heating_eir_low_plr')
351
- vrf_heating_eir_low_plr.setCoefficient1Constant(0.0724906507105475)
352
- vrf_heating_eir_low_plr.setCoefficient2x(0.658189977561701)
353
- vrf_heating_eir_low_plr.setCoefficient3xPOW2(0.269259536275246)
354
- vrf_heating_eir_low_plr.setCoefficient4xPOW3(0.0)
355
- vrf_heating_eir_low_plr.setMinimumValueofx(0.25)
356
- vrf_heating_eir_low_plr.setMaximumValueofx(1.0)
357
- vrf_heating_eir_low_plr.setMinimumCurveOutput(0.0)
358
- vrf_heating_eir_low_plr.setMaximumCurveOutput(1.0)
359
-
360
- # Heating Energy Input Ratio Modifier Function of High Part-Load Ratio Curve Name
361
- vrf_heating_eir_hi_plr = OpenStudio::Model::CurveCubic.new(model)
362
- vrf_heating_eir_hi_plr.setName('vrf_heating_eir_hi_plr')
363
- vrf_heating_eir_hi_plr.setCoefficient1Constant(1.0)
364
- vrf_heating_eir_hi_plr.setCoefficient2x(0.0)
365
- vrf_heating_eir_hi_plr.setCoefficient3xPOW2(0.0)
366
- vrf_heating_eir_hi_plr.setCoefficient4xPOW3(0.0)
367
- vrf_heating_eir_hi_plr.setMinimumValueofx(1.0)
368
- vrf_heating_eir_hi_plr.setMaximumValueofx(1.5)
369
-
370
- # Heating Combination Ratio Correction Factor Curve Name
371
- vrf_heating_comb_ratio = OpenStudio::Model::CurveCubic.new(model)
372
- vrf_heating_comb_ratio.setName('vrf_heating_comb_ratio')
373
- vrf_heating_comb_ratio.setCoefficient1Constant(0.62115)
374
- vrf_heating_comb_ratio.setCoefficient2x(-1.55798)
375
- vrf_heating_comb_ratio.setCoefficient3xPOW2(3.36817)
376
- vrf_heating_comb_ratio.setCoefficient4xPOW3(-1.4224)
377
- vrf_heating_comb_ratio.setMinimumValueofx(0.5)
378
- vrf_heating_comb_ratio.setMaximumValueofx(2.0)
379
- vrf_heating_comb_ratio.setMinimumCurveOutput(0.5)
380
- vrf_heating_comb_ratio.setMaximumCurveOutput(1.155)
381
-
382
- # Heating Part-Load Fraction Correlation Curve Name
383
- vrf_heating_cplffplr = OpenStudio::Model::CurveCubic.new(model)
384
- vrf_heating_cplffplr.setName('vrf_heating_cplffplr')
385
- vrf_heating_cplffplr.setCoefficient1Constant(0.85)
386
- vrf_heating_cplffplr.setCoefficient2x(0.15)
387
- vrf_heating_cplffplr.setCoefficient3xPOW2(0.0)
388
- vrf_heating_cplffplr.setCoefficient4xPOW3(0.0)
389
- vrf_heating_cplffplr.setMinimumValueofx(1.0)
390
- vrf_heating_cplffplr.setMaximumValueofx(1.0)
391
-
392
- # Defrost Energy Input Ratio Modifier Function of Temperature Curve
393
- vrf_defrost_eir_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
394
- vrf_defrost_eir_f_of_temp.setName('vrf_defrost_eir_f_of_temp')
395
- vrf_defrost_eir_f_of_temp.setCoefficient1Constant(-1.61908214818635)
396
- vrf_defrost_eir_f_of_temp.setCoefficient2x(0.185964818731756)
397
- vrf_defrost_eir_f_of_temp.setCoefficient3xPOW2(-0.00389610393381592)
398
- vrf_defrost_eir_f_of_temp.setCoefficient4y(-0.00901995326324613)
399
- vrf_defrost_eir_f_of_temp.setCoefficient5yPOW2(0.00030340007815629)
400
- vrf_defrost_eir_f_of_temp.setCoefficient6xTIMESY(0.000476048529099348)
401
- vrf_defrost_eir_f_of_temp.setMinimumValueofx(13.9)
402
- vrf_defrost_eir_f_of_temp.setMaximumValueofx(23.9)
403
- vrf_defrost_eir_f_of_temp.setMinimumValueofy(-5.0)
404
- vrf_defrost_eir_f_of_temp.setMaximumValueofy(50.0)
405
- vrf_defrost_eir_f_of_temp.setMinimumCurveOutput(0.27)
406
- vrf_defrost_eir_f_of_temp.setMaximumCurveOutput(1.155)
407
-
408
- # set defrost control
409
- vrf_outdoor_unit.setDefrostStrategy('ReverseCycle')
410
- vrf_outdoor_unit.setDefrostControl('OnDemand')
411
-
412
- end
413
-
414
- vrf_outdoor_unit.setCoolingCapacityRatioModifierFunctionofLowTemperatureCurve(vrf_cool_cap_f_of_low_temp) unless vrf_cool_cap_f_of_low_temp.nil?
415
- vrf_outdoor_unit.setCoolingCapacityRatioBoundaryCurve(vrf_cool_cap_ratio_boundary) unless vrf_cool_cap_ratio_boundary.nil?
416
- vrf_outdoor_unit.setCoolingCapacityRatioModifierFunctionofHighTemperatureCurve(vrf_cool_cap_f_of_high_temp) unless vrf_cool_cap_f_of_high_temp.nil?
417
- vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofLowTemperatureCurve(vrf_cool_eir_f_of_low_temp) unless vrf_cool_eir_f_of_low_temp.nil?
418
- vrf_outdoor_unit.setCoolingEnergyInputRatioBoundaryCurve(vrf_cool_eir_ratio_boundary) unless vrf_cool_eir_ratio_boundary.nil?
419
- vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofHighTemperatureCurve(vrf_cool_eir_f_of_high_temp) unless vrf_cool_eir_f_of_high_temp.nil?
420
- vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofLowPartLoadRatioCurve(vrf_cooling_eir_low_plr) unless vrf_cooling_eir_low_plr.nil?
421
- vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofHighPartLoadRatioCurve(vrf_cooling_eir_high_plr) unless vrf_cooling_eir_high_plr.nil?
422
- vrf_outdoor_unit.setCoolingCombinationRatioCorrectionFactorCurve(vrf_cooling_comb_ratio) unless vrf_cooling_comb_ratio.nil?
423
- vrf_outdoor_unit.setCoolingPartLoadFractionCorrelationCurve(vrf_cooling_cplffplr) unless vrf_cooling_cplffplr.nil?
424
- vrf_outdoor_unit.setHeatingCapacityRatioModifierFunctionofLowTemperatureCurve(vrf_heat_cap_f_of_low_temp) unless vrf_heat_cap_f_of_low_temp.nil?
425
- vrf_outdoor_unit.setHeatingCapacityRatioBoundaryCurve(vrf_heat_cap_ratio_boundary) unless vrf_heat_cap_ratio_boundary.nil?
426
- vrf_outdoor_unit.setHeatingCapacityRatioModifierFunctionofHighTemperatureCurve(vrf_heat_cap_f_of_high_temp) unless vrf_heat_cap_f_of_high_temp.nil?
427
- vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofLowTemperatureCurve(vrf_heat_eir_f_of_low_temp) unless vrf_heat_eir_f_of_low_temp.nil?
428
- vrf_outdoor_unit.setHeatingEnergyInputRatioBoundaryCurve(vrf_heat_eir_boundary) unless vrf_heat_eir_boundary.nil?
429
- vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofHighTemperatureCurve(vrf_heat_eir_f_of_high_temp) unless vrf_heat_eir_f_of_high_temp.nil?
430
- vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofLowPartLoadRatioCurve(vrf_heating_eir_low_plr) unless vrf_heating_eir_low_plr.nil?
431
- vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofHighPartLoadRatioCurve(vrf_heating_eir_hi_plr) unless vrf_heating_eir_hi_plr.nil?
432
- vrf_outdoor_unit.setHeatingCombinationRatioCorrectionFactorCurve(vrf_heating_comb_ratio) unless vrf_heating_comb_ratio.nil?
433
- vrf_outdoor_unit.setHeatingPartLoadFractionCorrelationCurve(vrf_heating_cplffplr) unless vrf_heating_cplffplr.nil?
434
- vrf_outdoor_unit.setDefrostEnergyInputRatioModifierFunctionofTemperatureCurve(vrf_defrost_eir_f_of_temp) unless vrf_defrost_eir_f_of_temp.nil?
435
-
436
- return vrf_outdoor_unit
437
- end
438
- end