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
@@ -14,11 +14,11 @@ class NRELZNEReady2017 < ASHRAE901
14
14
  plant_loop.demandComponents.each do |sc|
15
15
  if sc.to_PumpVariableSpeed.is_initialized
16
16
  pump = sc.to_PumpVariableSpeed.get
17
- pump_variable_speed_set_control_type(pump, sec_control_type)
17
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: sec_control_type)
18
18
  has_secondary_pump = true
19
19
  elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
20
20
  pump = sc.to_HeaderedPumpsVariableSpeed.get
21
- headered_pumps_variable_speed_set_control_type(pump, control_type)
21
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: sec_control_type)
22
22
  has_secondary_pump = true
23
23
  end
24
24
  end
@@ -30,10 +30,10 @@ class NRELZNEReady2017 < ASHRAE901
30
30
  plant_loop.supplyComponents.each do |sc|
31
31
  if sc.to_PumpVariableSpeed.is_initialized
32
32
  pump = sc.to_PumpVariableSpeed.get
33
- pump_variable_speed_set_control_type(pump, pri_control_type)
33
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: pri_control_type)
34
34
  elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
35
35
  pump = sc.to_HeaderedPumpsVariableSpeed.get
36
- headered_pumps_variable_speed_set_control_type(pump, control_type)
36
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: pri_control_type)
37
37
  end
38
38
  end
39
39
 
@@ -57,7 +57,7 @@ class NRELZNEReady2017 < ASHRAE901
57
57
  plant_loop.supplyComponents.each do |sc|
58
58
  if sc.to_PumpVariableSpeed.is_initialized
59
59
  pump = sc.to_PumpVariableSpeed.get
60
- pump_variable_speed_set_control_type(pump, control_type)
60
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: control_type)
61
61
  end
62
62
  end
63
63
 
@@ -9,7 +9,7 @@ class ZEAEDGMultifamily < ASHRAE901
9
9
  # @return [Double] minimum damper position
10
10
  def air_terminal_single_duct_vav_reheat_minimum_damper_position(air_terminal_single_duct_vav_reheat, has_ddc = true)
11
11
  min_damper_position = nil
12
- case air_terminal_single_duct_vav_reheat_reheat_type(air_terminal_single_duct_vav_reheat)
12
+ case OpenstudioStandards::HVAC.air_terminal_single_duct_vav_reheat_reheat_type(air_terminal_single_duct_vav_reheat)
13
13
  when 'HotWater'
14
14
  min_damper_position = if has_ddc
15
15
  0.2
@@ -14,11 +14,11 @@ class ZEAEDGMultifamily < ASHRAE901
14
14
  plant_loop.demandComponents.each do |sc|
15
15
  if sc.to_PumpVariableSpeed.is_initialized
16
16
  pump = sc.to_PumpVariableSpeed.get
17
- pump_variable_speed_set_control_type(pump, sec_control_type)
17
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: sec_control_type)
18
18
  has_secondary_pump = true
19
19
  elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
20
20
  pump = sc.to_HeaderedPumpsVariableSpeed.get
21
- headered_pumps_variable_speed_set_control_type(pump, control_type)
21
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: sec_control_type)
22
22
  has_secondary_pump = true
23
23
  end
24
24
  end
@@ -30,10 +30,10 @@ class ZEAEDGMultifamily < ASHRAE901
30
30
  plant_loop.supplyComponents.each do |sc|
31
31
  if sc.to_PumpVariableSpeed.is_initialized
32
32
  pump = sc.to_PumpVariableSpeed.get
33
- pump_variable_speed_set_control_type(pump, pri_control_type)
33
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: pri_control_type)
34
34
  elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
35
35
  pump = sc.to_HeaderedPumpsVariableSpeed.get
36
- headered_pumps_variable_speed_set_control_type(pump, control_type)
36
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: pri_control_type)
37
37
  end
38
38
  end
39
39
 
@@ -57,7 +57,7 @@ class ZEAEDGMultifamily < ASHRAE901
57
57
  plant_loop.supplyComponents.each do |sc|
58
58
  if sc.to_PumpVariableSpeed.is_initialized
59
59
  pump = sc.to_PumpVariableSpeed.get
60
- pump_variable_speed_set_control_type(pump, control_type)
60
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: control_type)
61
61
  end
