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

Steam Turbine with wet expansion #602

Open
wants to merge 15 commits into
base: dev
Choose a base branch
from
Open

Conversation

tlmerbecks
Copy link
Contributor

@tlmerbecks tlmerbecks commented Jan 24, 2025

General

With this PR I would like to submit a new turbine component, which accounts for wet expansion effects using the empirical Baumann correlation.

The expansion of saturated steam (e.g. geothermal or nuclear power applications) inevitably enters the vapour dome and two-phase effects lead to a reduction in the isentropic efficiency. The empirical Baumann rule effectively corrects the dry isentropic turbine efficiency with the average wetness across the turbine.

  • Implementation of the SteamTurbine component. I chose to make this a separate component (inheriting from Turbine) to avoid confusion - though the SteamTurbine behaves exactly like a Turbine unless the eta_dry_s attribute is set
  • Updated the CoolPropWrapper Q_ph function so that it now returns a meaningful value for Q when the fluid is single phase (i.e. 0.0 for liquid and 1.0 for vapour)

Documentation

This is still work in progress... I was not quite sure what would be the mvp for this

Testing

This is still work in progress... I was thinking to shadow the testing for the regular Turbine component

Comments and suggestions are welcome :)

@pep8speaks
Copy link

pep8speaks commented Jan 24, 2025

Hello @tlmerbecks! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 38:80: E501 line too long (86 > 79 characters)
Line 41:80: E501 line too long (80 > 79 characters)
Line 115:80: E501 line too long (80 > 79 characters)

Line 267:13: E124 closing bracket does not match visual indentation

Line 241:80: E501 line too long (90 > 79 characters)

Comment last updated at 2025-01-26 15:19:14 UTC

@fwitte
Copy link
Member

fwitte commented Jan 26, 2025

Good day Tristan, and nice to see your suggestions! I will have a closer look later today and give you feedback on the implementation. Best!

hsat = h_mix_pQ(psat, 1, inl.fluid_data)

return hout - hsat
frac = brentq(find_sat, 1, 0)
Copy link
Member

Choose a reason for hiding this comment

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

This makes two expansion sections, right? The first one by finding the pressure, where the expansion enters the dome, then the second one for the rest: The first one applies dry isentropic efficiency, the second one with the correction term?

Copy link
Member

Choose a reason for hiding this comment

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

I did some benchmark with brentq vs. newton algorithm: scipy's brentq is faster by ~factor 3. I will have to look into the fluid property module (and in all other places), where the newton is utilized and see if brentq generally performs better :D.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Correct, the "wetness" correction is only applied in the two-phase region, for single phase vapour no correction is applied.

So if the vapour is superheated, we first have to find the point where the expansion enters the vapour dome.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Regarding Brentq, I performs particularly well if the solution is bracketed, or you know that the function is not necessarily computable for all conditions.

@tlmerbecks
Copy link
Contributor Author

@fwitte I have looked through the changes and agree with the simplification of the residual and the introduction of the calc_eta_s function.

I'll have a look at the remaining tests that are still failing later.

Is there anything else you would like to see added/implemented for this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants