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
@@ -211,13 +211,16 @@ module OpenstudioStandards
211
211
  runperiodctrl_daylightsaving.setEndDate(end_date)
212
212
  end
213
213
 
214
+ # set space type additional properties
215
+ standard.prototype_space_type_map(model, reset_standards_space_type: false, set_additional_properties: true)
216
+
214
217
  # add internal loads to space types
215
218
  if add_space_type_loads
216
219
 
217
220
  # remove internal loads
218
221
  if remove_objects
219
222
  model.getSpaceLoads.sort.each do |instance|
220
- # most prototype building types model exterior elevators with name Elevator
223
+ # most prototype building types model elevators with name Elevator
221
224
  next if instance.name.to_s.include?('Elevator')
222
225
  next if instance.to_InternalMass.is_initialized
223
226
  next if instance.to_WaterUseEquipment.is_initialized
@@ -229,15 +232,17 @@ module OpenstudioStandards
229
232
  end
230
233
 
231
234
  model.getSpaceTypes.sort.each do |space_type|
232
- test = standard.space_type_apply_internal_loads(space_type, true, true, true, true, true)
235
+ # split out parts here to allow different options for lighting and ventilation
236
+ # lighting standard or technology
237
+ # ventilation standard
238
+ test = standard.space_type_apply_internal_loads(space_type)
233
239
  if test == false
234
240
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CreateTypical', "Could not add loads for #{space_type.name}. Not expected for #{template}")
235
241
  next
236
242
  end
237
243
 
238
244
  # apply internal load schedules
239
- # the last bool test it to make thermostat schedules. They are now added in HVAC section instead of here
240
- standard.space_type_apply_internal_load_schedules(space_type, true, true, true, true, true, false)
245
+ standard.space_type_apply_internal_load_schedules(space_type)
241
246
 
242
247
  # extend space type name to include the template. Consider this as well for load defs
243
248
  space_type.setName("#{space_type.name} - #{template}")
@@ -458,10 +463,10 @@ module OpenstudioStandards
458
463
  ext_light.remove
459
464
  end
460
465
  end
461
- exterior_lights = OpenstudioStandards::ExteriorLighting.model_create_typical_exterior_lighting(model,
462
- lighting_generation: 'default',
463
- lighting_zone: exterior_lighting_zone.chars[0].to_i,
464
- onsite_parking_fraction: onsite_parking_fraction)
466
+ exterior_lights = OpenstudioStandards::ExteriorLighting.create_typical_exterior_lighting(model,
467
+ lighting_generation: 'default',
468
+ lighting_zone: exterior_lighting_zone.chars[0].to_i,
469
+ onsite_parking_fraction: onsite_parking_fraction)
465
470
  exterior_lights.each do |v|
466
471
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CreateTypical', "Adding Exterior Lights named #{v.exteriorLightsDefinition.name} with design level of #{v.exteriorLightsDefinition.designLevel} * #{OpenStudio.toNeatString(v.multiplier, 0, true)}.")
467
472
  end
@@ -578,28 +583,7 @@ module OpenstudioStandards
578
583
  model.getThermostatSetpointDualSetpoints.each(&:remove)
579
584
  end
580
585
 
581
- model.getSpaceTypes.sort.each do |space_type|
582
- # create thermostat schedules
583
- # skip un-recognized space types
584
- next if standard.space_type_get_standards_data(space_type).empty?
585
-
586
- # the last bool test it to make thermostat schedules. They are added to the model but not assigned
587
- standard.space_type_apply_internal_load_schedules(space_type, false, false, false, false, false, true)
588
-
589
- # identify thermal thermostat and apply to zones (apply_internal_load_schedules names )
590
- model.getThermostatSetpointDualSetpoints.sort.each do |thermostat|
591
- next if thermostat.name.to_s != "#{space_type.name} Thermostat"
592
- next if !thermostat.coolingSetpointTemperatureSchedule.is_initialized
593
- next if !thermostat.heatingSetpointTemperatureSchedule.is_initialized
594
-
595
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CreateTypical', "Assigning #{thermostat.name} to thermal zones with #{space_type.name} assigned.")
596
- space_type.spaces.sort.each do |space|
597
- next if !space.thermalZone.is_initialized
598
-
599
- space.thermalZone.get.setThermostatSetpointDualSetpoint(thermostat)
600
- end
601
- end
602
- end
586
+ OpenstudioStandards::ThermalZone.thermal_zones_set_thermostat_schedules(model.getThermalZones)
603
587
  end
