Clausius Rankine Cycle#

Introduction#

The Clausius Rankine cycle serves as a comparative process for the steam power plant in its simplest constellation with steam turbine, condenser, feed water pump and steam generator shown in figure Fig. 17. This is based on the heat-power process occurring in a steam engine and is thus a clockwise rotating cycle.

../_images/rankine_cycle_dissipative.svg

Fig. 17 Topology of the clausius rankine cycle.#

The live steam provided in the steam generator enters the turbine at high pressure and temperature, where it is expanded to a lower pressure level. The turbine releases power that can be used to drive a generator. The exhaust steam leaving the turbine is completely condensed out and leaves the condenser as saturated water. After that the feed water pump has to bring this condensate to a pressure level so that the steam generator can be supplied with feed water and the cycle can start again.

The heat supplied to the process comes from the steam generator. In contrast, the power output of the turbine differentiated by the power input of the feed water pump, is to be defined as power output of the process. The condensation of the refrigerant is to be regarded as heat output. Consequently, the thermal efficiency is displayed in Eq. (40).

(40)#\[ \eta_{th} = \frac{W_{out}}{Q_{in}}\]

Exercise 1#

Build the Clausius Rankine cycle in two variants:

  1. A cycle with a dissipative condenser (system boundaries are around the hot side of the heat exchanger)

  2. A condenser with the cold side, e.g. a river water cooling cycle, modelled (system boundaries are in and out flowing water)

Make sure the cycles are the same by checking their respective thermal efficiencies. Perform and compare the exergy analysis of the two variants. Interpret the results and the implication on the condenser’s efficiency.

Parametrize the model according to the description as shown in Table Table 3.

Table 3 Parametrization of clausius rankine clcye#

Description

Parameter

Value

Unit

Network parameter

Massflow

10

kg / s

Turbine

Isentropic efficiency

90

%

Live steam temperature

600

°C

Live steam pressure

150

bar

exhaust steam pressure

0.1

bar

Feed water pump

Isentropic efficiency

75

%

Steam generator

Pressure losses

10

%

Condenser

Pressure losses

0

%

Cooling Water Source

Incoming Temperature

20

°C

Temperature increase

10

K

System pressure

1.2

bar

Proposed solution 1.1#

First step: Build Clausius Rankine cycle with condenser using HeatExchangerSimple component

Hide code cell content
from tespy.networks import Network
from tespy.connections import Connection, Bus
from tespy.components import CycleCloser, Pump, HeatExchangerSimple, Turbine

# Network
nw = Network(fluids=['water'])
nw.set_attr(T_unit='C', p_unit='bar', h_unit='kJ / kg')

# Components
cycle_closer = CycleCloser('Cycle Closer')
turbine = Turbine('Steam Turbine')
condenser = HeatExchangerSimple('Condenser')
fw_pump = Pump('Feed Water Pump')
steam_generator = HeatExchangerSimple('Steam Generator')

# Connections
steamgen2cc = Connection(steam_generator, 'out1', cycle_closer, 'in1', label='0')
cc2turb = Connection(cycle_closer, 'out1', turbine, 'in1', label='1')
turb2cond = Connection(turbine, 'out1', condenser, 'in1', label='2')
cond2pump = Connection(condenser, 'out1', fw_pump, 'in1', label='3')
pump2steamgen = Connection(fw_pump, 'out1', steam_generator, 'in1', label='4')

nw.add_conns(steamgen2cc, cc2turb, turb2cond, cond2pump, pump2steamgen)

# Component Parametrization
turbine.set_attr(eta_s=0.9)
condenser.set_attr(pr=1)
fw_pump.set_attr(eta_s=0.75)
steam_generator.set_attr(pr=0.9)

# Connection Parametrization
cc2turb.set_attr(T=600, p=150, m=10, fluid={'water': 1})
turb2cond.set_attr(p=0.1)
cond2pump.set_attr(x=0)

# Busses
heat_in = Bus('Heat Input')
heat_in.add_comps({'comp': steam_generator, 'base': 'bus'})

power_out = Bus('Power Output')
power_out.add_comps(
    {'comp': turbine, 'char': 0.96, 'base': 'component'},
    {'comp': fw_pump, 'char': 0.96, 'base': 'bus'}
    )

heat_out = Bus('Heat Output')
heat_out.add_comps({'comp': condenser, 'base': 'component'})

nw.add_busses(heat_in, power_out, heat_out)

