How to calculate the thermal efficiency of an Ideal Rankine Cycle with a feed-water heater
The content of this post is based on the video:
The problem
Consider a regenerative cycle using steam as the working fluid. Steam leaves the boiler and enters the turbine at 4 MPa, 400C. After expansion to 400 kPa, some of the steam is extracted from the turbine to heat the feed-water heater in an open FWH. The pressure in the FWH is 400 kPa, and the water leaving it is saturated liquid at 400 kPa. The steam not extracted expands to 10 kPa. Determine the cycle efficiency.
Looking at the mass flow of steam entering and exiting the turbine:
and thus the mass flow at point 6 can be written as a function of the mass flow at point 5:
Similarly the mass flow at point 7 can be written as:
and
Initiate PYroMat and configure its units:
import pyromat as pm
import numpy as nppm.config[“unit_pressure”] = “kPa”
pm.config[“def_p”] = 100mp_water = pm.get(“mp.H2O”) # ← for multi-phase water properties
To solve this problem we consider a control surface around the pump, the boiler, the turbine, and the condenser.
First, let us consider the low pressure pump:
p1 = 10 # ← given
p2 = 400 # ← givenv1 = 1/mp_water.ds(p=p1)[0]w_pump1 = v1*(p2-p1)
h2 = h1+w_pump1
print(f”Work required by pump 1: {round(float(w_pump1),1)} kJ/kg”)
```cmd
Work required by pump 1: 0.4 kJ/kg
```
Work required by pump 1 is calculated as 0.4 kJ/kg
Next, let’s consider the turbine:
p5 = 4000 # ← given
T5 = 400+273.15 # K ← given
h5 = mp_water.h(p=p5, T=T5)
s5 = mp_water.s(p=p5, T=T5)s6 =s5
p6 = 400 # ← given
T6, x6 = mp_water.T_s(s=s6, p=p6, quality=True)
h6 = mp_water.h(x=x6, p=p6)print(f”Quality of bled steam: {round(float(x6),4)}”)
The quality of bled steam is calculated as 0.9757.
Now, let’s consider the feed-water heater:
p3 = 400 # ← given
h3 = mp_water.hs(p=p3)[0]
The energy conservation equation for the FWH is:
This can be re-arranged to solve $y$ explicitly:
y = (h2-h3)/(h2-h6)
print(f”y = {round(float(y),4)}”)
With a value for y calculated as 0.1654
We can now calculate the work extracted by the turbine:
p7 = p1
s7 = s5
T7, x7 = mp_water.T_s(s=s7, p=p7, quality=True)
h7 = mp_water.h(x=x7, p=p7)
w_t = h5 — y*h6 — (1-y)*h7
print(f”Work generated by turbine: {round(float(w_t),1)} kJ/kg”)
The work generated by the turbine is 980.4 kJ/kg.
Next, let’s consider the high pressure pump:
p4 = 4000 # ← given
v3 = 1/mp_water.ds(p=p3)[0]
w_pump2 = v3*(p4-p3)
print(f”Work required by pump 2: {round(float(w_pump2),1)} kJ/kg”)
The work required by the pump is 2: 3.9 kJ/kg.
Finally, we can consider the boiler:
h4 = h3 + w_pump2
q_H = h5-h4
print(f”Heat input by boiler: {round(float(q_H),1)} kJ/kg”)
The heat input by the boiler is 2605.9 kJ/kg.
We can now calculate the thermal efficiency with
eta_th = (w_t — w_pump1*(1-y) — w_pump2)/q_H*100
print(f”Thermal efficiency is: {round(float(eta_th),2)}%”)
The thermal efficiency is 37.46%.