604
588
 
605
589
  # add internal mass
@@ -933,13 +917,13 @@ module OpenstudioStandards
933
917
  space_types_new << space_type
934
918
 
935
919
  # add internal loads (the nil check isn't necessary, but I will keep it in as a warning instad of an error)
936
- test = standard.space_type_apply_internal_loads(space_type, true, true, true, true, true)
920
+ test = standard.space_type_apply_internal_loads(space_type)
937
921
  if test.nil?
938
922
  OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CreateTypical', "Could not add loads for #{space_type.name}. Not expected for #{template} #{lookup_building_type}")
939
923
  end
940
924
 
941
- # the last bool test it to make thermostat schedules. They are added to the model but not assigned
942
- standard.space_type_apply_internal_load_schedules(space_type, true, true, true, true, true, true)
925
+ # assign internal load schedules
926
+ standard.space_type_apply_internal_load_schedules(space_type)
943
927
 
944
928
  # assign colors
945
929
  standard.space_type_apply_rendering_color(space_type)
@@ -308,43 +308,43 @@ module OpenstudioStandards
308
308
  when 'SmallDataCenterHighITE', 'SmallDataCenterLowITE'
309
309
  hash['ComputerRoom'] = { ratio: 1.0, space_type_gen: true, default: true }
310
310
  when 'Courthouse'
311
- hash['Courthouse - Break Room'] = { ratio: 0.0067, space_type_gen: true, default: false }
312
- hash['Courthouse - Cell'] = { ratio: 0.0731, space_type_gen: true, default: false }
313
- hash['Courthouse - Conference'] = { ratio: 0.0203, space_type_gen: true, default: false }
314
- hash['Courthouse - Corridor'] = { ratio: 0.0829, space_type_gen: true, default: false }
315
- hash['Courthouse - Courtroom'] = { ratio: 0.1137, space_type_gen: true, default: false }
316
- hash['Courthouse - Courtroom Waiting'] = { ratio: 0.051, space_type_gen: true, default: false }
317
- hash['Courthouse - Elevator Lobby'] = { ratio: 0.0085, space_type_gen: true, default: false }
318
- hash['Courthouse - Elevator Shaft'] = { ratio: 0.0047, space_type_gen: true, default: false }
319
- hash['Courthouse - Entrance Lobby'] = { ratio: 0.0299, space_type_gen: true, default: false }
320
- hash['Courthouse - Judges Chamber'] = { ratio: 0.0261, space_type_gen: true, default: false }
321
- hash['Courthouse - Jury Assembly'] = { ratio: 0.0355, space_type_gen: true, default: false }
322
- hash['Courthouse - Jury Deliberation'] = { ratio: 0.0133, space_type_gen: true, default: false }
323
- hash['Courthouse - Library'] = { ratio: 0.0302, space_type_gen: true, default: false }
324
- hash['Courthouse - Office'] = { ratio: 0.1930, space_type_gen: true, default: true }
325
- hash['Courthouse - Parking'] = { ratio: 0.1083, space_type_gen: true, default: false }
326
- hash['Courthouse - Restrooms'] = { ratio: 0.04, space_type_gen: true, default: false }
327
- hash['Courthouse - Security Screening'] = { ratio: 0.0132, space_type_gen: true, default: false }
328
- hash['Courthouse - Service Shaft'] = { ratio: 0.0019, space_type_gen: true, default: false }
329
- hash['Courthouse - Stairs'] = { ratio: 0.0111, space_type_gen: true, default: false }
330
- hash['Courthouse - Storage'] = { ratio: 0.0882, space_type_gen: true, default: false }
331
- hash['Courthouse - Utility'] = { ratio: 0.0484, space_type_gen: true, default: false }
311
+ hash['Break Room'] = { ratio: 0.0067, space_type_gen: true, default: false }
312
+ hash['Cell'] = { ratio: 0.0731, space_type_gen: true, default: false }
313
+ hash['Conference'] = { ratio: 0.0203, space_type_gen: true, default: false }
314
+ hash['Corridor'] = { ratio: 0.0829, space_type_gen: true, default: false }
315
+ hash['Courtroom'] = { ratio: 0.1137, space_type_gen: true, default: false }
316
+ hash['Courtroom Waiting'] = { ratio: 0.051, space_type_gen: true, default: false }
317
+ hash['Elevator Lobby'] = { ratio: 0.0085, space_type_gen: true, default: false }
318
+ hash['Elevator Shaft'] = { ratio: 0.0047, space_type_gen: true, default: false }
319
+ hash['Entrance Lobby'] = { ratio: 0.0299, space_type_gen: true, default: false }
320
+ hash['Judges Chamber'] = { ratio: 0.0261, space_type_gen: true, default: false }
321
+ hash['Jury Assembly'] = { ratio: 0.0355, space_type_gen: true, default: false }
322
+ hash['Jury Deliberation'] = { ratio: 0.0133, space_type_gen: true, default: false }
323
+ hash['Library'] = { ratio: 0.0302, space_type_gen: true, default: false }
324
+ hash['Office'] = { ratio: 0.1930, space_type_gen: true, default: true }
325
+ hash['Parking'] = { ratio: 0.1083, space_type_gen: true, default: false }
326
+ hash['Restrooms'] = { ratio: 0.04, space_type_gen: true, default: false }
327
+ hash['Security Screening'] = { ratio: 0.0132, space_type_gen: true, default: false }
328
+ hash['Service Shaft'] = { ratio: 0.0019, space_type_gen: true, default: false }
329
+ hash['Stairs'] = { ratio: 0.0111, space_type_gen: true, default: false }
330
+ hash['Storage'] = { ratio: 0.0882, space_type_gen: true, default: false }
331
+ hash['Utility'] = { ratio: 0.0484, space_type_gen: true, default: false }
332
332
  when 'College'