Second step: Solve model with variant 1 and perform exergy analysis

Hide code cell content
from tespy.tools import ExergyAnalysis

# Solve model
nw.set_attr(iterinfo=False)
nw.solve(mode='design')
eta_th = abs(power_out.P.val)/heat_in.P.val
print(f'eta_th = {eta_th:.3f}')

ean_var1 = ExergyAnalysis(network=nw, E_F=[heat_in], E_P=[power_out], E_L=[heat_out])
ean_var1.analyse(pamb=1.013, Tamb=20)
ean_var1.print_results(connections=False)
eta_th = 0.370
##### RESULTS: Component exergy analysis #####
+-----------------+-------------+-------------+-------------+-------------+-------------+-------------+
|                 |         E_F |         E_P |         E_D |     epsilon |        y_Dk |       y*_Dk |
|-----------------+-------------+-------------+-------------+-------------+-------------+-------------|
| Condenser       |   1.675e+06 | nan         |   1.675e+06 | nan         |   1.042e-01 |   4.615e-01 |
| Steam Turbine   |   1.456e+07 |   1.321e+07 |   1.349e+06 |   9.073e-01 |   8.390e-02 |   3.717e-01 |
| Feed Water Pump |   2.236e+05 |   1.724e+05 |   5.118e+04 |   7.711e-01 |   3.183e-03 |   1.410e-02 |
| Steam Generator |   1.608e+07 |   1.606e+07 |   1.658e+04 |   9.990e-01 |   1.031e-03 |   4.568e-03 |
| Cycle Closer    | nan         | nan         | nan         | nan         | nan         | nan         |
+-----------------+-------------+-------------+-------------+-------------+-------------+-------------+
##### RESULTS: Bus exergy analysis #####
+-----------------+-------------+-------------+-------------+-------------+-------------+-------------+
|                 |         E_F |         E_P |         E_D |     epsilon |        y_Dk |       y*_Dk |
|-----------------+-------------+-------------+-------------+-------------+-------------+-------------|
| Steam Turbine   |   1.321e+07 |   1.268e+07 |   5.284e+05 |   9.600e-01 |   3.286e-02 |   1.456e-01 |
| Feed Water Pump |   2.329e+05 |   2.236e+05 |   9.316e+03 |   9.600e-01 |   5.794e-04 |   2.567e-03 |
| Steam Generator |   1.608e+07 |   1.608e+07 |   0.000e+00 |   1.000e+00 |   0.000e+00 |   0.000e+00 |
| Condenser       | nan         | nan         | nan         | nan         | nan         | nan         |
+-----------------+-------------+-------------+-------------+-------------+-------------+-------------+
##### RESULTS: Aggregation of components and busses #####
+-----------------+-------------+-------------+-------------+-------------+-------------+-------------+
|                 |         E_F |         E_P |         E_D |     epsilon |        y_Dk |       y*_Dk |
|-----------------+-------------+-------------+-------------+-------------+-------------+-------------|
| Steam Turbine   |   1.456e+07 |   1.268e+07 |   1.878e+06 |   8.710e-01 |   1.168e-01 |   5.173e-01 |
| Feed Water Pump |   2.329e+05 |   1.724e+05 |   6.049e+04 |   7.403e-01 |   3.762e-03 |   1.667e-02 |
| Steam Generator |   1.608e+07 |   1.606e+07 |   1.658e+04 |   9.990e-01 |   1.031e-03 |   4.568e-03 |
| Cycle Closer    | nan         | nan         | nan         | nan         | nan         | nan         |
| Condenser       |   1.675e+06 | nan         | nan         | nan         | nan         | nan         |
+-----------------+-------------+-------------+-------------+-------------+-------------+-------------+
##### RESULTS: Network exergy analysis #####
+-----------+-----------+-----------+-------+-----------+
|       E_F |       E_P |       E_D |   E_L |   epsilon |
|-----------+-----------+-----------+-------+-----------|
| 1.608e+07 | 1.245e+07 | 3.630e+06 |   nan | 7.743e-01 |
+-----------+-----------+-----------+-------+-----------+
##### RESULTS: Functional groups exergy flows #####
+-----------------+-----------+-----------+-----------+-----------+-----------+
|                 |      E_in |     E_out |       E_D |      y_Dk |     y*_Dk |
|-----------------+-----------+-----------+-----------+-----------+-----------|
| Steam Turbine   | 1.628e+07 | 1.440e+07 | 1.878e+06 | 1.168e-01 | 5.173e-01 |
| Feed Water Pump | 2.769e+05 | 2.164e+05 | 6.049e+04 | 3.762e-03 | 1.667e-02 |
| Steam Generator | 1.630e+07 | 1.628e+07 | 1.658e+04 | 1.031e-03 | 4.568e-03 |
| Cycle Closer    | 1.628e+07 | 1.628e+07 | 0.000e+00 | 0.000e+00 | 0.000e+00 |
| Condenser       | 1.719e+06 | 1.719e+06 | 0.000e+00 | 0.000e+00 | 0.000e+00 |
+-----------------+-----------+-----------+-----------+-----------+-----------+

