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

Heating and Cooling Unavailable Days #1254

Merged
merged 77 commits into from
Sep 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
e4a1a0f
Stub heating and cooling season tsvs for testing project.
joseph-robertson Jun 6, 2024
aab1b00
Update the options lookup.
joseph-robertson Jun 6, 2024
5db1352
Update resstockarguments to set seasons based on sampled options.
joseph-robertson Jun 6, 2024
fd797b2
Try new tsvs in national project.
joseph-robertson Jun 7, 2024
8844296
Re-shuffle samples.
joseph-robertson Jun 7, 2024
c02be44
Re-shuffle samples again.
joseph-robertson Jun 10, 2024
91a15be
Merge branch 'res-reporting' into hvac-seasons
joseph-robertson Jun 13, 2024
685126f
Stub methods for selecting subset n-day periods within BA seasons.
joseph-robertson Jun 13, 2024
c2d1e2c
Finish methods for selecting subset n-day periods within BA seasons.
joseph-robertson Jun 14, 2024
2d629f2
Make resstockarguments building_id optional so integrity checks pass.
joseph-robertson Jun 14, 2024
c53b02c
Pass runner through in seasons method.
joseph-robertson Jun 14, 2024
b31f7b8
Try removing method name overlap just in case.
joseph-robertson Jun 14, 2024
458865f
Check if epw_path not found.
joseph-robertson Jun 15, 2024
65ec9c7
Debug statement.
joseph-robertson Jun 15, 2024
407d17c
Refactor a bit.
joseph-robertson Jun 15, 2024
9734d54
Debug statements.
joseph-robertson Jun 15, 2024
36254a7
More debug statements.
joseph-robertson Jun 17, 2024
103019e
Debug statements.
joseph-robertson Jun 17, 2024
229105d
Debug.
joseph-robertson Jun 17, 2024
f1b7784
Debug.
joseph-robertson Jun 17, 2024
c24823b
Debug.
joseph-robertson Jun 17, 2024
af9fba0
Try creating epw_file before loading other measures.
joseph-robertson Jun 17, 2024
9b1b17b
Clean up debug, and deal with latitude.
joseph-robertson Jun 17, 2024
5e59623
Missed the basename line.
joseph-robertson Jun 17, 2024
4fb923a
Shorten begin days array.
joseph-robertson Jun 18, 2024
cdb4e1d
Update data dictionary.
joseph-robertson Jun 18, 2024
e9c8943
Temporarily comment out another test.
joseph-robertson Jun 18, 2024
b9d82d9
Add options saturations and source reports.
joseph-robertson Jun 21, 2024
5df5ca3
Report season periods and update data dictionary.
joseph-robertson Jun 21, 2024
3642e32
Latest results.
Jun 21, 2024
4d556b4
Merge branch 'res-reporting' into hvac-seasons
joseph-robertson Jul 16, 2024
8b1e89c
Replace tsv files and update resstockarguments measure.
joseph-robertson Jul 16, 2024
9cb9415
Update the inputs data dictionary.
joseph-robertson Jul 16, 2024
7e630e1
Set 1-day seasons in winter or summer for year round unavailability.
joseph-robertson Jul 17, 2024
3c04b2b
Merge branch 'develop' into hvac-seasons
joseph-robertson Jul 23, 2024
fa336f5
Apply HVAC season energy use warning to national project.
joseph-robertson Jul 23, 2024
3a9333d
Latest results.
Jul 24, 2024
a466124
Merge branch 'develop' into hvac-seasons
joseph-robertson Jul 25, 2024
ec63969
Updates for weather class refactor.
joseph-robertson Jul 25, 2024
f6cae0d
Latest results.
Jul 25, 2024
0c717f0
Try the approach of removing heating or cooling system.
joseph-robertson Jul 25, 2024
c0cbc1b
Support for when BA seasons are no months, e.g., HI.
joseph-robertson Jul 26, 2024
e89bba7
Placeholder lines for switching feature off. [ci skip]
joseph-robertson Jul 29, 2024
e90bab4
Refactor since heating and cooling is duplicate code.
joseph-robertson Jul 29, 2024
699fdaf
More refactoring. [ci skip]
joseph-robertson Jul 29, 2024
16654d8
Hardcode peak season when no BA season.
joseph-robertson Jul 30, 2024
bf422b3
Merge branch 'develop' into hvac-seasons
joseph-robertson Aug 20, 2024
060bd38
Sync new project testing tsvs and revert commented tests.
joseph-robertson Aug 20, 2024
94677c8
Revert setting heating or cooling system to none for year round unava…
joseph-robertson Aug 20, 2024
8a0c0a7
Pass building_id into ResStockArguments from ApplyUpgrade.
joseph-robertson Aug 21, 2024
580dda0
Latest results.
Aug 21, 2024
cfbcdc1
Add a changelog entry. [ci skip]
joseph-robertson Aug 21, 2024
ee7b775
Update the changelog entry. [ci skip]
joseph-robertson Aug 21, 2024
48051b1
Merge branch 'develop' into hvac-seasons
joseph-robertson Aug 27, 2024
bc94eb1
Address review comments.
joseph-robertson Aug 27, 2024
fb56e1c
Add arguments_to_exclude to ApplyUpgrade.
joseph-robertson Aug 27, 2024
4693ce1
Update inputs dictionary after name changes.
joseph-robertson Aug 28, 2024
9d1380a
Latest results.
Aug 28, 2024
5b3798c
Merge branch 'develop' into hvac-seasons
joseph-robertson Sep 4, 2024
c3a1c13
Latest results.
Sep 4, 2024
cc9edb9
Merge branch 'develop' into hvac-seasons
joseph-robertson Sep 4, 2024
fc9f821
Merge branch 'hvac-seasons' of github.com:NREL/resstock into hvac-sea…
joseph-robertson Sep 4, 2024
9f1e62a
Update BuildingAmerica as constant.
joseph-robertson Sep 4, 2024
dd9d829
Another constants refactor update in ApplyUpgrade.
joseph-robertson Sep 4, 2024
d75004f
More constants refactoring updates in ResStockArguments.
joseph-robertson Sep 5, 2024
cf1b354
Latest results.
Sep 5, 2024
e0e05a3
Merge branch 'latest-os-hpxml' into hvac-seasons
joseph-robertson Sep 18, 2024
8de4040
Switch to using unavailability period arguments.
joseph-robertson Sep 18, 2024
751c2bc
Latest results.
Sep 18, 2024
b242dec
Sync TSVs. This also brings in some changes from resstock develop.
afontani Sep 24, 2024
2db6fc9
Merge branch 'latest-os-hpxml' into hvac-seasons
joseph-robertson Sep 25, 2024
918149b
Add Void option for Cooling Unavailable Days in lookup.
joseph-robertson Sep 25, 2024
ebed098
Merge branch 'latest-os-hpxml' into hvac-seasons
joseph-robertson Sep 25, 2024
2d6b9e7
Latest results.
Sep 25, 2024
9da5229
Merge branch 'develop' into hvac-seasons
joseph-robertson Sep 26, 2024
53aab90
Test with unavailable days set to zero.
joseph-robertson Sep 26, 2024
0ea70cc
Latest results.
Sep 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions docs/read_the_docs/source/changelog/changelog_dev.rst
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,19 @@ Development Changelog
OpenStudio-HPXML: `pull request 1690 <https://github.com/NREL/OpenStudio-HPXML/pull/1690>`_, `pull request 1775 <https://github.com/NREL/OpenStudio-HPXML/pull/1775>`_

