openstudio-standards 0.8.3 → 0.8.5.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAECollege.osm +30 -30
  3. data/data/geometry/ASHRAECourthouse.osm +22 -22
  4. data/data/geometry/ASHRAESmallOfficeDetailed.osm +2 -2
  5. data/data/geometry/DEER_Asm.osm +1 -1
  6. data/data/geometry/DEER_ECC.osm +1 -1
  7. data/data/geometry/DEER_EPr.osm +1 -1
  8. data/data/geometry/DEER_ERC.osm +1 -1
  9. data/data/geometry/DEER_ESe.osm +1 -1
  10. data/data/geometry/DEER_EUn.osm +1 -1
  11. data/data/geometry/DEER_Hsp.osm +1 -1
  12. data/data/geometry/DEER_Htl.osm +1 -1
  13. data/data/geometry/DEER_MBT.osm +1 -1
  14. data/data/geometry/DEER_MFm.osm +1 -1
  15. data/data/geometry/DEER_Nrs.osm +1 -1
  16. data/data/geometry/DEER_OfL.osm +1 -1
  17. data/data/geometry/DEER_OfS.osm +1 -1
  18. data/data/geometry/DEER_RFF.osm +1 -1
  19. data/data/geometry/DEER_RSD.osm +1 -1
  20. data/data/geometry/DEER_Rt3.osm +1 -1
  21. data/data/geometry/DEER_RtS.osm +1 -1
  22. data/data/standards/export_OpenStudio_libraries.rb +2 -3
  23. data/data/standards/test_performance_expected_dd_results.csv +42 -42
  24. data/lib/openstudio-standards/btap/NECB_building_types.csv +35 -0
  25. data/lib/openstudio-standards/btap/NECB_space_types.csv +109 -0
  26. data/lib/openstudio-standards/btap/activity.rb +480 -0
  27. data/lib/openstudio-standards/btap/attributes.rb +166 -0
  28. data/lib/openstudio-standards/btap/bridging.rb +561 -1402
  29. data/lib/openstudio-standards/btap/btap.rb +4 -2
  30. data/lib/openstudio-standards/btap/btap_test_helper.rb +86 -0
  31. data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +177 -0
  32. data/lib/openstudio-standards/btap/common_paths.rb +81 -0
  33. data/lib/openstudio-standards/btap/common_resources/ConstructionProperties.csv +52 -0
  34. data/lib/openstudio-standards/btap/common_resources/Constructions.csv +37 -0
  35. data/lib/openstudio-standards/btap/common_resources/carbon_frame.csv +35 -0
  36. data/lib/openstudio-standards/btap/common_resources/carbon_glazing.csv +35 -0
  37. data/lib/openstudio-standards/btap/common_resources/carbon_opaque.csv +164 -0
  38. data/lib/openstudio-standards/btap/common_resources/construction_sets.csv +1270 -0
  39. data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +121 -0
  40. data/lib/openstudio-standards/btap/common_resources/constructions_opaque.csv +2256 -0
  41. data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
  42. data/lib/openstudio-standards/btap/common_resources/costs_local_factors.csv +2315 -0
  43. data/lib/openstudio-standards/btap/common_resources/hvac_vent_ahu.csv +925 -0
  44. data/lib/openstudio-standards/btap/common_resources/lighting.csv +364 -0
  45. data/lib/openstudio-standards/btap/common_resources/lighting_sets.csv +2667 -0
  46. data/lib/openstudio-standards/btap/common_resources/locations.csv +75 -0
  47. data/lib/openstudio-standards/btap/common_resources/materials_glazing.csv +35 -0
  48. data/lib/openstudio-standards/btap/common_resources/materials_hvac.csv +1686 -0
  49. data/lib/openstudio-standards/btap/common_resources/materials_lighting.csv +267 -0
  50. data/lib/openstudio-standards/btap/common_resources/materials_opaque.csv +164 -0
  51. data/lib/openstudio-standards/btap/costing/README.md +502 -0
  52. data/lib/openstudio-standards/btap/costing/btap_costing.rb +469 -0
  53. data/lib/openstudio-standards/btap/costing/btap_measure_helper.rb +359 -0
  54. data/lib/openstudio-standards/btap/costing/btap_workflow.rb +117 -0
  55. data/lib/openstudio-standards/btap/costing/copy_test_results_files_to_expected_results.rb +11 -0
  56. data/lib/openstudio-standards/btap/costing/cost_building_from_file.rb +136 -0
  57. data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +173 -0
  58. data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +354 -0
  59. data/lib/openstudio-standards/btap/costing/dcv_costing.rb +314 -0
  60. data/lib/openstudio-standards/btap/costing/dummy.epw +8768 -0
  61. data/lib/openstudio-standards/btap/costing/dummy.osm +5320 -0
  62. data/lib/openstudio-standards/btap/costing/envelope_costing.rb +215 -0
  63. data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +2584 -0
  64. data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +156 -0
  65. data/lib/openstudio-standards/btap/costing/lighting_costing.rb +209 -0
  66. data/lib/openstudio-standards/btap/costing/mech_sizing.json +502 -0
  67. data/lib/openstudio-standards/btap/costing/neb_end_use_prices.csv +42 -0
  68. data/lib/openstudio-standards/btap/costing/necb_2011_spacetype_info.csv +225 -0
  69. data/lib/openstudio-standards/btap/costing/necb_reference_runs.csv +28705 -0
  70. data/lib/openstudio-standards/btap/costing/nv_costing.rb +547 -0
  71. data/lib/openstudio-standards/btap/costing/parallel_tests.rb +92 -0
  72. data/lib/openstudio-standards/btap/costing/pv_ground_costing.rb +687 -0
  73. data/lib/openstudio-standards/btap/costing/shw_costing.rb +705 -0
  74. data/lib/openstudio-standards/btap/costing/test_list.txt +15 -0
  75. data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +27 -0
  76. data/lib/openstudio-standards/btap/costing/test_run_costing_tests.rb +80 -0
  77. data/lib/openstudio-standards/btap/costing/ventilation_costing.rb +2616 -0
  78. data/lib/openstudio-standards/btap/geometry.rb +86 -6
  79. data/lib/openstudio-standards/btap/structure.rb +657 -0
  80. data/lib/openstudio-standards/constructions/modify.rb +2 -1
  81. data/lib/openstudio-standards/create_typical/create_typical.rb +17 -33
  82. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +36 -36
  83. data/lib/openstudio-standards/equipment/create_transformer.rb +104 -0
  84. data/lib/openstudio-standards/equipment/create_typical_equipment.rb +117 -0
  85. data/lib/openstudio-standards/equipment/data/electric_equipment_space_types.json +1514 -0
  86. data/lib/openstudio-standards/equipment/data/gas_equipment_space_types.json +227 -0
  87. data/lib/openstudio-standards/exterior_lighting/create.rb +22 -22
  88. data/lib/openstudio-standards/exterior_lighting/information.rb +3 -2
  89. data/lib/openstudio-standards/hvac/components/air_conditioner_vrf.rb +482 -0
  90. data/lib/openstudio-standards/hvac/components/air_terminal.rb +31 -0
  91. data/lib/openstudio-standards/hvac/components/boiler_hot_water.rb +163 -0
  92. data/lib/openstudio-standards/hvac/components/central_air_source_heat_pump.rb +220 -0
  93. data/lib/openstudio-standards/hvac/components/chiller.rb +25 -0
  94. data/lib/openstudio-standards/hvac/components/coil.rb +276 -0
  95. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_multi_speed.rb +40 -0
  96. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_single_speed.rb +300 -0
  97. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_two_speed.rb +187 -0
  98. data/lib/openstudio-standards/hvac/components/coil_cooling_water.rb +80 -0
  99. data/lib/openstudio-standards/hvac/components/coil_cooling_water_to_air_heat_pump_equation_fit.rb +182 -0
  100. data/lib/openstudio-standards/hvac/components/coil_heating_dx_single_speed.rb +220 -0
  101. data/lib/openstudio-standards/hvac/components/coil_heating_electric.rb +56 -0
  102. data/lib/openstudio-standards/hvac/components/coil_heating_gas.rb +90 -0
  103. data/lib/openstudio-standards/hvac/components/coil_heating_gas_multi_stage.rb +33 -0
  104. data/lib/openstudio-standards/hvac/components/coil_heating_water.rb +98 -0
  105. data/lib/openstudio-standards/hvac/components/coil_heating_water_to_air_heat_pump_equation_fit.rb +147 -0
  106. data/lib/openstudio-standards/hvac/components/component.rb +39 -0
  107. data/lib/openstudio-standards/{standards/ashrae_90_1/data/ashrae_90_1.fans.json → hvac/components/data/fans.json} +6 -6
  108. data/lib/openstudio-standards/hvac/components/fan.rb +363 -0
  109. data/lib/openstudio-standards/hvac/components/heat_exchanger_air_to_air.rb +203 -0
  110. data/lib/openstudio-standards/hvac/components/pump.rb +181 -0
  111. data/lib/openstudio-standards/hvac/controls/radiant_system_controls.rb +594 -0
  112. data/lib/openstudio-standards/hvac/conversions.rb +222 -0
  113. data/lib/openstudio-standards/hvac/curves.rb +192 -0
  114. data/lib/openstudio-standards/hvac/helpers.rb +357 -0
  115. data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +4 -4
  116. data/lib/openstudio-standards/interior_lighting/create_lights.rb +52 -0
  117. data/lib/openstudio-standards/interior_lighting/create_typical_interior_lighting.rb +254 -0
  118. data/lib/openstudio-standards/interior_lighting/data/convert_lighting_data.rb +249 -0
  119. data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.csv +96 -0
  120. data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.json +1429 -0
  121. data/lib/openstudio-standards/interior_lighting/data/lighting_technology.csv +46 -0
  122. data/lib/openstudio-standards/interior_lighting/data/lighting_technology.json +859 -0
  123. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  124. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  125. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  126. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -4
  127. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  128. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -4
  129. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  130. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  131. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +6 -7
  132. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +15 -15
  133. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +4 -4
  134. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +5 -5
  135. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +6 -6
  136. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +7 -7
  137. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +4 -4
  138. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +6 -6
  139. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +5 -1
  140. data/lib/openstudio-standards/prototypes/common/data/prototype_space_type_map.json +2594 -0
  141. data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +2108 -0
  142. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -0
  143. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -140
  144. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -73
  145. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -69
  146. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +0 -116
  147. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +0 -61
  148. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +2 -2
  149. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +128 -13
  150. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +606 -607
  151. data/lib/openstudio-standards/prototypes/common/prototype_space_type_map.rb +41 -0
  152. data/lib/openstudio-standards/prototypes/common/space_type_equipment_map.rb +184 -0
  153. data/lib/openstudio-standards/prototypes/common/space_type_thermostat_schedule_map.rb +116 -0
  154. data/lib/openstudio-standards/qaqc/hvac.rb +12 -12
  155. data/lib/openstudio-standards/refrigeration/create_compressor.rb +2 -5
  156. data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +4 -4
  157. data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +1 -2
  158. data/lib/openstudio-standards/service_water_heating/create_water_use.rb +5 -5
  159. data/lib/openstudio-standards/space_type/data/level_1_space_types.json +612 -0
  160. data/lib/openstudio-standards/space_type/standards_space_type.rb +53 -0
  161. data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +8 -26
  162. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +13 -13
  163. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -24
  164. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +6 -43
  165. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +7 -24
  166. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +19 -44
  167. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +25 -50
  168. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +25 -33
  169. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -22
  170. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +15 -157
  171. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -2
  172. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +18 -105
  173. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +3 -23
  174. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +0 -24
  175. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -86
  176. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +0 -107
  177. data/lib/openstudio-standards/standards/Standards.Model.rb +45 -20
  178. data/lib/openstudio-standards/standards/Standards.People.rb +113 -0
  179. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -11
  180. data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -147
  181. data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +57 -41
  182. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +30 -153
  183. data/lib/openstudio-standards/standards/Standards.Ventilation.rb +74 -0
  184. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +1 -1
  185. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -4
  186. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +3 -3
  187. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +37 -112
  188. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +37 -102
  189. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +3 -3
  190. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +37 -112
  191. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  192. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +37 -37
  193. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +6 -6
  194. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +37 -37
  195. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  196. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.BoilerHotWater.rb +1 -1
  197. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +37 -102
  198. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +6 -6
  199. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +37 -37
  200. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  201. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.BoilerHotWater.rb +1 -1
  202. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +45 -109
  203. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +6 -6
  204. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +37 -37
  205. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
  206. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  207. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.BoilerHotWater.rb +1 -1
  208. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoilHeatingGas.rb +1 -1
  209. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +45 -109
  210. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +6 -6
  211. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +37 -37
  212. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +0 -200
  213. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +37 -37
  214. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +37 -37
  215. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +37 -37
  216. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +37 -37
  217. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  218. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +5 -5
  219. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  220. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +5 -5
  221. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
  222. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +2 -2
  223. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +2 -68
  224. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +2 -35
  225. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +42 -0
  226. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +5 -2
  227. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +2 -2
  228. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +2 -2
  229. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +3 -3
  230. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -1
  231. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +1 -0
  232. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +2 -4
  233. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +0 -200
  234. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +5 -5
  235. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +7 -1
  236. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +0 -1
  237. data/lib/openstudio-standards/standards/cbes/data/cbes.curves.json +0 -200
  238. data/lib/openstudio-standards/standards/deer/data/deer.curves.json +0 -200
  239. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +21 -37
  240. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
  241. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +68 -27
  242. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +64 -25
  243. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +9 -14
  244. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +4 -4
  245. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +1 -1
  246. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +115 -112
  247. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +637 -249
  248. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +16 -12
  249. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +799 -46
  250. data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +33 -51
  251. data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +75 -7
  252. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +25 -1
  253. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/HighriseApartmentMult.osm +14272 -0
  254. data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
  255. data/lib/openstudio-standards/standards/necb/NECB2011/data/necb_2015_table_c1.json +1 -1
  256. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +437 -437
  257. data/lib/openstudio-standards/standards/necb/NECB2011/data/systems.json +516 -0
  258. data/lib/openstudio-standards/standards/necb/NECB2011/data/systems_including_sys5.json +588 -0
  259. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +489 -0
  260. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +18 -6
  261. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +48 -5
  262. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +2 -2
  263. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +35 -27
  264. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +34 -23
  265. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +8 -6
  266. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +68 -150
  267. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +444 -134
  268. data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +61 -1
  269. data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
  270. data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +636 -636
  271. data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +38 -38
  272. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +17 -8
  273. data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +636 -636
  274. data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +71 -71
  275. data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +16 -6
  276. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +60 -61
  277. data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +30 -30
  278. data/lib/openstudio-standards/standards/necb/README.md +343 -0
  279. data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +79 -0
  280. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +206 -32
  281. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +75 -43
  282. data/lib/openstudio-standards/standards/necb/common/eccc_electric_grid_intensity_20250311.csv +14 -0
  283. data/lib/openstudio-standards/standards/necb/common/nir_gas_grid_intensity_20250311.csv +14 -0
  284. data/lib/openstudio-standards/standards/necb/common/system_types.yaml +0 -0
  285. data/lib/openstudio-standards/thermal_zone/{thermal_zone.rb → information.rb} +12 -45
  286. data/lib/openstudio-standards/thermal_zone/thermostat_schedules.rb +152 -0
  287. data/lib/openstudio-standards/utilities/logging.rb +18 -14
  288. data/lib/openstudio-standards/version.rb +1 -1
  289. data/lib/openstudio-standards/weather/modify.rb +2 -2
  290. data/lib/openstudio-standards/weather/stat_file.rb +2 -2
  291. data/lib/openstudio-standards.rb +67 -38
  292. metadata +141 -50
  293. data/lib/openstudio-standards/hvac/components/create.rb +0 -169
  294. data/lib/openstudio-standards/hvac/components/modify.rb +0 -42
  295. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +0 -438
  296. data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +0 -123
  297. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +0 -216
  298. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +0 -273
  299. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +0 -159
  300. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +0 -77
  301. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -154
  302. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +0 -214
  303. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +0 -53
  304. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +0 -72
  305. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +0 -95
  306. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -125
  307. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +0 -17
  308. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +0 -90
  309. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +0 -4
  310. data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +0 -70
  311. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +0 -590
  312. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +0 -901
  313. data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -5
  314. data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -5
  315. data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -5
  316. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -5
  317. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -55
  318. data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -5
  319. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +0 -5
  320. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +0 -5
  321. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +0 -5
  322. data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +0 -328
  323. data/lib/openstudio-standards/standards/deer/data/deer.fans.json +0 -328
  324. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +0 -0
  325. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +0 -0
  326. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +0 -0
  327. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +0 -0
  328. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +0 -0
  329. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +0 -0
  330. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +0 -0