Third step: Replace HeatExchangerSimple with Condenser component

Hide code cell content
from tespy.components import Condenser, Source, Sink
    
# Remove old connections
nw.del_conns(turb2cond, cond2pump)

# Replace condenser
condenser = Condenser('Condenser')
cw_source = Source('Cooling Water Source')
cw_sink = Sink('Cooling Water Sink')

# Reconnect condenser
turb2cond = Connection(turbine, 'out1', condenser, 'in1', label='2')
cond2pump = Connection(condenser, 'out1', fw_pump, 'in1', label='3')
cw_source2cond = Connection(cw_source, 'out1', condenser, 'in2', label='11')
cond2cw_sink = Connection(condenser, 'out2', cw_sink, 'in1', label='12')

nw.add_conns(turb2cond, cond2pump, cw_source2cond, cond2cw_sink)

# Parametrize condenser and cooling cycle
turb2cond.set_attr(p=0.1)
condenser.set_attr(pr1=1, pr2=1)
cw_source2cond.set_attr(T=20, p=1.2, fluid={'water': 1})
cond2cw_sink.set_attr(T=30)

# Reset heat output bus
nw.del_busses(heat_out)

heat_out = Bus('Heat Output')
heat_out.add_comps(
    {'comp': cw_source, 'base': 'bus'},
    {'comp': cw_sink, 'base': 'component'}
    )

nw.add_busses(heat_out)

Forth step: Solve model with variant 2 and perform exergy analysis

Hide code cell content
# Solve model
nw.solve(mode='design')
eta_th = abs(power_out.P.val)/heat_in.P.val
print(f'eta_th = {eta_th:.3f}')

ean_var2 = ExergyAnalysis(network=nw, E_F=[heat_in], E_P=[power_out], E_L=[heat_out])
ean_var2.analyse(pamb=1.013, Tamb=20)
ean_var2.print_results(groups=False, connections=False, aggregation=False)
eta_th = 0.370
##### RESULTS: Component exergy analysis #####
+----------------------+-------------+-------------+-------------+-------------+-------------+-------------+
|                      |         E_F |         E_P |         E_D |     epsilon |        y_Dk |       y*_Dk |
|----------------------+-------------+-------------+-------------+-------------+-------------+-------------|
| Steam Turbine        |   1.456e+07 |   1.321e+07 |   1.349e+06 |   9.073e-01 |   8.390e-02 |   4.108e-01 |
| Condenser            |   1.675e+06 |   3.452e+05 |   1.330e+06 |   2.061e-01 |   8.270e-02 |   4.049e-01 |
| Feed Water Pump      |   2.236e+05 |   1.724e+05 |   5.118e+04 |   7.711e-01 |   3.183e-03 |   1.558e-02 |
| Steam Generator      |   1.608e+07 |   1.606e+07 |   1.658e+04 |   9.990e-01 |   1.031e-03 |   5.048e-03 |
| Cycle Closer         | nan         | nan         | nan         | nan         | nan         | nan         |
| Cooling Water Source | nan         | nan         | nan         | nan         | nan         | nan         |
| Cooling Water Sink   | nan         | nan         | nan         | nan         | nan         | nan         |
+----------------------+-------------+-------------+-------------+-------------+-------------+-------------+
##### RESULTS: Bus exergy analysis #####
+----------------------+-----------+-----------+-----------+-----------+-----------+-----------+
|                      |       E_F |       E_P |       E_D |   epsilon |      y_Dk |     y*_Dk |
|----------------------+-----------+-----------+-----------+-----------+-----------+-----------|
| Steam Turbine        | 1.321e+07 | 1.268e+07 | 5.284e+05 | 9.600e-01 | 3.286e-02 | 1.609e-01 |
| Feed Water Pump      | 2.329e+05 | 2.236e+05 | 9.316e+03 | 9.600e-01 | 5.794e-04 | 2.836e-03 |
| Steam Generator      | 1.608e+07 | 1.608e+07 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
| Cooling Water Source | 9.275e+03 | 9.275e+03 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
| Cooling Water Sink   | 3.545e+05 | 3.545e+05 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
+----------------------+-----------+-----------+-----------+-----------+-----------+-----------+
##### RESULTS: Network exergy analysis #####
+-----------+-----------+-----------+-----------+-----------+
|       E_F |       E_P |       E_D |       E_L |   epsilon |
|-----------+-----------+-----------+-----------+-----------|
| 1.608e+07 | 1.245e+07 | 3.284e+06 | 3.452e+05 | 7.743e-01 |
+-----------+-----------+-----------+-----------+-----------+