Assignees: Joe Robertson


.. change::
:tags: workflow, hvac, feature
:pullreq: 1254

**Date**: 2024-09-218

Title:
Heating and Cooling Unavailable Days

Description:
The purpose of this PR is to account for dwelling units whose HVAC system (heating/cooling) is unavailable for some number of days during the year (per RECS 2020).
Specifically, this PR modifies HVAC heating/cooling seasons using number of unavailable days and BAHSP definition for heating/cooling months.

Assignees: Joe Robertson
179 changes: 179 additions & 0 deletions docs/read_the_docs/source/workflow_inputs/characteristics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6149,6 +6149,89 @@ From ``project_national`` the list of options, option stock sturation, and optio
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

.. _cooling_unavailable_days:

Cooling Unavailable Days
------------------------

Description
***********

Number of days in a year the cooling system is unavailable.

Created by
**********

``sources/recs/recs2020/tsv_maker.py``

Source
******

- \U.S. EIA 2020 Residential Energy Consumption Survey (RECS) microdata.


Arguments
*********

.. list-table::
:header-rows: 1
:stub-columns: 1

* - Name
- Required
- Units
- Type
- Choices
- Description
* - ``schedules_space_cooling_unavailable_days``
- false
-
- Integer
-
- Number of days space cooling equipment is unavailable.

Options
*******

From ``project_national`` the list of options, option stock sturation, and option arguments for the **Cooling Unavailable Days** characteristic.

.. list-table::
:header-rows: 1
:stub-columns: 1
:widths: auto

* - Option name
- Stock saturation
- ``schedules_space_cooling_unavailable_days``

* - 1 day
- 0.64%
- 1
* - 1 month
- 0.95%
- 30
* - 1 week
- 0.87%
- 7
* - 2 weeks
- 0.74%
- 14
* - 3 days
- 1.1%
- 3
* - 3 months
- 0.61%
- 90
* - Never
- 95%
- 0
* - Year round
- 0.23%
- 365
* - Void
- 0%
-

