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,123 +0,0 @@
1
- class Standard
2
- # @!group Boiler Hot Water
3
-
4
- # Prototype BoilerHotWater object
5
- #
6
- # @param model [OpenStudio::Model::Model] OpenStudio model object
7
- # @param hot_water_loop [<OpenStudio::Model::PlantLoop>] a hot water loop served by the boiler
8
- # @param name [String] the name of the boiler, or nil in which case it will be defaulted
9
- # @param fuel_type [String] type of fuel serving the boiler
10
- # @param draft_type [String] Boiler type Condensing, MechanicalNoncondensing, Natural (default)
11
- # @param nominal_thermal_efficiency [Double] boiler nominal thermal efficiency
12
- # @param eff_curve_temp_eval_var [String] LeavingBoiler or EnteringBoiler temperature for the boiler efficiency curve
13
- # @param flow_mode [String] boiler flow mode
14
- # @param lvg_temp_dsgn_f [Double] boiler leaving design temperature in degrees Fahrenheit
15
- # note that this field is deprecated in OS versions 3.0+
16
- # @param out_temp_lmt_f [Double] boiler outlet temperature limit in degrees Fahrenheit
17
- # @param min_plr [Double] boiler minimum part load ratio
18
- # @param max_plr [Double] boiler maximum part load ratio
19
- # @param opt_plr [Double] boiler optimum part load ratio
20
- # @param sizing_factor [Double] boiler oversizing factor
21
- # @return [OpenStudio::Model::BoilerHotWater] the boiler object
22
- def create_boiler_hot_water(model,
23
- hot_water_loop: nil,
24
- name: 'Boiler',
25
- fuel_type: 'NaturalGas',
26
- draft_type: 'Natural',
27
- nominal_thermal_efficiency: 0.80,
28
- eff_curve_temp_eval_var: 'LeavingBoiler',
29
- flow_mode: 'LeavingSetpointModulated',
30
- lvg_temp_dsgn_f: 180.0, # 82.22 degrees Celsius
31
- out_temp_lmt_f: 203.0, # 95.0 degrees Celsius
32
- min_plr: 0.0,
33
- max_plr: 1.2,
34
- opt_plr: 1.0,
35
- sizing_factor: nil)
36
-
37
- # create the boiler
38
- boiler = OpenStudio::Model::BoilerHotWater.new(model)
39
- if name.nil?
40
- if hot_water_loop.nil?
41
- boiler.setName('Boiler')
42
- else
43
- boiler.setName("#{hot_water_loop.name} Boiler")
44
- end
45
- else
46
- boiler.setName(name)
47
- end
48
-
49
- if fuel_type.nil? || fuel_type == 'Gas'
50
- boiler.setFuelType('NaturalGas')
51
- elsif fuel_type == 'Propane' || fuel_type == 'PropaneGas'
52
- boiler.setFuelType('Propane')
53
- else
54
- boiler.setFuelType(fuel_type)
55
- end
56
-
57
- if nominal_thermal_efficiency.nil?
58
- boiler.setNominalThermalEfficiency(0.8)
59
- else
60
- boiler.setNominalThermalEfficiency(nominal_thermal_efficiency)
61
- end
62
-
63
- if eff_curve_temp_eval_var.nil?
64
- boiler.setEfficiencyCurveTemperatureEvaluationVariable('LeavingBoiler')
65
- else
66
- boiler.setEfficiencyCurveTemperatureEvaluationVariable(eff_curve_temp_eval_var)
67
- end
68
-
69
- if flow_mode.nil?
70
- boiler.setBoilerFlowMode('LeavingSetpointModulated')
71
- else
72
- boiler.setBoilerFlowMode(flow_mode)
73
- end
74
-
75
- if model.version < OpenStudio::VersionString.new('3.0.0')
76
- if lvg_temp_dsgn_f.nil?
77
- boiler.setDesignWaterOutletTemperature(OpenStudio.convert(180.0, 'F', 'C').get)
78
- else
79
- boiler.setDesignWaterOutletTemperature(OpenStudio.convert(lvg_temp_dsgn_f, 'F', 'C').get)
80
- end
81
- end
82
-
83
- if out_temp_lmt_f.nil?
84
- boiler.setWaterOutletUpperTemperatureLimit(OpenStudio.convert(203.0, 'F', 'C').get)
85
- else
86
- boiler.setWaterOutletUpperTemperatureLimit(OpenStudio.convert(out_temp_lmt_f, 'F', 'C').get)
87
- end
88
-
89
- # logic to set different defaults for condensing boilers if not specified
90
- if draft_type == 'Condensing'
91
- if model.version < OpenStudio::VersionString.new('3.0.0') && lvg_temp_dsgn_f.nil?
92
- # default to 120 degrees Fahrenheit (48.49 degrees Celsius)
93
- boiler.setDesignWaterOutletTemperature(OpenStudio.convert(120.0, 'F', 'C').get)
94
- end
95
- boiler.setNominalThermalEfficiency(0.96) if nominal_thermal_efficiency.nil?
96
- end
97
-
98
- if min_plr.nil?
99
- boiler.setMinimumPartLoadRatio(0.0)
100
- else
101
- boiler.setMinimumPartLoadRatio(min_plr)
102
- end
103
-
104
- if max_plr.nil?
105
- boiler.setMaximumPartLoadRatio(1.2)
106
- else
107
- boiler.setMaximumPartLoadRatio(max_plr)
108
- end
109
-
110
- if opt_plr.nil?
111
- boiler.setOptimumPartLoadRatio(1.0)
112
- else
113
- boiler.setOptimumPartLoadRatio(opt_plr)
114
- end
115
-
116
- boiler.setSizingFactor(sizing_factor) unless sizing_factor.nil?
117
-
118
- # add to supply side of hot water loop if specified
119
- hot_water_loop.addSupplyBranchForComponent(boiler) unless hot_water_loop.nil?
120
-
121
- return boiler
122
- end
123
- end
@@ -1,216 +0,0 @@
1
- class Standard
2
- # @!group Central Air Source Heat Pump
3
-
4
- # Prototype CentralAirSourceHeatPump object using PlantComponentUserDefined
5
- #
6
- # @param model [OpenStudio::Model::Model] OpenStudio model object
7
- # @param hot_water_loop [<OpenStudio::Model::PlantLoop>] a hot water loop served by the central air source heat pump
8
- # @param name [String] the name of the central air source heat pump, or nil in which case it will be defaulted
9
- # @param cop [Double] air source heat pump rated cop
10
- # @return [OpenStudio::Model::PlantComponentUserDefined] a plant component representing the air source heat pump
11
- # @todo update curve to better calculate based on the rated cop
12
- # @todo refactor to use the new EnergyPlus central air source heat pump object when it becomes available
13
- # set hot_water_loop to an optional keyword argument, and add input keyword arguments for other characteristics
14
- def create_central_air_source_heat_pump(model,
15
- hot_water_loop,
16
- name: nil,
17
- cop: 3.65)
18
-
19
- # create the PlantComponentUserDefined object as a proxy for the Central Air Source Heat Pump
20
- plant_comp = OpenStudio::Model::PlantComponentUserDefined.new(model)
21
- if name.nil?
22
- if hot_water_loop.nil?
23
- name = 'Central Air Source Heat Pump'
24
- else
25
- name = "#{hot_water_loop.name} Central Air Source Heat Pump"
26
- end
27
- end
28
-
29
- # change equipment name for EMS validity
30
- plant_comp.setName(ems_friendly_name(name))
31
-
32
- # set plant component properties
33
- plant_comp.setPlantLoadingMode('MeetsLoadWithNominalCapacityHiOutLimit')
34
- plant_comp.setPlantLoopFlowRequestMode('NeedsFlowIfLoopOn')
35
-
36
- # plant design volume flow rate internal variable
37
- vdot_des_int_var = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model, 'Plant Design Volume Flow Rate')
38
- vdot_des_int_var.setName("#{plant_comp.name}_Vdot_Des_Int_Var")
39
- vdot_des_int_var.setInternalDataIndexKeyName(hot_water_loop.handle.to_s)
40
-
41
- # inlet temperature internal variable
42
- tin_int_var = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model, 'Inlet Temperature for Plant Connection 1')
43
- tin_int_var.setName("#{plant_comp.name}_Tin_Int_Var")
44
- tin_int_var.setInternalDataIndexKeyName(plant_comp.handle.to_s)
45
-
46
- # inlet mass flow rate internal variable
47
- mdot_int_var = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model, 'Inlet Mass Flow Rate for Plant Connection 1')
48
- mdot_int_var.setName("#{plant_comp.name}_Mdot_Int_Var")
49
- mdot_int_var.setInternalDataIndexKeyName(plant_comp.handle.to_s)
50
-
51
- # inlet specific heat internal variable
52
- cp_int_var = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model, 'Inlet Specific Heat for Plant Connection 1')
53
- cp_int_var.setName("#{plant_comp.name}_Cp_Int_Var")
54
- cp_int_var.setInternalDataIndexKeyName(plant_comp.handle.to_s)
55
-
56
- # inlet density internal variable
57
- rho_int_var = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model, 'Inlet Density for Plant Connection 1')
58
- rho_int_var.setName("#{plant_comp.name}_rho_Int_Var")
59
- rho_int_var.setInternalDataIndexKeyName(plant_comp.handle.to_s)
60
-
61
- # load request internal variable
62
- load_int_var = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model, 'Load Request for Plant Connection 1')
63
- load_int_var.setName("#{plant_comp.name}_Load_Int_Var")
64
- load_int_var.setInternalDataIndexKeyName(plant_comp.handle.to_s)
65
-
66
- # supply outlet node setpoint temperature sensor
67
- setpt_mgr_sch_sen = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value')
68
- setpt_mgr_sch_sen.setName("#{plant_comp.name}_Setpt_Mgr_Temp_Sen")
69
- hot_water_loop.supplyOutletNode.setpointManagers.each do |m|
70
- if m.to_SetpointManagerScheduled.is_initialized
71
- setpt_mgr_sch_sen.setKeyName(m.to_SetpointManagerScheduled.get.schedule.name.to_s)
72
- end
73
- end
74
-
75
- # outdoor air drybulb temperature sensor
76
- oa_dbt_sen = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Site Outdoor Air Drybulb Temperature')
77
- oa_dbt_sen.setName("#{plant_comp.name}_OA_DBT_Sen")
78
- oa_dbt_sen.setKeyName('Environment')
79
-
80
- # minimum mass flow rate actuator
81
- mdot_min_act = plant_comp.minimumMassFlowRateActuator.get
82
- mdot_min_act.setName("#{plant_comp.name}_Mdot_Min_Act")
83
-
84
- # maximum mass flow rate actuator
85
- mdot_max_act = plant_comp.maximumMassFlowRateActuator.get
86
- mdot_max_act.setName("#{plant_comp.name}_Mdot_Max_Act")
87
-
88
- # design flow rate actuator
89
- vdot_des_act = plant_comp.designVolumeFlowRateActuator.get
90
- vdot_des_act.setName("#{plant_comp.name}_Vdot_Des_Act")
91
-
92
- # minimum loading capacity actuator
93
- cap_min_act = plant_comp.minimumLoadingCapacityActuator.get
94
- cap_min_act.setName("#{plant_comp.name}_Cap_Min_Act")
95
-
96
- # maximum loading capacity actuator
97
- cap_max_act = plant_comp.maximumLoadingCapacityActuator.get
98
- cap_max_act.setName("#{plant_comp.name}_Cap_Max_Act")
99
-
100
- # optimal loading capacity actuator
101
- cap_opt_act = plant_comp.optimalLoadingCapacityActuator.get
102
- cap_opt_act.setName("#{plant_comp.name}_Cap_Opt_Act")
103
-
104
- # outlet temperature actuator
105
- tout_act = plant_comp.outletTemperatureActuator.get
106
- tout_act.setName("#{plant_comp.name}_Tout_Act")
107
-
108
- # mass flow rate actuator
109
- mdot_req_act = plant_comp.massFlowRateActuator.get
110
- mdot_req_act.setName("#{plant_comp.name}_Mdot_Req_Act")
111
-
112
- # heat pump COP curve
113
- constant_coeff = 1.932 + (cop - 3.65)
114
- hp_cop_curve = OpenStudio::Model::CurveQuadratic.new(model)
115
- hp_cop_curve.setCoefficient1Constant(constant_coeff)
116
- hp_cop_curve.setCoefficient2x(0.227674286)
117
- hp_cop_curve.setCoefficient3xPOW2(-0.007313143)
118
- hp_cop_curve.setMinimumValueofx(1.67)
119
- hp_cop_curve.setMaximumValueofx(12.78)
120
- hp_cop_curve.setInputUnitTypeforX('Temperature')
121
- hp_cop_curve.setOutputUnitType('Dimensionless')
122
-
123
- # heat pump COP curve index variable
124
- hp_cop_curve_idx_var = OpenStudio::Model::EnergyManagementSystemCurveOrTableIndexVariable.new(model, hp_cop_curve)
125
-
126
- # high outlet temperature limit actuator
127
- tout_max_act = OpenStudio::Model::EnergyManagementSystemActuator.new(plant_comp, 'Plant Connection 1', 'High Outlet Temperature Limit')
128
- tout_max_act.setName("#{plant_comp.name}_Tout_Max_Act")
129
-
130
- # init program
131
- init_pgrm = plant_comp.plantInitializationProgram.get
132
- init_pgrm.setName("#{plant_comp.name}_Init_Pgrm")
133
- init_pgrm_body = <<-EMS
134
- SET Loop_Exit_Temp = #{hot_water_loop.sizingPlant.designLoopExitTemperature}
135
- SET Loop_Delta_Temp = #{hot_water_loop.sizingPlant.loopDesignTemperatureDifference}
136
- SET Cp = @CPHW Loop_Exit_Temp
137
- SET rho = @RhoH2O Loop_Exit_Temp
138
- SET #{vdot_des_act.handle} = #{vdot_des_int_var.handle}
139
- SET #{mdot_min_act.handle} = 0
140
- SET Mdot_Max = #{vdot_des_int_var.handle} * rho
141
- SET #{mdot_max_act.handle} = Mdot_Max
142
- SET Cap = Mdot_Max * Cp * Loop_Delta_Temp
143
- SET #{cap_min_act.handle} = 0
144
- SET #{cap_max_act.handle} = Cap
145
- SET #{cap_opt_act.handle} = 1 * Cap
146
- EMS
147
- init_pgrm.setBody(init_pgrm_body)
148
-
149
- # sim program
150
- sim_pgrm = plant_comp.plantSimulationProgram.get
151
- sim_pgrm.setName("#{plant_comp.name}_Sim_Pgrm")
152
- sim_pgrm_body = <<-EMS
153
- SET tmp = #{load_int_var.handle}
154
- SET tmp = #{tin_int_var.handle}
155
- SET tmp = #{mdot_int_var.handle}
156
- SET #{tout_max_act.handle} = 75.0
157
- IF #{load_int_var.handle} == 0
158
- SET #{tout_act.handle} = #{tin_int_var.handle}
159
- SET #{mdot_req_act.handle} = 0
160
- SET Elec = 0
161
- RETURN
162
- ENDIF
163
- IF #{load_int_var.handle} >= #{cap_max_act.handle}
164
- SET Qdot = #{cap_max_act.handle}
165
- SET Mdot = #{mdot_max_act.handle}
166
- SET #{mdot_req_act.handle} = Mdot
167
- SET #{tout_act.handle} = (Qdot / (Mdot * #{cp_int_var.handle})) + #{tin_int_var.handle}
168
- IF #{tout_act.handle} > #{tout_max_act.handle}
169
- SET #{tout_act.handle} = #{tout_max_act.handle}
170
- SET Qdot = Mdot * #{cp_int_var.handle} * (#{tout_act.handle} - #{tin_int_var.handle})
171
- ENDIF
172
- ELSE
173
- SET Qdot = #{load_int_var.handle}
174
- SET #{tout_act.handle} = #{setpt_mgr_sch_sen.handle}
175
- SET Mdot = Qdot / (#{cp_int_var.handle} * (#{tout_act.handle} - #{tin_int_var.handle}))
176
- SET #{mdot_req_act.handle} = Mdot
177
- ENDIF
178
- SET Tdb = #{oa_dbt_sen.handle}
179
- SET COP = @CurveValue #{hp_cop_curve_idx_var.handle} Tdb
180
- SET EIR = 1 / COP
181
- SET Pwr = Qdot * EIR
182
- SET Elec = Pwr * SystemTimestep * 3600
183
- EMS
184
- sim_pgrm.setBody(sim_pgrm_body)
185
-
186
- # init program calling manager
187
- init_mgr = plant_comp.plantInitializationProgramCallingManager.get
188
- init_mgr.setName("#{plant_comp.name}_Init_Pgrm_Mgr")
189
-
190
- # sim program calling manager
191
- sim_mgr = plant_comp.plantSimulationProgramCallingManager.get
192
- sim_mgr.setName("#{plant_comp.name}_Sim_Pgrm_Mgr")
193
-
194
- # metered output variable
195
- elec_mtr_out_var = OpenStudio::Model::EnergyManagementSystemMeteredOutputVariable.new(model, "#{plant_comp.name} Electricity Consumption")
196
- elec_mtr_out_var.setName("#{plant_comp.name} Electricity Consumption")
197
- elec_mtr_out_var.setEMSVariableName('Elec')
198
- elec_mtr_out_var.setUpdateFrequency('SystemTimestep')
199
- elec_mtr_out_var.setString(4, sim_pgrm.handle.to_s)
200
- elec_mtr_out_var.setResourceType('Electricity')
201
- elec_mtr_out_var.setGroupType('HVAC')
202
- elec_mtr_out_var.setEndUseCategory('Heating')
203
- elec_mtr_out_var.setEndUseSubcategory('')
204
- elec_mtr_out_var.setUnits('J')
205
-
206
- # add to supply side of hot water loop if specified
207
- hot_water_loop.addSupplyBranchForComponent(plant_comp) unless hot_water_loop.nil?
208
-
209
- # add operation scheme
210
- htg_op_scheme = OpenStudio::Model::PlantEquipmentOperationHeatingLoad.new(model)
211
- htg_op_scheme.addEquipment(1000000000, plant_comp)
212
- hot_water_loop.setPlantEquipmentOperationHeatingLoad(htg_op_scheme)
213
-
214
- return plant_comp
215
- end
216
- end
@@ -1,273 +0,0 @@
1
- class Standard
2
- # @!group CoilCoolingDXSingleSpeed
3
-
4
- # Prototype CoilCoolingDXSingleSpeed 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 cooling coefficient of performance
13
- # @return [OpenStudio::Model::CoilCoolingDXTwoSpeed] the DX cooling coil
14
- def create_coil_cooling_dx_single_speed(model,
15
- air_loop_node: nil,
16
- name: '1spd DX Clg Coil',
17
- schedule: nil,
18
- type: nil,
19
- cop: nil)
20
-
21
- clg_coil = OpenStudio::Model::CoilCoolingDXSingleSpeed.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
- # set coil availability schedule
30
- if schedule.nil?
31
- # default always on
32
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
33
- elsif schedule.instance_of?(String)
34
- coil_availability_schedule = model_add_schedule(model, schedule)
35
-
36
- if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
37
- coil_availability_schedule = model.alwaysOffDiscreteSchedule
38
- elsif coil_availability_schedule.nil?
39
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
40
- end
41
- elsif !schedule.to_Schedule.empty?
42
- coil_availability_schedule = schedule
43
- end
44
- clg_coil.setAvailabilitySchedule(coil_availability_schedule)
45
-
46
- # set coil cop
47
- clg_coil.setRatedCOP(cop) unless cop.nil?
48
-
49
- clg_cap_f_of_temp = nil
50
- clg_cap_f_of_flow = nil
51
- clg_energy_input_ratio_f_of_temp = nil
52
- clg_energy_input_ratio_f_of_flow = nil
53
- clg_part_load_ratio = nil
54
-
55
- # curve sets
56
- case type
57
- when 'OS default'
58
- # use OS defaults
59
-
60
- when 'Heat Pump'
61
- # "PSZ-AC_Unitary_PackagecoolCapFT"
62
- clg_cap_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
63
- clg_cap_f_of_temp.setCoefficient1Constant(0.766956)
64
- clg_cap_f_of_temp.setCoefficient2x(0.0107756)
65
- clg_cap_f_of_temp.setCoefficient3xPOW2(-0.0000414703)
66
- clg_cap_f_of_temp.setCoefficient4y(0.00134961)
67
- clg_cap_f_of_temp.setCoefficient5yPOW2(-0.000261144)
68
- clg_cap_f_of_temp.setCoefficient6xTIMESY(0.000457488)
69
- clg_cap_f_of_temp.setMinimumValueofx(12.78)
70
- clg_cap_f_of_temp.setMaximumValueofx(23.89)
71
- clg_cap_f_of_temp.setMinimumValueofy(21.1)
72
- clg_cap_f_of_temp.setMaximumValueofy(46.1)
73
-
74
- clg_cap_f_of_flow = OpenStudio::Model::CurveQuadratic.new(model)
75
- clg_cap_f_of_flow.setCoefficient1Constant(0.8)
76
- clg_cap_f_of_flow.setCoefficient2x(0.2)
77
- clg_cap_f_of_flow.setCoefficient3xPOW2(0.0)
78
- clg_cap_f_of_flow.setMinimumValueofx(0.5)
79
- clg_cap_f_of_flow.setMaximumValueofx(1.5)
80
-
81
- clg_energy_input_ratio_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
82
- clg_energy_input_ratio_f_of_temp.setCoefficient1Constant(0.297145)
83
- clg_energy_input_ratio_f_of_temp.setCoefficient2x(0.0430933)
84
- clg_energy_input_ratio_f_of_temp.setCoefficient3xPOW2(-0.000748766)
85
- clg_energy_input_ratio_f_of_temp.setCoefficient4y(0.00597727)
86
- clg_energy_input_ratio_f_of_temp.setCoefficient5yPOW2(0.000482112)
87
- clg_energy_input_ratio_f_of_temp.setCoefficient6xTIMESY(-0.000956448)
88
- clg_energy_input_ratio_f_of_temp.setMinimumValueofx(12.78)
89
- clg_energy_input_ratio_f_of_temp.setMaximumValueofx(23.89)
90
- clg_energy_input_ratio_f_of_temp.setMinimumValueofy(21.1)
91
- clg_energy_input_ratio_f_of_temp.setMaximumValueofy(46.1)
92
-
93
- clg_energy_input_ratio_f_of_flow = OpenStudio::Model::CurveQuadratic.new(model)
94
- clg_energy_input_ratio_f_of_flow.setCoefficient1Constant(1.156)
95
- clg_energy_input_ratio_f_of_flow.setCoefficient2x(-0.1816)
96
- clg_energy_input_ratio_f_of_flow.setCoefficient3xPOW2(0.0256)
97
- clg_energy_input_ratio_f_of_flow.setMinimumValueofx(0.5)
98
- clg_energy_input_ratio_f_of_flow.setMaximumValueofx(1.5)
99
-
100
- clg_part_load_ratio = OpenStudio::Model::CurveQuadratic.new(model)
101
- clg_part_load_ratio.setCoefficient1Constant(0.85)
102
- clg_part_load_ratio.setCoefficient2x(0.15)
103
- clg_part_load_ratio.setCoefficient3xPOW2(0.0)
104
- clg_part_load_ratio.setMinimumValueofx(0.0)
105
- clg_part_load_ratio.setMaximumValueofx(1.0)
106
-
107
- when 'PSZ-AC'
108
- # Defaults to "DOE Ref DX Clg Coil Cool-Cap-fT"
109
- clg_cap_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
110
- clg_cap_f_of_temp.setCoefficient1Constant(0.9712123)
111
- clg_cap_f_of_temp.setCoefficient2x(-0.015275502)
112
- clg_cap_f_of_temp.setCoefficient3xPOW2(0.0014434524)
113
- clg_cap_f_of_temp.setCoefficient4y(-0.00039321)
114
- clg_cap_f_of_temp.setCoefficient5yPOW2(-0.0000068364)
115
- clg_cap_f_of_temp.setCoefficient6xTIMESY(-0.0002905956)
116
- clg_cap_f_of_temp.setMinimumValueofx(-100.0)
117
- clg_cap_f_of_temp.setMaximumValueofx(100.0)
118
- clg_cap_f_of_temp.setMinimumValueofy(-100.0)
119
- clg_cap_f_of_temp.setMaximumValueofy(100.0)
120
-
121
- clg_cap_f_of_flow = OpenStudio::Model::CurveQuadratic.new(model)
122
- clg_cap_f_of_flow.setCoefficient1Constant(1.0)
123
- clg_cap_f_of_flow.setCoefficient2x(0.0)
124
- clg_cap_f_of_flow.setCoefficient3xPOW2(0.0)
125
- clg_cap_f_of_flow.setMinimumValueofx(-100.0)
126
- clg_cap_f_of_flow.setMaximumValueofx(100.0)
127
-
128
- # "DOE Ref DX Clg Coil Cool-EIR-fT",
129
- clg_energy_input_ratio_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
130
- clg_energy_input_ratio_f_of_temp.setCoefficient1Constant(0.28687133)
131
- clg_energy_input_ratio_f_of_temp.setCoefficient2x(0.023902164)
132
- clg_energy_input_ratio_f_of_temp.setCoefficient3xPOW2(-0.000810648)
133
- clg_energy_input_ratio_f_of_temp.setCoefficient4y(0.013458546)
134
- clg_energy_input_ratio_f_of_temp.setCoefficient5yPOW2(0.0003389364)
135
- clg_energy_input_ratio_f_of_temp.setCoefficient6xTIMESY(-0.0004870044)
136
- clg_energy_input_ratio_f_of_temp.setMinimumValueofx(-100.0)
137
- clg_energy_input_ratio_f_of_temp.setMaximumValueofx(100.0)
138
- clg_energy_input_ratio_f_of_temp.setMinimumValueofy(-100.0)
139
- clg_energy_input_ratio_f_of_temp.setMaximumValueofy(100.0)
140
-
141
- clg_energy_input_ratio_f_of_flow = OpenStudio::Model::CurveQuadratic.new(model)
142
- clg_energy_input_ratio_f_of_flow.setCoefficient1Constant(1.0)
143
- clg_energy_input_ratio_f_of_flow.setCoefficient2x(0.0)
144
- clg_energy_input_ratio_f_of_flow.setCoefficient3xPOW2(0.0)
145
- clg_energy_input_ratio_f_of_flow.setMinimumValueofx(-100.0)
146
- clg_energy_input_ratio_f_of_flow.setMaximumValueofx(100.0)
147
-
148
- # "DOE Ref DX Clg Coil Cool-PLF-fPLR"
149
- clg_part_load_ratio = OpenStudio::Model::CurveQuadratic.new(model)
150
- clg_part_load_ratio.setCoefficient1Constant(0.90949556)
151
- clg_part_load_ratio.setCoefficient2x(0.09864773)
152
- clg_part_load_ratio.setCoefficient3xPOW2(-0.00819488)
153
- clg_part_load_ratio.setMinimumValueofx(0.0)
154
- clg_part_load_ratio.setMaximumValueofx(1.0)
155
- clg_part_load_ratio.setMinimumCurveOutput(0.7)
156
- clg_part_load_ratio.setMaximumCurveOutput(1.0)
157
-
158
- when 'Window AC'
159
- # Performance curves
160
- # From Frigidaire 10.7 EER unit in Winkler et. al. Lab Testing of Window ACs (2013)
161
- # @note These coefficients are in SI UNITS
162
- cool_cap_ft_coeffs_si = [0.6405, 0.01568, 0.0004531, 0.001615, -0.0001825, 0.00006614]
163
- cool_eir_ft_coeffs_si = [2.287, -0.1732, 0.004745, 0.01662, 0.000484, -0.001306]
164
- cool_cap_fflow_coeffs = [0.887, 0.1128, 0]
165
- cool_eir_fflow_coeffs = [1.763, -0.6081, 0]
166
- cool_plf_fplr_coeffs = [0.78, 0.22, 0]
167
-
168
- # Make the curves
169
- clg_cap_f_of_temp = create_curve_biquadratic(model, cool_cap_ft_coeffs_si, 'RoomAC-Cap-fT', 0, 100, 0, 100, nil, nil)
170
- clg_cap_f_of_flow = create_curve_quadratic(model, cool_cap_fflow_coeffs, 'RoomAC-Cap-fFF', 0, 2, 0, 2, is_dimensionless = true)
171
- clg_energy_input_ratio_f_of_temp = create_curve_biquadratic(model, cool_eir_ft_coeffs_si, 'RoomAC-EIR-fT', 0, 100, 0, 100, nil, nil)
172
- clg_energy_input_ratio_f_of_flow = create_curve_quadratic(model, cool_eir_fflow_coeffs, 'RoomAC-EIR-fFF', 0, 2, 0, 2, is_dimensionless = true)
173
- clg_part_load_ratio = create_curve_quadratic(model, cool_plf_fplr_coeffs, 'RoomAC-PLF-fPLR', 0, 1, 0, 1, is_dimensionless = true)
174
-
175
- when 'Residential Central AC'
176
- # Performance curves
177
- # These coefficients are in IP UNITS
178
- cool_cap_ft_coeffs_ip = [3.670270705, -0.098652414, 0.000955906, 0.006552414, -0.0000156, -0.000131877]
179
- cool_eir_ft_coeffs_ip = [-3.302695861, 0.137871531, -0.001056996, -0.012573945, 0.000214638, -0.000145054]
180
- cool_cap_fflow_coeffs = [0.718605468, 0.410099989, -0.128705457]
181
- cool_eir_fflow_coeffs = [1.32299905, -0.477711207, 0.154712157]
182
- cool_plf_fplr_coeffs = [0.8, 0.2, 0]
183
-
184
- # Convert coefficients from IP to SI
185
- cool_cap_ft_coeffs_si = convert_curve_biquadratic(cool_cap_ft_coeffs_ip)
186
- cool_eir_ft_coeffs_si = convert_curve_biquadratic(cool_eir_ft_coeffs_ip)
187
-
188
- # Make the curves
189
- clg_cap_f_of_temp = create_curve_biquadratic(model, cool_cap_ft_coeffs_si, 'AC-Cap-fT', 0, 100, 0, 100, nil, nil)
190
- clg_cap_f_of_flow = create_curve_quadratic(model, cool_cap_fflow_coeffs, 'AC-Cap-fFF', 0, 2, 0, 2, is_dimensionless = true)
191
- clg_energy_input_ratio_f_of_temp = create_curve_biquadratic(model, cool_eir_ft_coeffs_si, 'AC-EIR-fT', 0, 100, 0, 100, nil, nil)
192
- clg_energy_input_ratio_f_of_flow = create_curve_quadratic(model, cool_eir_fflow_coeffs, 'AC-EIR-fFF', 0, 2, 0, 2, is_dimensionless = true)
193
- clg_part_load_ratio = create_curve_quadratic(model, cool_plf_fplr_coeffs, 'AC-PLF-fPLR', 0, 1, 0, 1, is_dimensionless = true)
194
-
195
- when 'Residential Central ASHP'
196
- # Performance curves
197
- # These coefficients are in IP UNITS
198
- cool_cap_ft_coeffs_ip = [3.68637657, -0.098352478, 0.000956357, 0.005838141, -0.0000127, -0.000131702]
199
- cool_eir_ft_coeffs_ip = [-3.437356399, 0.136656369, -0.001049231, -0.0079378, 0.000185435, -0.0001441]
200
- cool_cap_fflow_coeffs = [0.718664047, 0.41797409, -0.136638137]
201
- cool_eir_fflow_coeffs = [1.143487507, -0.13943972, -0.004047787]
202
- cool_plf_fplr_coeffs = [0.8, 0.2, 0]
203
-
204
- # Convert coefficients from IP to SI
205
- cool_cap_ft_coeffs_si = convert_curve_biquadratic(cool_cap_ft_coeffs_ip)
206
- cool_eir_ft_coeffs_si = convert_curve_biquadratic(cool_eir_ft_coeffs_ip)
207
-
208
- # Make the curves
209
- clg_cap_f_of_temp = create_curve_biquadratic(model, cool_cap_ft_coeffs_si, 'Cool-Cap-fT', 0, 100, 0, 100, nil, nil)
210
- clg_cap_f_of_flow = create_curve_quadratic(model, cool_cap_fflow_coeffs, 'Cool-Cap-fFF', 0, 2, 0, 2, is_dimensionless = true)
211
- 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)
212
- 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)
213
- clg_part_load_ratio = create_curve_quadratic(model, cool_plf_fplr_coeffs, 'Cool-PLF-fPLR', 0, 1, 0, 1, is_dimensionless = true)
214
-
215
- else # default curve set, type == 'Split AC' || 'PTAC'
216
- clg_cap_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
217
- clg_cap_f_of_temp.setCoefficient1Constant(0.942587793)
218
- clg_cap_f_of_temp.setCoefficient2x(0.009543347)
219
- clg_cap_f_of_temp.setCoefficient3xPOW2(0.00068377)
220
- clg_cap_f_of_temp.setCoefficient4y(-0.011042676)
221
- clg_cap_f_of_temp.setCoefficient5yPOW2(0.000005249)
222
- clg_cap_f_of_temp.setCoefficient6xTIMESY(-0.00000972)
223
- clg_cap_f_of_temp.setMinimumValueofx(12.77778)
224
- clg_cap_f_of_temp.setMaximumValueofx(23.88889)
225
- clg_cap_f_of_temp.setMinimumValueofy(23.88889)
226
- clg_cap_f_of_temp.setMaximumValueofy(46.11111)
227
-
228
- clg_cap_f_of_flow = OpenStudio::Model::CurveQuadratic.new(model)
229
- clg_cap_f_of_flow.setCoefficient1Constant(0.8)
230
- clg_cap_f_of_flow.setCoefficient2x(0.2)
231
- clg_cap_f_of_flow.setCoefficient3xPOW2(0)
232
- clg_cap_f_of_flow.setMinimumValueofx(0.5)
233
- clg_cap_f_of_flow.setMaximumValueofx(1.5)
234
-
235
- clg_energy_input_ratio_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
236
- clg_energy_input_ratio_f_of_temp.setCoefficient1Constant(0.342414409)
237
- clg_energy_input_ratio_f_of_temp.setCoefficient2x(0.034885008)
238
- clg_energy_input_ratio_f_of_temp.setCoefficient3xPOW2(-0.0006237)
239
- clg_energy_input_ratio_f_of_temp.setCoefficient4y(0.004977216)
240
- clg_energy_input_ratio_f_of_temp.setCoefficient5yPOW2(0.000437951)
241
- clg_energy_input_ratio_f_of_temp.setCoefficient6xTIMESY(-0.000728028)
242
- clg_energy_input_ratio_f_of_temp.setMinimumValueofx(12.77778)
243
- clg_energy_input_ratio_f_of_temp.setMaximumValueofx(23.88889)
244
- clg_energy_input_ratio_f_of_temp.setMinimumValueofy(23.88889)
245
- clg_energy_input_ratio_f_of_temp.setMaximumValueofy(46.11111)
246
-
247
- clg_energy_input_ratio_f_of_flow = OpenStudio::Model::CurveQuadratic.new(model)
248
- clg_energy_input_ratio_f_of_flow.setCoefficient1Constant(1.1552)
249
- clg_energy_input_ratio_f_of_flow.setCoefficient2x(-0.1808)
250
- clg_energy_input_ratio_f_of_flow.setCoefficient3xPOW2(0.0256)
251
- clg_energy_input_ratio_f_of_flow.setMinimumValueofx(0.5)
252
- clg_energy_input_ratio_f_of_flow.setMaximumValueofx(1.5)
253
-
254
- clg_part_load_ratio = OpenStudio::Model::CurveQuadratic.new(model)
255
- clg_part_load_ratio.setCoefficient1Constant(0.85)
256
- clg_part_load_ratio.setCoefficient2x(0.15)
257
- clg_part_load_ratio.setCoefficient3xPOW2(0.0)
258
- clg_part_load_ratio.setMinimumValueofx(0.0)
259
- clg_part_load_ratio.setMaximumValueofx(1.0)
260
- clg_part_load_ratio.setMinimumCurveOutput(0.7)
261
- clg_part_load_ratio.setMaximumCurveOutput(1.0)
262
-
263
- end
264
-
265
- clg_coil.setTotalCoolingCapacityFunctionOfTemperatureCurve(clg_cap_f_of_temp) unless clg_cap_f_of_temp.nil?
266
- clg_coil.setTotalCoolingCapacityFunctionOfFlowFractionCurve(clg_cap_f_of_flow) unless clg_cap_f_of_flow.nil?
267
- clg_coil.setEnergyInputRatioFunctionOfTemperatureCurve(clg_energy_input_ratio_f_of_temp) unless clg_energy_input_ratio_f_of_temp.nil?
268
- clg_coil.setEnergyInputRatioFunctionOfFlowFractionCurve(clg_energy_input_ratio_f_of_flow) unless clg_energy_input_ratio_f_of_flow.nil?
269
- clg_coil.setPartLoadFractionCorrelationCurve(clg_part_load_ratio) unless clg_part_load_ratio.nil?
270
-
271
- return clg_coil
272
- end
273
- end