Attention

From this point onwards the second variant of the clausius rankine cycle containg the implementation of the condensers cooling cycle is used.

Efficiency improvements and exergy influence#

As you should already know, thermal efficiency depends on component parameters. Especially the variations of live steam parameters have a positive effect on thermal efficiency. Thus, both high temperatures and high pressures improve the thermal efficiency. However, if the live steam pressure is increased without simultaneously increasing the live steam temperature, the last stages of the turbine may be damaged by droplet impingement. But how do these key parameter affect exergetic efficiency? Are there other factors that influence it as well?

Exercise 2#

  1. Analyze the influence of key parameters on the exergy analysis, such as live steam pressure and temperature.

  2. What impact does the ambient state have on the results of the exergy analysis.

Proposed solution 2.1#

Hide code cell content
import matplotlib.pyplot as plt

T_ls_range = [*range(500, 750, 50)]
p_ls_range = [*range(100, 225, 25)]

fig, ax = plt.subplots(figsize=(8, 6))

for p_ls in p_ls_range:
    epsilon_tot = list()
    for T_ls in T_ls_range:
        cc2turb.set_attr(T=T_ls, p=p_ls)

        nw.solve('design')
        ean = ExergyAnalysis(network=nw, E_F=[heat_in], E_P=[power_out], E_L=[heat_out])
        ean.analyse(pamb=1.013, Tamb=20)
        epsilon_tot.append(ean.network_data['epsilon'])
    ax.plot(T_ls_range, epsilon_tot, label=f'{p_ls} bar')

ax.set_xlabel('Live steam temperature in °C')
ax.set_ylabel('Exergetic efficiency $\\epsilon$')
ax.legend(title='$p_{livesteam}$:') #, alignment='left')
ax.grid()
ax.set_axisbelow(True)
../_images/a0b2800393be86ec243971d96015658515897994d5de8e95a84c7e4f482e4f18.png

Proposed solution 2.2#

Hide code cell content
# Reset live steam parameters
cc2turb.set_attr(T=600, p=150)
nw.solve('design')
ean = ExergyAnalysis(network=nw, E_F=[heat_in], E_P=[power_out], E_L=[heat_out])

T_amb_range = [*range(5, 40, 5)]

E_Fs = list()
E_Ps = list()
epsilons = list()
for T_amb in T_amb_range:
    ean.analyse(pamb=1.013, Tamb=T_amb)
    E_Fs.append(ean.network_data['E_F'] * 1e-6)
    E_Ps.append(ean.network_data['E_P'] * 1e-6)
    epsilons.append(ean.network_data['epsilon'])

fig, ax1 = plt.subplots(figsize=(8, 6))

ax1.plot(T_amb_range, E_Fs, color='#00395B',  label='$\\dot{E}_{F}$')
ax1.plot(T_amb_range, E_Ps, color='#B54036', label='$\\dot{E}_{P}$')

ax2 = ax1.twinx()

ax2.plot(T_amb_range, epsilons, color='#EC6707', ls=':', label='$\\epsilon$')

ax1.set_xlabel('Ambient temperature in °C')
ax1.set_ylabel('Total Exergies in MW')
ax1.legend()
ax1.grid()
ax1.set_axisbelow(True)

ax2.set_ylabel('Exergetic efficiency')
ax2.legend()
<matplotlib.legend.Legend at 0x7f2855127a30>
../_images/5576eef1e1be07157567de0d7c0a62cfa4ceffba0a3db1018961eefb09aaf9d5.png

Topological process improvement#