62
62
  end
63
63
 
@@ -191,7 +191,7 @@ class ASHRAE901PRM < Standard
191
191
  # Set fan curve for stable baseline to be VSD with fixed static pressure setpoint
192
192
  # @return [String name of appropriate curve for this code version
193
193
  def air_loop_hvac_set_vsd_curve_type
194
- return 'Multi Zone VAV with VSD and Fixed SP Setpoint'
194
+ return 'Multi Zone VAV with Fixed Static Pressure Setpoint'
195
195
  end
196
196
 
197
197
  # Determines if optimum start control is required.
@@ -7,7 +7,7 @@ class ASHRAE901PRM < Standard
7
7
  # @return [Boolean] returns true if successful, false if not
8
8
  def chiller_electric_eir_apply_efficiency_and_curves(chiller_electric_eir)
9
9
  # Get the chiller capacity
10
- capacity_w = chiller_electric_eir_find_capacity(chiller_electric_eir)
10
+ capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(chiller_electric_eir)
11
11
 
12
12
  # Convert capacity to tons
13
13
  capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
@@ -21,7 +21,7 @@ class ASHRAE901PRM < Standard
21
21
  chiller_electric_eir.setReferenceCOP(cop)
22
22
 
23
23
  # Append the name with size and kw/ton
24
- kw_per_ton = cop_to_kw_per_ton(cop)
24
+ kw_per_ton = OpenstudioStandards::HVAC.cop_to_kw_per_ton(cop)
25
25
  chiller_electric_eir.setName("#{chiller_electric_eir.name} #{capacity_tons.round}tons #{kw_per_ton.round(1)}kW/ton")
26
26
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ChillerElectricEIR', "For #{template}: #{chiller_electric_eir.name}: Capacity = #{capacity_tons.round}tons; COP = #{cop.round(1)} (#{kw_per_ton.round(1)}kW/ton)")
27
27
 
@@ -3,73 +3,6 @@ class ASHRAE901PRM < Standard
3
3
 
4
4
  include ASHRAEPRMCoilDX
5
5
 
6
- # Finds capacity in W
7
- #
8
- # @param coil_cooling_dx_single_speed [OpenStudio::Model::CoilCoolingDXSingleSpeed] coil cooling dx single speed object
9
- # @param sys_type [String] HVAC system type
10
- # @return [Double] capacity in W to be used for find object
11
- def coil_cooling_dx_single_speed_find_capacity(coil_cooling_dx_single_speed, sys_type)
12
- capacity_w = nil
13
- if coil_cooling_dx_single_speed.ratedTotalCoolingCapacity.is_initialized
14
- capacity_w = coil_cooling_dx_single_speed.ratedTotalCoolingCapacity.get
15
- elsif coil_cooling_dx_single_speed.autosizedRatedTotalCoolingCapacity.is_initialized
16
- capacity_w = coil_cooling_dx_single_speed.autosizedRatedTotalCoolingCapacity.get
17
- else
18
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{coil_cooling_dx_single_speed.name} capacity is not available, cannot apply efficiency standard.")
19
- return 0.0
20
- end
21
-
22
- # Check for user data that indicates multiple systems per thermal zone
23
- # This could be true for a data center where this is common practice
24
- # Or it could be for a thermal zone that represents multiple real building zones
25
- mult = 1
26
- thermal_zone = nil
27
- comp = coil_cooling_dx_single_speed.containingHVACComponent
28
- if comp.is_initialized && comp.get.to_AirLoopHVACUnitarySystem.is_initialized
29
- unitary = comp.get.to_AirLoopHVACUnitarySystem.get
30
- thermal_zone = unitary.controllingZoneorThermostatLocation.get
31
- end
32
- # meth = comp.methods
33
- comp = coil_cooling_dx_single_speed.containingZoneHVACComponent
34
- if comp.is_initialized && comp.get.thermalZone.is_initialized
35
- thermal_zone = comp.get.thermalZone.get
36
- end
37
-
38
- if !thermal_zone.nil? && standards_data.key?('userdata_thermal_zone')
39
- standards_data['userdata_thermal_zone'].each do |row|
40
- next unless row['name'].to_s.downcase.strip == thermal_zone.name.to_s.downcase.strip
41
-
42
- if row['number_of_systems'].to_s.upcase.strip != ''
43
- mult = row['number_of_systems'].to_s
44
- if mult.to_i.to_s == mult
45
- mult = mult.to_i
46
- capacity_w /= mult
47
- else
48
- OpenStudio.logFree(OpenStudio::Error, 'prm.log', 'In userdata_thermalzone, number_of_systems requires integer input.')
49
- end
50
- break
51
- end
52
- end
53
- end
54
-
55
- # If it's a PTAC or PTHP System, we need to divide the capacity by the potential zone multiplier
56
- # because the COP is dependent on capacity, and the capacity should be the capacity of a single zone, not all the zones
57
- if sys_type == 'PTAC' || sys_type == 'PTHP'
58
- mult = 1
59
- comp = coil_cooling_dx_single_speed.containingZoneHVACComponent
60
- if comp.is_initialized && comp.get.thermalZone.is_initialized
61
- mult = comp.get.thermalZone.get.multiplier
62
- if mult > 1
63
- total_cap = capacity_w
64
- capacity_w /= mult
65
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{coil_cooling_dx_single_speed.name}, total capacity of #{OpenStudio.convert(total_cap, 'W', 'kBtu/hr').get.round(2)}kBTU/hr was divided by the zone multiplier of #{mult} to give #{capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get.round(2)}kBTU/hr.")
66
- end
67
- end
68
- end
69
-
70
- return capacity_w
71
- end
72
-
73
6
  # Finds lookup object in standards and return efficiency
