openstudio-standards 0.6.3 → 0.7.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
  3. data/data/standards/manage_OpenStudio_Standards.rb +2 -49
  4. data/data/standards/openstudio_standards_duplicates_log.csv +1 -7962
  5. data/data/standards/test_performance_expected_dd_results.csv +2005 -97
  6. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +47 -57
  7. data/lib/openstudio-standards/geometry/create.rb +1 -1
  8. data/lib/openstudio-standards/geometry/create_bar.rb +6 -3
  9. data/lib/openstudio-standards/geometry/create_shape.rb +1 -1
  10. data/lib/openstudio-standards/geometry/group.rb +1 -1
  11. data/lib/openstudio-standards/geometry/information.rb +1 -1
  12. data/lib/openstudio-standards/geometry/modify.rb +53 -1
  13. data/lib/openstudio-standards/infiltration/nist_infiltration.rb +1 -1
  14. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +11 -11
  15. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +11 -11
  16. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +2 -2
  17. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +44 -47
  18. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +43 -48
  19. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +1 -1
  20. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +44 -24
  21. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +24 -24
  22. data/lib/openstudio-standards/schedules/parametric.rb +1 -1
  23. data/lib/openstudio-standards/service_water_heating/create_piping_losses.rb +152 -0
  24. data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +544 -0
  25. data/lib/openstudio-standards/service_water_heating/create_water_heating_loop.rb +303 -0
  26. data/lib/openstudio-standards/service_water_heating/create_water_use.rb +95 -0
  27. data/lib/openstudio-standards/space/space.rb +1 -1
  28. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +65 -70
  29. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +12 -14
  30. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +16 -5
  31. data/lib/openstudio-standards/standards/Standards.Model.rb +2 -2
  32. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +10 -2
  33. data/lib/openstudio-standards/{prototypes/common/objects/Prototype.Model.swh.rb → standards/Standards.ServiceWaterHeating.rb} +209 -139
  34. data/lib/openstudio-standards/standards/Standards.Surface.rb +1 -1
  35. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +4 -8
  36. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Model.rb +2 -2
  37. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +22251 -12963
  38. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_sets.json +91 -91
  39. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +8981 -5228
  40. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +8935 -5182
  41. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +7281 -5391
  42. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_sets.json +91 -91
  43. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_properties.json +9005 -15215
  44. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_sets.json +136 -136
  45. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
  46. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_properties.json +8717 -17168
  47. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_sets.json +136 -136
  48. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +1941 -651
  49. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.construction_properties.json +135 -135
  50. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.construction_properties.json +135 -135
  51. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.construction_properties.json +36 -36
  52. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.construction_properties.json +36 -36
  53. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +377 -99
  54. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +2 -2
  55. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +3 -3
  56. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.construction_properties.json +6889 -4044
  57. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_constructions.json +108 -108
  58. data/lib/openstudio-standards/standards/cbes/cbes_pre_1978/data/cbes_pre_1978.construction_properties.json +16 -16
  59. data/lib/openstudio-standards/standards/cbes/cbes_t24_1978/data/cbes_t24_1978.construction_properties.json +16 -16
  60. data/lib/openstudio-standards/standards/cbes/cbes_t24_1992/data/cbes_t24_1992.construction_properties.json +16 -16
  61. data/lib/openstudio-standards/standards/cbes/cbes_t24_2001/data/cbes_t24_2001.construction_properties.json +16 -16
  62. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/data/cbes_t24_2005.construction_properties.json +16 -16
  63. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/data/cbes_t24_2008.construction_properties.json +16 -16
  64. data/lib/openstudio-standards/standards/cbes/data/cbes.constructions.json +142 -142
  65. data/lib/openstudio-standards/standards/deer/data/deer.constructions.json +5 -1551
  66. data/lib/openstudio-standards/standards/deer/data/deer.materials.json +40 -0
  67. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.motors.json +88 -8
  68. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.motors.json +88 -8
  69. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.motors.json +88 -8
  70. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.motors.json +88 -8
  71. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.motors.json +88 -8
  72. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.motors.json +88 -8
  73. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.motors.json +88 -8
  74. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.motors.json +88 -8
  75. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.motors.json +88 -8
  76. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.motors.json +88 -8
  77. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.motors.json +88 -8
  78. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.motors.json +88 -8
  79. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.motors.json +88 -8
  80. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.motors.json +88 -8
  81. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.motors.json +88 -8
  82. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.motors.json +88 -8
  83. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.motors.json +88 -8
  84. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.motors.json +88 -8
  85. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.motors.json +88 -8
  86. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.motors.json +88 -8
  87. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.motors.json +88 -8
  88. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +17 -0
  89. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +2 -1
  90. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +4 -4
  91. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +61 -88
  92. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +3 -2
  93. data/lib/openstudio-standards/standards/necb/NECB2011/data/boiler_fuel_type_sets.json +54 -0
  94. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LEEPMidriseApartment.osm +1 -1
  95. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LEEPMultiTower.osm +1 -1
  96. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LEEPPointTower.osm +1 -1
  97. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LEEPTownHouse.osm +1 -1
  98. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernEducation.osm +4 -4
  99. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernHealthCare.osm +4 -4
  100. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +32 -24
  101. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +89 -15
  102. data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +5 -1
  103. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +22 -65
  104. data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +19 -0
  105. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +56 -2
  106. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +3 -1
  107. data/lib/openstudio-standards/standards/necb/common/construction_defaults.osm +2 -2
  108. data/lib/openstudio-standards/standards/necb/docs/air_system_names_method.md +127 -0
  109. data/lib/openstudio-standards/thermal_zone/thermal_zone.rb +1 -1
  110. data/lib/openstudio-standards/utilities/template_measure/resources/BTAPMeasureHelper.rb +1 -1
  111. data/lib/openstudio-standards/version.rb +1 -1
  112. data/lib/openstudio-standards/weather/information.rb +61 -5
  113. data/lib/openstudio-standards/weather/modify.rb +1 -1
  114. data/lib/openstudio-standards.rb +5 -3
  115. metadata +12 -63
  116. data/data/standards/OpenStudio_Standards-deer.xlsx +0 -0
  117. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +0 -1100
  118. data/lib/openstudio-standards/service_water_heating/component.rb +0 -189