In addition to the approach of increasing the efficiency via parameter variation, there is also the approach of structural optimization. This involves modifying the circuitry of the process with the aim of increasing efficiency, exergy efficiency or other improvement.

The regenerative feed water preheating is an often used structural optimization. Figure Fig. 18 shows the structure of such a process. Most of the live steam entering the turbine is expanded to the condenser, and from there it reaches the feed water pump. However, the cold feed water is now preheated before it enters the boiler. This is done by condensing steam taken from the turbine at a suitable pressure level in a feed water preheater. In the present case, the resulting extraction steam condensate is returned to the condenser of the steam power process. This requires throttling to balance the pressures.

../_images/rankine_cycle_preheating.svg

Fig. 18 Topology of the clausius rankine cycle with regenerative feed water preheating.#

A second way of increasing the efficiency of a Clausius Rankine process is superheating. This additionally influences the operating range of the turbines used, which on the one hand means a technical advantage, but on the other hand can also open up the scope for further parameter optimization. Figure Fig. 19 shows the structure of a Rankine Cycle with superheating. The live steam, coming from the steam generator, enters the turbine, which now consists of a high-pressure and a low-pressure section. After initial expansion has taken place in the high-pressure section, all the steam is removed from the turbine and fed to an intermediate superheater. The steam then flows into the low-pressure section of the turbine, from where the process continues as known from the simple process.

../_images/rankine_cycle_superheating.svg

Fig. 19 Topology of the clausius rankine cycle with intermediate superheating of steam.#

Exercise 3#

  1. Implement the two topological improvements:

    • Regenerative feed water preheating (see Fig. 18)

    • Intermediate superheating (see Fig. 19)

  2. Explain the improvement of the cycle’s efficiency with the exergy analysis by investigating the exergy destruction of each component

Proposed solution 3.1#

First step: Build Clausius Rankine cycle with regenerative feed water preheating

Hide code cell content
from tespy.connections import Ref
from tespy.components import Splitter, Merge, HeatExchanger, Valve
import numpy as np

# Network
nw_pre = Network(fluids=['water'])
nw_pre.set_attr(T_unit='C', p_unit='bar', h_unit='kJ / kg')

# Components
cycle_closer = CycleCloser('Cycle Closer')
hp_turbine = Turbine('High Pressure Steam Turbine')
splitter = Splitter('Splitter')
lp_turbine = Turbine('Low Pressure Steam Turbine')
merge = Merge('Merge')

condenser = Condenser('Condenser')
cw_source = Source('Cooling Water Source')
cw_sink = Sink('Cooling Water Sink')
fw_pump = Pump('Feed Water Pump')
steam_generator = HeatExchangerSimple('Steam Generator')

valve = Valve('Expansion Valve')
preheater = HeatExchanger('Preheater')

# Connections
steamgen2cc = Connection(steam_generator, 'out1', cycle_closer, 'in1', label='0')
cc2hp_turb = Connection(cycle_closer, 'out1', hp_turbine, 'in1', label='1')
hp_turb2split = Connection(hp_turbine, 'out1', splitter, 'in1', label='2')
split2lp_turb = Connection(splitter, 'out1', lp_turbine, 'in1', label='3')
lp_turb2merge = Connection(lp_turbine, 'out1', merge, 'in1', label='4')

nw_pre.add_conns(steamgen2cc, cc2hp_turb, hp_turb2split, split2lp_turb, lp_turb2merge)

merg2cond = Connection(merge, 'out1', condenser, 'in1', label='5')
cond2pump = Connection(condenser, 'out1', fw_pump, 'in1', label='6')
pump2preheat = Connection(fw_pump, 'out1', preheater, 'in2', label='7')
preheat2steamgen = Connection(preheater, 'out2', steam_generator, 'in1', label='8')
cw_source2cond = Connection(cw_source, 'out1', condenser, 'in2', label='21')
cond2cw_sink = Connection(condenser, 'out2', cw_sink, 'in1', label='22')

nw_pre.add_conns(merg2cond, cond2pump, pump2preheat, preheat2steamgen, cw_source2cond, cond2cw_sink)

split2preheat = Connection(splitter, 'out2', preheater, 'in1', label='11')
preheat2valve = Connection(preheater, 'out1', valve, 'in1', label='12')
valve2merge = Connection(valve, 'out1', merge, 'in2', label='13')

nw_pre.add_conns(split2preheat, preheat2valve, valve2merge)