74
7
  #
75
8
  # @param coil_cooling_dx_single_speed [OpenStudio::Model::CoilCoolingDXSingleSpeed] coil cooling dx single speed object
@@ -78,7 +11,8 @@ class ASHRAE901PRM < Standard
78
11
  # @return [Double] full load efficiency (COP)
79
12
  def coil_cooling_dx_single_speed_standard_minimum_cop(coil_cooling_dx_single_speed, sys_type, rename = false)
80
13
  # find properties
81
- capacity_w = coil_cooling_dx_single_speed_find_capacity(coil_cooling_dx_single_speed, sys_type)
14
+ multiplier = coil_dx_number_of_systems(coil_cooling_dx_single_speed, sys_type)
15
+ capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_single_speed_get_capacity(coil_cooling_dx_single_speed, multiplier: multiplier)
82
16
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
83
17
  search_criteria = coil_dx_find_search_criteria(coil_cooling_dx_single_speed, capacity_btu_per_hr, sys_type)
84
18
 
@@ -3,40 +3,6 @@ class ASHRAE901PRM < Standard
3
3
 
4
4
  include ASHRAEPRMCoilDX
5
5
 
6
- # Finds capacity in W
7
- #
8
- # @param coil_cooling_dx_two_speed [OpenStudio::Model::CoilCoolingDXTwoSpeed] coil cooling dx two speed object
9
- # @param sys_type [String] HVAC system type
10
- # @return [Double] capacity in W to be used for find object
11
- def coil_cooling_dx_two_speed_find_capacity(coil_cooling_dx_two_speed, sys_type)
12
- capacity_w = nil
13
- if coil_cooling_dx_two_speed.ratedHighSpeedTotalCoolingCapacity.is_initialized
14
- capacity_w = coil_cooling_dx_two_speed.ratedHighSpeedTotalCoolingCapacity.get
15
- elsif coil_cooling_dx_two_speed.autosizedRatedHighSpeedTotalCoolingCapacity.is_initialized
16
- capacity_w = coil_cooling_dx_two_speed.autosizedRatedHighSpeedTotalCoolingCapacity.get
17
- else
18
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{coil_cooling_dx_two_speed.name} capacity is not available, cannot apply efficiency standard.")
19
- return 0.0
20
- end
21
-
22
- # If it's a PTAC or PTHP System, we need to divide the capacity by the potential zone multiplier
23
- # because the COP is dependent on capacity, and the capacity should be the capacity of a single zone, not all the zones
24
- if sys_type == 'PTAC' || sys_type == 'PTHP'
25
- mult = 1
26
- comp = coil_cooling_dx_two_speed.containingZoneHVACComponent
27
- if comp.is_initialized && comp.get.thermalZone.is_initialized
28
- mult = comp.get.thermalZone.get.multiplier
29
- if mult > 1
30
- total_cap = capacity_w
31
- capacity_w /= mult
32
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{coil_cooling_dx_single_speed.name}, total capacity of #{OpenStudio.convert(total_cap, 'W', 'kBtu/hr').get.round(2)}kBTU/hr was divided by the zone multiplier of #{mult} to give #{capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get.round(2)}kBTU/hr.")
33
- end
34
- end
35
- end
36
-
37
- return capacity_w
38
- end
39
-
40
6
  # Finds lookup object in standards and return efficiency
