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

Allow Modeling Two Speed & Var Speed Geothermal Heat Pumps #1878

Draft
wants to merge 19 commits into
base: master
Choose a base branch
from

Conversation

yzhou601
Copy link
Collaborator

@yzhou601 yzhou601 commented Nov 8, 2024

Pull Request Description

Allow optional compressor type inputs to be specified. Allow modeling two and variable speed geothermal heat pumps.

  • Calculate two speed system performance curve coefficients from catalog data, using E+ CurveFitTool.
  • Add two speed ghp system model to OS-HPXML
  • Calculate variable speed system performance curve coefficients from catalog data, using E+ CurveFitTool.
  • Add variable speed ghp system model to OS-HPXML
  • Default number of speeds based on efficiency

Checklist

Not all may apply:

  • Schematron validator (EPvalidator.xml) 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 Nov 8, 2024
# Recoverable heat modifier as a function of indoor wet-bulb and water entering temperatures.
waste_heat_ft = Model.add_curve_biquadratic(
model,
name: "WastHeat-FT#{i + 1}",
Copy link
Collaborator

Choose a reason for hiding this comment

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

"WasteHeat" (I think there's a typo, missing the "e")

@yzhou601
Copy link
Collaborator Author

yzhou601 commented Dec 13, 2024

Update: Performance curve coefficients for two speed systems are completed.

@yzhou601 yzhou601 added the enhancement New feature or request label Dec 13, 2024
coeff: [1, 0, 0],
min_x: 0, max_x: 1, min_y: 0.7, max_y: 1
)
clg_coil = OpenStudio::Model::CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit.new(model, plf_fplr_curve)
Copy link
Contributor

@shorowit shorowit Dec 27, 2024

Choose a reason for hiding this comment

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

Be sure to audit the code for references to e.g. CoilCoolingWaterToAirHeatPumpEquationFit. I'm seeing at least two places in our code (installation quality EMS program and desuperheaters) that presumably need to be updated.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

We talked about desuperheaters, the variable speed coil type is not yet supported by E+ to be connected with desuperheater, so we may have to temporarily ignore that feature (and document that only single speed gshp is currently supported).

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@shorowit @afontani The E+ IO freeze for March release is 2/12, is it still possible to add this capability to Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit for the upcoming release? There're 12 open PR for the E+ team to review before 2/12, so I'm not sure if it's possible to add this one and get someone's review. Also the date is overlapping with the two speed/var speed tasks (plan to be wrapped up before end of Feb). Is it fine if we prioritize the two/var speed system work, then if we still get some space we can add the capability to the E+ Oct release?

We can explicitly document that the 2/var speed is not currently supporting desuperheater, and if user still needs to model it, the workaround will be specifying a single speed system (instead of defaulting based on efficiency, or specifying it as two/var speed systems) with desuperheater, which will be handled in the same way as before.

Copy link
Contributor

@shorowit shorowit Jan 10, 2025

Choose a reason for hiding this comment

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

It seems like it should be easy to review and there are many possible reviewers, I wouldn't worry about that.

As far as I'm aware, you are allowed to just make the IDD change before the IO freeze and complete the implementation later. So that could give you another 4-6 weeks? You could confirm by asking Edwin or Mike.

Documenting that we are introducing a breaking change is not a great solution. For a downstream software tool (like REM), it could be a lot of work -- adding a new compressor type input in their user interface for GSHPs, adding logic when there's a desuperheater, etc. And their user would get different heating/cooling results based on whether there is a desuperheater or not? That's confusing.

In my opinion, either we make it a non-breaking change or we defer this for a subsequent OS-HPXML release.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It seems like it should be easy to review and there are many possible reviewers, I wouldn't worry about that.

As far as I'm aware, you are allowed to just make the IDD change before the IO freeze and complete the implementation later. So that could give you another 4-6 weeks? You could confirm by asking Edwin or Mike.

Documenting that we are introducing a breaking change is not a great solution. For a downstream software tool (like REM), it could be a lot of work -- adding a new compressor type input in their user interface for GSHPs, adding logic when there's a desuperheater, etc. And their user would get different heating/cooling results based on whether there is a desuperheater or not? That's confusing.

In my opinion, either we make it a non-breaking change or we defer this for a subsequent OS-HPXML release.

The IDD change before IO freeze and implement later sounds interesting, I'm fine with that, assuming we'll wrap up most of the 2/var speed system OS-HPXML changes before that. Do you mean that it's better to wait for the E+ release and this PR is non-breaking then we can merge it? @afontani Is it fine to do so? The E+ release is end of March, so probably the merge will be early April, but we can still have most functions being implemented so that ResStock can test the batch runs based on this branch.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Another thought to make it non-breaking to merge early. So what about if we exclude the efficiency-based defaulting for now, and always default the compressor type to be single speed, and when the E+ capability is added then we add the efficiency-based defaulting approach?

Copy link
Contributor

Choose a reason for hiding this comment

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

That seems like a great idea/compromise to me!

…ed conditions, added more inputs, a few questions, store progress
@@ -2807,23 +2807,37 @@ def self.apply_hvac_equipment_adjustments(mj, runner, hvac_sizings, weather, hva

gshp_coil_bf = 0.0806
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

We can look at E+ bypass factor calculations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: In progress
Development

Successfully merging this pull request may close these issues.

3 participants