# Component Parametrization
hp_turbine.set_attr(eta_s=0.9)
lp_turbine.set_attr(eta_s=0.9)
condenser.set_attr(pr1=1, pr2=1)
fw_pump.set_attr(eta_s=0.75)
preheater.set_attr(pr1=1, pr2=1, ttd_l=5)
steam_generator.set_attr(pr=0.9)

# Connection Parametrization
cc2hp_turb.set_attr(T=600, p=150, m=10, fluid={'water': 1})
split2lp_turb.set_attr(p=np.sqrt(150*0.1), m=Ref(cc2hp_turb, 0.85, 0))
lp_turb2merge.set_attr(p=0.1)

cw_source2cond.set_attr(T=20, p=1.2, fluid={'water': 1})
cond2cw_sink.set_attr(T=30)

# Busses
heat_in = Bus('Heat Input')
heat_in.add_comps({'comp': steam_generator, 'base': 'bus'})

power_out = Bus('Power Output')
power_out.add_comps(
    {'comp': hp_turbine, 'char': 0.96, 'base': 'component'},
    {'comp': lp_turbine, 'char': 0.96, 'base': 'component'},
    {'comp': fw_pump, 'char': 0.96, 'base': 'bus'}
    )

heat_out = Bus('Heat Output')
heat_out.add_comps(
    {'comp': cw_source, 'base': 'bus'},
    {'comp': cw_sink, 'base': 'component'}
    )

nw_pre.add_busses(heat_in, power_out, heat_out)

Second step: Solve model with regenerative feed water preheating and perform exergy analysis

Hide code cell content
# Solve model
nw_pre.set_attr(iterinfo=False)
nw_pre.solve(mode='design')
eta_th = abs(power_out.P.val)/heat_in.P.val
print(f'eta_th = {eta_th:.3f}')

ean_pre = ExergyAnalysis(network=nw_pre, E_F=[heat_in], E_P=[power_out], E_L=[heat_out])
ean_pre.analyse(pamb=1.013, Tamb=20)
ean_pre.print_results(groups=False, connections=False, aggregation=False)
eta_th = 0.399
##### RESULTS: Component exergy analysis #####
+-----------------------------+-------------+-------------+-------------+-------------+-------------+-------------+
|                             |         E_F |         E_P |         E_D |     epsilon |        y_Dk |       y*_Dk |
|-----------------------------+-------------+-------------+-------------+-------------+-------------+-------------|
| Condenser                   |   1.414e+06 |   2.914e+05 |   1.122e+06 |   2.061e-01 |   7.316e-02 |   3.593e-01 |
| High Pressure Steam Turbine |   9.130e+06 |   8.467e+06 |   6.636e+05 |   9.273e-01 |   4.325e-02 |   2.124e-01 |
| Low Pressure Steam Turbine  |   4.629e+06 |   4.200e+06 |   4.289e+05 |   9.073e-01 |   2.796e-02 |   1.373e-01 |
| Preheater                   |   1.061e+06 |   7.370e+05 |   3.243e+05 |   6.945e-01 |   2.113e-02 |   1.038e-01 |
| Feed Water Pump             |   2.236e+05 |   1.724e+05 |   5.118e+04 |   7.711e-01 |   3.336e-03 |   1.638e-02 |
| Steam Generator             |   1.534e+07 |   1.533e+07 |   1.658e+04 |   9.989e-01 |   1.081e-03 |   5.307e-03 |
| Expansion Valve             |   9.499e+02 | nan         |   9.499e+02 | nan         |   6.191e-05 |   3.041e-04 |
| Merge                       |   3.813e-09 |   0.000e+00 |   3.813e-09 |   0.000e+00 |   2.485e-16 |   1.221e-15 |
| Cycle Closer                | nan         | nan         | nan         | nan         | nan         | nan         |
| Splitter                    | nan         | nan         | nan         | nan         | nan         | nan         |
| Cooling Water Sink          | nan         | nan         | nan         | nan         | nan         | nan         |
| Cooling Water Source        | nan         | nan         | nan         | nan         | nan         | nan         |
+-----------------------------+-------------+-------------+-------------+-------------+-------------+-------------+
##### RESULTS: Bus exergy analysis #####
+-----------------------------+-----------+-----------+-----------+-----------+-----------+-----------+
|                             |       E_F |       E_P |       E_D |   epsilon |      y_Dk |     y*_Dk |
|-----------------------------+-----------+-----------+-----------+-----------+-----------+-----------|
| High Pressure Steam Turbine | 8.467e+06 | 8.128e+06 | 3.387e+05 | 9.600e-01 | 2.207e-02 | 1.084e-01 |
| Low Pressure Steam Turbine  | 4.200e+06 | 4.032e+06 | 1.680e+05 | 9.600e-01 | 1.095e-02 | 5.378e-02 |
| Feed Water Pump             | 2.329e+05 | 2.236e+05 | 9.316e+03 | 9.600e-01 | 6.072e-04 | 2.982e-03 |
| Steam Generator             | 1.534e+07 | 1.534e+07 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
| Cooling Water Sink          | 2.992e+05 | 2.992e+05 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
| Cooling Water Source        | 7.828e+03 | 7.828e+03 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
+-----------------------------+-----------+-----------+-----------+-----------+-----------+-----------+
##### RESULTS: Network exergy analysis #####
+-----------+-----------+-----------+-----------+-----------+
|       E_F |       E_P |       E_D |       E_L |   epsilon |
|-----------+-----------+-----------+-----------+-----------|
| 1.534e+07 | 1.193e+07 | 3.124e+06 | 2.914e+05 | 7.774e-01 |
+-----------+-----------+-----------+-----------+-----------+

