Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for shared water heating systems #1045

Open
wants to merge 10 commits into
base: develop
Choose a base branch
from
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
Features
- Ability to check buildstock csv against an options lookup as a command line utility ([#1042](https://github.com/NREL/resstock/pull/1042))
- Include battery modeling capabilities for project_testing ([#1009](https://github.com/NREL/resstock/pull/1009))
- Update ResStockArguments for assigning shared water heaters based on what is sampled from Water Heater In Unit.tsv ([#1045](https://github.com/NREL/resstock/pull/1045))

Fixes
-
Expand Down
26 changes: 26 additions & 0 deletions measures/ResStockArguments/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,11 @@ def arguments(model)
arg.setDefaultValue(Constants.Auto)
args << arg

arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_heater_in_unit', false)
arg.setDisplayName('Water Heater: In Unit')
arg.setDescription('Whether the water heater is in unit.')
args << arg

arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_rated_cfm_per_ton', false)
arg.setDisplayName('Heating System: Rated CFM Per Ton')
arg.setUnits('cfm/ton')
Expand Down Expand Up @@ -444,6 +449,27 @@ def run(model, runner, user_arguments)
end
end

# Water Heater
if args['water_heater_in_unit'].is_initialized && !args['water_heater_in_unit'].get
n_du = Integer(args['geometry_building_num_units'].to_s)
has_uncond_bsmnt = false
if args['geometry_foundation_type'] == HPXML::FoundationTypeBasementUnconditioned
has_uncond_bsmnt = true
end
cfa = args['geometry_unit_cfa'] * n_du # building cfa
ncfl = args['geometry_num_floors_above_grade']

args['water_heater_num_units_served'] = n_du
if args['hot_water_distribution_system_type'] == HPXML::DHWDistTypeStandard
args['hot_water_distribution_standard_piping_length'] = HotWaterAndAppliances.get_default_std_pipe_length(has_uncond_bsmnt, cfa, ncfl)
elsif args['hot_water_distribution_system_type'] == HPXML::DHWDistTypeRecirc
args['hot_water_distribution_recirc_piping_length'] = HotWaterAndAppliances.get_default_recirc_loop_length(HotWaterAndAppliances.get_default_std_pipe_length(has_uncond_bsmnt, cfa, ncfl))
args['hot_water_distribution_recirc_branch_piping_length'] = HotWaterAndAppliances.get_default_recirc_branch_loop_length()
end
else
args['water_heater_num_units_served'] = 1
end

# PV
if args['pv_system_module_type'] != 'none'
args['pv_system_num_bedrooms_served'] = Integer(args['geometry_unit_num_bedrooms'])
Expand Down
179 changes: 126 additions & 53 deletions measures/ResStockArguments/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.0</schema_version>
<name>res_stock_arguments</name>
<uid>c984bb9e-4ac4-4930-a399-9d23f8f6936a</uid>
<version_id>b7ce3066-ca7e-4669-b1a0-502e6347f8f7</version_id>
<version_modified>20221031T170331Z</version_modified>
<version_id>77af9d32-812b-4f7f-bc08-4f96236b0b97</version_id>
<version_modified>20230315T184743Z</version_modified>
<xml_checksum>2C38F48B</xml_checksum>
<class_name>ResStockArguments</class_name>
<display_name>ResStock Arguments</display_name>
Expand All @@ -18,6 +18,13 @@
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>schedules_vacancy_period</name>
<display_name>schedules_vacancy_period</display_name>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>simulation_control_timestep</name>
<display_name>simulation_control_timestep</display_name>
Expand Down Expand Up @@ -535,6 +542,33 @@
<model_dependent>false</model_dependent>
<default_value>28.1</default_value>
</argument>
<argument>
<name>floor_type</name>
<display_name>Floor: Type</display_name>
<description>The type of floors.</description>
<type>Choice</type>
<required>true</required>
<model_dependent>false</model_dependent>
<default_value>WoodFrame</default_value>
<choices>
<choice>
<value>WoodFrame</value>
<display_name>WoodFrame</display_name>
</choice>
<choice>
<value>StructuralInsulatedPanel</value>
<display_name>StructuralInsulatedPanel</display_name>
</choice>
<choice>
<value>SolidConcrete</value>
<display_name>SolidConcrete</display_name>
</choice>
<choice>
<value>SteelFrame</value>
<display_name>SteelFrame</display_name>
</choice>
</choices>
</argument>
<argument>
<name>foundation_wall_type</name>
<display_name>foundation_wall_type</display_name>
Expand Down Expand Up @@ -761,8 +795,8 @@
<display_name>LogWall</display_name>
</choice>
<choice>
<value>StructurallyInsulatedPanel</value>
<display_name>StructurallyInsulatedPanel</display_name>
<value>StructuralInsulatedPanel</value>
<display_name>StructuralInsulatedPanel</display_name>
</choice>
<choice>
<value>SolidConcrete</value>
Expand Down Expand Up @@ -1195,6 +1229,14 @@
<value>ACHnatural</value>
<display_name>ACHnatural</display_name>
</choice>
<choice>
<value>CFMnatural</value>
<display_name>CFMnatural</display_name>
</choice>
<choice>
<value>EffectiveLeakageArea</value>
<display_name>EffectiveLeakageArea</display_name>
</choice>
</choices>
</argument>
<argument>
Expand All @@ -1210,7 +1252,7 @@
<argument>
<name>air_leakage_value</name>
<display_name>Air Leakage: Value</display_name>
<description>Air exchange rate value.</description>
<description>Air exchange rate value. For 'EffectiveLeakageArea', provide value in sq. in.</description>
<type>Double</type>
<required>true</required>
<model_dependent>false</model_dependent>
Expand Down Expand Up @@ -1265,10 +1307,6 @@
<value>FixedHeater</value>
<display_name>FixedHeater</display_name>
</choice>
<choice>
<value>PackagedTerminalAirConditionerHeating</value>
<display_name>PackagedTerminalAirConditionerHeating</display_name>
</choice>
<choice>
<value>Shared Boiler w/ Baseboard</value>
<display_name>Shared Boiler w/ Baseboard</display_name>
Expand All @@ -1282,7 +1320,7 @@
<argument>
<name>heating_system_fuel</name>
<display_name>Heating System: Fuel Type</display_name>
<description>The fuel type of the heating system. Ignored for ElectricResistance and PackagedTerminalAirConditionerHeating.</description>
<description>The fuel type of the heating system. Ignored for ElectricResistance.</description>
<type>Choice</type>
<required>true</required>
<model_dependent>false</model_dependent>
Expand Down Expand Up @@ -1466,6 +1504,34 @@
</choice>
</choices>
</argument>
<argument>
<name>cooling_system_integrated_heating_system_fuel</name>
<display_name>cooling_system_integrated_heating_system_fuel</display_name>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>cooling_system_integrated_heating_system_efficiency_percent</name>
<display_name>cooling_system_integrated_heating_system_efficiency_percent</display_name>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>cooling_system_integrated_heating_system_capacity</name>
<display_name>cooling_system_integrated_heating_system_capacity</display_name>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>cooling_system_integrated_heating_system_fraction_heat_load_served</name>
<display_name>cooling_system_integrated_heating_system_fraction_heat_load_served</display_name>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>heat_pump_type</name>
<display_name>Heat Pump: Type</display_name>
Expand Down Expand Up @@ -1495,12 +1561,16 @@
<value>packaged terminal heat pump</value>
<display_name>packaged terminal heat pump</display_name>
</choice>
<choice>
<value>room air conditioner with reverse cycle</value>
<display_name>room air conditioner with reverse cycle</display_name>
</choice>
</choices>
</argument>
<argument>
<name>heat_pump_heating_efficiency_type</name>
<display_name>Heat Pump: Heating Efficiency Type</display_name>
<description>The heating efficiency type of heat pump. System types air-to-air and mini-split use HSPF or HSPF2. System types ground-to-air and packaged terminal heat pump use COP.</description>
<description>The heating efficiency type of heat pump. System types air-to-air and mini-split use HSPF or HSPF2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use COP.</description>
<type>Choice</type>
<required>true</required>
<model_dependent>false</model_dependent>
Expand Down Expand Up @@ -1532,7 +1602,7 @@
<argument>
<name>heat_pump_cooling_efficiency_type</name>
<display_name>Heat Pump: Cooling Efficiency Type</display_name>
<description>The cooling efficiency type of heat pump. System types air-to-air and mini-split use SEER or SEER2. System types ground-to-air and packaged terminal heat pump use EER.</description>
<description>The cooling efficiency type of heat pump. System types air-to-air and mini-split use SEER or SEER2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use EER.</description>
<type>Choice</type>
<required>true</required>
<model_dependent>false</model_dependent>
Expand Down Expand Up @@ -1620,6 +1690,13 @@
<model_dependent>false</model_dependent>
<default_value>1</default_value>
</argument>
<argument>
<name>heat_pump_compressor_lockout_temp</name>
<display_name>heat_pump_compressor_lockout_temp</display_name>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>heat_pump_backup_type</name>
<display_name>Heat Pump: Backup Type</display_name>
Expand Down Expand Up @@ -1686,13 +1763,6 @@
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>heat_pump_backup_heating_switchover_temp</name>
<display_name>heat_pump_backup_heating_switchover_temp</display_name>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>heat_pump_backup_heating_lockout_temp</name>
<display_name>heat_pump_backup_heating_lockout_temp</display_name>
Expand Down Expand Up @@ -2466,16 +2536,6 @@
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>water_heater_num_units_served</name>
<display_name>Water Heater: Number of Units Served</display_name>
<description>Number of dwelling units served (directly or indirectly) by the water heater. Must be 1 if single-family detached. Used to apportion water heater tank losses to the unit.</description>
<type>Integer</type>
<units>#</units>
<required>true</required>
<model_dependent>false</model_dependent>
<default_value>1</default_value>
</argument>
<argument>
<name>water_heater_uses_desuperheater</name>
<display_name>water_heater_uses_desuperheater</display_name>
Expand Down Expand Up @@ -3016,6 +3076,13 @@
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>battery_round_trip_efficiency</name>
<display_name>battery_round_trip_efficiency</display_name>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>lighting_present</name>
<display_name>Lighting: Present</display_name>
Expand Down Expand Up @@ -4369,6 +4436,13 @@
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>utility_bill_electricity_filepaths</name>
<display_name>utility_bill_electricity_filepaths</display_name>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>utility_bill_electricity_fixed_charges</name>
<display_name>utility_bill_electricity_fixed_charges</display_name>
Expand Down Expand Up @@ -4531,28 +4605,9 @@
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>schedules_type</name>
<display_name>Schedules: Type</display_name>
<description>The type of occupant-related schedules to use.</description>
<type>Choice</type>
<required>true</required>
<model_dependent>false</model_dependent>
<default_value>smooth</default_value>
<choices>
<choice>
<value>smooth</value>
<display_name>smooth</display_name>
</choice>
<choice>
<value>stochastic</value>
<display_name>stochastic</display_name>
</choice>
</choices>
</argument>
<argument>
<name>schedules_vacancy_period</name>
<display_name>Schedules: Vacancy Period</display_name>
<description>Specifies the vacancy period. Enter a date like "Dec 15 - Jan 15".</description>
<name>schedules_column_names</name>
<display_name>Schedules: Column Names</display_name>
<description>A comma-separated list of the column names to generate. If not provided, defaults to all columns. Possible column names are: occupants, lighting_interior, lighting_exterior, lighting_garage, lighting_exterior_holiday, cooking_range, dishwasher, clothes_washer, clothes_dryer, ceiling_fan, plug_loads_other, hot_water_dishwasher, hot_water_clothes_washer, hot_water_fixtures.</description>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
Expand Down Expand Up @@ -4962,6 +5017,24 @@
<model_dependent>false</model_dependent>
<default_value>auto</default_value>
</argument>
<argument>
<name>water_heater_in_unit</name>
<display_name>Water Heater: In Unit</display_name>
<description>Whether the water heater is in unit.</description>
<type>Boolean</type>
<required>false</required>
<model_dependent>false</model_dependent>
<choices>
<choice>
<value>true</value>
<display_name>true</display_name>
</choice>
<choice>
<value>false</value>
<display_name>false</display_name>
</choice>
</choices>
</argument>
<argument>
<name>heating_system_rated_cfm_per_ton</name>
<display_name>Heating System: Rated CFM Per Ton</display_name>
Expand Down Expand Up @@ -5044,7 +5117,7 @@
<filename>constants.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>231B4F9A</checksum>
<checksum>19BBE8CE</checksum>
</file>
<file>
<version>
Expand All @@ -5055,7 +5128,7 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>F4AF65BB</checksum>
<checksum>F8596409</checksum>
</file>
</files>
</measure>
1 change: 1 addition & 0 deletions measures/ResStockArguments/resources/constants.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ def self.build_residential_hpxml_excludes
'heat_pump_charge_defect_ratio',
'misc_plug_loads_television_annual_kwh',
'misc_plug_loads_television_usage_multiplier',
'water_heater_num_units_served',
'pv_system_num_bedrooms_served',
'occupancy_calculation_type']
end
Expand Down
4 changes: 2 additions & 2 deletions measures/ServerDirectoryCleanup/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.0</schema_version>
<name>server_directory_cleanup</name>
<uid>ec7d04ad-0b7b-495b-825a-e1b6d28d1d3f</uid>
<version_id>04aacca1-a5bc-4a91-9318-a28df1e492eb</version_id>
<version_modified>20230313T221238Z</version_modified>
<version_id>e38a6b69-ba2a-481a-a1b3-9838774ccf54</version_id>
<version_modified>20230315T184743Z</version_modified>
<xml_checksum>5F1EDF75</xml_checksum>
<class_name>ServerDirectoryCleanup</class_name>
<display_name>Server Directory Cleanup</display_name>
Expand Down
Loading