-
Notifications
You must be signed in to change notification settings - Fork 17
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
base: master
Are you sure you want to change the base?
Conversation
…d on some discussions with Joe. Still need to connect the EMS sensor for WH outlet temperature.
Right now, this method calculates:
Unmet shower energy I feel is the most complete metric, since it accounts for how far off from the desired temperature you are. However, no one really has a sense for if say 2 kWh of unmet showers is too many, so this way you can calculate the % of shower time where loads are unmet. We could also add metrics related to ALL hot water usage, or all fixtures. We'd want to account for the different desired delivered temperature for appliances, but it wouldn't be hard to add metrics like Unmet Energy for all fixtures. |
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.
Some comments while I think of it. Addressing these comments will make it easier to pull in the master branch.
@shorowit: I just did a major refactor of this, no more duplicate code. Thanks for the suggestions. It'd be good to know if you think this is a decent way to organize things at a minimum if/when you have a chance to take a look, we're looking to use this with the 120 V HPWH relatively soon. |
@shorowit: Are there any additional changes that need to be made here? I know this didn't make release, but I think this is largely ready to go? Or are there more changes required before we look at merging this in? |
…o unmet_wh_loads # Conflicts: # HPXMLtoOpenStudio/measure.xml # workflow/tests/base_results/results_simulations_misc.csv
…PXML into unmet_wh_loads
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.
This is looking good to me. I'm going to address a couple comments I'm leaving below, but it should probably be good to merge after that.
Unmet Hours: Cooling (hr) Number of hours where the cooling setpoint is not maintained. | ||
Unmet Hours: Showers (hr) Number of hours where the shower water temperature is less than 105 deg-F. [#]_ |
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.
I discussed with @jmaguire1; this should really say water heater tank outlet temperature, not shower water temperature. I will change this.
key_name: tank.name | ||
) | ||
|
||
program.addLine("If (#{shower_flow_sensor.name} > 0) && (#{wh_temp_sensor.name} < #{mixed_setpoint_sensor.name})") |
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.
After discussing with @jmaguire1... Since we no longer calculate an unmet load, we now only care whether there is a shower for the given timestep. To prevent confusion about how the shower schedule is used (and prevent the need for error-checking if the shower schedule does not correctly jive with the overall fixtures schedule), I'm going to change the shower schedule to be a 0/1 schedule that simply represents the presence of a shower rather than the shower usage.
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.
I'm second-guessing this. If the detailed schedule is hourly, you'd like to use a fraction for how much of the hour there were showers. Also related: #1890
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.
I also wonder if the ShowerUnmetTime
and ShowerTime
variables below should be multiplied by the schedule value, where the schedule value represents how much of the timestep is for showers (stochastic) or the likelihood of showers for a given timestep (non-stochastic).
Need to compare outputs for:
The first two are currently giving very different answers (in hours), I think because of #1890. |
.. [#] Unmet heating/cooling hours reflect the number of hours during the heating/cooling season when the conditioned space temperature deviates more than 0.2 deg-C (0.36 deg-F) from the heating/cooling setpoint. | ||
|
||
.. [#] Unmet showers hours only account for a storage water heater running out of water and occupant discomfort; they do not account for temperature drop due to a distribution system or a tankless water heater's minimum firing rate. | ||
Using simple hourly schedules (rather than detailed/stochastic sub-hourly schedules) may under-represent these values. |
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.
Need to review this once the results are making sense.
…o unmet_wh_loads # Conflicts: # BuildResidentialScheduleFile/measure.xml # HPXMLtoOpenStudio/measure.xml # ReportSimulationOutput/measure.xml
…/OpenStudio-HPXML into unmet_wh_loads # Conflicts: # HPXMLtoOpenStudio/measure.xml # workflow/tests/base_results/results_simulations_misc.csv
Note: I pulled #1896 into here and changed the base branch. |
…o unmet_wh_loads # Conflicts: # BuildResidentialScheduleFile/measure.xml # HPXMLtoOpenStudio/measure.xml # tasks.rb # workflow/tests/base_results/results_simulations_misc.csv
Pull Request Description
Add an EMS program for calculating unmet water heating loads. Focus is on unmet showers, but we can also calculate this for each end use if we wanted to. Addresses #1170.
Checklist
PR Author: Check these when they're done. Not all may apply.
strikethroughand check any that do not apply.PR Reviewer: Verify each has been completed.
Schematron validator (EPvalidator.xml
) has been updatedtasks.rb
)HPXMLtoOpenStudio/tests
and/orworkflow/tests/hpxml_translator_test.rb
)openstudio tasks.rb update_measures
has been run