41
7
  #
42
8
  # @param coil_cooling_dx_two_speed [OpenStudio::Model::CoilCoolingDXTwoSpeed] coil cooling dx two speed object
@@ -45,7 +11,8 @@ class ASHRAE901PRM < Standard
45
11
  # @return [Double] full load efficiency (COP)
46
12
  def coil_cooling_dx_two_speed_standard_minimum_cop(coil_cooling_dx_two_speed, sys_type, rename = false)
47
13
  # find properties
48
- capacity_w = coil_cooling_dx_two_speed_find_capacity(coil_cooling_dx_two_speed, sys_type)
14
+ multiplier = coil_dx_number_of_systems(coil_cooling_dx_two_speed, sys_type)
15
+ capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_two_speed_get_capacity(coil_cooling_dx_two_speed, multiplier: multiplier)
49
16
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
50
17
  search_criteria = coil_dx_find_search_criteria(coil_cooling_dx_two_speed, capacity_btu_per_hr, sys_type)
51
18
 
@@ -30,6 +30,48 @@ module ASHRAEPRMCoilDX
30
30
  return sub_category
31
31
  end
32
32
 
33
+ # Finds the subcategory.
34
+ #
35
+ # @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object
36
+ # @param sys_type [String] HVAC system type
37
+ # @return [Double] the number of systems
38
+ def coil_dx_number_of_systems(coil_dx, sys_type)
39
+ # default to 1
40
+ multiplier = 1
41
+
42
+ # get thermal zone
43
+ thermal_zone = OpenstudioStandards::HVAC.hvac_component_get_thermal_zone(coil_dx)
44
+
45
+ if thermal_zone.nil?
46
+ OpenStudio.logFree(OpenStudio::Error, 'prm.log', "Unable to determine thermal zone for coil #{coil_dx.name}.")
47
+ return multiplier
48
+ end
49
+
50
+ # use user data multiplier if available
51
+ if standards_data.key?('userdata_thermal_zone')
52
+ standards_data['userdata_thermal_zone'].each do |row|
53
+ next unless row['name'].to_s.downcase.strip == thermal_zone.name.to_s.downcase.strip
54
+
55
+ if row['number_of_systems'].to_s.upcase.strip != ''
56
+ mult = row['number_of_systems'].to_s
57
+ if mult.to_i.to_s == mult
58
+ multiplier = mult.to_i
59
+ else
60
+ OpenStudio.logFree(OpenStudio::Error, 'prm.log', 'In userdata_thermalzone, number_of_systems requires integer input.')
61
+ end
62
+ break
63
+ end
64
+ end
65
+ end
66
+
67
+ if (sys_type == 'PTAC') || (sys_type == 'PTHP')
68
+ # use zone multiplier
69
+ multiplier = thermal_zone.multiplier
70
+ end
71
+
72
+ return multiplier
73
+ end
74
+
33
75
  # Finds the search criteria
34
76
  #
35
77
  # @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object
@@ -65,13 +65,16 @@ class ASHRAE901PRM < Standard
65
65
  return capacity_w
66
66
  end
67
67
 
68
+ # find properties
69
+ multiplier = coil_dx_number_of_systems(clg_coil, sys_type)
70
+
68
71
  # If a coil was found, cast to the correct type
69
72
  if clg_coil.to_CoilCoolingDXSingleSpeed.is_initialized
70
73
  clg_coil = clg_coil.to_CoilCoolingDXSingleSpeed.get
71
- capacity_w = coil_cooling_dx_single_speed_find_capacity(clg_coil, sys_type)
74
+ capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_single_speed_get_capacity(clg_coil, multiplier: multiplier)
72
75
  elsif clg_coil.to_CoilCoolingDXTwoSpeed.is_initialized