333
- hash['College - Art Classroom'] = { ratio: 0.1868, space_type_gen: true, default: false }
334
- hash['College - Classroom'] = { ratio: 0.2348, space_type_gen: true, default: true }
335
- hash['College - Conference'] = { ratio: 0.0215, space_type_gen: true, default: false }
336
- hash['College - Corridor'] = { ratio: 0.0716, space_type_gen: true, default: false }
337
- hash['College - Elevator Shaft'] = { ratio: 0.0074, space_type_gen: true, default: false }
338
- hash['College - Entrance Lobby'] = { ratio: 0.0117, space_type_gen: true, default: false }
339
- hash['College - Laboratory'] = { ratio: 0.0843, space_type_gen: true, default: false }
340
- hash['College - Lecture Hall'] = { ratio: 0.0421, space_type_gen: true, default: false }
341
- hash['College - Lounge'] = { ratio: 0.028, space_type_gen: true, default: false }
342
- hash['College - Media Center'] = { ratio: 0.0421, space_type_gen: true, default: false }
343
- hash['College - Office'] = { ratio: 0.1894, space_type_gen: true, default: false }
344
- hash['College - Restroom'] = { ratio: 0.0363, space_type_gen: true, default: false }
345
- hash['College - Stairs'] = { ratio: 0.0272, space_type_gen: true, default: false }
346
- hash['College - Storage'] = { ratio: 0.0117, space_type_gen: true, default: false }
347
- hash['College - Utility'] = { ratio: 0.0051, space_type_gen: true, default: false }
333
+ hash['Art Classroom'] = { ratio: 0.1868, space_type_gen: true, default: false }
334
+ hash['Classroom'] = { ratio: 0.2348, space_type_gen: true, default: true }
335
+ hash['Conference'] = { ratio: 0.0215, space_type_gen: true, default: false }
336
+ hash['Corridor'] = { ratio: 0.0716, space_type_gen: true, default: false }
337
+ hash['Elevator Shaft'] = { ratio: 0.0074, space_type_gen: true, default: false }
338
+ hash['Entrance Lobby'] = { ratio: 0.0117, space_type_gen: true, default: false }
339
+ hash['Laboratory'] = { ratio: 0.0843, space_type_gen: true, default: false }
340
+ hash['Lecture Hall'] = { ratio: 0.0421, space_type_gen: true, default: false }
341
+ hash['Lounge'] = { ratio: 0.028, space_type_gen: true, default: false }
342
+ hash['Media Center'] = { ratio: 0.0421, space_type_gen: true, default: false }
343
+ hash['Office'] = { ratio: 0.1894, space_type_gen: true, default: false }
344
+ hash['Restroom'] = { ratio: 0.0363, space_type_gen: true, default: false }
345
+ hash['Stairs'] = { ratio: 0.0272, space_type_gen: true, default: false }
346
+ hash['Storage'] = { ratio: 0.0117, space_type_gen: true, default: false }
347
+ hash['Utility'] = { ratio: 0.0051, space_type_gen: true, default: false }
348
348
 