.. _corridor:

Corridor
Expand Down Expand Up @@ -42078,6 +42161,102 @@ From ``project_national`` the list of options, option stock sturation, and optio
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

.. _heating_unavailable_days:

Heating Unavailable Days
------------------------

Description
***********

Number of days in a year the heating system is unavailable

Created by
**********

``sources/recs/recs2020/tsv_maker.py``

Source
******

- \U.S. EIA 2020 Residential Energy Consumption Survey (RECS) microdata.


Assumption
**********

- \Where samples are less than 10, the data is aggregated in the following order until there are no rows with less than 10 samples:

- \1. The Federal Poverty Level dependency is aggregated every 100%

- \2. The Federal Poverty Level dependency is aggregated every 200%

- \3. The Geometry Building Type RECS dependency is aggregated into SF, MF, and MH bins.

- \4. The Cooling Unavailable Days dependency is aggregated into Days, Weeks, Month, and All Year bins.

- \5. The Cooling Unavailable Days dependancy is removed.


Arguments
*********

.. list-table::
:header-rows: 1
:stub-columns: 1

* - Name
- Required
- Units
- Type
- Choices
- Description
* - ``schedules_space_heating_unavailable_days``
- false
-
- Integer
-
- Number of days space heating equipment is unavailable.

Options
*******

From ``project_national`` the list of options, option stock sturation, and option arguments for the **Heating Unavailable Days** characteristic.

.. list-table::
:header-rows: 1
:stub-columns: 1
:widths: auto

* - Option name
- Stock saturation
- ``schedules_space_heating_unavailable_days``

* - 1 day
- 0.82%
- 0
* - 1 month
- 0.35%
- 30
* - 1 week
- 0.62%
- 7
* - 2 weeks
- 0.43%
- 14
* - 3 days
- 1.1%
- 3
* - 3 months
- 0.36%
- 90
* - Never
- 96%
- 0
* - Year round
- 0.24%
- 365

.. _holiday_lighting:

Holiday Lighting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ build_existing_model.clothes_washer_presence,:ref:`clothes_washer_presence`
build_existing_model.clothes_washer_usage_level,:ref:`clothes_washer_usage_level`
build_existing_model.cooking_range,:ref:`cooking_range`
build_existing_model.cooking_range_usage_level,:ref:`cooking_range_usage_level`
build_existing_model.cooling_unavailable_days,:ref:`cooling_unavailable_days`
build_existing_model.cooling_setpoint,:ref:`cooling_setpoint`
build_existing_model.cooling_setpoint_has_offset,:ref:`cooling_setpoint_has_offset`
build_existing_model.cooling_setpoint_offset_magnitude,:ref:`cooling_setpoint_offset_magnitude`
Expand Down Expand Up @@ -64,6 +65,7 @@ build_existing_model.geometry_wall_type,:ref:`geometry_wall_type`
build_existing_model.ground_thermal_conductivity,:ref:`ground_thermal_conductivity`
build_existing_model.has_pv,:ref:`has_pv`
build_existing_model.heating_fuel,:ref:`heating_fuel`
build_existing_model.heating_unavailable_days,:ref:`heating_unavailable_days`
build_existing_model.heating_setpoint,:ref:`heating_setpoint`
build_existing_model.heating_setpoint_has_offset,:ref:`heating_setpoint_has_offset`
build_existing_model.heating_setpoint_offset_magnitude,:ref:`heating_setpoint_offset_magnitude`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ build_existing_model.utility_bill_wood_marginal_rates,"Wood utility bill margina
build_existing_model.weather_file_city,City from the EPW weather file.
build_existing_model.weather_file_latitude,Latitude from the EPW weather file.
build_existing_model.weather_file_longitude,Longitude from the EPW weather file.
build_existing_model.heating_unavailable_period,Heating unavailable period.
build_existing_model.cooling_unavailable_period,Cooling unavailable period.
apply_upgrade.applicable,The measure was applied to the workflow.
apply_upgrade.upgrade_name,User-specificed name that describes the upgrade.
apply_upgrade.reference_scenario,The upgrade_name which should act as a reference to this upgrade to calculate savings.
Expand Down
3 changes: 2 additions & 1 deletion measures/ApplyUpgrade/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ def run(model, runner, user_arguments)
end