73
76
  clg_coil = clg_coil.to_CoilCoolingDXTwoSpeed.get
74
- capacity_w = coil_cooling_dx_two_speed_find_capacity(clg_coil, sys_type)
77
+ capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_two_speed_get_capacity(clg_coil, multiplier: multiplier)
75
78
  end
76
79
 
77
80
  # Check for user data that indicates multiple systems per thermal zone
@@ -28,7 +28,7 @@ class ASHRAE901PRM < Standard
28
28
  def coil_heating_gas_standard_minimum_thermal_efficiency(coil_heating_gas, sys_type, rename = false)
29
29
  # Get the coil properties
30
30
  search_criteria = coil_heating_gas_find_search_criteria(coil_heating_gas, sys_type)
31
- capacity_w = coil_heating_gas_find_capacity(coil_heating_gas)
31
+ capacity_w = OpenstudioStandards::HVAC.coil_heating_gas_get_capacity(coil_heating_gas)
32
32
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
33
33
  capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
34
34
 
@@ -59,7 +59,7 @@ class ASHRAE901PRM < Standard
59
59
  # If specified as combustion efficiency
60
60
  unless coil_props['minimum_combustion_efficiency'].nil?
61
61
  min_comb_eff = coil_props['minimum_combustion_efficiency']
62
- thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
62
+ thermal_eff = OpenstudioStandards::HVAC.combustion_eff_to_thermal_eff(min_comb_eff)
63
63
  new_comp_name = "#{coil_heating_gas.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
64
64
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingGas', "For #{template}: #{coil_heating_gas.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
65
65
  end
@@ -137,7 +137,7 @@ class ASHRAE901PRM < Standard
137
137
  end
138
138
 
139
139
  # Get existing plant loop pump. We'll copy this pumps parameters before removing it. Throw exception for multiple pumps on supply side
140
- if pumps.size.zero?
140
+ if pumps.empty?
141
141
  OpenStudio.logFree(OpenStudio::Error, 'prm.log', "For #{plant_loop.name}, found #{pumps.size} pumps. A loop must have at least one pump.")
142
142
  return false
143
143
  elsif pumps.size > 1
@@ -218,7 +218,7 @@ class ASHRAE901PRM < Standard
218
218
  new_pump.setName("#{chiller.name} Inlet Pump")
219
219
  new_pump.setRatedPumpHead(original_pump.ratedPumpHead / num_chillers)
220
220
 
221
- pump_variable_speed_set_control_type(new_pump, control_type = 'Riding Curve')
221
+ OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(new_pump, control_type: 'Riding Curve')
222
222
  chiller_inlet_node = chiller.connectedObject(chiller.supplyInletPort).get.to_Node.get
223
223
  new_pump.addToNode(chiller_inlet_node)
224
224
 
@@ -271,7 +271,7 @@ class ASHRAE901PRM < Standard
271
271
  chw_sensor.setName("#{plant_name.gsub(/[-\s]+/, '_')}_CHW_DEMAND")
272
272
 
273
273
  # Sort chillers by their reference capacity
274
- sorted_chiller_list = chiller_list.sort_by { |chiller| chiller.referenceCapacity.get.to_f}
274
+ sorted_chiller_list = chiller_list.sort_by { |chiller| chiller.referenceCapacity.get.to_f }
275
275
 
276
276
  # Make pump specific parameters for EMS. Use counter
277
277
  sorted_chiller_list.each_with_index do |chiller, i|
@@ -18,7 +18,7 @@ class ASHRAE901PRM < Standard
18
18
  # @param set_gas_equipment [Boolean] if true, set the gas equipment density
19
19
  # @param set_ventilation [Boolean] if true, set the ventilation rates (per-person and per-area)
20
20
  # @return [Boolean] returns true if successful, false if not
21
- def space_type_apply_internal_loads(space_type, set_people, set_lights, set_electric_equipment, set_gas_equipment, set_ventilation)
21
+ def space_type_apply_internal_loads(space_type, set_people: false, set_lights: true, set_electric_equipment: false, set_gas_equipment: false, set_ventilation: false)
22
22
  # Skip plenums
23
23
  # Check if the space type name