@@ -1,189 +0,0 @@
1
- module OpenstudioStandards
2
- # The ServiceWaterHeating module provides methods to create, modify, and get information about service water heating
3
- module ServiceWaterHeating
4
- # @!group Create Component
5
- # Methods to add service water heating components
6
-
7
- # Creates a water heater and attaches it to the supplied service water heating loop.
8
- #
9
- # @param model [OpenStudio::Model::Model] OpenStudio model object
10
- # @param water_heater_capacity [Double] water heater capacity, in W. Defaults to 58.6 kW / 200 kBtu/hr
11
- # @param water_heater_volume [Double] water heater volume, in m^3. Defaults to 0.378 m^3 / 100 gal
12
- # @param water_heater_fuel [String] water heating fuel. Valid choices are 'NaturalGas', 'Electricity', or 'HeatPump'
13
- # @param on_cycle_parasitic_fuel_consumption_rate [Double] water heater on cycle parasitic fuel consumption rate, in W
14
- # @param off_cycle_parasitic_fuel_consumption_rate [Double] water heater off cycle parasitic fuel consumption rate, in W
15
- # @param service_water_temperature [Double] water heater temperature, in degrees C. Default is 60 C / 140 F.
16
- # @param service_water_temperature_schedule [OpenStudio::Model::Schedule] the service water heating schedule.
17
- # If nil, will be defaulted to a constant temperature schedule based on the service_water_temperature
18
- # @param set_peak_use_flowrate [Boolean] if true, the peak flow rate and flow rate schedule will be set.
19
- # @param peak_flowrate [Double] peak flow rate in m^3/s
20
- # @param flowrate_schedule [OpenStudio::Model::Schedule] the flow rate fraction scehdulename of the flow rate schedule
21
- # @param water_heater_thermal_zone [OpenStudio::Model::ThermalZone] Thermal zone for ambient heat loss.
22
- # If nil, will assume 71.6 F / 22 C ambient air temperature.
23
- # @param number_water_heaters [Integer] the number of water heaters represented by the capacity and volume inputs.
24
- # Used to modify efficiencies for water heaters based on individual component size while avoiding having to model
25
- # lots of individual water heaters (for runtime sake).
26
- # @param service_water_loop [OpenStudio::Model::PlantLoop] if provided, add the water heater to this loop
27
- # @return [OpenStudio::Model::WaterHeaterMixed] OpenStudio WaterHeaterMixed object
28
- def self.model_add_water_heater(model,
29
- water_heater_capacity: nil,
30
- water_heater_volume: nil,
31
- water_heater_fuel: 'Electricity',
32
- on_cycle_parasitic_fuel_consumption_rate: 0.0,
33
- off_cycle_parasitic_fuel_consumption_rate: 0.0,
34
- service_water_temperature: 60.0,
35
- service_water_temperature_schedule: nil,
36
- set_peak_use_flowrate: false,
37
- peak_flowrate: nil,
38
- flowrate_schedule: nil,
39
- water_heater_thermal_zone: nil,
40
- number_water_heaters: 1,
41
- service_water_loop: nil)
42
- # create water heater object
43
- # @todo Standards - Change water heater methodology to follow 'Model Enhancements Appendix A.'
44
- water_heater = OpenStudio::Model::WaterHeaterMixed.new(model)
45
-
46
- # default water heater capacity if nil
47
- if water_heater_capacity.nil?
48
- water_heater_capacity = OpenStudio.convert(200.0, 'kBtu/hr', 'W').get
49
- end
50
- water_heater_capacity_kbtu_per_hr = OpenStudio.convert(water_heater_capacity, 'W', 'kBtu/hr').get
51
- water_heater.setHeaterMaximumCapacity(water_heater_capacity)
52
-
53
- # default water heater volume if nil
54
- if water_heater_volume.nil?
55
- water_heater_volume = OpenStudio.convert(100.0, 'gal', 'm^3').get
56
- end
57
- water_heater_volume_gal = OpenStudio.convert(water_heater_volume, 'm^3', 'gal').get
58
- water_heater.setTankVolume(water_heater_volume)
59
-
60
- # set the water heater fuel
61
- case water_heater_fuel
62
- when 'Natural Gas', 'NaturalGas', 'Gas'
63
- water_heater.setHeaterFuelType('Gas')
64
- water_heater.setHeaterThermalEfficiency(0.78)
65
- water_heater.setOnCycleParasiticFuelConsumptionRate(on_cycle_parasitic_fuel_consumption_rate)
66
- water_heater.setOffCycleParasiticFuelConsumptionRate(off_cycle_parasitic_fuel_consumption_rate)
67
- water_heater.setOnCycleParasiticFuelType('Gas')
68
- water_heater.setOffCycleParasiticFuelType('Gas')
69
- water_heater.setOffCycleLossCoefficienttoAmbientTemperature(6.0)
70
- water_heater.setOnCycleLossCoefficienttoAmbientTemperature(6.0)
71
- when 'Electricity', 'Electric', 'Elec'
72
- water_heater.setHeaterFuelType('Electricity')
73
- water_heater.setHeaterThermalEfficiency(1.0)
74
- water_heater.setOnCycleParasiticFuelConsumptionRate(on_cycle_parasitic_fuel_consumption_rate)
75
- water_heater.setOffCycleParasiticFuelConsumptionRate(off_cycle_parasitic_fuel_consumption_rate)
76
- water_heater.setOnCycleParasiticFuelType('Electricity')
77
- water_heater.setOffCycleParasiticFuelType('Electricity')
78
- water_heater.setOffCycleLossCoefficienttoAmbientTemperature(1.053)
79
- water_heater.setOnCycleLossCoefficienttoAmbientTemperature(1.053)
80
- when 'FuelOilNo2'
81
- water_heater.setHeaterFuelType('FuelOilNo2')
82
- water_heater.setHeaterThermalEfficiency(0.78)
83
- water_heater.setOnCycleParasiticFuelConsumptionRate(on_cycle_parasitic_fuel_consumption_rate)
84
- water_heater.setOffCycleParasiticFuelConsumptionRate(off_cycle_parasitic_fuel_consumption_rate)
85
- water_heater.setOnCycleParasiticFuelType('FuelOilNo2')
86
- water_heater.setOffCycleParasiticFuelType('FuelOilNo2')
87
- water_heater.setOffCycleLossCoefficienttoAmbientTemperature(6.0)
88
- water_heater.setOnCycleLossCoefficienttoAmbientTemperature(6.0)
89
- when 'HeatPump', 'SimpleHeatPump'
90
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.Model.Model', 'Simple workaround to represent heat pump water heaters without incurring significant runtime penalty associated with using correct objects.')
91
- # Make a part-load efficiency modifier curve with a value above 1, which is multiplied by the nominal efficiency of 100% to represent the COP of a HPWH.
92
- # @todo could make this workaround better by using EMS to modify this curve output in realtime based on the OA temperature.
93
- hpwh_cop = 2.8
94
- water_heater.setHeaterFuelType('Electricity')
95
- water_heater.setHeaterThermalEfficiency(1.0)
96
- eff_f_of_plr = OpenStudio::Model::CurveCubic.new(model)
97
- eff_f_of_plr.setName("HPWH_COP_#{hpwh_cop}")
98
- eff_f_of_plr.setCoefficient1Constant(hpwh_cop)
99
- eff_f_of_plr.setCoefficient2x(0.0)
100
- eff_f_of_plr.setCoefficient3xPOW2(0.0)
101
- eff_f_of_plr.setCoefficient4xPOW3(0.0)
102
- eff_f_of_plr.setMinimumValueofx(0.0)
103
- eff_f_of_plr.setMaximumValueofx(1.0)
104
- water_heater.setPartLoadFactorCurve(eff_f_of_plr)
105
- water_heater.setOnCycleParasiticFuelConsumptionRate(on_cycle_parasitic_fuel_consumption_rate)
106
- water_heater.setOffCycleParasiticFuelConsumptionRate(off_cycle_parasitic_fuel_consumption_rate)
107
- water_heater.setOnCycleParasiticFuelType('Electricity')
108
- water_heater.setOffCycleParasiticFuelType('Electricity')
109
- water_heater.setOffCycleLossCoefficienttoAmbientTemperature(1.053)
110
- water_heater.setOnCycleLossCoefficienttoAmbientTemperature(1.053)
111
- else
112
- OpenStudio.logFree(OpenStudio::Error, 'openstudio.Model.Model', "#{water_heater_fuel} is not a valid water heater fuel. Valid choices are NaturalGas, Electricity, and HeatPump.")
113
- end
114
-
115
- # set water temperature properties
116
- water_heater.setDeadbandTemperatureDifference(2.0)
117
- water_heater.setDeadbandTemperatureDifference(OpenStudio.convert(3.6, 'R', 'K').get)
118
- water_heater.setHeaterControlType('Cycle')
119
- water_heater.setOffCycleParasiticHeatFractiontoTank(0.8)
120
- water_heater.setIndirectWaterHeatingRecoveryTime(1.5) # 1.5hrs
121
-
122
- # get or create temperature schedule type limits
123
- temp_sch_type_limits = OpenstudioStandards::Schedules.create_schedule_type_limits(model,
124
- name: 'Temperature Schedule Type Limits',
125
- lower_limit_value: 0.0,
126
- upper_limit_value: 100.0,
127
- numeric_type: 'Continuous',
128
- unit_type: 'Temperature')
129
-
130
- # create service water temperature schedule based on the service_water_temperature if none provided
131
- if service_water_temperature_schedule.nil?
132
- swh_temp_c = service_water_temperature
133
- swh_temp_f = OpenStudio.convert(swh_temp_c, 'C', 'F').get
134
- service_water_temperature_schedule = OpenstudioStandards::Schedules.create_constant_schedule_ruleset(model,
135
- swh_temp_c,
136
- name: "Service Water Loop Temp - #{swh_temp_f.round}F",
137
- schedule_type_limit: 'Temperature')
138
- service_water_temperature_schedule.setScheduleTypeLimits(temp_sch_type_limits)
139
- end
140
- water_heater.setMaximumTemperatureLimit(service_water_temperature)
141
- water_heater.setSetpointTemperatureSchedule(service_water_temperature_schedule)
142
-
143
- # set peak flow rate characteristics
144
- if set_peak_use_flowrate
145
- water_heater.setPeakUseFlowRate(peak_flowrate) unless peak_flowrate.nil?
146
- water_heater.setUseFlowRateFractionSchedule(flowrate_schedule) unless flowrate_schedule.nil?
147
- end
148
-
149
- # set the water heater ambient conditions
150
- if water_heater_thermal_zone.nil?
151
- # assume the water heater is indoors at 71.6F / 22C
152
- indoor_temp_f = 71.6
153
- indoor_temp_c = OpenStudio.convert(indoor_temp_f, 'F', 'C').get
154
- default_water_heater_ambient_temp_sch = OpenstudioStandards::Schedules.create_constant_schedule_ruleset(model,
155
- indoor_temp_c,
156
- name: "Water Heater Ambient Temp Schedule #{indoor_temp_f}F",
157
- schedule_type_limit: 'Temperature')
158
- default_water_heater_ambient_temp_sch.setScheduleTypeLimits(temp_sch_type_limits)
159
- water_heater.setAmbientTemperatureIndicator('Schedule')
160
- water_heater.setAmbientTemperatureSchedule(default_water_heater_ambient_temp_sch)
161
- water_heater.resetAmbientTemperatureThermalZone
162
- else
163
- water_heater.setAmbientTemperatureIndicator('ThermalZone')
164
- water_heater.setAmbientTemperatureThermalZone(water_heater_thermal_zone)
165
- water_heater.resetAmbientTemperatureSchedule
166
- end
167
-
168
- # assign a quantity to the water heater if it represents multiple water heaters
169
- if number_water_heaters > 1
170
- water_heater.setName("#{number_water_heaters}X #{(water_heater_volume_gal / number_water_heaters).round}gal #{water_heater_fuel} Water Heater - #{(water_heater_capacity_kbtu_per_hr / number_water_heaters).round}kBtu/hr")
171
- water_heater.additionalProperties.setFeature('component_quantity', number_water_heaters)
172
- else
173
- water_heater.setName("#{water_heater_volume_gal.round}gal #{water_heater_fuel} Water Heater - #{water_heater_capacity_kbtu_per_hr.round}kBtu/hr")
174
- end
175
-
176
- # add the water heater to the service water loop if provided
177
- unless service_water_loop.nil?
178
- service_water_loop.addSupplyBranchForComponent(water_heater)
179
- end
180
-
181
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ServiceWaterHeating.Create', "Added water heater called #{water_heater.name}")
182
-
183
- return water_heater
184
- end
185
-
186
-
187
- # @!endgroup Create Component
188
- end
189
- end