Third step: Build Clausius Rankine cycle with intermediate superheating of steam

Hide code cell content
nw_super = Network(fluids=['water'])
nw_super.set_attr(T_unit='C', p_unit='bar', h_unit='kJ / kg')

# Components
cycle_closer = CycleCloser('Cycle Closer')
hp_turbine = Turbine('High Pressure Steam Turbine')
steam_superheater = HeatExchangerSimple('Steam Superheater')
lp_turbine = Turbine('Low Pressure Steam Turbine')
condenser = Condenser('Condenser')
fw_pump = Pump('Feed Water Pump')
steam_generator = HeatExchangerSimple('Steam Generator')

cw_source = Source('Cooling Water Source')
cw_sink = Sink('Cooling Water Sink')


# Connections
steamgen2cc = Connection(steam_generator, 'out1', cycle_closer, 'in1', label='0')
cc2hp_turb = Connection(cycle_closer, 'out1', hp_turbine, 'in1', label='1')
hp_turb2super = Connection(hp_turbine, 'out1', steam_superheater, 'in1', label='2')
super2lp_turb = Connection(steam_superheater, 'out1', lp_turbine, 'in1', label='3')
lp_turb2cond = Connection(lp_turbine, 'out1', condenser, 'in1', label='4')
cond2pump = Connection(condenser, 'out1', fw_pump, 'in1', label='5')
pump2steamgen = Connection(fw_pump, 'out1', steam_generator, 'in1', label='6')

cw_source2cond = Connection(cw_source, 'out1', condenser, 'in2', label='11')
cond2cw_sink = Connection(condenser, 'out2', cw_sink, 'in1', label='12')

nw_super.add_conns(
    steamgen2cc, cc2hp_turb, hp_turb2super, super2lp_turb, lp_turb2cond,
    cond2pump, pump2steamgen, cw_source2cond, cond2cw_sink
    )

# Component Parametrization
hp_turbine.set_attr(eta_s=0.9)
lp_turbine.set_attr(eta_s=0.9)
condenser.set_attr(pr1=1, pr2=1)
fw_pump.set_attr(eta_s=0.75)
steam_generator.set_attr(pr=0.9)
steam_superheater.set_attr(pr=0.9)

# Connection Parametrization
cc2hp_turb.set_attr(T=600, p=150, m=10, fluid={'water': 1})
hp_turb2super.set_attr(p=np.sqrt(150*0.1))
super2lp_turb.set_attr(T=600)
lp_turb2cond.set_attr(p=0.1)

cw_source2cond.set_attr(T=20, p=1.2, fluid={'water': 1})
cond2cw_sink.set_attr(T=30)

# Busses
heat_in = Bus('Heat Input')
heat_in.add_comps(
    {'comp': steam_generator, 'base': 'bus'},
    {'comp': steam_superheater, 'base': 'bus'}
    )

power_out = Bus('Power Output')
power_out.add_comps(
    {'comp': hp_turbine, 'char': 0.96, 'base': 'component'},
    {'comp': lp_turbine, 'char': 0.96, 'base': 'component'},
    {'comp': fw_pump, 'char': 0.96, 'base': 'bus'}
    )