24
24
  # contains the word plenum.
@@ -123,6 +123,7 @@ class ASHRAE901PRM2019 < ASHRAE901PRM
123
123
  plant_loop_adiabatic_pipes_only(plant_loop)
124
124
  plant_loop.supplyComponents.each do |component|
125
125
  next unless component.to_WaterHeaterMixed.is_initialized
126
+
126
127
  water_heater = component.to_WaterHeaterMixed.get
127
128
  model_apply_water_heater_prm_parameter(water_heater,
128
129
  swh_building_type_new)
@@ -1,5 +1,4 @@
1
1
  class ASHRAE901PRM2019 < ASHRAE901PRM
2
-
3
2
  # Apply the prm parameter to a water heater based on the
4
3
  # building area type.
5
4
  # @param water_heater_mixed [OpenStudio::Model::WaterHeaterMixed] water heater mixed object
@@ -19,12 +18,12 @@ class ASHRAE901PRM2019 < ASHRAE901PRM
19
18
  # @return [String] returns fuel type
20
19
  def water_heater_mixed_apply_prm_baseline_fuel_type(building_type)
21
20
  # Get the fuel type data
22
- heater_prop = model_find_object(standards_data['prm_swh_bldg_type'], {'swh_building_type' => building_type})
21
+ heater_prop = model_find_object(standards_data['prm_swh_bldg_type'], { 'swh_building_type' => building_type })
23
22
  new_fuel_data = heater_prop['baseline_heating_method']
24
23
  # There are only two water heater fuel type in the prm database:
25
24
  # ("Gas Storage" and "Electric Resistance Storage")
26
25
  # Change the prm fuel type to openstudio fuel type
27
- if new_fuel_data == "Gas Storage"
26
+ if new_fuel_data == 'Gas Storage'
28
27
  new_fuel = 'NaturalGas'
29
28
  else
30
29
  new_fuel = 'Electricity'
@@ -32,4 +31,3 @@ class ASHRAE901PRM2019 < ASHRAE901PRM
32
31
  return new_fuel
33
32
  end
34
33
  end
35
-
@@ -8125,181 +8125,6 @@
8125
8125
  "maximum_dependent_variable_output": null,
8126
8126
  "notes": "From Reference Buildings"
8127
8127
  },
