-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Water Heater GEB #483
Water Heater GEB #483
Conversation
…into. Merged in waterheater.rb changes, TODO: wh_measures fixtures use new schedule:file objects for SP and OP mode schedules testing additional unit tests for new features
…r HPWH), some additional merges in to the xml files and a couple other files I missed.
…an adding half of the deadband to the setpoint. More reflective of the actual single sided deadbands seen in residential WHs.
…s, updating SWH test for previous commit (using actual setpoint instead of setpoint + deadband), updating OSMs
dd46caa6fa Get warnings from validation. 98fff08ba2 Merge branch 'master' into build-res-hpxml-v3 d70f82b05a Merge pull request #516 from NREL/ashrae140 ead2599130 Merge pull request #518 from NREL/os310-official e0c349821d Switch to official OS v3.1.0. 02d37af7e4 interior wall area is multiplied by 2. 02f831762f Merge pull request #483 from NREL/schematron_phase_2 9ad572af60 Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML into schematron_phase_2 5a249eb355 Minor changes. d2e478ed1a Merge pull request #513 from NREL/add_schema_version_check 34905e8d4f Slightly different approach to give version error more prominence (rather than one error in a slue of others). 28349096de Add HPXML schamVersion check to schematron validator. Also fixes an error that might occur before schematron validation is executed. db167d1307 Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML into schematron_phase_2 6483d593de Code update. 1d883049a5 Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML into schematron_phase_2 849899a4a6 Merge pull request #512 from NREL/os310-rc3 c0467d080b Merge branch 'master' into os310-rc3 f9ef06e769 Merge pull request #511 from NREL/appliances_remove_999 1538e47e85 Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML into appliances_remove_999 3ec682241c Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML into schematron_phase_2 6d2cb8c05c Test w/ OS 3.1.0-rc3. f82322277b Update tests. 7192ca9c21 Merge pull request #510 from NREL/invalid_datatype_tests e1089a38f2 Cleanup. 2b4277ef0f Missed some files. 2c501f38ca Adds test for invalid data types. 26088c771e Bugfix. 9f539e4392 Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML into schematron_phase_2 514efb9038 Address comments. e8af342989 Fix test_invalid 25e68c5499 Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML into schematron_phase_2 14be068b4e implement the wildcard approach in EPvalidator.xml b0ae7f55ec Place the location of the appliances in one pattern 42b469ee63 Add more warnings f415ec97d5 Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML into schematron_phase_2 a78e937b89 Add an assert to check that every rule has a role attribute 66ed998b04 Bugfix. 00cd3e283f Replace not(foo) assertions with nested rules. 7647ace029 Add warning messages that are inadvertently deleted a95525e4ed Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML into schematron_phase_2 db67c9dc21 Minor change to the role attributes 460ca51c8f Add the @ROLE attribute to EPvalidator.xml 74c6b2619c Fix test_invalid 732aceb210 update measures 545813c288 Add warnings for appliances via sch:report 7586bdd3ce Add test_schematron_asserts_by_alteration to test_validation.rb dde03a604e Replace not(foo) assertions with nested rules. git-subtree-dir: resources/hpxml-measures git-subtree-split: dd46caa6fa21ce03b80c0ec3c3220785b5ee78ed
… but other objects make use of it) - Actually removing the stratified tank, not just the setpoint schedules.
…able setpoint arguments
…o WH-GEB-ToMerge
… into WH-GEB-ToMerge
… to comments from @ejhw
… into WH-GEB-ToMerge
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @jmaguire1 ! This looks good.
- So HPWHs always use the stratified tank model? And non-HPWH tanks use mixed by default?
- When would you recommend using stratified for all tanks? What would the runtime implications be?
@jmaguire1 What was the cause for the small differences in energy? |
# Error checking: make sure the schedule file is an appropriate length and values are valid | ||
# setpoint_hourly = HourlySchedule.new(model, runner, sch_name, dr_schedule_file, 0, false, []) | ||
# setpoint_hourly_array = setpoint_hourly.schedule_array.map { |x| x.to_i } | ||
# setpoint_hourly.schedule.remove | ||
|
||
# year_description = model.getYearDescription | ||
# assumed_year = year_description.assumedYear | ||
# yr_hrs = Constants.NumHoursInYear(year_description.isLeapYear) | ||
# run_period = model.getRunPeriod | ||
# run_period_start = Time.new(assumed_year, run_period.getBeginMonth, run_period.getBeginDayOfMonth) | ||
# run_period_end = Time.new(assumed_year, run_period.getEndMonth, run_period.getEndDayOfMonth, 24) | ||
# sim_hours = (run_period_end - run_period_start) / 3600 | ||
|
||
# year_description = model.getYearDescription | ||
# n_days = Constants.NumDaysInYear(year_description.isLeapYear) | ||
# if (sp_hourly_array.length != sim_hours) and (sp_hourly_array.length != n_days * 24) | ||
# runner.registerError("Hourly water heater setpoint schedule length must equal to a full year") | ||
# return false | ||
# end | ||
# return true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is all of this commented out?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shorowit : I was going to add some additional error checking, got a little stuck getting it working, and left it commented out. I'm actually thinking I'll start a new branch to fix this, then get working on porting all of this code into HPXML.
...rces/measures/ResidentialHotWaterHeaterTankless/tests/ResidentialWaterHeaterTankless_Test.rb
Show resolved
Hide resolved
expected_values = { 'InputCapacity' => 29307107, 'ThermalEfficiency' => 0.754, 'Setpoint' => 125, 'OnCycle' => 7.38, 'OffCycle' => 7.38, 'FuelType' => Constants.FuelTypeGas } | ||
_test_measure('SFD_2000sqft_2story_FB_GRG_UA_3Beds_2Baths_Denver_HPWH.osm', args_hash, expected_num_del_objects, expected_num_new_objects, expected_values, 1) | ||
end | ||
|
||
def test_retrofit_replace_hpwh_scheduled_sp_with_tankless_gas |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When you run this test (and several others), you get this OpenStudio warning:
[utilities.idf.WorkspaceObject] <2> Attempt to write a disconnected WorkspaceObject out to Idf.
This may indicate the code is not operating properly.
@@ -1016,7 +1218,7 @@ def self.get_plant_loop_from_string(model, runner, plantloop_s, unit) | |||
end | |||
|
|||
model.getPlantLoops.each do |plant_loop| | |||
next if plant_loop.name.to_s != plantloop_s | |||
next if pl.name.to_s != plantloop_s |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@afontani Here's the issue.
@shorowit: There's a slight change in the WH setpoint as part of this. What we've been doing since we added deadband control the to the WH is artificially increasing the setpoint slightly (by deadband/2), with the goal of maintaining consistency with what we had in BEopt where the WH always perfectly maintained setpoint in terms of annual energy consumption. But it's not what actually happens with real WHs and it's confusing for a user to be specifying a setpoint schedule and seeing in the results that they're getting a slightly higher setpoint, so I made a change so that the WH setpoint is just the WH setpoint, with no increase. This leads to the slight decrease in WH energy consumption and some small second order impacts on HVAC due to changes in tank losses. |
@shorowit Where can I see the diff in energy? Is it this file b7c7d41 ? @jmaguire1 I'm not seeing the setpoint change in options_lookup. Is that happening behind the scenes? Is it just for stratified tank or all WHs? |
I've been looking at https://github.com/NREL/resstock/actions/runs/1046573826 , in the comparisons zip file there's a results_output.csv. That has the delta between develop and this branch in there, and the results are consistent with what I'd expect (a slight decrease in WH energy consumption based on the slightly lower sepoint temperature) |
@jmaguire1 Thanks, so if I'm looking at this right (dividing by base), it's ~1% decrease across those samples for both elec and gas WHs. |
I think the setpoint code change is appropriate -- for a given setpoint value, this is how a water heater behaves. However, I've always wondered if, when we talk about a 125F or 130F number, that really represents A) the water heater setpoint or B) an average measured temperature from the field. If the latter, then we would really want to modify our assumed setpoint value in conjunction with the code change and the results would be unchanged. @jmaguire1 Any idea here? |
@shorowit: It's much more A, but when we're using a mixed tank you're fully averaging the tank temperature which has some impact on the energy consumption compared to real tanks. Average tank temperature in the field/lab is always lower than the setpoint since there's a 10 F single sided deadband for most water heaters (so if you're set to 125 F, temperature by the sensor drops to 115 F before the heater kicks on, then it reheats to 125 F) One of the things added in this PR was adding in the functionality to use stratified tank models, but I think with this E+ version we're not fully prepared to leverage the runtime updates Noel and I worked on. So the plan going forward when we port this to HPXML would be to switch to stratified tank models as the default, at least for ResStock use cases, which will have some additional energy consumption impacts. |
Thanks @jmaguire1. FYI, we are quite close to updating ResStock to the latest EnergyPlus version. |
Addresses #[issue number here].
Pull Request Description
Companion PR: https://github.com/NREL/resstock-estimation/pull/150
Adding in new GEB related features, including:
In addition to these GEB features, a few new HPWH options, corresponding the AO Smith's current product line, are added to options lookup as potential upgrade options.
Checklist
Not all may apply:
project_testing
project_testing
runs without any failuresFor more information on how to perform these checklist items, see the documentation's Advanced Tutorial.