349
349
  # DEER Prototypes
350
350
  when 'Asm'
@@ -0,0 +1,104 @@
1
+ module OpenstudioStandards
2
+ # The Equipment module provides methods to create, modify, and get information about equipment
3
+ module Equipment
4
+ # @!group Create Transformer
5
+ # Methods to create electrical transformers.
6
+
7
+ # Add transformer to the model
8
+ #
9
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
10
+ # @param name [String] the name of the transformer
11
+ # @param wired_lighting_frac [Double] the wired lighting fraction, 0-1
12
+ # @param transformer_size [Double] the transformer size in VA
13
+ # @param transformer_efficiency [Double] the transformer efficiency, 0-1
14
+ # @param excluded_interiorequip_key [String] key to exclude
15
+ # @param excluded_interiorequip_meter [String] meter to exclude
16
+ # @return [OpenStudio::Model::ElectricLoadCenterTransformer] the transformer object
17
+ def self.create_transformer(model,
18
+ name: 'Transformer_1',
19
+ wired_lighting_frac: nil,
20
+ transformer_size: nil,
21
+ transformer_efficiency: nil,
22
+ excluded_interiorequip_key: '',
23
+ excluded_interiorequip_meter: nil)
24
+ # throw an error if transformer properties are missing
25
+ if wired_lighting_frac.nil? || transformer_size.nil? || transformer_efficiency.nil?
26
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Equipment', "Either 'wired_lighting_frac', 'transformer_size', or 'transformer_efficiency' is unspecified. Cannot add transformer.")
27
+ return false
28
+ end
29
+
30
+ # throw an error if Decepticon
31
+ if ['megatron', 'starscream', 'soundwave', 'shockwave', 'skywarp', 'thundercracker', 'reflector'].include? name.downcase
32
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Equipment', "Decepticons will corrupt the OpenStudio model. Will not add transformer.")
33
+ return false
34
+ end
35
+
36
+ # @todo default values are for testing only
37
+ # ems sensor for interior lighting
38
+ facility_int_ltg = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'InteriorLights:Electricity')
39
+ facility_int_ltg.setName('Facility_Int_LTG')
40
+
41
+ # declaire ems variable for transformer wired lighting portion
42
+ wired_ltg_var = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'Wired_LTG')
43
+
44
+ # ems program for transformer load
45
+ transformer_load_prog = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
46
+ transformer_load_prog.setName('Transformer_Load_Prog')
47
+ transformer_load_prog_body = <<-EMS
48
+ SET Wired_LTG = Facility_Int_LTG*#{wired_lighting_frac}
49
+ EMS
50
+ transformer_load_prog.setBody(transformer_load_prog_body)
51
+
52
+ # ems program calling manager
53
+ transformer_load_prog_manager = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
54
+ transformer_load_prog_manager.setName('Transformer_Load_Prog_Manager')
55
+ transformer_load_prog_manager.setCallingPoint('AfterPredictorAfterHVACManagers')
56
+ transformer_load_prog_manager.addProgram(transformer_load_prog)
57
+
58
+ # ems output variable
59
+ wired_ltg_emsout = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, wired_ltg_var)
60
+ wired_ltg_emsout.setName('Wired_LTG')
61
+ wired_ltg_emsout.setTypeOfDataInVariable('Summed')
62
+ wired_ltg_emsout.setUpdateFrequency('ZoneTimeStep')
63
+ wired_ltg_emsout.setUnits('J')
64
+
65
+ # meter for ems output
66
+ wired_ltg_meter = OpenStudio::Model::MeterCustom.new(model)
67
+ wired_ltg_meter.setName('Wired_LTG_Electricity')
68
+ wired_ltg_meter.setFuelType('Electricity')
69
+ wired_ltg_meter.addKeyVarGroup('', 'Wired_LTG')
70
+
71
+ # meter for wired int equip
72
+ unless excluded_interiorequip_meter.nil?
73
+ wired_int_equip_meter = OpenStudio::Model::MeterCustomDecrement.new(model, 'InteriorEquipment:Electricity')
74
+ wired_int_equip_meter.setName('Wired_Int_EQUIP')
75
+ wired_int_equip_meter.setFuelType('Electricity')
76
+ wired_int_equip_meter.addKeyVarGroup(excluded_interiorequip_key, excluded_interiorequip_meter)
77
+ end
78
+
79
+ # add transformer
80
+ transformer = OpenStudio::Model::ElectricLoadCenterTransformer.new(model)
81
+ transformer.setName(name)
82
+ transformer.setAvailabilitySchedule(model.alwaysOnDiscreteSchedule)
83
+ transformer.setTransformerUsage('PowerInFromGrid')
84
+ transformer.setRatedCapacity(transformer_size)
85
+ transformer.setPhase('3')
86
+ transformer.setConductorMaterial('Aluminum')
87
+ transformer.setFullLoadTemperatureRise(150)
88
+ transformer.setFractionofEddyCurrentLosses(0.1)
89
+ transformer.setPerformanceInputMethod('NominalEfficiency')
90
+ transformer.setNameplateEfficiency(transformer_efficiency)
91
+ transformer.setPerUnitLoadforNameplateEfficiency(0.35)
92
+ transformer.setReferenceTemperatureforNameplateEfficiency(75)
93
+ transformer.setConsiderTransformerLossforUtilityCost(true)
94
+ transformer.addMeter('Wired_LTG_Electricity')
95
+ if excluded_interiorequip_meter.nil?
96
+ transformer.addMeter('InteriorEquipment:Electricity') # by default, add this as the second meter
97
+ else
98
+ transformer.addMeter('Wired_Int_EQUIP')
99
+ end
100
+
101
+ return transformer
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,117 @@
1
+ module OpenstudioStandards
2
+ # The Equipment module provides methods to create, modify, and get information about equipment
3
+ module Equipment
4
+ # @!group Create Typical Equipment
5
+ # Methods to create typical equipment
6
+
7
+ # Create typical equipment in a model
8
+ #
9
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
10
+ # @return [Boolean] returns true if successful, false if not
11
+ def self.create_typical_equipment(model)
12
+ # load equipment data
13
+ electric_equipment_space_type_data = JSON.parse(File.read("#{File.dirname(__FILE__)}/data/electric_equipment_space_types.json"), symbolize_names: true)
14
+ gas_equipment_space_type_data = JSON.parse(File.read("#{File.dirname(__FILE__)}/data/gas_equipment_space_types.json"), symbolize_names: true)
15
+
16
+ if electric_equipment_space_type_data.nil? || gas_equipment_space_type_data.nil?
17
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Equipment', 'Unable to load equipment space types data. No equipment will be added to model.')
18
+ return false
19
+ end
20
+
21
+ # loop over space types and apply equipment
22
+ model.getSpaceTypes.each do |space_type|
23
+ # remove existing equipment objects
24
+ space_type.electricEquipment.sort.each(&:remove)
25
+ space_type.gasEquipment.sort.each(&:remove)
26
+
27
+ # remove existing equipment objects from spaces
28
+ space_type.spaces.each do |space|
29
+ space.electricEquipment.sort.each(&:remove)
30
+ space.gasEquipment.sort.each(&:remove)
31
+ end
32
+
33
+ # get building type
34
+ standards_building_type = nil
35
+ if space_type.standardsBuildingType.is_initialized
36
+ standards_building_type = space_type.standardsBuildingType.get
37
+ end
38
+
39
+ # get equipment space type from the object
40
+ has_electric_equipment_space_type = space_type.additionalProperties.hasFeature('electric_equipment_space_type')
41
+ has_gas_equipment_space_type = space_type.additionalProperties.hasFeature('natural_gas_equipment_space_type')
42
+ unless has_electric_equipment_space_type || has_gas_equipment_space_type
43
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Equipment', "Space type '#{space_type.name}' does not have a electric_equipment_space_type or natural_gas_equipment_space_type property assigned. Ignoring space type.")
44
+ next
45
+ end
46
+ if has_electric_equipment_space_type
47
+ electric_equipment_space_type = space_type.additionalProperties.getFeatureAsString('electric_equipment_space_type').to_s
48
+ else
49
+ electric_equipment_space_type = nil
50
+ end
51
+ if has_gas_equipment_space_type
52
+ gas_equipment_space_type = space_type.additionalProperties.getFeatureAsString('natural_gas_equipment_space_type').to_s
53
+ else
54
+ gas_equipment_space_type = nil
55
+ end
56
+
57
+ if has_electric_equipment_space_type && !electric_equipment_space_type.nil? && (electric_equipment_space_type != 'na')
58
+ # get equipment properties for the electric equipment space type
59
+ electric_equipment_space_type_properties = electric_equipment_space_type_data.select { |r| (r[:electric_equipment_space_type_name] == electric_equipment_space_type) && (r[:standards_building_type] == standards_building_type) }
60
+ if electric_equipment_space_type_properties.empty?
61
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Equipment', "Unable to find electric equipment space type data for '#{electric_equipment_space_type}' with standards_building_type #{standards_building_type}.")
62
+ else
63
+ electric_equipment_space_type_properties = electric_equipment_space_type_properties[0]
64
+ elec_equip_per_area = electric_equipment_space_type_properties[:electric_equipment_per_area].to_f
65
+ elec_equip_frac_latent = electric_equipment_space_type_properties[:electric_equipment_fraction_latent]
66
+ elec_equip_frac_radiant = electric_equipment_space_type_properties[:electric_equipment_fraction_radiant]
67
+ elec_equip_frac_lost = electric_equipment_space_type_properties[:electric_equipment_fraction_lost]
68
+ if elec_equip_per_area > 0
69
+ definition = OpenStudio::Model::ElectricEquipmentDefinition.new(space_type.model)
70
+ definition.setName("#{space_type.name} Elec Equip Definition")
71
+ definition.setWattsperSpaceFloorArea(OpenStudio.convert(elec_equip_per_area.to_f, 'W/ft^2', 'W/m^2').get)
72
+ definition.resetFractionLatent unless definition.isFractionLatentDefaulted
73
+ definition.resetFractionRadiant unless definition.isFractionRadiantDefaulted
74
+ definition.resetFractionLost unless definition.isFractionLostDefaulted
75
+ definition.setFractionLatent(elec_equip_frac_latent.to_f) if elec_equip_frac_latent
76
+ definition.setFractionRadiant(elec_equip_frac_radiant.to_f) if elec_equip_frac_radiant
77
+ definition.setFractionLost(elec_equip_frac_lost.to_f) if elec_equip_frac_lost
78
+ instance = OpenStudio::Model::ElectricEquipment.new(definition)
79
+ instance.setName("#{space_type.name} Elec Equip")
80
+ instance.setSpaceType(space_type)
81
+ end
82
+ end
83
+ end
84
+
85
+ if has_gas_equipment_space_type && !gas_equipment_space_type.nil? && (gas_equipment_space_type != 'na')
86
+ # get equipment properties for the gas equipment space type
87
+ gas_equipment_space_type_properties = gas_equipment_space_type_data.select { |r| (r[:natural_gas_equipment_space_type_name] == gas_equipment_space_type) && (r[:standards_building_type] == standards_building_type) }
88
+ if gas_equipment_space_type_properties.empty?
89
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Equipment', "Unable to find gas equipment space type data for '#{gas_equipment_space_type}' with standards_building_type #{standards_building_type}.")
90
+ else
91
+ gas_equipment_space_type_properties = gas_equipment_space_type_properties[0]
92
+ gas_equip_per_area = gas_equipment_space_type_properties[:gas_equipment_per_area].to_f
93
+ gas_equip_frac_latent = gas_equipment_space_type_properties[:gas_equipment_fraction_latent]
94
+ gas_equip_frac_radiant = gas_equipment_space_type_properties[:gas_equipment_fraction_radiant]
95
+ gas_equip_frac_lost = gas_equipment_space_type_properties[:gas_equipment_fraction_lost]
96
+ if gas_equip_per_area > 0
97
+ definition = OpenStudio::Model::GasEquipmentDefinition.new(space_type.model)
98
+ definition.setName("#{space_type.name} Gas Equip Definition")
99
+ definition.setWattsperSpaceFloorArea(OpenStudio.convert(gas_equip_per_area.to_f, 'Btu/hr*ft^2', 'W/m^2').get)
100
+ definition.resetFractionLatent unless definition.isFractionLatentDefaulted
101
+ definition.resetFractionRadiant unless definition.isFractionRadiantDefaulted
102
+ definition.resetFractionLost unless definition.isFractionLostDefaulted
103
+ definition.setFractionLatent(gas_equip_frac_latent.to_f) if gas_equip_frac_latent
104
+ definition.setFractionRadiant(gas_equip_frac_radiant.to_f) if gas_equip_frac_radiant
105
+ definition.setFractionLost(gas_equip_frac_lost.to_f) if gas_equip_frac_lost
106
+ instance = OpenStudio::Model::GasEquipment.new(definition)
107
+ instance.setName("#{space_type.name} Gas Equip")
108
+ instance.setSpaceType(space_type)
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+ return true
115
+ end
116
+ end
117
+ end