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,72 +0,0 @@
1
- class Standard
2
- # @!group CoilHeatingGas
3
-
4
- # Prototype CoilHeatingGas object
5
- #
6
- # @param model [OpenStudio::Model::Model] OpenStudio model object
7
- # @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
8
- # @param name [String] the name of the system, or nil in which case it will be defaulted
9
- # @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
10
- # @param nominal_capacity [Double] rated nominal capacity
11
- # @param efficiency [Double] rated heating efficiency
12
- # @return [OpenStudio::Model::CoilHeatingGas] the gas heating coil
13
- def create_coil_heating_gas(model,
14
- air_loop_node: nil,
15
- name: 'Gas Htg Coil',
16
- schedule: nil,
17
- nominal_capacity: nil,
18
- efficiency: 0.80)
19
-
20
- htg_coil = OpenStudio::Model::CoilHeatingGas.new(model)
21
-
22
- # add to air loop if specified
23
- htg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
24
-
25
- # set coil name
26
- htg_coil.setName(name)
27
-
28
- # set coil availability schedule
29
- if schedule.nil?
30
- # default always on
31
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
32
- elsif schedule.instance_of?(String)
33
- coil_availability_schedule = model_add_schedule(model, schedule)
34
-
35
- if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
36
- coil_availability_schedule = model.alwaysOffDiscreteSchedule
37
- elsif coil_availability_schedule.nil?
38
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
39
- end
40
- elsif !schedule.to_Schedule.empty?
41
- coil_availability_schedule = schedule
42
- end
43
- htg_coil.setAvailabilitySchedule(coil_availability_schedule)
44
-
45
- # set capacity
46
- htg_coil.setNominalCapacity(nominal_capacity) unless nominal_capacity.nil?
47
-
48
- # set efficiency
49
- htg_coil.setGasBurnerEfficiency(efficiency)
50
-
51
- # defaults
52
- if model.version < OpenStudio::VersionString.new('3.7.0')
53
- htg_coil.setParasiticElectricLoad(0.0)
54
- htg_coil.setParasiticGasLoad(0.0)
55
- else
56
- htg_coil.setOnCycleParasiticElectricLoad(0.0)
57
- htg_coil.setOffCycleParasiticGasLoad(0.0)
58
- end
59
-
60
- return htg_coil
61
- end
62
-
63
- # Updates the efficiency of some gas heating coils per the prototype assumptions.
64
- # Defaults to making no changes.
65
- #
66
- # @param coil_heating_gas [OpenStudio::Model::CoilHeatingGas] a gas heating coil
67
- # @return [Boolean] returns true if successful, false if not
68
- def coil_heating_gas_apply_prototype_efficiency(coil_heating_gas)
69
- # do nothing
70
- return true
71
- end
72
- end
@@ -1,95 +0,0 @@
1
- class Standard
2
- # @!group CoilHeatingWater
3
-
4
- # Prototype CoilHeatingWater object
5
- #
6
- # @param model [OpenStudio::Model::Model] OpenStudio model object
7
- # @param hot_water_loop [<OpenStudio::Model::PlantLoop>] the coil will be placed on the demand side of this plant loop
8
- # @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
9
- # @param name [String] the name of the coil, or nil in which case it will be defaulted
10
- # @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
11
- # @param rated_inlet_water_temperature [Double] rated inlet water temperature in degrees Celsius, default is hot water loop design exit temperature
12
- # @param rated_outlet_water_temperature [Double] rated outlet water temperature in degrees Celsius, default is hot water loop design return temperature
13
- # @param rated_inlet_air_temperature [Double] rated inlet air temperature in degrees Celsius, default is 16.6 (62F)
14
- # @param rated_outlet_air_temperature [Double] rated outlet air temperature in degrees Celsius, default is 32.2 (90F)
15
- # @param controller_convergence_tolerance [Double] controller convergence tolerance
16
- # @return [OpenStudio::Model::CoilHeatingWater] the heating coil
17
- def create_coil_heating_water(model,
18
- hot_water_loop,
19
- air_loop_node: nil,
20
- name: 'Htg Coil',
21
- schedule: nil,
22
- rated_inlet_water_temperature: nil,
23
- rated_outlet_water_temperature: nil,
24
- rated_inlet_air_temperature: 16.6,
25
- rated_outlet_air_temperature: 32.2,
26
- controller_convergence_tolerance: 0.1)
27
-
28
- htg_coil = OpenStudio::Model::CoilHeatingWater.new(model)
29
-
30
- # add to hot water loop
31
- hot_water_loop.addDemandBranchForComponent(htg_coil)
32
-
33
- # add to air loop if specified
34
- htg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
35
-
36
- # set coil name
37
- if name.nil?
38
- htg_coil.setName('Htg Coil')
39
- else
40
- htg_coil.setName(name)
41
- end
42
-
43
- # set coil availability schedule
44
- if schedule.nil?
45
- # default always on
46
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
47
- elsif schedule.instance_of?(String)
48
- coil_availability_schedule = model_add_schedule(model, schedule)
49
-
50
- if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
51
- coil_availability_schedule = model.alwaysOffDiscreteSchedule
52
- elsif coil_availability_schedule.nil?
53
- coil_availability_schedule = model.alwaysOnDiscreteSchedule
54
- end
55
- elsif !schedule.to_Schedule.empty?
56
- coil_availability_schedule = schedule
57
- end
58
- htg_coil.setAvailabilitySchedule(coil_availability_schedule)
59
-
60
- # rated water temperatures, use hot water loop temperatures if defined
61
- if rated_inlet_water_temperature.nil?
62
- rated_inlet_water_temperature = hot_water_loop.sizingPlant.designLoopExitTemperature
63
- htg_coil.setRatedInletWaterTemperature(rated_inlet_water_temperature)
64
- else
65
- htg_coil.setRatedInletWaterTemperature(rated_inlet_water_temperature)
66
- end
67
- if rated_outlet_water_temperature.nil?
68
- rated_outlet_water_temperature = rated_inlet_water_temperature - hot_water_loop.sizingPlant.loopDesignTemperatureDifference
69
- htg_coil.setRatedOutletWaterTemperature(rated_outlet_water_temperature)
70
- else
71
- htg_coil.setRatedOutletWaterTemperature(rated_outlet_water_temperature)
72
- end
73
-
74
- # rated air temperatures
75
- if rated_inlet_air_temperature.nil?
76
- htg_coil.setRatedInletAirTemperature(16.6)
77
- else
78
- htg_coil.setRatedInletAirTemperature(rated_inlet_air_temperature)
79
- end
80
- if rated_outlet_air_temperature.nil?
81
- htg_coil.setRatedOutletAirTemperature(32.2)
82
- else
83
- htg_coil.setRatedOutletAirTemperature(rated_outlet_air_temperature)
84
- end
85
-
86
- # coil controller properties
87
- # @note These inputs will get overwritten if addToNode or addDemandBranchForComponent is called on the htg_coil object after this
88
- htg_coil_controller = htg_coil.controllerWaterCoil.get
89
- htg_coil_controller.setName("#{htg_coil.name} Controller")
90
- htg_coil_controller.setMinimumActuatedFlow(0.0)
91
- htg_coil_controller.setControllerConvergenceTolerance(controller_convergence_tolerance) unless controller_convergence_tolerance.nil?
92
-
93
- return htg_coil
94
- end
95
- end
@@ -1,125 +0,0 @@
1
- class Standard
2
- # @!group CoilHeatingWaterToAirHeatPumpEquationFit
3
-
4
- # Prototype CoilHeatingWaterToAirHeatPumpEquationFit object
5
- # Enters in default curves for coil by type of coil
6
- #
7
- # @param model [OpenStudio::Model::Model] OpenStudio model object
8
- # @param plant_loop [<OpenStudio::Model::PlantLoop>] the coil will be placed on the demand side of this plant loop
9
- # @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
10
- # @param name [String] the name of the system, or nil in which case it will be defaulted
11
- # @param type [String] the type of coil to reference the correct curve set
12
- # @param cop [Double] rated heating coefficient of performance
13
- # @return [OpenStudio::Model::CoilHeatingWaterToAirHeatPumpEquationFit] the heating coil
14
- def create_coil_heating_water_to_air_heat_pump_equation_fit(model,
15
- plant_loop,
16
- air_loop_node: nil,
17
- name: 'Water-to-Air HP Htg Coil',
18
- type: nil,
19
- cop: 4.2)
20
-
21
- htg_coil = OpenStudio::Model::CoilHeatingWaterToAirHeatPumpEquationFit.new(model)
22
-
23
- # add to air loop if specified
24
- htg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
25
-
26
- # set coil name
27
- htg_coil.setName(name)
28
-
29
- # add to plant loop
30
- if plant_loop.nil?
31
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', 'No plant loop supplied for heating coil')
32
- return false
33
- end
34
- plant_loop.addDemandBranchForComponent(htg_coil)
35
-
36
- # set coil cop
37
- if cop.nil?
38
- htg_coil.setRatedHeatingCoefficientofPerformance(4.2)
39
- else
40
- htg_coil.setRatedHeatingCoefficientofPerformance(cop)
41
- end
42
-
43
- # curve sets
44
- if type == 'OS default'
45
- # use OS default curves
46
- else # default curve set
47
- if model.version < OpenStudio::VersionString.new('3.2.0')
48
- htg_coil.setHeatingCapacityCoefficient1(0.237847462869254)
49
- htg_coil.setHeatingCapacityCoefficient2(-3.35823796081626)
50
- htg_coil.setHeatingCapacityCoefficient3(3.80640467406376)
51
- htg_coil.setHeatingCapacityCoefficient4(0.179200417311554)
52
- htg_coil.setHeatingCapacityCoefficient5(0.12860719846082)
53
- htg_coil.setHeatingPowerConsumptionCoefficient1(-3.79175529243238)
54
- htg_coil.setHeatingPowerConsumptionCoefficient2(3.38799239505527)
55
- htg_coil.setHeatingPowerConsumptionCoefficient3(1.5022612076303)
56
- htg_coil.setHeatingPowerConsumptionCoefficient4(-0.177653510577989)
57
- htg_coil.setHeatingPowerConsumptionCoefficient5(-0.103079864171839)
58
- else
59
- if model.getCurveByName('Water to Air Heat Pump Heating Capacity Curve').is_initialized
60
- heating_capacity_curve = model.getCurveByName('Water to Air Heat Pump Heating Capacity Curve').get
61
- heating_capacity_curve = heating_capacity_curve.to_CurveQuadLinear.get
62
- else
63
- heating_capacity_curve = OpenStudio::Model::CurveQuadLinear.new(model)
64
- heating_capacity_curve.setName('Water to Air Heat Pump Heating Capacity Curve')
65
- heating_capacity_curve.setCoefficient1Constant(0.237847462869254)
66
- heating_capacity_curve.setCoefficient2w(-3.35823796081626)
67
- heating_capacity_curve.setCoefficient3x(3.80640467406376)
68
- heating_capacity_curve.setCoefficient4y(0.179200417311554)
69
- heating_capacity_curve.setCoefficient5z(0.12860719846082)
70
- heating_capacity_curve.setMinimumValueofw(-100)
71
- heating_capacity_curve.setMaximumValueofw(100)
72
- heating_capacity_curve.setMinimumValueofx(-100)
73
- heating_capacity_curve.setMaximumValueofx(100)
74
- heating_capacity_curve.setMinimumValueofy(0)
75
- heating_capacity_curve.setMaximumValueofy(100)
76
- heating_capacity_curve.setMinimumValueofz(0)
77
- heating_capacity_curve.setMaximumValueofz(100)
78
- end
79
- htg_coil.setHeatingCapacityCurve(heating_capacity_curve)
80
-
81
- if model.getCurveByName('Water to Air Heat Pump Heating Power Consumption Curve').is_initialized
82
- heating_power_consumption_curve = model.getCurveByName('Water to Air Heat Pump Heating Power Consumption Curve').get
83
- heating_power_consumption_curve = heating_power_consumption_curve.to_CurveQuadLinear.get
84
- else
85
- heating_power_consumption_curve = OpenStudio::Model::CurveQuadLinear.new(model)
86
- heating_power_consumption_curve.setName('Water to Air Heat Pump Heating Power Consumption Curve')
87
- heating_power_consumption_curve.setCoefficient1Constant(-3.79175529243238)
88
- heating_power_consumption_curve.setCoefficient2w(3.38799239505527)
89
- heating_power_consumption_curve.setCoefficient3x(1.5022612076303)
90
- heating_power_consumption_curve.setCoefficient4y(-0.177653510577989)
91
- heating_power_consumption_curve.setCoefficient5z(-0.103079864171839)
92
- heating_power_consumption_curve.setMinimumValueofw(-100)
93
- heating_power_consumption_curve.setMaximumValueofw(100)
94
- heating_power_consumption_curve.setMinimumValueofx(-100)
95
- heating_power_consumption_curve.setMaximumValueofx(100)
96
- heating_power_consumption_curve.setMinimumValueofy(0)
97
- heating_power_consumption_curve.setMaximumValueofy(100)
98
- heating_power_consumption_curve.setMinimumValueofz(0)
99
- heating_power_consumption_curve.setMaximumValueofz(100)
100
- end
101
- htg_coil.setHeatingPowerConsumptionCurve(heating_power_consumption_curve)
102
- end
103
-
104
- # part load fraction correlation curve added as a required curve in OS v3.7.0
105
- if model.version > OpenStudio::VersionString.new('3.6.1')
106
- if model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').is_initialized
107
- part_load_correlation_curve = model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').get
108
- part_load_correlation_curve = part_load_correlation_curve.to_CurveLinear.get
109
- else
110
- part_load_correlation_curve = OpenStudio::Model::CurveLinear.new(model)
111
- part_load_correlation_curve.setName('Water to Air Heat Pump Part Load Fraction Correlation Curve')
112
- part_load_correlation_curve.setCoefficient1Constant(0.833746458696111)
113
- part_load_correlation_curve.setCoefficient2x(0.166253541303889)
114
- part_load_correlation_curve.setMinimumValueofx(0)
115
- part_load_correlation_curve.setMaximumValueofx(1)
116
- part_load_correlation_curve.setMinimumCurveOutput(0)
117
- part_load_correlation_curve.setMaximumCurveOutput(1)
118
- end
119
- htg_coil.setPartLoadFractionCorrelationCurve(part_load_correlation_curve)
120
- end
121
- end
122
-
123
- return htg_coil
124
- end
125
- end
@@ -1,17 +0,0 @@
1
- class Standard
2
- # @!group ControllerWaterCoil
3
-
4
- # Sets the convergence tolerance to 0.0001 deltaC for all hot water coils.
5
- #
6
- # @param controller_water_coil [OpenStudio::Model::ControllerWaterCoil] controller water coil object
7
- # @return [Boolean] returns true if successful, false if not
8
- # @todo Figure out what the reason for this is, because it seems like a workaround for an E+ bug that was probably addressed long ago.
9
- def controller_water_coil_set_convergence_limits(controller_water_coil)
10
- controller_action = controller_water_coil.action
11
- if controller_action.is_initialized && controller_action.get == 'Normal'
12
- controller_water_coil.setControllerConvergenceTolerance(0.0001)
13
- end
14
-
15
- return true
16
- end
17
- end
@@ -1,90 +0,0 @@
1
- class Standard
2
- # Add transformers for some prototypes
3
- #
4
- # @param model [OpenStudio::Model::Model] OpenStudio model object
5
- # @param wired_lighting_frac [Double] the wired lighting fraction, 0-1
6
- # @param transformer_size [Double] the transformer size in VA
7
- # @param transformer_efficiency [Double] the transformer efficiency, 0-1
8
- # @param excluded_interiorequip_key [String] key to exclude
9
- # @param excluded_interiorequip_meter [String] meter to exclude
10
- # @return [OpenStudio::Model::ElectricLoadCenterTransformer] the transformer object
11
- def model_add_transformer(model,
12
- wired_lighting_frac: nil,
13
- transformer_size: nil,
14
- transformer_efficiency: nil,
15
- excluded_interiorequip_key: '',
16
- excluded_interiorequip_meter: nil)
17
- # throw an error if transformer properties are missing
18
- if wired_lighting_frac.nil? || transformer_size.nil? || transformer_efficiency.nil?
19
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.Model.transformers', "Either 'wired_lighting_frac', 'transformer_size', or 'transformer_efficiency' is unspecified. Cannot add transformer.")
20
- return false
21
- end
22
-
23
- # @todo default values are for testing only
24
- # ems sensor for interior lighting
25
- facility_int_ltg = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'InteriorLights:Electricity')
26
- facility_int_ltg.setName('Facility_Int_LTG')
27
-
28
- # declaire ems variable for transformer wired lighting portion
29
- wired_ltg_var = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'Wired_LTG')
30
-
31
- # ems program for transformer load
32
- transformer_load_prog = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
33
- transformer_load_prog.setName('Transformer_Load_Prog')
34
- transformer_load_prog_body = <<-EMS
35
- SET Wired_LTG = Facility_Int_LTG*#{wired_lighting_frac}
36
- EMS
37
- transformer_load_prog.setBody(transformer_load_prog_body)
38
-
39
- # ems program calling manager
40
- transformer_load_prog_manager = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
41
- transformer_load_prog_manager.setName('Transformer_Load_Prog_Manager')
42
- transformer_load_prog_manager.setCallingPoint('AfterPredictorAfterHVACManagers')
43
- transformer_load_prog_manager.addProgram(transformer_load_prog)
44
-
45
- # ems output variable
46
- wired_ltg_emsout = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, wired_ltg_var)
47
- wired_ltg_emsout.setName('Wired_LTG')
48
- wired_ltg_emsout.setTypeOfDataInVariable('Summed')
49
- wired_ltg_emsout.setUpdateFrequency('ZoneTimeStep')
50
- wired_ltg_emsout.setUnits('J')
51
-
52
- # meter for ems output
53
- wired_ltg_meter = OpenStudio::Model::MeterCustom.new(model)
54
- wired_ltg_meter.setName('Wired_LTG_Electricity')
55
- wired_ltg_meter.setFuelType('Electricity')
56
- wired_ltg_meter.addKeyVarGroup('', 'Wired_LTG')
57
-
58
- # meter for wired int equip
59
- unless excluded_interiorequip_meter.nil?
60
- wired_int_equip_meter = OpenStudio::Model::MeterCustomDecrement.new(model, 'InteriorEquipment:Electricity')
61
- wired_int_equip_meter.setName('Wired_Int_EQUIP')
62
- wired_int_equip_meter.setFuelType('Electricity')
63
- wired_int_equip_meter.addKeyVarGroup(excluded_interiorequip_key, excluded_interiorequip_meter)
64
- end
65
-
66
- # add transformer
67
- transformer = OpenStudio::Model::ElectricLoadCenterTransformer.new(model)
68
- transformer.setName('Transformer_1')
69
- transformer.setAvailabilitySchedule(model.alwaysOnDiscreteSchedule)
70
- transformer.setTransformerUsage('PowerInFromGrid')
71
- transformer.setRatedCapacity(transformer_size)
72
- transformer.setPhase('3')
73
- transformer.setConductorMaterial('Aluminum')
74
- transformer.setFullLoadTemperatureRise(150)
75
- transformer.setFractionofEddyCurrentLosses(0.1)
76
- transformer.setPerformanceInputMethod('NominalEfficiency')
77
- transformer.setNameplateEfficiency(transformer_efficiency)
78
- transformer.setPerUnitLoadforNameplateEfficiency(0.35)
79
- transformer.setReferenceTemperatureforNameplateEfficiency(75)
80
- transformer.setConsiderTransformerLossforUtilityCost(true)
81
- transformer.addMeter('Wired_LTG_Electricity')
82
- if excluded_interiorequip_meter.nil?
83
- transformer.addMeter('InteriorEquipment:Electricity') # by default, add this as the second meter
84
- else
85
- transformer.addMeter('Wired_Int_EQUIP')
86
- end
87
-
88
- return transformer
89
- end
90
- end
@@ -1,4 +0,0 @@
1
- # Prototype pump calculation methods that are the same regardless of pump type.
2
- module PrototypePump
3
- # @!group Pump
4
- end
@@ -1,70 +0,0 @@
1
- class Standard
2
- include Pump
3
-
4
- # Determine and set type of part load control type for heating and chilled
5
- # water variable speed pumps
6
- #
7
- # @param pump [OpenStudio::Model::PumpVariableSpeed] OpenStudio pump object
8
- # @return [Boolean] Returns true if applicable, false otherwise
9
- def pump_variable_speed_control_type(pump)
10
- # Get plant loop
11
- plant_loop = pump.plantLoop.get
12
-
13
- # Get plant loop type
14
- plant_loop_type = plant_loop.sizingPlant.loopType
15
- return false unless plant_loop_type == 'Heating' || plant_loop_type == 'Cooling'
16
-
17
- # Get rated pump power
18
- if pump.ratedPowerConsumption.is_initialized
19
- pump_rated_power_w = pump.ratedPowerConsumption.get
20
- elsif pump.autosizedRatedPowerConsumption.is_initialized
21
- pump_rated_power_w = pump.autosizedRatedPowerConsumption.get
22
- else
23
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Pump', "For #{pump.name}, could not find rated pump power consumption, cannot determine w per gpm correctly.")
24
- return false
25
- end
26
-
27
- # Get nominal nameplate HP
28
- pump_nominal_hp = pump_rated_power_w * pump.motorEfficiency / 745.7
29
-
30
- # Assign peformance curves
31
- control_type = pump_variable_speed_get_control_type(pump, plant_loop_type, pump_nominal_hp)
32
-
33
- # Set pump part load performance curve coefficients
34
- pump_variable_speed_set_control_type(pump, control_type) if control_type
35
-
36
- return true
37
- end
38
-
39
- # Determine type of pump part load control type
40
- #
41
- # @param pump [OpenStudio::Model::PumpVariableSpeed] OpenStudio pump object
42
- # @param plant_loop_type [String] Type of plant loop
43
- # @param pump_nominal_hp [Float] Pump nominal horsepower
44
- # @return [String] Pump part load control type
45
- def pump_variable_speed_get_control_type(pump, plant_loop_type, pump_nominal_hp)
46
- # Get plant loop
47
- plant_loop = pump.plantLoop.get
48
-
49
- # Default assumptions are based on ASHRAE 90.1-2010 Appendix G (G3.1.3.5 and G3.1.3.10)
50
- case plant_loop_type
51
- when 'Heating'
52
- # Determine the area served by the plant loop
53
- area_served_m2 = plant_loop_total_floor_area_served(plant_loop)
54
- area_served_ft2 = OpenStudio.convert(area_served_m2, 'm^2', 'ft^2').get
55
-
56
- return 'VSD No Reset' if area_served_ft2 > 120_000
57
-
58
- # else
59
- return 'Riding Curve'
60
- when 'Cooling'
61
- # Get plant loop capacity capacity
62
- cooling_capacity_w = plant_loop_total_cooling_capacity(plant_loop)
63
-
64
- return 'VSD No Reset' if cooling_capacity_w >= 300
65
-
66
- # else
67
- return 'Riding Curve'
68
- end
69
- end
70
- end