heat_out = Bus('Heat Output')
heat_out.add_comps(
    {'comp': cw_source, 'base': 'bus'},
    {'comp': cw_sink, 'base': 'component'}
    )

nw_super.add_busses(heat_in, power_out, heat_out)

Forth step: Solve model with intermediate superheater and perform exergy analysis

Hide code cell content
# Solve model
nw_super.set_attr(iterinfo=False)
nw_super.solve(mode='design')
eta_th = abs(power_out.P.val)/heat_in.P.val
print(f'eta_th = {eta_th:.3f}')

ean_super = ExergyAnalysis(network=nw_super, E_F=[heat_in], E_P=[power_out], E_L=[heat_out])
ean_super.analyse(pamb=1.013, Tamb=20)
ean_super.print_results(groups=False, connections=False, aggregation=False)
eta_th = 0.379
##### RESULTS: Component exergy analysis #####
+-----------------------------+-------------+-------------+-------------+-------------+-------------+-------------+
|                             |         E_F |         E_P |         E_D |     epsilon |        y_Dk |       y*_Dk |
|-----------------------------+-------------+-------------+-------------+-------------+-------------+-------------|
| Condenser                   |   2.442e+06 |   4.373e+05 |   2.005e+06 |   1.790e-01 |   9.541e-02 |   4.841e-01 |
| Low Pressure Steam Turbine  |   9.597e+06 |   8.896e+06 |   7.016e+05 |   9.269e-01 |   3.339e-02 |   1.694e-01 |
| High Pressure Steam Turbine |   9.130e+06 |   8.467e+06 |   6.636e+05 |   9.273e-01 |   3.158e-02 |   1.602e-01 |
| Feed Water Pump             |   2.236e+05 |   1.724e+05 |   5.118e+04 |   7.711e-01 |   2.435e-03 |   1.236e-02 |
| Steam Generator             |   1.608e+07 |   1.606e+07 |   1.658e+04 |   9.990e-01 |   7.889e-04 |   4.002e-03 |
| Steam Superheater           |   4.935e+06 |   4.935e+06 |   3.879e+02 |   9.999e-01 |   1.846e-05 |   9.366e-05 |
| Cooling Water Sink          | nan         | nan         | nan         | nan         | nan         | nan         |
| Cycle Closer                | nan         | nan         | nan         | nan         | nan         | nan         |
| Cooling Water Source        | nan         | nan         | nan         | nan         | nan         | nan         |
+-----------------------------+-------------+-------------+-------------+-------------+-------------+-------------+
##### RESULTS: Bus exergy analysis #####
+-----------------------------+-----------+-----------+-----------+-----------+-----------+-----------+
|                             |       E_F |       E_P |       E_D |   epsilon |      y_Dk |     y*_Dk |
|-----------------------------+-----------+-----------+-----------+-----------+-----------+-----------|
| Low Pressure Steam Turbine  | 8.896e+06 | 8.540e+06 | 3.558e+05 | 9.600e-01 | 1.693e-02 | 8.590e-02 |
| High Pressure Steam Turbine | 8.467e+06 | 8.128e+06 | 3.387e+05 | 9.600e-01 | 1.612e-02 | 8.176e-02 |
| Feed Water Pump             | 2.329e+05 | 2.236e+05 | 9.316e+03 | 9.600e-01 | 4.433e-04 | 2.249e-03 |
| Cooling Water Sink          | 4.490e+05 | 4.490e+05 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
| Steam Superheater           | 4.935e+06 | 4.935e+06 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
| Steam Generator             | 1.608e+07 | 1.608e+07 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
| Cooling Water Source        | 1.175e+04 | 1.175e+04 | 0.000e+00 | 1.000e+00 | 0.000e+00 | 0.000e+00 |
+-----------------------------+-----------+-----------+-----------+-----------+-----------+-----------+
##### RESULTS: Network exergy analysis #####
+-----------+-----------+-----------+-----------+-----------+
|       E_F |       E_P |       E_D |       E_L |   epsilon |
|-----------+-----------+-----------+-----------+-----------|
| 2.101e+07 | 1.644e+07 | 4.142e+06 | 4.373e+05 | 7.821e-01 |
+-----------+-----------+-----------+-----------+-----------+

Fifth step: Compare the two topological improvements

Hide code cell content
# Compare the two topological improvements

Lessons Learned#

  • Lessons Learned 1

  • Lessons Learned 2

  • Lessons Learned 3