8128
- {
8129
- "name": "Multi Zone VAV with Airfoil or Backward Incline riding the curve",
8130
- "category": "FanEIR-FPLR",
8131
- "form": "Cubic",
8132
- "dependent_variable": "PwrRatio",
8133
- "independent_variable_1": "FlowRatio",
8134
- "independent_variable_2": null,
8135
- "coeff_1": 0.1631,
8136
- "coeff_2": 1.5901,
8137
- "coeff_3": -0.8817,
8138
- "coeff_4": 0.1281,
8139
- "coeff_5": null,
8140
- "coeff_6": null,
8141
- "coeff_7": null,
8142
- "coeff_8": null,
8143
- "coeff_9": null,
8144
- "coeff_10": null,
8145
- "minimum_independent_variable_1": 0.0,
8146
- "maximum_independent_variable_1": 1.0,
8147
- "minimum_independent_variable_2": null,
8148
- "maximum_independent_variable_2": null,
8149
- "minimum_dependent_variable_output": 0.7,
8150
- "maximum_dependent_variable_output": null,
8151
- "notes": "From ANSI/ASHRAE/IES Standard 90.1-2016 - Energy Standard for Buildings Except Low-Rise Residential Performance Rating Method"
8152
- },
8153
- {
8154
- "name": "Multi Zone VAV with Airfoil or Backward Incline with inlet vanes",
8155
- "category": "FanEIR-FPLR",
8156
- "form": "Cubic",
8157
- "dependent_variable": "PwrRatio",
8158
- "independent_variable_1": "FlowRatio",
8159
- "independent_variable_2": null,
8160
- "coeff_1": 0.9977,
8161
- "coeff_2": -0.659,
8162
- "coeff_3": 0.9547,
8163
- "coeff_4": -0.2936,
8164
- "coeff_5": null,
8165
- "coeff_6": null,
8166
- "coeff_7": null,
8167
- "coeff_8": null,
8168
- "coeff_9": null,
8169
- "coeff_10": null,
8170
- "minimum_independent_variable_1": 0.0,
8171
- "maximum_independent_variable_1": 1.0,
8172
- "minimum_independent_variable_2": null,
8173
- "maximum_independent_variable_2": null,
8174
- "minimum_dependent_variable_output": 0.5,
8175
- "maximum_dependent_variable_output": null,
8176
- "notes": "From ANSI/ASHRAE/IES Standard 90.1-2016 - Energy Standard for Buildings Except Low-Rise Residential Performance Rating Method"
8177
- },
8178
- {
8179
- "name": "Multi Zone VAV with Forward Curved fans riding the curve",
8180
- "category": "FanEIR-FPLR",
8181
- "form": "Cubic",
8182
- "dependent_variable": "PwrRatio",
8183
- "independent_variable_1": "FlowRatio",
8184
- "independent_variable_2": null,
8185
- "coeff_1": 0.1224,
8186
- "coeff_2": 0.612,
8187
- "coeff_3": 0.5983,
8188
- "coeff_4": -0.3334,
8189
- "coeff_5": null,
8190
- "coeff_6": null,
8191
- "coeff_7": null,
8192
- "coeff_8": null,
8193
- "coeff_9": null,
8194
- "coeff_10": null,
8195
- "minimum_independent_variable_1": 0.0,
8196
- "maximum_independent_variable_1": 1.0,
8197
- "minimum_independent_variable_2": null,
8198
- "maximum_independent_variable_2": null,
8199
- "minimum_dependent_variable_output": 0.3,
8200
- "maximum_dependent_variable_output": null,
8201
- "notes": "From ANSI/ASHRAE/IES Standard 90.1-2016 - Energy Standard for Buildings Except Low-Rise Residential Performance Rating Method"
8202
- },
8203
- {
8204
- "name": "Multi Zone VAV with Forward Curved with inlet vanes",
8205
- "category": "FanEIR-FPLR",
8206
- "form": "Cubic",
8207
- "dependent_variable": "PwrRatio",
8208
- "independent_variable_1": "FlowRatio",
8209
- "independent_variable_2": null,
8210
- "coeff_1": 0.3038,
8211
- "coeff_2": -0.7608,
8212
- "coeff_3": 2.2729,
8213
- "coeff_4": -0.8169,
8214
- "coeff_5": null,
8215
- "coeff_6": null,
8216
- "coeff_7": null,
8217
- "coeff_8": null,
8218
- "coeff_9": null,
8219
- "coeff_10": null,
8220
- "minimum_independent_variable_1": 0.0,
8221
- "maximum_independent_variable_1": 1.0,
8222
- "minimum_independent_variable_2": null,
8223
- "maximum_independent_variable_2": null,
8224
- "minimum_dependent_variable_output": 0.3,
8225
- "maximum_dependent_variable_output": null,
8226
- "notes": "From ANSI/ASHRAE/IES Standard 90.1-2016 - Energy Standard for Buildings Except Low-Rise Residential Performance Rating Method"
8227
- },
8228
- {
8229
- "name": "Multi Zone VAV with VSD and fixed SP setpoint",
8230
- "category": "FanEIR-FPLR",
8231
- "form": "Cubic",
8232
- "dependent_variable": "PwrRatio",
8233
- "independent_variable_1": "FlowRatio",
8234
- "independent_variable_2": null,
8235
- "coeff_1": 0.0013,
8236
- "coeff_2": 0.147,
8237
- "coeff_3": 0.9506,
8238
- "coeff_4": -0.0998,
8239
- "coeff_5": null,
8240
- "coeff_6": null,
8241
- "coeff_7": null,
8242
- "coeff_8": null,
8243
- "coeff_9": null,
8244
- "coeff_10": null,
8245
- "minimum_independent_variable_1": 0.0,
8246
- "maximum_independent_variable_1": 1.0,
8247
- "minimum_independent_variable_2": null,
8248
- "maximum_independent_variable_2": null,
8249
- "minimum_dependent_variable_output": 0.2,
8250
- "maximum_dependent_variable_output": null,
8251
- "notes": "Appendix G baseline from ANSI/ASHRAE/IES Standard 90.1-2016 - Energy Standard for Buildings Except Low-Rise Residential Performance Rating Method"
8252
- },
8253
- {
8254
- "name": "Multi Zone VAV with vane-axial with variable pitch blades",
8255
- "category": "FanEIR-FPLR",
8256
- "form": "Cubic",
8257
- "dependent_variable": "PwrRatio",
8258
- "independent_variable_1": "FlowRatio",
8259
- "independent_variable_2": null,
8260
- "coeff_1": 0.1639,
8261
- "coeff_2": -0.4016,
8262
- "coeff_3": 1.9909,
8263
- "coeff_4": -0.7541,
8264
- "coeff_5": null,
8265
- "coeff_6": null,
8266
- "coeff_7": null,
8267
- "coeff_8": null,
8268
- "coeff_9": null,
8269
- "coeff_10": null,
8270
- "minimum_independent_variable_1": 0.0,
8271
- "maximum_independent_variable_1": 1.0,
8272
- "minimum_independent_variable_2": null,
8273
- "maximum_independent_variable_2": null,
8274
- "minimum_dependent_variable_output": 0.2,
8275
- "maximum_dependent_variable_output": null,
8276
- "notes": "From ANSI/ASHRAE/IES Standard 90.1-2016 - Energy Standard for Buildings Except Low-Rise Residential Performance Rating Method"
8277
- },
8278
- {
8279
- "name": "Multi zone VAV with static pressure reset",
8280
- "category": "FanEIR-FPLR",
8281
- "form": "Cubic",
8282
- "dependent_variable": "PwrRatio",
8283
- "independent_variable_1": "FlowRatio",
8284
- "independent_variable_2": null,
8285
- "coeff_1": 0.040759894,
8286
- "coeff_2": 0.08804497,
8287
- "coeff_3": -0.07292612,
8288
- "coeff_4": 0.943739823,
8289
- "coeff_5": null,
8290
- "coeff_6": null,
8291
- "coeff_7": null,
8292
- "coeff_8": null,
8293
- "coeff_9": null,
8294
- "coeff_10": null,
8295
- "minimum_independent_variable_1": 0.0,
8296
- "maximum_independent_variable_1": 1.0,
8297
- "minimum_independent_variable_2": null,
8298
- "maximum_independent_variable_2": null,
8299
- "minimum_dependent_variable_output": 0.1,
8300
- "maximum_dependent_variable_output": null,
8301
- "notes": "OpenStudio default, baseline for System Types 5-8 from ANSI/ASHRAE/IES Standard 90.1-2016 - Energy Standard for Buildings Except Low-Rise Residential Performance Rating Method"
8302
- },
8303
8128
  {
8304
8129
  "name": "New_Low_Temp_Comp_Cap_Curve",
8305
8130
  "category": null,
@@ -12975,31 +12800,6 @@
12975
12800
  "maximum_dependent_variable_output": null,
12976
12801
  "notes": "From Reference Buildings"
12977
12802
  },
