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,159 +0,0 @@
1
- class Standard
2
- # @!group CoilCoolingDXTwoSpeed
3
-
4
- # Prototype CoilCoolingDXTwoSpeed object
5
- # Enters in default curves for coil by type of coil
6
- #
7
- # @param model [OpenStudio::Model::Model] OpenStudio model object
8
- # @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
9
- # @param name [String] the name of the system, or nil in which case it will be defaulted
10
- # @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
11
- # @param type [String] the type of two speed DX coil to reference the correct curve set
12
- # @return [OpenStudio::Model::CoilCoolingDXTwoSpeed] the DX cooling coil
13
- def create_coil_cooling_dx_two_speed(model,
14
- air_loop_node: nil,
15
- name: '2spd DX Clg Coil',
16
- schedule: nil,
17
- type: nil)
18
-
19
- clg_coil = OpenStudio::Model::CoilCoolingDXTwoSpeed.new(model)
20
-
21
- # add to air loop if specified
22
- clg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
23
-
24
- # set coil name
25
- clg_coil.setName(name)
26
-
27
- # set coil availability schedule
28
- if schedule.nil?
29
- # default always on
30
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
31
- elsif schedule.instance_of?(String)
32
- coil_availability_schedule = model_add_schedule(model, schedule)
33
-
34
- if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
35
- coil_availability_schedule = model.alwaysOffDiscreteSchedule
36
- elsif coil_availability_schedule.nil?
37
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
38
- end
39
- elsif !schedule.to_Schedule.empty?
40
- coil_availability_schedule = schedule
41
- end
42
- clg_coil.setAvailabilitySchedule(coil_availability_schedule)
43
-
44
- clg_cap_f_of_temp = nil
45
- clg_cap_f_of_flow = nil
46
- clg_energy_input_ratio_f_of_temp = nil
47
- clg_energy_input_ratio_f_of_flow = nil
48
- clg_part_load_ratio = nil
49
- clg_cap_f_of_temp_low_spd = nil
50
- clg_energy_input_ratio_f_of_temp_low_spd = nil
51
-
52
- # curve sets
53
- if type == 'OS default'
54
- # use OS defaults
55
- elsif type == 'Residential Minisplit HP'
56
- # Performance curves
57
- # These coefficients are in SI units
58
- cool_cap_ft_coeffs_si = [0.7531983499655835, 0.003618193903031667, 0.0, 0.006574385031351544, -6.87181191015432e-05, 0.0]
59
- cool_eir_ft_coeffs_si = [-0.06376924779982301, -0.0013360593470367282, 1.413060577993827e-05, 0.019433076486584752, -4.91395947154321e-05, -4.909341249475308e-05]
60
- cool_cap_fflow_coeffs = [1, 0, 0]
61
- cool_eir_fflow_coeffs = [1, 0, 0]
62
- cool_plf_fplr_coeffs = [0.89, 0.11, 0]
63
-
64
- # Make the curves
65
- clg_cap_f_of_temp = create_curve_biquadratic(model, cool_cap_ft_coeffs_si, 'Cool-Cap-fT', 0, 100, 0, 100, nil, nil)
66
- clg_cap_f_of_flow = create_curve_quadratic(model, cool_cap_fflow_coeffs, 'Cool-Cap-fFF', 0, 2, 0, 2, is_dimensionless = true)
67
- clg_energy_input_ratio_f_of_temp = create_curve_biquadratic(model, cool_eir_ft_coeffs_si, 'Cool-EIR-fT', 0, 100, 0, 100, nil, nil)
68
- clg_energy_input_ratio_f_of_flow = create_curve_quadratic(model, cool_eir_fflow_coeffs, 'Cool-EIR-fFF', 0, 2, 0, 2, is_dimensionless = true)
69
- clg_part_load_ratio = create_curve_quadratic(model, cool_plf_fplr_coeffs, 'Cool-PLF-fPLR', 0, 1, 0, 1, is_dimensionless = true)
70
- clg_cap_f_of_temp_low_spd = create_curve_biquadratic(model, cool_cap_ft_coeffs_si, 'Cool-Cap-fT', 0, 100, 0, 100, nil, nil)
71
- clg_energy_input_ratio_f_of_temp_low_spd = create_curve_biquadratic(model, cool_eir_ft_coeffs_si, 'Cool-EIR-fT', 0, 100, 0, 100, nil, nil)
72
- clg_coil.setRatedLowSpeedSensibleHeatRatio(0.73)
73
- clg_coil.setCondenserType('AirCooled')
74
- else # default curve set, type == 'PSZ-AC' || 'Split AC' || 'PTAC'
75
- clg_cap_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
76
- clg_cap_f_of_temp.setCoefficient1Constant(0.42415)
77
- clg_cap_f_of_temp.setCoefficient2x(0.04426)
78
- clg_cap_f_of_temp.setCoefficient3xPOW2(-0.00042)
79
- clg_cap_f_of_temp.setCoefficient4y(0.00333)
80
- clg_cap_f_of_temp.setCoefficient5yPOW2(-0.00008)
81
- clg_cap_f_of_temp.setCoefficient6xTIMESY(-0.00021)
82
- clg_cap_f_of_temp.setMinimumValueofx(17.0)
83
- clg_cap_f_of_temp.setMaximumValueofx(22.0)
84
- clg_cap_f_of_temp.setMinimumValueofy(13.0)
85
- clg_cap_f_of_temp.setMaximumValueofy(46.0)
86
-
87
- clg_cap_f_of_flow = OpenStudio::Model::CurveQuadratic.new(model)
88
- clg_cap_f_of_flow.setCoefficient1Constant(0.77136)
89
- clg_cap_f_of_flow.setCoefficient2x(0.34053)
90
- clg_cap_f_of_flow.setCoefficient3xPOW2(-0.11088)
91
- clg_cap_f_of_flow.setMinimumValueofx(0.75918)
92
- clg_cap_f_of_flow.setMaximumValueofx(1.13877)
93
-
94
- clg_energy_input_ratio_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
95
- clg_energy_input_ratio_f_of_temp.setCoefficient1Constant(1.23649)
96
- clg_energy_input_ratio_f_of_temp.setCoefficient2x(-0.02431)
97
- clg_energy_input_ratio_f_of_temp.setCoefficient3xPOW2(0.00057)
98
- clg_energy_input_ratio_f_of_temp.setCoefficient4y(-0.01434)
99
- clg_energy_input_ratio_f_of_temp.setCoefficient5yPOW2(0.00063)
100
- clg_energy_input_ratio_f_of_temp.setCoefficient6xTIMESY(-0.00038)
101
- clg_energy_input_ratio_f_of_temp.setMinimumValueofx(17.0)
102
- clg_energy_input_ratio_f_of_temp.setMaximumValueofx(22.0)
103
- clg_energy_input_ratio_f_of_temp.setMinimumValueofy(13.0)
104
- clg_energy_input_ratio_f_of_temp.setMaximumValueofy(46.0)
105
-
106
- clg_energy_input_ratio_f_of_flow = OpenStudio::Model::CurveQuadratic.new(model)
107
- clg_energy_input_ratio_f_of_flow.setCoefficient1Constant(1.20550)
108
- clg_energy_input_ratio_f_of_flow.setCoefficient2x(-0.32953)
109
- clg_energy_input_ratio_f_of_flow.setCoefficient3xPOW2(0.12308)
110
- clg_energy_input_ratio_f_of_flow.setMinimumValueofx(0.75918)
111
- clg_energy_input_ratio_f_of_flow.setMaximumValueofx(1.13877)
112
-
113
- clg_part_load_ratio = OpenStudio::Model::CurveQuadratic.new(model)
114
- clg_part_load_ratio.setCoefficient1Constant(0.77100)
115
- clg_part_load_ratio.setCoefficient2x(0.22900)
116
- clg_part_load_ratio.setCoefficient3xPOW2(0.0)
117
- clg_part_load_ratio.setMinimumValueofx(0.0)
118
- clg_part_load_ratio.setMaximumValueofx(1.0)
119
-
120
- clg_cap_f_of_temp_low_spd = OpenStudio::Model::CurveBiquadratic.new(model)
121
- clg_cap_f_of_temp_low_spd.setCoefficient1Constant(0.42415)
122
- clg_cap_f_of_temp_low_spd.setCoefficient2x(0.04426)
123
- clg_cap_f_of_temp_low_spd.setCoefficient3xPOW2(-0.00042)
124
- clg_cap_f_of_temp_low_spd.setCoefficient4y(0.00333)
125
- clg_cap_f_of_temp_low_spd.setCoefficient5yPOW2(-0.00008)
126
- clg_cap_f_of_temp_low_spd.setCoefficient6xTIMESY(-0.00021)
127
- clg_cap_f_of_temp_low_spd.setMinimumValueofx(17.0)
128
- clg_cap_f_of_temp_low_spd.setMaximumValueofx(22.0)
129
- clg_cap_f_of_temp_low_spd.setMinimumValueofy(13.0)
130
- clg_cap_f_of_temp_low_spd.setMaximumValueofy(46.0)
131
-
132
- clg_energy_input_ratio_f_of_temp_low_spd = OpenStudio::Model::CurveBiquadratic.new(model)
133
- clg_energy_input_ratio_f_of_temp_low_spd.setCoefficient1Constant(1.23649)
134
- clg_energy_input_ratio_f_of_temp_low_spd.setCoefficient2x(-0.02431)
135
- clg_energy_input_ratio_f_of_temp_low_spd.setCoefficient3xPOW2(0.00057)
136
- clg_energy_input_ratio_f_of_temp_low_spd.setCoefficient4y(-0.01434)
137
- clg_energy_input_ratio_f_of_temp_low_spd.setCoefficient5yPOW2(0.00063)
138
- clg_energy_input_ratio_f_of_temp_low_spd.setCoefficient6xTIMESY(-0.00038)
139
- clg_energy_input_ratio_f_of_temp_low_spd.setMinimumValueofx(17.0)
140
- clg_energy_input_ratio_f_of_temp_low_spd.setMaximumValueofx(22.0)
141
- clg_energy_input_ratio_f_of_temp_low_spd.setMinimumValueofy(13.0)
142
- clg_energy_input_ratio_f_of_temp_low_spd.setMaximumValueofy(46.0)
143
-
144
- clg_coil.setRatedLowSpeedSensibleHeatRatio(OpenStudio::OptionalDouble.new(0.69))
145
- clg_coil.setBasinHeaterCapacity(10)
146
- clg_coil.setBasinHeaterSetpointTemperature(2.0)
147
- end
148
-
149
- clg_coil.setTotalCoolingCapacityFunctionOfTemperatureCurve(clg_cap_f_of_temp) unless clg_cap_f_of_temp.nil?
150
- clg_coil.setTotalCoolingCapacityFunctionOfFlowFractionCurve(clg_cap_f_of_flow) unless clg_cap_f_of_flow.nil?
151
- clg_coil.setEnergyInputRatioFunctionOfTemperatureCurve(clg_energy_input_ratio_f_of_temp) unless clg_energy_input_ratio_f_of_temp.nil?
152
- clg_coil.setEnergyInputRatioFunctionOfFlowFractionCurve(clg_energy_input_ratio_f_of_flow) unless clg_energy_input_ratio_f_of_flow.nil?
153
- clg_coil.setPartLoadFractionCorrelationCurve(clg_part_load_ratio) unless clg_part_load_ratio.nil?
154
- clg_coil.setLowSpeedTotalCoolingCapacityFunctionOfTemperatureCurve(clg_cap_f_of_temp_low_spd) unless clg_cap_f_of_temp_low_spd.nil?
155
- clg_coil.setLowSpeedEnergyInputRatioFunctionOfTemperatureCurve(clg_energy_input_ratio_f_of_temp_low_spd) unless clg_energy_input_ratio_f_of_temp_low_spd.nil?
156
-
157
- return clg_coil
158
- end
159
- end
@@ -1,77 +0,0 @@
1
- class Standard
2
- # @!group CoilCoolingWater
3
-
4
- # Prototype CoilCoolingWater object
5
- #
6
- # @param model [OpenStudio::Model::Model] OpenStudio model object
7
- # @param chilled_water_loop [<OpenStudio::Model::PlantLoop>] the coil will be placed on the demand side of this plant loop
8
- # @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
9
- # @param name [String] the name of the coil, or nil in which case it will be defaulted
10
- # @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
11
- # @param design_inlet_water_temperature [Double] design inlet water temperature in degrees Celsius, default is nil
12
- # @param design_inlet_air_temperature [Double] design inlet air temperature in degrees Celsius, default is nil
13
- # @param design_outlet_air_temperature [Double] design outlet air temperature in degrees Celsius, default is nil
14
- # @return [OpenStudio::Model::CoilCoolingWater] the cooling coil
15
- def create_coil_cooling_water(model,
16
- chilled_water_loop,
17
- air_loop_node: nil,
18
- name: 'Clg Coil',
19
- schedule: nil,
20
- design_inlet_water_temperature: nil,
21
- design_inlet_air_temperature: nil,
22
- design_outlet_air_temperature: nil)
23
-
24
- clg_coil = OpenStudio::Model::CoilCoolingWater.new(model)
25
-
26
- # add to chilled water loop
27
- chilled_water_loop.addDemandBranchForComponent(clg_coil)
28
-
29
- # add to air loop if specified
30
- clg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
31
-
32
- # set coil name
33
- if name.nil?
34
- clg_coil.setName('Clg Coil')
35
- else
36
- clg_coil.setName(name)
37
- end
38
-
39
- # set coil availability schedule
40
- if schedule.nil?
41
- # default always on
42
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
43
- elsif schedule.instance_of?(String)
44
- coil_availability_schedule = model_add_schedule(model, schedule)
45
-
46
- if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
47
- coil_availability_schedule = model.alwaysOffDiscreteSchedule
48
- elsif coil_availability_schedule.nil?
49
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
50
- end
51
- elsif !schedule.to_Schedule.empty?
52
- coil_availability_schedule = schedule
53
- end
54
- clg_coil.setAvailabilitySchedule(coil_availability_schedule)
55
-
56
- # rated temperatures
57
- if design_inlet_water_temperature.nil?
58
- clg_coil.autosizeDesignInletWaterTemperature
59
- else
60
- clg_coil.setDesignInletWaterTemperature(design_inlet_water_temperature)
61
- end
62
- clg_coil.setDesignInletAirTemperature(design_inlet_air_temperature) unless design_inlet_air_temperature.nil?
63
- clg_coil.setDesignOutletAirTemperature(design_outlet_air_temperature) unless design_outlet_air_temperature.nil?
64
-
65
- # defaults
66
- clg_coil.setHeatExchangerConfiguration('CrossFlow')
67
-
68
- # coil controller properties
69
- # @note These inputs will get overwritten if addToNode or addDemandBranchForComponent is called on the htg_coil object after this
70
- clg_coil_controller = clg_coil.controllerWaterCoil.get
71
- clg_coil_controller.setName("#{clg_coil.name} Controller")
72
- clg_coil_controller.setAction('Reverse')
73
- clg_coil_controller.setMinimumActuatedFlow(0.0)
74
-
75
- return clg_coil
76
- end
77
- end
@@ -1,154 +0,0 @@
1
- class Standard
2
- # @!group CoilCoolingWaterToAirHeatPumpEquationFit
3
-
4
- # Prototype CoilCoolingWaterToAirHeatPumpEquationFit object
5
- # Enters in default curves for coil by type of coil
6
- #
7
- # @param model [OpenStudio::Model::Model] OpenStudio model object
8
- # @param plant_loop [<OpenStudio::Model::PlantLoop>] the coil will be placed on the demand side of this plant loop
9
- # @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
10
- # @param name [String] the name of the system, or nil in which case it will be defaulted
11
- # @param type [String] the type of coil to reference the correct curve set
12
- # @param cop [Double] rated cooling coefficient of performance
13
- # @return [OpenStudio::Model::CoilCoolingWaterToAirHeatPumpEquationFit] the cooling coil
14
- def create_coil_cooling_water_to_air_heat_pump_equation_fit(model,
15
- plant_loop,
16
- air_loop_node: nil,
17
- name: 'Water-to-Air HP Clg Coil',
18
- type: nil,
19
- cop: 3.4)
20
-
21
- clg_coil = OpenStudio::Model::CoilCoolingWaterToAirHeatPumpEquationFit.new(model)
22
-
23
- # add to air loop if specified
24
- clg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
25
-
26
- # set coil name
27
- clg_coil.setName(name)
28
-
29
- # add to plant loop
30
- if plant_loop.nil?
31
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', 'No plant loop supplied for cooling coil')
32
- return false
33
- end
34
- plant_loop.addDemandBranchForComponent(clg_coil)
35
-
36
- # set coil cop
37
- if cop.nil?
38
- clg_coil.setRatedCoolingCoefficientofPerformance(3.4)
39
- else
40
- clg_coil.setRatedCoolingCoefficientofPerformance(cop)
41
- end
42
-
43
- # curve sets
44
- if type == 'OS default'
45
- # use OS default curves
46
- else # default curve set
47
- if model.version < OpenStudio::VersionString.new('3.2.0')
48
- clg_coil.setTotalCoolingCapacityCoefficient1(-4.30266987344639)
49
- clg_coil.setTotalCoolingCapacityCoefficient2(7.18536990534372)
50
- clg_coil.setTotalCoolingCapacityCoefficient3(-2.23946714486189)
51
- clg_coil.setTotalCoolingCapacityCoefficient4(0.139995928440879)
52
- clg_coil.setTotalCoolingCapacityCoefficient5(0.102660179888915)
53
- clg_coil.setSensibleCoolingCapacityCoefficient1(6.0019444814887)
54
- clg_coil.setSensibleCoolingCapacityCoefficient2(22.6300677244073)
55
- clg_coil.setSensibleCoolingCapacityCoefficient3(-26.7960783730934)
56
- clg_coil.setSensibleCoolingCapacityCoefficient4(-1.72374720346819)
57
- clg_coil.setSensibleCoolingCapacityCoefficient5(0.490644802367817)
58
- clg_coil.setSensibleCoolingCapacityCoefficient6(0.0693119353468141)
59
- clg_coil.setCoolingPowerConsumptionCoefficient1(-5.67775976415698)
60
- clg_coil.setCoolingPowerConsumptionCoefficient2(0.438988156976704)
61
- clg_coil.setCoolingPowerConsumptionCoefficient3(5.845277342193)
62
- clg_coil.setCoolingPowerConsumptionCoefficient4(0.141605667000125)
63
- clg_coil.setCoolingPowerConsumptionCoefficient5(-0.168727936032429)
64
- else
65
- if model.getCurveByName('Water to Air Heat Pump Total Cooling Capacity Curve').is_initialized
66
- total_cooling_capacity_curve = model.getCurveByName('Water to Air Heat Pump Total Cooling Capacity Curve').get
67
- total_cooling_capacity_curve = total_cooling_capacity_curve.to_CurveQuadLinear.get
68
- else
69
- total_cooling_capacity_curve = OpenStudio::Model::CurveQuadLinear.new(model)
70
- total_cooling_capacity_curve.setName('Water to Air Heat Pump Total Cooling Capacity Curve')
71
- total_cooling_capacity_curve.setCoefficient1Constant(-4.30266987344639)
72
- total_cooling_capacity_curve.setCoefficient2w(7.18536990534372)
73
- total_cooling_capacity_curve.setCoefficient3x(-2.23946714486189)
74
- total_cooling_capacity_curve.setCoefficient4y(0.139995928440879)
75
- total_cooling_capacity_curve.setCoefficient5z(0.102660179888915)
76
- total_cooling_capacity_curve.setMinimumValueofw(-100)
77
- total_cooling_capacity_curve.setMaximumValueofw(100)
78
- total_cooling_capacity_curve.setMinimumValueofx(-100)
79
- total_cooling_capacity_curve.setMaximumValueofx(100)
80
- total_cooling_capacity_curve.setMinimumValueofy(0)
81
- total_cooling_capacity_curve.setMaximumValueofy(100)
82
- total_cooling_capacity_curve.setMinimumValueofz(0)
83
- total_cooling_capacity_curve.setMaximumValueofz(100)
84
- end
85
- clg_coil.setTotalCoolingCapacityCurve(total_cooling_capacity_curve)
86
-
87
- if model.getCurveByName('Water to Air Heat Pump Sensible Cooling Capacity Curve').is_initialized
88
- sensible_cooling_capacity_curve = model.getCurveByName('Water to Air Heat Pump Sensible Cooling Capacity Curve').get
89
- sensible_cooling_capacity_curve = sensible_cooling_capacity_curve.to_CurveQuintLinear.get
90
- else
91
- sensible_cooling_capacity_curve = OpenStudio::Model::CurveQuintLinear.new(model)
92
- sensible_cooling_capacity_curve.setName('Water to Air Heat Pump Sensible Cooling Capacity Curve')
93
- sensible_cooling_capacity_curve.setCoefficient1Constant(6.0019444814887)
94
- sensible_cooling_capacity_curve.setCoefficient2v(22.6300677244073)
95
- sensible_cooling_capacity_curve.setCoefficient3w(-26.7960783730934)
96
- sensible_cooling_capacity_curve.setCoefficient4x(-1.72374720346819)
97
- sensible_cooling_capacity_curve.setCoefficient5y(0.490644802367817)
98
- sensible_cooling_capacity_curve.setCoefficient6z(0.0693119353468141)
99
- sensible_cooling_capacity_curve.setMinimumValueofw(-100)
100
- sensible_cooling_capacity_curve.setMaximumValueofw(100)
101
- sensible_cooling_capacity_curve.setMinimumValueofx(-100)
102
- sensible_cooling_capacity_curve.setMaximumValueofx(100)
103
- sensible_cooling_capacity_curve.setMinimumValueofy(0)
104
- sensible_cooling_capacity_curve.setMaximumValueofy(100)
105
- sensible_cooling_capacity_curve.setMinimumValueofz(0)
106
- sensible_cooling_capacity_curve.setMaximumValueofz(100)
107
- end
108
- clg_coil.setSensibleCoolingCapacityCurve(sensible_cooling_capacity_curve)
109
-
110
- if model.getCurveByName('Water to Air Heat Pump Cooling Power Consumption Curve').is_initialized
111
- cooling_power_consumption_curve = model.getCurveByName('Water to Air Heat Pump Cooling Power Consumption Curve').get
112
- cooling_power_consumption_curve = cooling_power_consumption_curve.to_CurveQuadLinear.get
113
- else
114
- cooling_power_consumption_curve = OpenStudio::Model::CurveQuadLinear.new(model)
115
- cooling_power_consumption_curve.setName('Water to Air Heat Pump Cooling Power Consumption Curve')
116
- cooling_power_consumption_curve.setCoefficient1Constant(-5.67775976415698)
117
- cooling_power_consumption_curve.setCoefficient2w(0.438988156976704)
118
- cooling_power_consumption_curve.setCoefficient3x(5.845277342193)
119
- cooling_power_consumption_curve.setCoefficient4y(0.141605667000125)
120
- cooling_power_consumption_curve.setCoefficient5z(-0.168727936032429)
121
- cooling_power_consumption_curve.setMinimumValueofw(-100)
122
- cooling_power_consumption_curve.setMaximumValueofw(100)
123
- cooling_power_consumption_curve.setMinimumValueofx(-100)
124
- cooling_power_consumption_curve.setMaximumValueofx(100)
125
- cooling_power_consumption_curve.setMinimumValueofy(0)
126
- cooling_power_consumption_curve.setMaximumValueofy(100)
127
- cooling_power_consumption_curve.setMinimumValueofz(0)
128
- cooling_power_consumption_curve.setMaximumValueofz(100)
129
- end
130
- clg_coil.setCoolingPowerConsumptionCurve(cooling_power_consumption_curve)
131
- end
132
-
133
- # part load fraction correlation curve added as a required curve in OS v3.7.0
134
- if model.version > OpenStudio::VersionString.new('3.6.1')
135
- if model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').is_initialized
136
- part_load_correlation_curve = model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').get
137
- part_load_correlation_curve = part_load_correlation_curve.to_CurveLinear.get
138
- else
139
- part_load_correlation_curve = OpenStudio::Model::CurveLinear.new(model)
140
- part_load_correlation_curve.setName('Water to Air Heat Pump Part Load Fraction Correlation Curve')
141
- part_load_correlation_curve.setCoefficient1Constant(0.833746458696111)
142
- part_load_correlation_curve.setCoefficient2x(0.166253541303889)
143
- part_load_correlation_curve.setMinimumValueofx(0)
144
- part_load_correlation_curve.setMaximumValueofx(1)
145
- part_load_correlation_curve.setMinimumCurveOutput(0)
146
- part_load_correlation_curve.setMaximumCurveOutput(1)
147
- end
148
- clg_coil.setPartLoadFractionCorrelationCurve(part_load_correlation_curve)
149
- end
150
- end
151
-
152
- return clg_coil
153
- end
154
- end
@@ -1,214 +0,0 @@
1
- class Standard
2
- # @!group CoilHeatingDXSingleSpeed
3
-
4
- # Prototype CoilHeatingDXSingleSpeed object
5
- # Enters in default curves for coil by type of coil
6
- #
7
- # @param model [OpenStudio::Model::Model] OpenStudio model object
8
- # @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
9
- # @param name [String] the name of the system, or nil in which case it will be defaulted
10
- # @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
11
- # @param type [String] the type of single speed DX coil to reference the correct curve set
12
- # @param cop [Double] rated heating coefficient of performance
13
- # @param defrost_strategy [String] type of defrost strategy. options are reverse-cycle or resistive
14
- # @return [OpenStudio::Model::CoilHeatingDXSingleSpeed] the DX heating coil
15
- def create_coil_heating_dx_single_speed(model,
16
- air_loop_node: nil,
17
- name: '1spd DX Htg Coil',
18
- schedule: nil,
19
- type: nil,
20
- cop: 3.3,
21
- defrost_strategy: 'ReverseCycle')
22
-
23
- htg_coil = OpenStudio::Model::CoilHeatingDXSingleSpeed.new(model)
24
-
25
- # add to air loop if specified
26
- htg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
27
-
28
- # set coil name
29
- htg_coil.setName(name)
30
-
31
- # set coil availability schedule
32
- if schedule.nil?
33
- # default always on
34
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
35
- elsif schedule.instance_of?(String)
36
- coil_availability_schedule = model_add_schedule(model, schedule)
37
-
38
- if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
39
- coil_availability_schedule = model.alwaysOffDiscreteSchedule
40
- elsif coil_availability_schedule.nil?
41
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
42
- end
43
- elsif !schedule.to_Schedule.empty?
44
- coil_availability_schedule = schedule
45
- end
46
- htg_coil.setAvailabilitySchedule(coil_availability_schedule)
47
-
48
- # set coil cop
49
- if cop.nil?
50
- htg_coil.setRatedCOP(3.3)
51
- else
52
- htg_coil.setRatedCOP(cop)
53
- end
54
-
55
- htg_cap_f_of_temp = nil
56
- htg_cap_f_of_flow = nil
57
- htg_energy_input_ratio_f_of_temp = nil
58
- htg_energy_input_ratio_f_of_flow = nil
59
- htg_part_load_fraction = nil
60
- def_eir_f_of_temp = nil
61
-
62
- # curve sets
63
- case type
64
- when 'OS default'
65
- # use OS defaults
66
- when 'Residential Central Air Source HP'
67
- # Performance curves
68
- # These coefficients are in IP UNITS
69
- heat_cap_ft_coeffs_ip = [0.566333415, -0.000744164, -0.0000103, 0.009414634, 0.0000506, -0.00000675]
70
- heat_eir_ft_coeffs_ip = [0.718398423, 0.003498178, 0.000142202, -0.005724331, 0.00014085, -0.000215321]
71
- heat_cap_fflow_coeffs = [0.694045465, 0.474207981, -0.168253446]
72
- heat_eir_fflow_coeffs = [2.185418751, -1.942827919, 0.757409168]
73
- heat_plf_fplr_coeffs = [0.8, 0.2, 0]
74
- defrost_eir_coeffs = [0.1528, 0, 0, 0, 0, 0]
75
-
76
- # Convert coefficients from IP to SI
77
- heat_cap_ft_coeffs_si = convert_curve_biquadratic(heat_cap_ft_coeffs_ip)
78
- heat_eir_ft_coeffs_si = convert_curve_biquadratic(heat_eir_ft_coeffs_ip)
79
-
80
- htg_cap_f_of_temp = create_curve_biquadratic(model, heat_cap_ft_coeffs_si, 'Heat-Cap-fT', 0, 100, 0, 100, nil, nil)
81
- htg_cap_f_of_flow = create_curve_quadratic(model, heat_cap_fflow_coeffs, 'Heat-Cap-fFF', 0, 2, 0, 2, is_dimensionless = true)
82
- htg_energy_input_ratio_f_of_temp = create_curve_biquadratic(model, heat_eir_ft_coeffs_si, 'Heat-EIR-fT', 0, 100, 0, 100, nil, nil)
83
- htg_energy_input_ratio_f_of_flow = create_curve_quadratic(model, heat_eir_fflow_coeffs, 'Heat-EIR-fFF', 0, 2, 0, 2, is_dimensionless = true)
84
- htg_part_load_fraction = create_curve_quadratic(model, heat_plf_fplr_coeffs, 'Heat-PLF-fPLR', 0, 1, 0, 1, is_dimensionless = true)
85
-
86
- # Heating defrost curve for reverse cycle
87
- def_eir_f_of_temp = create_curve_biquadratic(model, defrost_eir_coeffs, 'DefrostEIR', -100, 100, -100, 100, nil, nil)
88
- when 'Residential Minisplit HP'
89
- # Performance curves
90
- # These coefficients are in SI UNITS
91
- heat_cap_ft_coeffs_si = [1.14715889038462, -0.010386676170938, 0, 0.00865384615384615, 0, 0]
92
- heat_eir_ft_coeffs_si = [0.9999941697687026, 0.004684593830254383, 5.901286675833333e-05, -0.0028624467783091973, 1.3041120194135802e-05, -0.00016172918478765433]
93
- heat_cap_fflow_coeffs = [1, 0, 0]
94
- heat_eir_fflow_coeffs = [1, 0, 0]
95
- heat_plf_fplr_coeffs = [0.89, 0.11, 0]
96
- defrost_eir_coeffs = [0.1528, 0, 0, 0, 0, 0]
97
-
98
- htg_cap_f_of_temp = create_curve_biquadratic(model, heat_cap_ft_coeffs_si, 'Heat-Cap-fT', -100, 100, -100, 100, nil, nil)
99
- htg_cap_f_of_flow = create_curve_quadratic(model, heat_cap_fflow_coeffs, 'Heat-Cap-fFF', 0, 2, 0, 2, is_dimensionless = true)
100
- htg_energy_input_ratio_f_of_temp = create_curve_biquadratic(model, heat_eir_ft_coeffs_si, 'Heat-EIR-fT', -100, 100, -100, 100, nil, nil)
101
- htg_energy_input_ratio_f_of_flow = create_curve_quadratic(model, heat_eir_fflow_coeffs, 'Heat-EIR-fFF', 0, 2, 0, 2, is_dimensionless = true)
102
- htg_part_load_fraction = create_curve_quadratic(model, heat_plf_fplr_coeffs, 'Heat-PLF-fPLR', 0, 1, 0.6, 1, is_dimensionless = true)
103
-
104
- # Heating defrost curve for reverse cycle
105
- def_eir_f_of_temp = create_curve_biquadratic(model, defrost_eir_coeffs, 'Defrost EIR', -100, 100, -100, 100, nil, nil)
106
- else # default curve set
107
- htg_cap_f_of_temp = OpenStudio::Model::CurveCubic.new(model)
108
- htg_cap_f_of_temp.setName("#{htg_coil.name} Htg Cap Func of Temp Curve")
109
- htg_cap_f_of_temp.setCoefficient1Constant(0.758746)
110
- htg_cap_f_of_temp.setCoefficient2x(0.027626)
111
- htg_cap_f_of_temp.setCoefficient3xPOW2(0.000148716)
112
- htg_cap_f_of_temp.setCoefficient4xPOW3(0.0000034992)
113
- htg_cap_f_of_temp.setMinimumValueofx(-20.0)
114
- htg_cap_f_of_temp.setMaximumValueofx(20.0)
115
-
116
- htg_cap_f_of_flow = OpenStudio::Model::CurveCubic.new(model)
117
- htg_cap_f_of_flow.setName("#{htg_coil.name} Htg Cap Func of Flow Frac Curve")
118
- htg_cap_f_of_flow.setCoefficient1Constant(0.84)
119
- htg_cap_f_of_flow.setCoefficient2x(0.16)
120
- htg_cap_f_of_flow.setCoefficient3xPOW2(0.0)
121
- htg_cap_f_of_flow.setCoefficient4xPOW3(0.0)
122
- htg_cap_f_of_flow.setMinimumValueofx(0.5)
123
- htg_cap_f_of_flow.setMaximumValueofx(1.5)
124
-
125
- htg_energy_input_ratio_f_of_temp = OpenStudio::Model::CurveCubic.new(model)
126
- htg_energy_input_ratio_f_of_temp.setName("#{htg_coil.name} EIR Func of Temp Curve")
127
- htg_energy_input_ratio_f_of_temp.setCoefficient1Constant(1.19248)
128
- htg_energy_input_ratio_f_of_temp.setCoefficient2x(-0.0300438)
129
- htg_energy_input_ratio_f_of_temp.setCoefficient3xPOW2(0.00103745)
130
- htg_energy_input_ratio_f_of_temp.setCoefficient4xPOW3(-0.000023328)
131
- htg_energy_input_ratio_f_of_temp.setMinimumValueofx(-20.0)
132
- htg_energy_input_ratio_f_of_temp.setMaximumValueofx(20.0)
133
-
134
- htg_energy_input_ratio_f_of_flow = OpenStudio::Model::CurveQuadratic.new(model)
135
- htg_energy_input_ratio_f_of_flow.setName("#{htg_coil.name} EIR Func of Flow Frac Curve")
136
- htg_energy_input_ratio_f_of_flow.setCoefficient1Constant(1.3824)
137
- htg_energy_input_ratio_f_of_flow.setCoefficient2x(-0.4336)
138
- htg_energy_input_ratio_f_of_flow.setCoefficient3xPOW2(0.0512)
139
- htg_energy_input_ratio_f_of_flow.setMinimumValueofx(0.0)
140
- htg_energy_input_ratio_f_of_flow.setMaximumValueofx(1.0)
141
-
142
- htg_part_load_fraction = OpenStudio::Model::CurveQuadratic.new(model)
143
- htg_part_load_fraction.setName("#{htg_coil.name} PLR Correlation Curve")
144
- htg_part_load_fraction.setCoefficient1Constant(0.85)
145
- htg_part_load_fraction.setCoefficient2x(0.15)
146
- htg_part_load_fraction.setCoefficient3xPOW2(0.0)
147
- htg_part_load_fraction.setMinimumValueofx(0.0)
148
- htg_part_load_fraction.setMaximumValueofx(1.0)
149
-
150
- unless defrost_strategy == 'Resistive'
151
- def_eir_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
152
- def_eir_f_of_temp.setName("#{htg_coil.name} Defrost EIR Func of Temp Curve")
153
- def_eir_f_of_temp.setCoefficient1Constant(0.297145)
154
- def_eir_f_of_temp.setCoefficient2x(0.0430933)
155
- def_eir_f_of_temp.setCoefficient3xPOW2(-0.000748766)
156
- def_eir_f_of_temp.setCoefficient4y(0.00597727)
157
- def_eir_f_of_temp.setCoefficient5yPOW2(0.000482112)
158
- def_eir_f_of_temp.setCoefficient6xTIMESY(-0.000956448)
159
- def_eir_f_of_temp.setMinimumValueofx(-23.33333)
160
- def_eir_f_of_temp.setMaximumValueofx(29.44444)
161
- def_eir_f_of_temp.setMinimumValueofy(-23.33333)
162
- def_eir_f_of_temp.setMaximumValueofy(29.44444)
163
- end
164
- end
165
-
166
- if type == 'PSZ-AC'
167
- htg_coil.setMinimumOutdoorDryBulbTemperatureforCompressorOperation(-12.2)
168
- htg_coil.setMaximumOutdoorDryBulbTemperatureforDefrostOperation(1.67)
169
- htg_coil.setCrankcaseHeaterCapacity(50.0)
170
- htg_coil.setMaximumOutdoorDryBulbTemperatureforCrankcaseHeaterOperation(4.4)
171
- htg_coil.setDefrostControl('OnDemand')
172
-
173
- def_eir_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
174
- def_eir_f_of_temp.setName("#{htg_coil.name} Defrost EIR Func of Temp Curve")
175
- def_eir_f_of_temp.setCoefficient1Constant(0.297145)
176
- def_eir_f_of_temp.setCoefficient2x(0.0430933)
177
- def_eir_f_of_temp.setCoefficient3xPOW2(-0.000748766)
178
- def_eir_f_of_temp.setCoefficient4y(0.00597727)
179
- def_eir_f_of_temp.setCoefficient5yPOW2(0.000482112)
180
- def_eir_f_of_temp.setCoefficient6xTIMESY(-0.000956448)
181
- def_eir_f_of_temp.setMinimumValueofx(-23.33333)
182
- def_eir_f_of_temp.setMaximumValueofx(29.44444)
183
- def_eir_f_of_temp.setMinimumValueofy(-23.33333)
184
- def_eir_f_of_temp.setMaximumValueofy(29.44444)
185
- end
186
-
187
- htg_coil.setTotalHeatingCapacityFunctionofTemperatureCurve(htg_cap_f_of_temp) unless htg_cap_f_of_temp.nil?
188
- htg_coil.setTotalHeatingCapacityFunctionofFlowFractionCurve(htg_cap_f_of_flow) unless htg_cap_f_of_flow.nil?
189
- htg_coil.setEnergyInputRatioFunctionofTemperatureCurve(htg_energy_input_ratio_f_of_temp) unless htg_energy_input_ratio_f_of_temp.nil?
190
- htg_coil.setEnergyInputRatioFunctionofFlowFractionCurve(htg_energy_input_ratio_f_of_flow) unless htg_energy_input_ratio_f_of_flow.nil?
191
- htg_coil.setPartLoadFractionCorrelationCurve(htg_part_load_fraction) unless htg_part_load_fraction.nil?
192
- htg_coil.setDefrostEnergyInputRatioFunctionofTemperatureCurve(def_eir_f_of_temp) unless def_eir_f_of_temp.nil?
193
- htg_coil.setDefrostStrategy(defrost_strategy)
194
- htg_coil.setDefrostControl('OnDemand')
195
-
196
- return htg_coil
197
- end
198
-
199
- # sets defrost curve limits
200
- #
201
- # @param htg_coil [OpenStudio::Model::CoilHeatingDXSingleSpeed] a DX heating coil
202
- # @return [Boolean] returns true if successful, false if not
203
- def coil_heating_dx_single_speed_apply_defrost_eir_curve_limits(htg_coil)
204
- return false unless htg_coil.defrostEnergyInputRatioFunctionofTemperatureCurve.is_initialized
205
-
206
- def_eir_f_of_temp = htg_coil.defrostEnergyInputRatioFunctionofTemperatureCurve.get.to_CurveBiquadratic.get
207
- def_eir_f_of_temp.setMinimumValueofx(12.77778)
208
- def_eir_f_of_temp.setMaximumValueofx(23.88889)
209
- def_eir_f_of_temp.setMinimumValueofy(21.11111)
210
- def_eir_f_of_temp.setMaximumValueofy(46.11111)
211
-
212
- return true
213
- end
214
- end
@@ -1,53 +0,0 @@
1
- class Standard
2
- # @!group CoilHeatingElectric
3
-
4
- # Prototype CoilHeatingElectric object
5
- #
6
- # @param model [OpenStudio::Model::Model] OpenStudio model object
7
- # @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
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 nominal_capacity [Double] rated nominal capacity
11
- # @param efficiency [Double] rated heating efficiency
12
- # @return [OpenStudio::Model::CoilHeatingElectric] the electric heating coil
13
- def create_coil_heating_electric(model,
14
- air_loop_node: nil,
15
- name: 'Electric Htg Coil',
16
- schedule: nil,
17
- nominal_capacity: nil,
18
- efficiency: 1.0)
19
-
20
- htg_coil = OpenStudio::Model::CoilHeatingElectric.new(model)
21
-
22
- # add to air loop if specified
23
- htg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
24
-
25
- # set coil name
26
- htg_coil.setName(name)
27
-
28
- # set coil availability schedule
29
- if schedule.nil?
30
- # default always on
31
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
32
- elsif schedule.instance_of?(String)
33
- coil_availability_schedule = model_add_schedule(model, schedule)
34
-
35
- if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
36
- coil_availability_schedule = model.alwaysOffDiscreteSchedule
37
- elsif coil_availability_schedule.nil?
38
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
39
- end
40
- elsif !schedule.to_Schedule.empty?
41
- coil_availability_schedule = schedule
42
- end
43
- htg_coil.setAvailabilitySchedule(coil_availability_schedule)
44
-
45
- # set capacity
46
- htg_coil.setNominalCapacity(nominal_capacity) unless nominal_capacity.nil?
47
-
48
- # set efficiency
49
- htg_coil.setEfficiency(efficiency) unless efficiency.nil?
50
-
51
- return htg_coil
52
- end
53
- end