Skip to content

Conversation

@yzhou601
Copy link
Collaborator

@yzhou601 yzhou601 commented Oct 9, 2025

Pull Request Description

Fixes #2009

Checklist

Not all may apply:

  • Schematron validator (EPvalidator.sch) has been updated
  • Sample files have been added/updated (openstudio tasks.rb update_hpxmls)
  • Tests have been added/updated (e.g., HPXMLtoOpenStudio/tests/test*.rb and/or workflow/tests/test*.rb)
  • Documentation has been updated
  • Changelog has been updated
  • openstudio tasks.rb update_measures has been run
  • No unexpected changes to simulation results of sample files

@yzhou601 yzhou601 self-assigned this Oct 9, 2025
@yzhou601 yzhou601 changed the title first cut adding adjustment HPWH COP Adjustment by Relative Volume Oct 9, 2025
@yzhou601 yzhou601 mentioned this pull request Oct 23, 2025
7 tasks
@yzhou601 yzhou601 marked this pull request as ready for review October 23, 2025 21:51
@yzhou601
Copy link
Collaborator Author

@shorowit @jmaguire1
This PR is ready for review, I looked at the results and discussed with Jeff about the decreased heating and increased cooling after reducing COP here. The reason is that lower COP means less heat being extracted from air, while more heat being added by consuming more electricity, so it reduces the amount of cooling being added to the zone, which impacts the HVAC heating/cooling loads. We also verified that the base-dhw-tank-heat-pump-ef.xml shows the same trend on the heating/cooling impact (this test file has a different tank volume so we manually changed it to be the same as base-dhw-tank-heat-pump.xml, and compared them).

Copy link
Collaborator

@jmaguire1 jmaguire1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See individual comments: a few name changes and some additional handling of edge cases suggested.

@jmaguire1
Copy link
Collaborator

jmaguire1 commented Oct 24, 2025

@shorowit: Reviewing this reminded me of a long wish listed improvement for HPWH interaction factor, because if it's in a confined space and this penalty applies we know there's a lot of localized cooling and the interaction factor should be < 1. Last time I talked to Ben Larson about what HPWHSim does he thought is a reasonable confined guess if you have 0 information about the installation location, but HPWHSim still uses 1.0 everywhere.

Maybe we should just start an issue if this is too much for this PR or a follow up PR, but I double checked our implementation of it in the past and it's really simple: we just multiply these two lines in our HPWH internal gains EMS by the interaction factor:

hpwh_zone_heat_gain_program.addLine("Set #{sens_act_actuator.name} = (0 - #{sens_cool_sensor.name} - (#{tl_sensor.name} + #{fan_power_sensor.name})) / #{unit_multiplier}")

Here's what the PNNL lab home testing had:

image

If I were to propose something, we could default to 0.75 (or 1, to preserve our current behavior) and use 0.5 if you're in a confined space based on what PNNL saw in their lab home. It depends on a lot of things we still don't have information on, but we do at least expect if you're in a confined space and this correction applies it's not going to be 1.0 (or the cooling wouldn't be localized enough that we need this adjustment).

@yzhou601
Copy link
Collaborator Author

@shorowit: Reviewing this reminded me of a long wish listed improvement for HPWH interaction factor, because if it's in a confined space and this penalty applies we know there's a lot of localized cooling and the interaction factor should be < 1. Last time I talked to Ben Larson about what HPWHSim does he thought is a reasonable confined guess if you have 0 information about the installation location, but HPWHSim still uses 1.0 everywhere.

Maybe we should just start an issue if this is too much for this PR or a follow up PR, but I double checked our implementation of it in the past and it's really simple: we just multiply these two lines in our HPWH internal gains EMS by the interaction factor:

hpwh_zone_heat_gain_program.addLine("Set #{sens_act_actuator.name} = (0 - #{sens_cool_sensor.name} - (#{tl_sensor.name} + #{fan_power_sensor.name})) / #{unit_multiplier}")

Here's what the PNNL lab home testing had:

image If I were to propose something, we could default to 0.75 (or 1, to preserve our current behavior) and use 0.5 if you're in a confined space based on what PNNL saw in their lab home. It depends on a lot of things we still don't have information on, but we do at least expect if you're in a confined space and this correction applies it's not going to be 1.0 (or the cooling wouldn't be localized enough that we need this adjustment).

I've addressed other comments but this, I felt that we probably need more discussions around this (e.g. what volume to consider what factor to use, definition of confined space?). The equation to calculate relative volume uses 1500cbft as base volume but the standard specifies 1000cbft enclosed space as one of the mitigation, which volume is considered as the definition of confined space? Should we consider implementing it in this PR or with a follow-up issue?

@shorowit
Copy link
Contributor

@jmaguire1 Feel free to make an issue out of that, but I don't want to hold up this work for it. (I am doubtful that it would ever make it into ANSI 301, there was a lot of objections to it. The interaction factor can be wide range of values and is incredibly sensitive to distance between water heater and thermostat, which is an input we don't ask for. If the distance is really small -- e.g., HPWH co-located with HVAC system -- the interaction factor can even be more than 1! I struggle to see how users would have any idea what value to use.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

HPWH adjustment for confined space

3 participants