12978
- {
12979
- "name": "Single zone VAV fan",
12980
- "category": "FanEIR-FPLR",
12981
- "form": "Cubic",
12982
- "dependent_variable": "PwrRatio",
12983
- "independent_variable_1": "FlowRatio",
12984
- "independent_variable_2": null,
12985
- "coeff_1": 0.027827882,
12986
- "coeff_2": 0.026583195,
12987
- "coeff_3": -0.0870687,
12988
- "coeff_4": 1.03091975,
12989
- "coeff_5": null,
12990
- "coeff_6": null,
12991
- "coeff_7": null,
12992
- "coeff_8": null,
12993
- "coeff_9": null,
12994
- "coeff_10": null,
12995
- "minimum_independent_variable_1": 0.0,
12996
- "maximum_independent_variable_1": 1.0,
12997
- "minimum_independent_variable_2": null,
12998
- "maximum_independent_variable_2": null,
12999
- "minimum_dependent_variable_output": 0.1,
13000
- "maximum_dependent_variable_output": null,
13001
- "notes": "Baseline for System Type 11 from ANSI/ASHRAE/IES Standard 90.1-2016 - Energy Standard for Buildings Except Low-Rise Residential Performance Rating Method"
13002
- },
13003
12803
  {
13004
12804
  "name": "Small-CHW-Bypass-fAirflow",
13005
12805
  "category": "CHWCoils",