@@ -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
@@ -1,72 +0,0 @@
1
- class Standard
2
- # @!group CoilHeatingGas
3
-
4
- # Prototype CoilHeatingGas 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::CoilHeatingGas] the gas heating coil
13
- def create_coil_heating_gas(model,
14
- air_loop_node: nil,
15
- name: 'Gas Htg Coil',
16
- schedule: nil,
17
- nominal_capacity: nil,
18
- efficiency: 0.80)
19
-
20
- htg_coil = OpenStudio::Model::CoilHeatingGas.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.setGasBurnerEfficiency(efficiency)
50
-
51
- # defaults
52
- if model.version < OpenStudio::VersionString.new('3.7.0')
53
- htg_coil.setParasiticElectricLoad(0.0)
54
- htg_coil.setParasiticGasLoad(0.0)
55
- else
56
- htg_coil.setOnCycleParasiticElectricLoad(0.0)
57
- htg_coil.setOffCycleParasiticGasLoad(0.0)
58
- end
59
-
60
- return htg_coil
61
- end
62
-
63
- # Updates the efficiency of some gas heating coils per the prototype assumptions.
64
- # Defaults to making no changes.
65
- #
66
- # @param coil_heating_gas [OpenStudio::Model::CoilHeatingGas] a gas heating coil
67
- # @return [Boolean] returns true if successful, false if not
68
- def coil_heating_gas_apply_prototype_efficiency(coil_heating_gas)
69
- # do nothing
70
- return true
71
- end
72
- end
@@ -1,95 +0,0 @@
1
- class Standard
2
- # @!group CoilHeatingWater
3
-
4
- # Prototype CoilHeatingWater object
5
- #
6
- # @param model [OpenStudio::Model::Model] OpenStudio model object
7
- # @param hot_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 rated_inlet_water_temperature [Double] rated inlet water temperature in degrees Celsius, default is hot water loop design exit temperature
12
- # @param rated_outlet_water_temperature [Double] rated outlet water temperature in degrees Celsius, default is hot water loop design return temperature
13
- # @param rated_inlet_air_temperature [Double] rated inlet air temperature in degrees Celsius, default is 16.6 (62F)
14
- # @param rated_outlet_air_temperature [Double] rated outlet air temperature in degrees Celsius, default is 32.2 (90F)
15
- # @param controller_convergence_tolerance [Double] controller convergence tolerance
16
- # @return [OpenStudio::Model::CoilHeatingWater] the heating coil
17
- def create_coil_heating_water(model,
18
- hot_water_loop,
19
- air_loop_node: nil,
20
- name: 'Htg Coil',
21
- schedule: nil,
22
- rated_inlet_water_temperature: nil,
23
- rated_outlet_water_temperature: nil,
24
- rated_inlet_air_temperature: 16.6,
25
- rated_outlet_air_temperature: 32.2,
26
- controller_convergence_tolerance: 0.1)
27
-
28
- htg_coil = OpenStudio::Model::CoilHeatingWater.new(model)
29
-
30
- # add to hot water loop
31
- hot_water_loop.addDemandBranchForComponent(htg_coil)
32
-
33
- # add to air loop if specified
34
- htg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
35
-
36
- # set coil name
37
- if name.nil?
38
- htg_coil.setName('Htg Coil')
39
- else
40
- htg_coil.setName(name)
41
- end
42
-
43
- # set coil availability schedule
44
- if schedule.nil?
45
- # default always on
46
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
47
- elsif schedule.instance_of?(String)
48
- coil_availability_schedule = model_add_schedule(model, schedule)
49
-
50
- if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
51
- coil_availability_schedule = model.alwaysOffDiscreteSchedule
52
- elsif coil_availability_schedule.nil?
53
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
54
- end
55
- elsif !schedule.to_Schedule.empty?
56
- coil_availability_schedule = schedule
57
- end
58
- htg_coil.setAvailabilitySchedule(coil_availability_schedule)
59
-
60
- # rated water temperatures, use hot water loop temperatures if defined
61
- if rated_inlet_water_temperature.nil?
62
- rated_inlet_water_temperature = hot_water_loop.sizingPlant.designLoopExitTemperature
63
- htg_coil.setRatedInletWaterTemperature(rated_inlet_water_temperature)
64
- else
65
- htg_coil.setRatedInletWaterTemperature(rated_inlet_water_temperature)
66
- end
67
- if rated_outlet_water_temperature.nil?
68
- rated_outlet_water_temperature = rated_inlet_water_temperature - hot_water_loop.sizingPlant.loopDesignTemperatureDifference
69
- htg_coil.setRatedOutletWaterTemperature(rated_outlet_water_temperature)
70
- else
71
- htg_coil.setRatedOutletWaterTemperature(rated_outlet_water_temperature)
72
- end
73
-
74
- # rated air temperatures
75
- if rated_inlet_air_temperature.nil?
76
- htg_coil.setRatedInletAirTemperature(16.6)
77
- else
78
- htg_coil.setRatedInletAirTemperature(rated_inlet_air_temperature)
79
- end
80
- if rated_outlet_air_temperature.nil?
81
- htg_coil.setRatedOutletAirTemperature(32.2)
82
- else
83
- htg_coil.setRatedOutletAirTemperature(rated_outlet_air_temperature)
84
- end
85
-
86
- # coil controller properties
87
- # @note These inputs will get overwritten if addToNode or addDemandBranchForComponent is called on the htg_coil object after this
88
- htg_coil_controller = htg_coil.controllerWaterCoil.get
89
- htg_coil_controller.setName("#{htg_coil.name} Controller")
90
- htg_coil_controller.setMinimumActuatedFlow(0.0)
91
- htg_coil_controller.setControllerConvergenceTolerance(controller_convergence_tolerance) unless controller_convergence_tolerance.nil?
92
-
93
- return htg_coil
94
- end
95
- end