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

Add unmet water heater loads EMS program #1502

Open
wants to merge 111 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
6335d24
Add unmet loads EMS program
jmaguire1 Oct 4, 2023
e70d0e9
busted by rubocop :)
jmaguire1 Oct 4, 2023
23381f8
First cut at setting up annual unmet water heating loads.
joseph-robertson Oct 5, 2023
ddc558c
Merge branch 'master' into unmet_wh_loads
joseph-robertson Oct 5, 2023
dffe6f6
Wrong direction for sag calculation
jmaguire1 Oct 6, 2023
92c0e97
Some updates to break out showers from "fixtures"
jmaguire1 Oct 12, 2023
4aa4a0c
One more change towards adding showers back in
jmaguire1 Oct 12, 2023
ec8cef2
Add shower column to constants
jmaguire1 Oct 12, 2023
9d3b025
Fix shower schedules for smooth occupancy
jmaguire1 Oct 12, 2023
7658e4f
Still in progress, but: working on restructuring the calculation base…
jmaguire1 Oct 30, 2023
6a8b015
Working again. Still needs some cleanup and review
jmaguire1 Oct 31, 2023
44c4c61
Merge remote-tracking branch 'remotes/origin/master' into unmet_wh_loads
jmaguire1 Oct 31, 2023
c59eaec
Add to changelog, fix merge conflicts, rubocop
jmaguire1 Oct 31, 2023
6d68919
Fix some typos
jmaguire1 Oct 31, 2023
a58dcbf
rename constant for consistency with schedule:file
jmaguire1 Nov 1, 2023
04b94ad
Major refactor of the unmet WH load calculation
jmaguire1 Nov 16, 2023
227138e
Fix unmet energy calc (incorrectly passing shower peak flow rate)
jmaguire1 Dec 4, 2023
e250890
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
jmaguire1 Jan 10, 2024
caae214
remove print statement, rubocop
jmaguire1 Jan 10, 2024
2bae66b
Update some output variable names, add showers to unavailable_periods…
jmaguire1 Jan 17, 2024
3044382
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
jmaguire1 Jan 24, 2024
0379ace
Bit of code cleanup and adding FIXMEs to address.
joseph-robertson Jan 24, 2024
70a9868
Oops, showers_schedule_obj does get used.
joseph-robertson Jan 24, 2024
015383e
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
jmaguire1 Feb 5, 2024
a58ada4
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
jmaguire1 Apr 10, 2024
6421080
oops, missed one update in the merge
jmaguire1 Apr 10, 2024
c4239f0
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
jmaguire1 May 14, 2024
258c28f
Remove total shower time, only output unmet shower time (in hours) an…
jmaguire1 May 14, 2024
921a0f0
oops, missed removing shower time in one spot
jmaguire1 May 14, 2024
dc3a752
Some fixes for unmet showers with multiple WHs.
jmaguire1 May 28, 2024
d513cf4
Clean up EMS a bit, change hot water usage be 0 during outages (helps…
jmaguire1 Jul 23, 2024
309714c
This should actually exclude solar storage tanks from 2 tank systems,…
jmaguire1 Jul 23, 2024
8ed29e1
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
shorowit Jul 23, 2024
1641ec1
Bugfix.
shorowit Jul 23, 2024
6e63c6c
tasks.rb update_hpxmls
shorowit Jul 23, 2024
ca76f23
Some more fixes/cleanup.
shorowit Jul 23, 2024
11d46ea
Bunch of cleanup and test updates.
joseph-robertson Jul 24, 2024
6b630e8
Try a sample file with undersized tank water heater.
joseph-robertson Jul 24, 2024
47a60a4
Remove warning for both shower schedule types provided.
joseph-robertson Jul 24, 2024
b22a027
Update reporting measure with include argument for unmet loads timese…
joseph-robertson Jul 24, 2024
51dbd2e
Update reporting measure test for unmet loads outputs.
joseph-robertson Jul 24, 2024
32fdfdd
Update run_simulation with unmet loads timeseries request option.
joseph-robertson Jul 24, 2024
6def768
Start updating the docs.
joseph-robertson Jul 24, 2024
f0d68ea
Update the changelog entry.
joseph-robertson Jul 24, 2024
7e939bc
Few more fixes and updates.
joseph-robertson Jul 24, 2024
1daadab
Fix comments. [ci skip]
joseph-robertson Jul 24, 2024
1737481
Catch target water temperature warnings for new dhw undersized sample…
joseph-robertson Jul 24, 2024
f28fceb
Minor fix to ems program.
joseph-robertson Jul 24, 2024
44a980a
Update the docs. [ci skip]
joseph-robertson Jul 24, 2024
e6b6ee0
Spaces in ems program and exceptions for 10x checks.
joseph-robertson Jul 24, 2024
7d96e30
Latest results.
Jul 24, 2024
e36fd4e
Change energy annual units to kBtu and timeseries units to Btu.
joseph-robertson Jul 24, 2024
3b38d32
Relax expected results for dhw-undersized.
joseph-robertson Jul 24, 2024
b55a993
Updates due to output name change.
joseph-robertson Jul 25, 2024
d8f0bc2
Latest results.
Jul 25, 2024
20449e9
Clean up loop that finds appropriate tank.
joseph-robertson Jul 25, 2024
624bfd6
Add sample files for undersized tankless, heat pump, and multiple.
joseph-robertson Jul 25, 2024
e572c5f
Refactor unmet loads program for multiple water heaters.
joseph-robertson Jul 25, 2024
f75b4e3
Clean up expected warnings and checks.
joseph-robertson Jul 25, 2024
0fee44d
Typo.
joseph-robertson Jul 25, 2024
4a7a1d1
Expect err and run log warnings.
joseph-robertson Jul 25, 2024
bb41452
Latest results.
Jul 25, 2024
b0ad6ab
Change shower draws to be a % of fixtures (if smooth profiles) based …
jmaguire1 Aug 6, 2024
d70bbe1
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
shorowit Aug 6, 2024
3d506df
Merge branch 'master' into unmet_wh_loads
joseph-robertson Aug 7, 2024
593d488
Try WarmupFlag in program to avoid counting first timestep.
joseph-robertson Aug 7, 2024
c5e21b8
Add unmet loads method for building-level EMS program.
joseph-robertson Aug 7, 2024
992fdb2
Merge branch 'master' into unmet_wh_loads
joseph-robertson Aug 8, 2024
a0288de
Skip building-level EMS program if no water heating systems.
joseph-robertson Aug 8, 2024
169617f
Try changing unit multiplier tolerances.
joseph-robertson Aug 8, 2024
5f5cc93
Latest results.
Aug 8, 2024
45b6200
Merge branch 'master' into unmet_wh_loads
joseph-robertson Aug 13, 2024
6f364b1
Latest results.
Aug 13, 2024
2177b8a
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
jmaguire1 Sep 3, 2024
0c8732a
Oops, messed this up in merging. Might still have to fix one or two m…
jmaguire1 Sep 3, 2024
966f0b8
Update unmet shower program to account for latest OS-HPXML changes
jmaguire1 Sep 3, 2024
354360a
Go back to more generic unmet loads program (rather than unmet shower…
jmaguire1 Sep 3, 2024
773ae8b
missed one "." to "::" for stochastic showers
jmaguire1 Sep 3, 2024
7c878ea
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
jmaguire1 Sep 3, 2024
41105c5
Fix schedules tests to match latest OS-HPXML updates
jmaguire1 Sep 11, 2024
1a905c7
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
jmaguire1 Sep 11, 2024
a529822
Latest results.
Sep 11, 2024
9cccccf
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
shorowit Sep 18, 2024
85145ed
Latest results.
Sep 18, 2024
2b5c158
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
shorowit Sep 24, 2024
cb8ecd8
Latest results.
Sep 24, 2024
2aff460
Merge branch 'master' into unmet_wh_loads
joseph-robertson Sep 25, 2024
442bd58
Updates to sample files and reported outputs.
joseph-robertson Sep 25, 2024
07c650b
Merge branch 'master' into unmet_wh_loads
joseph-robertson Oct 1, 2024
6bc29d5
Clean up new methods and fill out TODOs.
joseph-robertson Oct 1, 2024
82e0153
Get name of the schedule, not the object.
joseph-robertson Oct 1, 2024
42169b2
Avoid divide by zero when no dhw.
joseph-robertson Oct 1, 2024
afadd97
Merge branch 'master' into unmet_wh_loads
joseph-robertson Oct 1, 2024
d1db089
Update reporting measure descriptions and tests.
joseph-robertson Oct 1, 2024
0a7ba8a
Revert stuff in workflow tests util file.
joseph-robertson Oct 1, 2024
1224612
Update the docs. [ci skip]
joseph-robertson Oct 1, 2024
52e9681
Latest results.
Oct 1, 2024
1157fc8
Merge branch 'master' into unmet_wh_loads
joseph-robertson Oct 10, 2024
6df3ec6
Update the changelog.
joseph-robertson Oct 10, 2024
836b259
Latest results.
Oct 10, 2024
be3f8b9
Merge branch 'master' into unmet_wh_loads
joseph-robertson Oct 14, 2024
32d0767
Latest results.
Oct 14, 2024
f862107
Merge branch 'master' into unmet_wh_loads
joseph-robertson Nov 8, 2024
aa6ccf9
Create a second sample file with 1 gal tank and 10-min stochastic sch…
joseph-robertson Nov 8, 2024
5c6d091
Latest results.
Nov 8, 2024
ad147df
Shorten new sample file timestep to 10 min.
joseph-robertson Nov 8, 2024
4584b94
Merge branch 'unmet_wh_loads' of github.com:NREL/OpenStudio-HPXML int…
joseph-robertson Nov 8, 2024
80bf60e
Regenerate 10-min stochastic occupancy csv file.
joseph-robertson Nov 11, 2024
c9b40bb
Latest results.
Nov 11, 2024
2eb401e
Merge branch 'master' into unmet_wh_loads
joseph-robertson Nov 13, 2024
49980a2
Latest results.
Nov 13, 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
2 changes: 1 addition & 1 deletion BuildResidentialScheduleFile/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Absolute/relative path of the HPXML file.

**Schedules: Column Names**

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_garage, cooking_range, dishwasher, clothes_washer, clothes_dryer, ceiling_fan, plug_loads_other, plug_loads_tv, hot_water_dishwasher, hot_water_clothes_washer, hot_water_fixtures.
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_garage, cooking_range, dishwasher, clothes_washer, clothes_dryer, ceiling_fan, plug_loads_other, plug_loads_tv, hot_water_dishwasher, hot_water_clothes_washer, hot_water_fixtures, hot_water_showers.

- **Name:** ``schedules_column_names``
- **Type:** ``String``
Expand Down
12 changes: 6 additions & 6 deletions BuildResidentialScheduleFile/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_residential_schedule_file</name>
<uid>f770b2db-1a9f-4e99-99a7-7f3161a594b1</uid>
<version_id>fac68af6-8045-433e-8eca-df53c8274e61</version_id>
<version_modified>2024-09-29T23:07:27Z</version_modified>
<version_id>748fe082-560c-441d-a26d-c00727ad2422</version_id>
<version_modified>2024-10-01T16:32:57Z</version_modified>
<xml_checksum>03F02484</xml_checksum>
<class_name>BuildResidentialScheduleFile</class_name>
<display_name>Schedule File Builder</display_name>
Expand All @@ -22,7 +22,7 @@
<argument>
<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_garage, cooking_range, dishwasher, clothes_washer, clothes_dryer, ceiling_fan, plug_loads_other, plug_loads_tv, hot_water_dishwasher, hot_water_clothes_washer, hot_water_fixtures.</description>
<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_garage, cooking_range, dishwasher, clothes_washer, clothes_dryer, ceiling_fan, plug_loads_other, plug_loads_tv, hot_water_dishwasher, hot_water_clothes_washer, hot_water_fixtures, hot_water_showers.</description>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
Expand Down Expand Up @@ -116,7 +116,7 @@
<filename>README.md</filename>
<filetype>md</filetype>
<usage_type>readme</usage_type>
<checksum>EB56CA85</checksum>
<checksum>C7FECB9B</checksum>
</file>
<file>
<filename>README.md.erb</filename>
Expand Down Expand Up @@ -229,7 +229,7 @@
<filename>schedules.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>F53FB2CB</checksum>
<checksum>1F02A2CD</checksum>
</file>
<file>
<filename>shower_cluster_size_probability.csv</filename>
Expand Down Expand Up @@ -931,7 +931,7 @@
<filename>test_build_residential_schedule_file.rb</filename>
<filetype>rb</filetype>
<usage_type>test</usage_type>
<checksum>04AE998D</checksum>
<checksum>7E58BBBA</checksum>
</file>
</files>
</measure>
1 change: 1 addition & 0 deletions BuildResidentialScheduleFile/resources/schedules.rb
Original file line number Diff line number Diff line change
Expand Up @@ -542,6 +542,7 @@ def create_stochastic_schedules(args:,
shower_activity_sch = aggregate_array(shower_activity_sch, @minutes_per_step)
shower_peak_flow = shower_activity_sch.max
showers = shower_activity_sch.map { |flow| flow / shower_peak_flow }
@schedules[SchedulesFile::Columns[:HotWaterShowers].name] = showers

random_offset = (prng.rand * 2 * offset_range).to_i - offset_range
sink_activity_sch = sink_activity_sch.rotate(-4 * 60 + random_offset) # 4 am shifting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ def test_stochastic
assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(380, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name))
end

Expand Down Expand Up @@ -149,6 +150,7 @@ def test_stochastic_location_detailed
assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(380, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name))
end

Expand Down Expand Up @@ -188,6 +190,7 @@ def test_stochastic_debug
assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(380, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(3067, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Sleeping].name, schedules: sf.tmp_schedules), @tol)
end