# Run the ResStockArguments measure
measures['ResStockArguments'][0]['building_id'] = values['building_id']
if not apply_measures(measures_dir, { 'ResStockArguments' => measures['ResStockArguments'] }, resstock_arguments_runner, model, true, 'OpenStudio::Measure::ModelMeasure', 'upgraded.osw')
register_logs(runner, resstock_arguments_runner)
return false
Expand Down Expand Up @@ -334,7 +335,7 @@ def run(model, runner, user_arguments)
# Assign ResStockArgument's runner arguments to BuildResidentialHPXML
resstock_arguments_runner.result.stepValues.each do |step_value|
value = get_value_from_workflow_step_value(step_value)
next if value == ''
next if value == '' || Constants::ArgumentsToExclude.include?(step_value.name)

measures['BuildResidentialHPXML'][0][step_value.name] = value
end
Expand Down
6 changes: 3 additions & 3 deletions measures/ApplyUpgrade/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.1</schema_version>
<name>apply_upgrade</name>
<uid>33f1654c-f734-43d1-b35d-9d2856e41b5a</uid>
<version_id>8fe95f7c-bc5a-4a5b-aa24-1611990427b9</version_id>
<version_modified>2024-09-03T16:10:53Z</version_modified>
<version_id>e0b6d3af-6941-45e2-8627-9d8f568ebe1a</version_id>
<version_modified>2024-09-04T23:38:38Z</version_modified>
<xml_checksum>9339BE01</xml_checksum>
<class_name>ApplyUpgrade</class_name>
<display_name>Apply Upgrade</display_name>
Expand Down Expand Up @@ -6342,7 +6342,7 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>4AF2BD8F</checksum>
<checksum>8E47BE40</checksum>
</file>
<file>
<filename>constants.rb</filename>
Expand Down
3 changes: 2 additions & 1 deletion measures/BuildExistingModel/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,7 @@ def run(model, runner, user_arguments)

# Run the ResStockArguments measure
resstock_arguments_runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new) # we want only ResStockArguments registered argument values
measures['ResStockArguments'][0]['building_id'] = args[:building_id]
if not apply_measures(measures_dir, { 'ResStockArguments' => measures['ResStockArguments'] }, resstock_arguments_runner, model, true, 'OpenStudio::Measure::ModelMeasure', 'existing.osw')
register_logs(runner, resstock_arguments_runner)
return false
Expand Down Expand Up @@ -364,7 +365,7 @@ def run(model, runner, user_arguments)
resstock_arguments_runner.result.stepValues.each do |step_value|
value = get_value_from_workflow_step_value(step_value)
register_value(runner, step_value.name, value) if Constants::ArgumentsToRegister.include?(step_value.name)
next if value == ''
next if value == '' || Constants::ArgumentsToExclude.include?(step_value.name)

measures['BuildResidentialHPXML'][0][step_value.name] = value
end
Expand Down
6 changes: 3 additions & 3 deletions measures/BuildExistingModel/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.1</schema_version>
<name>build_existing_model</name>
<uid>dedf59bb-3b88-4f16-8755-2c1ff5519cbf</uid>
<version_id>3aadffec-f1e9-43bd-8b0b-d7eb3d573c50</version_id>
<version_modified>2024-09-04T15:18:43Z</version_modified>
<version_id>be99be23-ddd9-49c4-804a-cb9853764e3e</version_id>
<version_modified>2024-09-04T21:01:10Z</version_modified>
<xml_checksum>2C38F48B</xml_checksum>
<class_name>BuildExistingModel</class_name>
<display_name>Build Existing Model</display_name>
Expand Down Expand Up @@ -349,7 +349,7 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>9C118034</checksum>
<checksum>18614B0C</checksum>
</file>
</files>
</measure>
33 changes: 33 additions & 0 deletions measures/ResStockArguments/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5167,6 +5167,17 @@ Multiplier on the permanent spa heater energy usage that can reflect, e.g., high

<br/>

**Building Unit ID**

The building unit number (between 1 and the number of samples).

- **Name:** ``building_id``
- **Type:** ``Integer``

- **Required:** ``false``

<br/>

**Schedules: Vacancy Periods**

Specifies the vacancy periods. Enter a date like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24). If multiple periods, use a comma-separated list.
Expand Down Expand Up @@ -5200,6 +5211,28 @@ The availability of the natural ventilation schedule during the power outage per

<br/>

**Schedules: Space Heating Unavailability**

Number of days space heating equipment is unavailable.

- **Name:** ``schedules_space_heating_unavailable_days``
- **Type:** ``Integer``

- **Required:** ``false``

<br/>

**Schedules: Space Cooling Unavailability**

Number of days space cooling equipment is unavailable.

- **Name:** ``schedules_space_cooling_unavailable_days``
- **Type:** ``Integer``

- **Required:** ``false``

<br/>

**Geometry: Unit Conditioned Floor Area Bin**

E.g., '2000-2499'.
Expand Down
Loading