Expand Down Expand Up @@ -227,6 +230,7 @@ def test_random_seed
assert_in_epsilon(288, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(320, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(889, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(386, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name))

@args_hash['schedules_random_seed'] = 2
Expand Down Expand Up @@ -260,6 +264,7 @@ def test_random_seed
assert_in_epsilon(233, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(244, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(1077, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(528, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name))
end

Expand Down Expand Up @@ -298,6 +303,7 @@ def test_10_min_timestep
assert_in_epsilon(146, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(154, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(397, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(142, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name))
end

Expand Down Expand Up @@ -375,6 +381,7 @@ def test_multiple_buildings
assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(380, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name))
elsif hpxml_bldg.building_id == 'MyBuilding_2'
assert_equal(1, hpxml_bldg.header.schedules_filepaths.size)
Expand All @@ -392,6 +399,7 @@ def test_multiple_buildings
assert_in_epsilon(221, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(266, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(894, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(559, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name))
elsif hpxml_bldg.building_id == 'MyBuilding_3'
assert_equal(1, hpxml_bldg.header.schedules_filepaths.size)
Expand All @@ -409,6 +417,7 @@ def test_multiple_buildings
assert_in_epsilon(224, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(209, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(970, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(501, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name))
end
end
Expand Down Expand Up @@ -459,6 +468,7 @@ def test_multiple_buildings_id
assert_in_epsilon(221, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(266, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(894, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol)
assert_in_epsilon(559, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterShowers].name, schedules: sf.tmp_schedules), @tol)
assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name))
else
assert_empty(hpxml_bldg.header.schedules_filepaths)
Expand Down
2 changes: 2 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ __New Features__
- Allows OpenEI URDB tariffs that have $/day fixed charges.
- Updates `openei_rates.zip` with the latest residential utility rates from the [OpenEI U.S. Utility Rate database](https://apps.openei.org/USURDB/).
- Adds a warning if the sum of supply/return duct leakage to outside values is very high.
- Output updates:
- Adds "Unmet Hours: Showers (hr)" and "Unmet Hours: Showers (%)" unmet showers outputs.

__Bugfixes__
- Prevents possible error if only one of FracSensible/FracLatent are provided for a PlugLoad or FuelLoad; **Breaking change**: FracSensible and FracLatent must now be both be provided or omitted.
Expand Down
38 changes: 19 additions & 19 deletions HPXMLtoOpenStudio/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>hpxm_lto_openstudio</name>
<uid>b1543b30-9465-45ff-ba04-1d1f85e763bc</uid>
<version_id>5aefd8b2-8ca9-4699-810c-1dec3fd62d14</version_id>
<version_modified>2024-11-12T22:53:37Z</version_modified>
<version_id>0863cb65-dd3c-4f52-8757-2e0209f58464</version_id>
<version_modified>2024-11-13T21:39:12Z</version_modified>
<xml_checksum>D8922A73</xml_checksum>
<class_name>HPXMLtoOpenStudio</class_name>
<display_name>HPXML to OpenStudio Translator</display_name>
Expand Down Expand Up @@ -207,7 +207,7 @@
<filename>constants.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>22E067E1</checksum>
<checksum>0437DA8D</checksum>
</file>
<file>
<filename>constructions.rb</filename>
Expand Down Expand Up @@ -261,7 +261,7 @@
<filename>data/default_schedules.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>BF708670</checksum>
<checksum>C4F0A0E2</checksum>
</file>
<file>
<filename>data/g_functions/C_configurations_5m_v1.0.json</filename>
Expand Down Expand Up @@ -315,7 +315,7 @@
<filename>data/unavailable_periods.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>EC394126</checksum>
<checksum>D7D5ED83</checksum>
</file>
<file>
<filename>data/zipcode_weather_stations.csv</filename>
Expand Down Expand Up @@ -351,7 +351,7 @@
<filename>hotwater_appliances.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>1EE4897F</checksum>
<checksum>ADD8F065</checksum>
</file>
<file>
<filename>hpxml.rb</filename>
Expand Down Expand Up @@ -453,7 +453,7 @@
<filename>output.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>573B31F4</checksum>
<checksum>1724C4A3</checksum>
</file>
<file>
<filename>psychrometrics.rb</filename>
Expand Down Expand Up @@ -489,49 +489,49 @@
<filename>schedule_files/occupancy-stochastic-10-mins.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>F88479B3</checksum>
<checksum>0B28F13E</checksum>
</file>
<file>
<filename>schedule_files/occupancy-stochastic-30-mins.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>F88479B3</checksum>
<checksum>0B28F13E</checksum>
</file>
<file>
<filename>schedule_files/occupancy-stochastic.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>B0187567</checksum>
<checksum>1493CEFE</checksum>
</file>
<file>
<filename>schedule_files/occupancy-stochastic_2.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>86E85543</checksum>
<checksum>1692CB17</checksum>
</file>
<file>
<filename>schedule_files/occupancy-stochastic_3.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>902A544E</checksum>
<checksum>1203DB0C</checksum>
</file>
<file>
<filename>schedule_files/occupancy-stochastic_4.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>3A0C7E92</checksum>
<checksum>90B65628</checksum>
</file>
<file>
<filename>schedule_files/occupancy-stochastic_5.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>F0FB0913</checksum>
<checksum>51210D0A</checksum>
</file>
<file>
<filename>schedule_files/occupancy-stochastic_6.csv</filename>
<filetype>csv</filetype>
<usage_type>resource</usage_type>
<checksum>B071AE65</checksum>
<checksum>31229F24</checksum>
</file>
<file>
<filename>schedule_files/setpoints-10-mins.csv</filename>
Expand Down Expand Up @@ -591,7 +591,7 @@
<filename>schedules.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>29DAE0EC</checksum>
<checksum>5B66C835</checksum>
</file>
<file>
<filename>simcontrols.rb</filename>
Expand Down Expand Up @@ -627,7 +627,7 @@
<filename>waterheater.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>6F8A18EC</checksum>
<checksum>F4629DAD</checksum>
</file>
<file>
<filename>weather.rb</filename>
Expand All @@ -651,7 +651,7 @@
<filename>in.schedules.csv</filename>
<filetype>csv</filetype>
<usage_type>test</usage_type>
<checksum>61EDE63A</checksum>
<checksum>89D6AFE5</checksum>
</file>
<file>
<filename>test_airflow.rb</filename>
Expand Down Expand Up @@ -729,7 +729,7 @@
<filename>test_schedules.rb</filename>
<filetype>rb</filetype>
<usage_type>test</usage_type>
<checksum>62B8CE90</checksum>
<checksum>7EA1CF61</checksum>
</file>
<file>
<filename>test_simcontrols.rb</filename>
Expand Down
5 changes: 5 additions & 0 deletions HPXMLtoOpenStudio/resources/constants.rb
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,15 @@ module Constants
ObjectTypeRefrigerator = 'fridge'
ObjectTypeRoomAC = 'room ac'
ObjectTypeRoomHP = 'room ac with reverse cycle'
ObjectTypeShowers = 'hot_water_showers'
ObjectTypeSolarHotWater = 'solar hot water'
ObjectTypeTotalAirflowsProgram = 'total airflows program'
ObjectTypeTotalLoadsProgram = 'total loads program'
ObjectTypeUnitHeater = 'unit heater'
ObjectTypeUnmetHoursProgram = 'unmet hours program'
ObjectTypeUnmetShowersProgram = 'unmet showers program'
ObjectTypeUnmetLoadsShowerUnmetTime = 'unmet loads shower unmet time'
ObjectTypeUnmetLoadsShowerTime = 'unmet loads shower time'
ObjectTypeWaterHeater = 'water heater'
ObjectTypeWaterHeaterSetpoint = 'water heater setpoint'
ObjectTypeWaterHeaterAdjustment = 'water heater energy adjustment'
Expand Down Expand Up @@ -248,6 +252,7 @@ module CLT
module UHT
Heating = 'Heating'
Cooling = 'Cooling'
HotWaterShower = 'Showers'
end

# Resilience Types (Constants for output reporting)
Expand Down
3 changes: 3 additions & 0 deletions HPXMLtoOpenStudio/resources/data/default_schedules.csv
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,6 @@ hot_water_recirculation_pump_demand_control,RecirculationPumpWeekendScheduleFrac
hot_water_recirculation_pump_temperature_control,RecirculationPumpWeekdayScheduleFractions,"0.067, 0.072, 0.074, 0.073, 0.069, 0.048, 0.011, 0.003, 0.009, 0.020, 0.030, 0.037, 0.043, 0.047, 0.050, 0.051, 0.044, 0.034, 0.026, 0.026, 0.030, 0.036, 0.045, 0.055",Table C.3(5) of ANSI/RESNET/ICC 301-2022 Addendum C
hot_water_recirculation_pump_temperature_control,RecirculationPumpWeekendScheduleFractions,"0.067, 0.072, 0.074, 0.073, 0.069, 0.048, 0.011, 0.003, 0.009, 0.020, 0.030, 0.037, 0.043, 0.047, 0.050, 0.051, 0.044, 0.034, 0.026, 0.026, 0.030, 0.036, 0.045, 0.055",Table C.3(5) of ANSI/RESNET/ICC 301-2022 Addendum C
hot_water_recirculation_pump,RecirculationPumpMonthlyScheduleMultipliers,"1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0",
hot_water_showers,ShowersWeekdayScheduleFractions,"0.011, 0.005, 0.003, 0.005, 0.014, 0.052, 0.118, 0.117, 0.095, 0.074, 0.06, 0.047, 0.034, 0.029, 0.026, 0.025, 0.03, 0.039, 0.042, 0.042, 0.042, 0.041, 0.029, 0.021",Figure 9 of the `2010 BAHSP <https://www1.eere.energy.gov/buildings/publications/pdfs/building_america/house_simulation.pdf>`_
hot_water_showers,ShowersWeekendScheduleFractions,"0.011, 0.005, 0.003, 0.005, 0.014, 0.052, 0.118, 0.117, 0.095, 0.074, 0.06, 0.047, 0.034, 0.029, 0.026, 0.025, 0.03, 0.039, 0.042, 0.042, 0.042, 0.041, 0.029, 0.021",Figure 9 of the `2010 BAHSP <https://www1.eere.energy.gov/buildings/publications/pdfs/building_america/house_simulation.pdf>`_
hot_water_showers,ShowersMonthlyScheduleMultipliers,"1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0",
Loading