ORC Combined Heat and Power#
In this section we will be investigating the cogeneration of heat and power using an organic rankine cycle via a process design study. This is supposed to emulate a typical energy engineers workflow and is a complex task, so take your time with it.
Introduction#
Subject of the following example of a more complex thermodynamic process will be a combined geothermal heat and power plant. As even deep geothermal boreholes can not supply temperatures high enough to drive conventional power plant processes, such as the aforementioned and thoroughly analyzed Clausius Rankine Cycle, adjustments are necessary. Organic process fluids whose vaporization temperature is lower than that of water allow the execution of a Rankine cycle at these lower heat source temperatures, resulting in the so-called Organic Rankine Cycle.
The following exercises are supposed to emulate a typical energy engineers workflow. The task is a process design study, where conditions of the surroundings and requirements of stakeholders are given. The proposed process design has to fulfill these constraints, which are displayed in Fig. 22.
Additionally, Table 6 lists approximations of typical component parameters.
Component |
Parameter |
Value |
Unit |
|
---|---|---|---|---|
Auxillary Installations |
Electrical power requirements |
3 |
MW |
|
Generators |
Mechanical-electrical efficiency |
0.985 |
||
Motors |
Electrical-mechanical efficiency |
0.975 |
||
Steam turbines |
Isentropic efficiency |
0.9 |
||
Mechanical efficiency |
0.99 |
|||
Minimum steam quality |
0.9 |
|||
Pumps |
Isentropic efficiency |
0.8 |
||
Mechanical efficiency |
0.99 |
|||
Heat Exchangers |
Minimal temperature difference |
liquid-liquid |
10 |
K |
liquid-condensing |
5 |
K |
||
liquid-steam |
20 |
K |
||
liquid-gaseous |
25 |
K |
The proposed process is to be evaluated both with an energy- and an exergy-based approach. This can be achieved via efficiency values, which put the benefit of the process in relation to the necessary input. The energy efficiency of the combined heat and power process is defined according to Eq. (43) and the exergy efficiency according to Eq. (44).
Exercise 1#
Build a geothermal combined heat and power plant according to the boundary conditions in Fig. 22 and Table 6.
Build another geothermal plant based on the one before that replaces the heat output with another cycle extracting electrical power.
Evaluate both processes according to Eqs. (43) and (44) and compare each other.
Note
This task is described very openly, so there is no single right solution. You have to be creative to find a working process that fulfills all requirements.
At first, you can try to come up with components that are necessary to supply the desired outputs. You can build simple cycles and contemplate how they can be improved.
Additionally, you can get inspiration through existing plants as described in the literature. A few examples are DiPippo [5], Drbal et al. [6], Kitto and Stultz [7] and Strauss [8] (German).
Note
Your model very likely will be quite complex and use a lot of components which need parametrization. Building the whole model at once likely results in missing parameter or overdetermination, of which the source can be hard to track down. Oftentimes, a better approach is to build parts of the model, e.g. inner cycles or outer strands, and make them work. Only then the parts are joined together to build the whole process.
Also, you will probably encounter issues when setting terminal temperature differences without stable starting values. As mentioned in other examples, running the model with best-guess starting values before finalizing parametrization strengthens stability and can even be necessary. Besides the other examples, you are referred to the TESPy tutorial on How to Generate Stable Starting Values.
Proposed process designs (only use if necessary!)
If you are having trouble creating/finding a suitable process design that fulfills all the requirements, example designs are provided here. Definitely try to come up with your own process designs at first, as there is a lot to learn trying, failing and hopefully eventually succeeding in solving the tasks.
For the cogeneration of heat and power, an ORC using the liquid phase from the geothermal source will be employed to solely supply power. The gaseous mass fraction can be fed directly through a steam turbine and condensed to supply the district heating network with heat. The process diagram of the described CHP plant can be found in Fig. 23. The heat outflow to close the Organic Rankine Cycle is realized through cooling with ambient air. Finally, the two streams from the geothermal source are combined again to be fed back into the geothermal sink.
The second approach without the supply of heat is implemented with an additional Organic Rankine Cycle replacing the district heating condenser. This second ORC is in principle of the same structure as the first one, as can be seen in Fig. 24.
Proposed solution 1#
First Step: Build the ORC as basis for geothermal combined heat and power plant and geothermal power plant
Show code cell content
from tespy.networks import Network
from tespy.connections import Connection, Bus
from tespy.components import (
CycleCloser, Source, Sink, Pump, Turbine, HeatExchanger,HeatExchangerSimple,
Condenser, Drum, DropletSeparator, Merge
)
# Network
nw = Network(fluids=['water', 'air', 'Isopentane'])
nw.set_attr(T_unit='C', p_unit='bar', h_unit='kJ / kg')
flu_vec_orc = {'water': 0, 'air': 0, 'Isopentane': 1}
flu_vec_water = {'water': 1, 'air': 0, 'Isopentane': 0}
flu_vec_air = {'water': 0, 'air': 1, 'Isopentane': 0}
# Components
# ORC
orc_cc = CycleCloser('ORC Cycle Closer')
orc_preheater = HeatExchanger('ORC Preheater')
orc_drum = Drum('ORC Drum')
orc_evaporator = HeatExchanger('ORC Evaporator')
orc_turbine = Turbine('ORC Turbine')
orc_condenser = Condenser('ORC Condenser')
orc_pump = Pump('ORC Pump')
# Condenser coolant cycle
cool_source = Source('Coolant Source')
cool_sink = Sink('Coolant Sink')
# Auxiliary source and sink
liquid_source = Source('Liquid Sep Source')
geo_pump = Pump('Geothermal Pump')
geo_sink1 = Sink('Geothermal Sink1')
# Connections
# ORC
orc_pump2orc_cc = Connection(orc_pump, 'out1', orc_cc, 'in1', label='30')
orc_cc2orc_preheater = Connection(orc_cc, 'out1', orc_preheater, 'in2', label='31')
orc_preheat2orc_drum = Connection(orc_preheater, 'out2', orc_drum, 'in1', label='32')
orc_drum2orc_eva = Connection(orc_drum, 'out1', orc_evaporator, 'in2', label='33')
orc_eva2orc_drum = Connection(orc_evaporator, 'out2', orc_drum, 'in2', label='34')
orc_drum2orc_turb = Connection(orc_drum, 'out2', orc_turbine, 'in1', label='35')
orc_turb2orc_cond = Connection(orc_turbine, 'out1', orc_condenser, 'in1', label='36')
orc_cond2orc_pump = Connection(orc_condenser, 'out1', orc_pump, 'in1', label='37')
nw.add_conns(
orc_pump2orc_cc, orc_cc2orc_preheater, orc_preheat2orc_drum, orc_drum2orc_eva,
orc_eva2orc_drum, orc_drum2orc_turb, orc_turb2orc_cond, orc_cond2orc_pump
)
# Condenser coolant strand
cool_source2orc_cond = Connection(cool_source, 'out1', orc_condenser, 'in2', label='51')
orc_cond2cool_sink = Connection(orc_condenser, 'out2', cool_sink, 'in1', label='52')
nw.add_conns(cool_source2orc_cond, orc_cond2cool_sink)
# Geothermal liquid strand
liquid_source2orc_eva = Connection(liquid_source, 'out1', orc_evaporator, 'in1', label='17')
orc_eva2orc_preheat = Connection(orc_evaporator, 'out1', orc_preheater, 'in1', label='18')
orc_preheat2geo_pump = Connection(orc_preheater, 'out1', geo_pump, 'in1', label='19')
geo_pump2geo_sink1 = Connection(geo_pump, 'out1', geo_sink1, 'in1', label='21')
nw.add_conns(
liquid_source2orc_eva, orc_eva2orc_preheat, orc_preheat2geo_pump, geo_pump2geo_sink1
)
Second Step: Set the process parameters and starting values. After that solve orc cycle with starting and final values
Show code cell content
from CoolProp.CoolProp import PropsSI as PSI
# Parametrization
# Component parameters
orc_turbine.set_attr(eta_s=0.9)
orc_pump.set_attr(eta_s=0.8)
geo_pump.set_attr(eta_s=0.8)
orc_preheater.set_attr(pr1=1, pr2=1)
orc_evaporator.set_attr(pr1=1)
orc_condenser.set_attr(pr1=1, pr2=1)
# Connection parameter
# ORC
p_orc_condenser = PSI("P", "Q", 0, "T", 35 + 273.15, 'Isopentane') * 1e-5
orc_turb2orc_cond.set_attr(p=p_orc_condenser, fluid=flu_vec_orc)
p_orc_evaporator = PSI("P", "Q", 1, "T", 150 + 273.15, 'Isopentane') * 1e-5
orc_eva2orc_drum.set_attr(p=p_orc_evaporator, x=0.7)
orc_preheat2orc_drum.set_attr(Td_bp=-5)
# Geothermal liquid strand
liquid_source2orc_eva.set_attr(m=500*0.55, p=10.8, x=0, fluid=flu_vec_water)
geo_pump2geo_sink1.set_attr(T=55, p=30)
# Condenser coolant strand
cool_source2orc_cond.set_attr(T=25, p=1.013, fluid=flu_vec_air)
orc_cond2cool_sink.set_attr(T=30)
# Initial solve with starting values
nw.solve("design")
nw.print_results()
# Final solve
orc_eva2orc_drum.set_attr(p=None)
orc_evaporator.set_attr(ttd_l=10)
orc_turb2orc_cond.set_attr(p=None)
orc_condenser.set_attr(ttd_u=5)
nw.solve("design")
nw.print_results()
Invalid value for ttd_l: ttd_l = -19.95634661868644 below minimum value (0) at component ORC Evaporator.
Invalid value for ttd_u: ttd_u = -14.956346618686439 below minimum value (0) at component ORC Preheater.
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 3.06e+08 | 50 % | 3.00e+05 | 7.93e+06 | 5.72e+06 | 0.00e+00 |
2 | 5.89e+09 | 50 % | 7.66e+06 | 3.09e+06 | 1.30e+08 | 0.00e+00 |
3 | 3.66e+10 | 50 % | 6.45e+06 | 1.27e+06 | 2.82e+07 | 0.00e+00 |
4 | 1.78e+10 | 50 % | 1.03e+06 | 5.57e+05 | 1.11e+06 | 0.00e+00 |
5 | 3.16e+09 | 50 % | 4.34e+05 | 2.13e+05 | 5.90e+06 | 0.00e+00 |
6 | 1.42e+08 | 50 % | 8.73e+03 | 5.50e+04 | 1.42e+05 | 0.00e+00 |
7 | 2.90e+05 | 50 % | 1.26e+01 | 4.04e-10 | 3.02e+02 | 0.00e+00 |
8 | 1.58e+00 | 51 % | 5.21e-04 | 4.03e-10 | 6.08e-04 | 0.00e+00 |
9 | 2.92e-07 | 53 % | 1.28e-09 | 4.04e-10 | 9.81e-08 | 0.00e+00 |
Total iterations: 9, Calculation time: 0.07 s, Iterations per second: 126.16
##### RESULTS (HeatExchanger) #####
+----------------+-----------+------+----------+-----------+-----------+----------+----------+-----------+----------+
| | Q | kA | td_log | ttd_u | ttd_l | pr1 | pr2 | zeta1 | zeta2 |
|----------------+-----------+------+----------+-----------+-----------+----------+----------+-----------+----------|
| ORC Evaporator | -6.33e+07 | nan | nan | 3.32e+01 | -2.00e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
| ORC Preheater | -8.71e+07 | nan | nan | -1.50e+01 | 1.88e+01 | 1.00e+00 | 1.00e+00 | -3.65e-12 | 0.00e+00 |
+----------------+-----------+------+----------+-----------+-----------+----------+----------+-----------+----------+
##### RESULTS (Condenser) #####
+---------------+-----------+----------+----------+----------+----------+----------+----------+----------+----------+
| | Q | kA | td_log | ttd_u | ttd_l | pr1 | pr2 | zeta1 | zeta2 |
|---------------+-----------+----------+----------+----------+----------+----------+----------+----------+----------|
| ORC Condenser | -1.24e+08 | 1.72e+07 | 7.21e+00 | 5.00e+00 | 1.00e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
+---------------+-----------+----------+----------+----------+----------+----------+----------+----------+----------+
##### RESULTS (Turbine) #####
+-------------+-----------+----------+----------+
| | P | eta_s | pr |
|-------------+-----------+----------+----------|
| ORC Turbine | -2.71e+07 | 9.00e-01 | 6.91e-02 |
+-------------+-----------+----------+----------+
##### RESULTS (Pump) #####
+-----------------+----------+----------+----------+
| | P | eta_s | pr |
|-----------------+----------+----------+----------|
| ORC Pump | 1.07e+06 | 8.00e-01 | 1.45e+01 |
| Geothermal Pump | 6.69e+05 | 8.00e-01 | 2.78e+00 |
+-----------------+----------+----------+----------+
##### RESULTS (CycleCloser) #####
+------------------+------------------+-------------------+
| | mass_deviation | fluid_deviation |
|------------------+------------------+-------------------|
| ORC Cycle Closer | 5.68e-14 | 0.00e+00 |
+------------------+------------------+-------------------+
##### RESULTS (Connection) #####
+----+-----------+-----------+-----------+-----------+
| | m | p | h | T |
|----+-----------+-----------+-----------+-----------|
| 30 | 2.970e+02 | 1.868e+01 | 2.017e+01 | 3.596e+01 |
| 31 | 2.970e+02 | 1.868e+01 | 2.017e+01 | 3.596e+01 |
| 32 | 2.970e+02 | 1.868e+01 | 3.134e+02 | 1.450e+02 |
| 33 | 4.602e+02 | 1.868e+01 | 3.300e+02 | 1.500e+02 |
| 34 | 4.602e+02 | 1.868e+01 | 4.677e+02 | 1.500e+02 |
| 35 | 2.970e+02 | 1.868e+01 | 5.266e+02 | 1.500e+02 |
| 36 | 2.970e+02 | 1.290e+00 | 4.354e+02 | 7.900e+01 |
| 37 | 2.970e+02 | 1.290e+00 | 1.658e+01 | 3.500e+01 |
| 51 | 2.472e+04 | 1.013e+00 | 4.244e+02 | 2.500e+01 |
| 52 | 2.472e+04 | 1.013e+00 | 4.295e+02 | 3.000e+01 |
| 17 | 2.750e+02 | 1.080e+01 | 7.774e+02 | 1.832e+02 |
| 18 | 2.750e+02 | 1.080e+01 | 5.471e+02 | 1.300e+02 |
| 19 | 2.750e+02 | 1.080e+01 | 2.304e+02 | 5.481e+01 |
| 21 | 2.750e+02 | 3.000e+01 | 2.328e+02 | 5.500e+01 |
+----+-----------+-----------+-----------+-----------+
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 3.00e+01 | 51 % | 2.21e+03 | 6.23e+06 | 4.63e+05 | 0.00e+00 |
2 | 1.46e+07 | 50 % | 1.00e+03 | 1.93e+06 | 5.16e+04 | 0.00e+00 |
3 | 2.39e+06 | 50 % | 8.29e+02 | 3.88e+05 | 1.47e+04 | 0.00e+00 |
4 | 1.42e+05 | 50 % | 2.01e+02 | 2.06e+04 | 6.34e+03 | 0.00e+00 |
5 | 6.85e+03 | 50 % | 3.17e+00 | 9.05e+01 | 8.46e+01 | 0.00e+00 |
6 | 1.16e+00 | 51 % | 3.77e-04 | 4.49e-02 | 1.43e-02 | 0.00e+00 |
7 | 2.18e-06 | 53 % | 3.15e-05 | 7.89e-03 | 2.06e-03 | 0.00e+00 |
Total iterations: 7, Calculation time: 0.08 s, Iterations per second: 88.32
##### RESULTS (HeatExchanger) #####
+----------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------+
| | Q | kA | td_log | ttd_u | ttd_l | pr1 | pr2 | zeta1 | zeta2 |
|----------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------|
| ORC Evaporator | -1.27e+08 | 2.90e+06 | 4.37e+01 | 1.18e+02 | 1.00e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
| ORC Preheater | -2.38e+07 | 1.38e+06 | 1.72e+01 | 1.50e+01 | 1.97e+01 | 1.00e+00 | 1.00e+00 | -7.45e-12 | 0.00e+00 |
+----------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------+
##### RESULTS (Condenser) #####
+---------------+-----------+----------+----------+----------+----------+----------+----------+----------+----------+
| | Q | kA | td_log | ttd_u | ttd_l | pr1 | pr2 | zeta1 | zeta2 |
|---------------+-----------+----------+----------+----------+----------+----------+----------+----------+----------|
| ORC Condenser | -1.39e+08 | 1.93e+07 | 7.21e+00 | 5.00e+00 | 1.00e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
+---------------+-----------+----------+----------+----------+----------+----------+----------+----------+----------+
##### RESULTS (Turbine) #####
+-------------+-----------+----------+----------+
| | P | eta_s | pr |
|-------------+-----------+----------+----------|
| ORC Turbine | -1.11e+07 | 9.00e-01 | 4.07e-01 |
+-------------+-----------+----------+----------+
##### RESULTS (Pump) #####
+-----------------+----------+----------+----------+
| | P | eta_s | pr |
|-----------------+----------+----------+----------|
| ORC Pump | 1.52e+05 | 8.00e-01 | 2.46e+00 |
| Geothermal Pump | 6.69e+05 | 8.00e-01 | 2.78e+00 |
+-----------------+----------+----------+----------+
##### RESULTS (CycleCloser) #####
+------------------+------------------+-------------------+
| | mass_deviation | fluid_deviation |
|------------------+------------------+-------------------|
| ORC Cycle Closer | 5.68e-14 | 0.00e+00 |
+------------------+------------------+-------------------+
##### RESULTS (Connection) #####
+----+-----------+-----------+-----------+-----------+
| | m | p | h | T |
|----+-----------+-----------+-----------+-----------|
| 30 | 3.910e+02 | 3.170e+00 | 1.697e+01 | 3.510e+01 |
| 31 | 3.910e+02 | 3.170e+00 | 1.697e+01 | 3.510e+01 |
| 32 | 3.910e+02 | 3.170e+00 | 7.793e+01 | 6.052e+01 |
| 33 | 5.810e+02 | 3.170e+00 | 9.037e+01 | 6.552e+01 |
| 34 | 5.810e+02 | 3.170e+00 | 3.083e+02 | 6.552e+01 |
| 35 | 3.910e+02 | 3.170e+00 | 4.017e+02 | 6.552e+01 |
| 36 | 3.910e+02 | 1.290e+00 | 3.732e+02 | 4.569e+01 |
| 37 | 3.910e+02 | 1.290e+00 | 1.658e+01 | 3.500e+01 |
| 51 | 2.772e+04 | 1.013e+00 | 4.244e+02 | 2.500e+01 |
| 52 | 2.772e+04 | 1.013e+00 | 4.295e+02 | 3.000e+01 |
| 17 | 2.750e+02 | 1.080e+01 | 7.774e+02 | 1.832e+02 |
| 18 | 2.750e+02 | 1.080e+01 | 3.170e+02 | 7.552e+01 |
| 19 | 2.750e+02 | 1.080e+01 | 2.304e+02 | 5.481e+01 |
| 21 | 2.750e+02 | 3.000e+01 | 2.328e+02 | 5.500e+01 |
+----+-----------+-----------+-----------+-----------+
Proposed solution 1.1#
Geothermal combined heat and power plant#
First Step: Build the geothermal steam strand for the combined heat and power process design
Be sure this one runs standalone first!
Show code cell content
# Geothermal steam strand with district heating system
# Components
steam_turbine = Turbine('Steam Turbine')
dh_condenser = Condenser('District Heating Condenser')
dh_preheater = HeatExchanger('District Heating Preheater')
dh_cc = CycleCloser('District Heating Cycle Closer')
dh_pump = Pump('District Heating Pump')
dh_heatsink = HeatExchangerSimple('District Heating Consumer')
steam_pump = Pump('Steam Pump')
# Auxiliary source and sink
steam_source = Source('Steam Sep Source')
geo_sink2 = Sink('Geothermal Sink2')
# Connection
# Geothermal steam strand
steam_source2steam_turb = Connection(steam_source, 'out1', steam_turbine, 'in1', label='12')
steam_turb2dh_cond = Connection(steam_turbine, 'out1', dh_condenser, 'in1', label='13')
dh_cond2dh_preheat = Connection(dh_condenser, 'out1', dh_preheater, 'in1', label='14')
dh_preheat2steam_pump = Connection(dh_preheater, 'out1', steam_pump, 'in1', label='15')
steam_pump2geo_sink2 = Connection(steam_pump, 'out1', geo_sink2, 'in1', label='16')
nw.add_conns(
steam_source2steam_turb, steam_turb2dh_cond, dh_cond2dh_preheat,
dh_preheat2steam_pump, steam_pump2geo_sink2
)
# District heating system
dh_heatsink2dh_cc = Connection(dh_heatsink, 'out1', dh_cc, 'in1', label='60')
dh_cc2dh_preheat = Connection(dh_cc, 'out1', dh_preheater, 'in2', label='61')
dh_preheat2dh_cond = Connection(dh_preheater, 'out2', dh_condenser, 'in2', label='62')
dh_cond2dh_heatsink = Connection(dh_condenser, 'out2', dh_heatsink, 'in1', label='63')
nw.add_conns(
dh_heatsink2dh_cc, dh_cc2dh_preheat, dh_preheat2dh_cond,
dh_cond2dh_heatsink
)
# Parametrization
# Components parameter
steam_turbine.set_attr(eta_s=0.9)
steam_pump.set_attr(eta_s=0.8)
dh_condenser.set_attr(pr1=1, pr2=1)
dh_preheater.set_attr(pr1=1, pr2=1)
# Connection parameter
# Geothermal steam strand
p_dh_condenser = PSI("P", "Q", 0, "T", 105 + 273.15, 'water') * 1e-5
steam_turb2dh_cond.set_attr(p=p_dh_condenser)
steam_source2steam_turb.set_attr(m=500*0.45, p=10.8, x=1, fluid=flu_vec_water)
steam_pump2geo_sink2.set_attr(T=55, p=30)
# District heating system
dh_cond2dh_heatsink.set_attr(T=100, p=10, fluid=flu_vec_water)
dh_heatsink2dh_cc.set_attr(T=50)
nw.solve('design')
steam_turb2dh_cond.set_attr(p=None)
dh_condenser.set_attr(ttd_u=5)
nw.solve('design')
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 9.19e+06 | 50 % | 1.99e+03 | 7.91e+06 | 1.93e+08 | 0.00e+00 |
2 | 8.46e+09 | 50 % | 6.69e+03 | 3.39e+06 | 1.55e+07 | 0.00e+00 |
3 | 2.13e+10 | 50 % | 6.06e-03 | 1.29e+06 | 6.34e+06 | 0.00e+00 |
4 | 5.93e+05 | 50 % | 2.32e-04 | 5.42e+05 | 8.41e+04 | 0.00e+00 |
5 | 2.47e+05 | 50 % | 1.91e-05 | 1.95e+05 | 6.22e+04 | 0.00e+00 |
6 | 5.02e+04 | 50 % | 1.29e-05 | 3.53e+04 | 3.41e+04 | 0.00e+00 |
7 | 3.09e+03 | 50 % | 1.45e-09 | 2.27e-07 | 3.11e+03 | 0.00e+00 |
8 | 2.64e-07 | 53 % | 4.17e-09 | 9.74e-07 | 3.37e-07 | 0.00e+00 |
Total iterations: 8, Calculation time: 0.11 s, Iterations per second: 70.39
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 9.34e-08 | 53 % | 2.03e-08 | 8.92e-06 | 6.94e-06 | 0.00e+00 |
2 | 1.62e-06 | 53 % | 2.12e-08 | 5.42e-06 | 1.68e-06 | 0.00e+00 |
3 | 9.09e-08 | 53 % | 1.80e-09 | 4.54e-07 | 1.41e-07 | 0.00e+00 |
4 | 8.45e-08 | 53 % | 7.91e-09 | 1.98e-06 | 6.11e-07 | 0.00e+00 |
5 | 1.15e-07 | 53 % | 1.07e-08 | 2.66e-06 | 8.22e-07 | 0.00e+00 |
Total iterations: 5, Calculation time: 0.09 s, Iterations per second: 57.21
Second Step: Connecting ORC with Steam Cycle
Build up the merge part
Build up the separator part
Set busses and solve the geothermal combined heat and power plant
Create and execute
ExergyAnalysis
instance
Show code cell content
from tespy.tools import ExergyAnalysis
# Components
# Geothermal heat source with interfaces
geo_source = Source('Geothermal Source')
geo_sink = Sink('Geothermal Sink')
seperator = DropletSeparator('Seperator')
merge = Merge('Merge')
# Build up the merge part
# Delete old connections
nw.del_conns(geo_pump2geo_sink1, steam_pump2geo_sink2, orc_preheat2geo_pump)
# Set new connections
steam_pump2merge = Connection(steam_pump, 'out1', merge, 'in1', label='16')
orc_preheat2merge = Connection(orc_preheater, 'out1', merge, 'in2', label='19')
merge2geo_pump = Connection(merge, 'out1', geo_pump, 'in1', label='20')
geo_pump2geo_sink = Connection(geo_pump, 'out1', geo_sink, 'in1', label='21')
nw.add_conns(steam_pump2merge, orc_preheat2merge, merge2geo_pump, geo_pump2geo_sink)
# Parametrize new connections
orc_preheat2merge.set_attr(T=55)
geo_pump2geo_sink.set_attr(p=30)
dh_preheat2steam_pump.set_attr(T=55)
# Build up the seperator part
# Delete old connections
nw.del_conns(liquid_source2orc_eva, steam_source2steam_turb)
# Set new connections
geo_source2sep = Connection(geo_source,'out1', seperator, 'in1', label='11')
sep2steam_turb = Connection(seperator, 'out2', steam_turbine, 'in1', label='12')
sep2orc_eva = Connection(seperator,'out1', orc_evaporator, 'in1', label='17')
nw.add_conns(geo_source2sep, sep2orc_eva, sep2steam_turb)
# Parametrize new connections
geo_source2sep.set_attr(m=500, p=10.8, x=0.45, fluid=flu_vec_water)
sep2orc_eva.set_attr(m0=500*0.55)
sep2steam_turb.set_attr(m0=500*0.45)
# Busses
heat_in = Bus('Heat Input')
heat_in.add_comps(
{'comp': geo_source, 'base': 'bus'},
{'comp': geo_sink, 'base': 'component'}
)
power_out = Bus('Power Output')
power_out.add_comps(
{'comp': steam_turbine, 'char': 0.985*0.99, 'base': 'component'},
{'comp': orc_turbine, 'char': 0.985*0.99, 'base': 'component'},
{'comp': steam_pump, 'char': 0.975*0.99, 'base': 'bus'},
{'comp': orc_pump, 'char': 0.975*0.99, 'base': 'bus'},
{'comp': geo_pump, 'char': 0.975*0.99, 'base': 'bus'}
)
heat_out_dh = Bus('Heat Output District Heating')
heat_out_dh.add_comps({'comp': dh_heatsink, 'base': 'component'})
heat_out_cool = Bus('Heat Output Cooling')
heat_out_cool.add_comps(
{'comp': cool_source, 'base': 'bus'},
{'comp': cool_sink, 'base': 'component'}
)
nw.add_busses(heat_in, power_out, heat_out_dh, heat_out_cool)
# Solve model
nw.solve("design")
nw.print_results()
# Calculate thermal efficiency
h_in = PSI('H', 'Q', 0.45, 'P', 10.8e5, 'water')
h_out = PSI('H', 'T', 55 + 273.15, 'P', 30e5, 'water')
delta_H = 500 * (h_in - h_out)
eta_el = abs(power_out.P.val)/delta_H
eta_th = abs(heat_out_dh.P.val)/delta_H
eta_chp = (abs(power_out.P.val)+abs(heat_out_dh.P.val))/delta_H
print(f'eta_el = {eta_el:.3f}')
print(f'eta_th = {eta_th:.3f}')
print(f'eta_chp = {eta_chp:.3f}')
# # Create and execute exergy analysis
dh_heatsink.set_attr(dissipative=False)
ean = ExergyAnalysis(
network=nw, E_F=[heat_in], E_P=[heat_out_dh, power_out], E_L=[heat_out_cool])
ean.analyse(pamb=1.013, Tamb=25)
ean.print_results(components=False, connections=False, busses=False, groups=False)
epsilon_chp = ean.network_data['epsilon']
print(f'epsilon_chp = {epsilon_chp:.3f}')
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 6.48e+08 | 50 % | 4.08e+03 | 2.87e+06 | 1.44e+07 | 2.82e-14 |
2 | 1.25e+08 | 50 % | 4.81e+03 | 4.78e+05 | 3.35e+05 | 0.00e+00 |
3 | 1.35e+06 | 50 % | 9.19e+02 | 7.41e+03 | 8.53e+03 | 0.00e+00 |
4 | 1.95e+04 | 50 % | 1.61e+00 | 8.80e+02 | 2.48e+02 | 0.00e+00 |
5 | 7.64e+00 | 51 % | 1.52e-03 | 2.01e-01 | 4.93e-02 | 0.00e+00 |
6 | 1.83e-06 | 53 % | 5.77e-04 | 1.48e-01 | 3.80e-02 | 0.00e+00 |
Total iterations: 6, Calculation time: 0.13 s, Iterations per second: 45.16
##### RESULTS (HeatExchanger) #####
+----------------------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------+
| | Q | kA | td_log | ttd_u | ttd_l | pr1 | pr2 | zeta1 | zeta2 |
|----------------------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------|
| ORC Evaporator | -1.26e+08 | 2.89e+06 | 4.35e+01 | 1.17e+02 | 1.00e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
| ORC Preheater | -2.44e+07 | 1.41e+06 | 1.73e+01 | 1.50e+01 | 1.99e+01 | 1.00e+00 | 1.00e+00 | -1.12e-11 | 0.00e+00 |
| District Heating Preheater | -4.72e+07 | 2.41e+06 | 1.96e+01 | 5.02e+01 | 5.00e+00 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
+----------------------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------+
##### RESULTS (Condenser) #####
+----------------------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------+
| | Q | kA | td_log | ttd_u | ttd_l | pr1 | pr2 | zeta1 | zeta2 |
|----------------------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------|
| ORC Condenser | -1.39e+08 | 1.93e+07 | 7.21e+00 | 5.00e+00 | 1.00e+01 | 1.00e+00 | 1.00e+00 | -2.60e-15 | 0.00e+00 |
| District Heating Condenser | -4.50e+08 | 2.30e+07 | 1.96e+01 | 5.00e+00 | 5.02e+01 | 1.00e+00 | 1.00e+00 | 1.12e-15 | 0.00e+00 |
+----------------------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------+
##### RESULTS (Turbine) #####
+---------------+-----------+----------+----------+
| | P | eta_s | pr |
|---------------+-----------+----------+----------|
| ORC Turbine | -1.13e+07 | 9.00e-01 | 4.00e-01 |
| Steam Turbine | -7.60e+07 | 9.00e-01 | 1.12e-01 |
+---------------+-----------+----------+----------+
##### RESULTS (Pump) #####
+-----------------+----------+----------+----------+
| | P | eta_s | pr |
|-----------------+----------+----------+----------|
| ORC Pump | 1.56e+05 | 8.00e-01 | 2.50e+00 |
| Geothermal Pump | 1.22e+06 | 8.00e-01 | 2.78e+00 |
| Steam Pump | 2.74e+05 | 8.00e-01 | 8.93e+00 |
+-----------------+----------+----------+----------+
##### RESULTS (CycleCloser) #####
+-------------------------------+------------------+-------------------+
| | mass_deviation | fluid_deviation |
|-------------------------------+------------------+-------------------|
| ORC Cycle Closer | 0.00e+00 | 0.00e+00 |
| District Heating Cycle Closer | 0.00e+00 | 0.00e+00 |
+-------------------------------+------------------+-------------------+
##### RESULTS (HeatExchangerSimple) #####
+---------------------------+-----------+----------+----------+-----+-----+------+------+--------+
| | Q | pr | zeta | D | L | ks | kA | Tamb |
|---------------------------+-----------+----------+----------+-----+-----+------+------+--------|
| District Heating Consumer | -4.98e+08 | 1.00e+00 | 0.00e+00 | nan | nan | nan | nan | nan |
+---------------------------+-----------+----------+----------+-----+-----+------+------+--------+
##### RESULTS (Connection) #####
+----+-----------+-----------+-----------+-----------+
| | m | p | h | T |
|----+-----------+-----------+-----------+-----------|
| 30 | 3.895e+02 | 3.224e+00 | 1.698e+01 | 3.511e+01 |
| 31 | 3.895e+02 | 3.224e+00 | 1.698e+01 | 3.511e+01 |
| 32 | 3.895e+02 | 3.224e+00 | 7.951e+01 | 6.116e+01 |
| 33 | 5.787e+02 | 3.224e+00 | 9.198e+01 | 6.616e+01 |
| 34 | 5.787e+02 | 3.224e+00 | 3.095e+02 | 6.616e+01 |
| 35 | 3.895e+02 | 3.224e+00 | 4.027e+02 | 6.616e+01 |
| 36 | 3.895e+02 | 1.290e+00 | 3.737e+02 | 4.594e+01 |
| 37 | 3.895e+02 | 1.290e+00 | 1.658e+01 | 3.500e+01 |
| 51 | 2.764e+04 | 1.013e+00 | 4.244e+02 | 2.500e+01 |
| 52 | 2.764e+04 | 1.013e+00 | 4.295e+02 | 3.000e+01 |
| 18 | 2.750e+02 | 1.080e+01 | 3.197e+02 | 7.616e+01 |
| 13 | 2.250e+02 | 1.209e+00 | 2.442e+03 | 1.050e+02 |
| 14 | 2.250e+02 | 1.209e+00 | 4.403e+02 | 1.050e+02 |
| 15 | 2.250e+02 | 1.209e+00 | 2.303e+02 | 5.500e+01 |
| 60 | 2.374e+03 | 1.000e+01 | 2.102e+02 | 5.000e+01 |
| 61 | 2.374e+03 | 1.000e+01 | 2.102e+02 | 5.000e+01 |
| 62 | 2.374e+03 | 1.000e+01 | 2.301e+02 | 5.476e+01 |
| 63 | 2.374e+03 | 1.000e+01 | 4.198e+02 | 1.000e+02 |
| 16 | 2.250e+02 | 1.080e+01 | 2.316e+02 | 5.510e+01 |
| 19 | 2.750e+02 | 1.080e+01 | 2.312e+02 | 5.500e+01 |
| 20 | 5.000e+02 | 1.080e+01 | 2.313e+02 | 5.504e+01 |
| 21 | 5.000e+02 | 3.000e+01 | 2.338e+02 | 5.523e+01 |
| 11 | 5.000e+02 | 1.080e+01 | 1.679e+03 | 1.832e+02 |
| 17 | 2.750e+02 | 1.080e+01 | 7.774e+02 | 1.832e+02 |
| 12 | 2.250e+02 | 1.080e+01 | 2.780e+03 | 1.832e+02 |
+----+-----------+-----------+-----------+-----------+
##### RESULTS (Bus: Heat Input) #####
+-------------------+-------------------+-------------+--------------+
| | component value | bus value | efficiency |
|-------------------+-------------------+-------------+--------------|
| Geothermal Source | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| Geothermal Sink | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| total | 0.000e+00 | 0.000e+00 | nan |
+-------------------+-------------------+-------------+--------------+
##### RESULTS (Bus: Power Output) #####
+-----------------+-------------------+-------------+--------------+
| | component value | bus value | efficiency |
|-----------------+-------------------+-------------+--------------|
| Steam Turbine | -7.598e+07 | -7.409e+07 | 9.751e-01 |
| ORC Turbine | -1.130e+07 | -1.102e+07 | 9.751e-01 |
| Steam Pump | 2.736e+05 | 2.835e+05 | 9.652e-01 |
| ORC Pump | 1.557e+05 | 1.613e+05 | 9.652e-01 |
| Geothermal Pump | 1.216e+06 | 1.260e+06 | 9.652e-01 |
| total | -8.563e+07 | -8.340e+07 | nan |
+-----------------+-------------------+-------------+--------------+
##### RESULTS (Bus: Heat Output District Heating) #####
+---------------------------+-------------------+-------------+--------------+
| | component value | bus value | efficiency |
|---------------------------+-------------------+-------------+--------------|
| District Heating Consumer | -4.977e+08 | -4.977e+08 | 1.000e+00 |
| total | -4.977e+08 | -4.977e+08 | nan |
+---------------------------+-------------------+-------------+--------------+
##### RESULTS (Bus: Heat Output Cooling) #####
+----------------+-------------------+-------------+--------------+
| | component value | bus value | efficiency |
|----------------+-------------------+-------------+--------------|
| Coolant Source | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| Coolant Sink | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| total | 0.000e+00 | 0.000e+00 | nan |
+----------------+-------------------+-------------+--------------+
eta_el = 0.115
eta_th = 0.688
eta_chp = 0.804
##### RESULTS: Aggregation of components and busses #####
+-------------------------------+-------------+-------------+-------------+-------------+-------------+-------------+
| | E_F | E_P | E_D | epsilon | y_Dk | y*_Dk |
|-------------------------------+-------------+-------------+-------------+-------------+-------------+-------------|
| District Heating Condenser | 9.530e+07 | 6.681e+07 | 2.849e+07 | 7.011e-01 | 1.300e-01 | 4.462e-01 |
| ORC Evaporator | 3.226e+07 | 1.527e+07 | 1.700e+07 | 4.732e-01 | 7.755e-02 | 2.662e-01 |
| Steam Turbine | 8.264e+07 | 7.409e+07 | 8.544e+06 | 8.966e-01 | 3.898e-02 | 1.338e-01 |
| ORC Condenser | 4.641e+06 | 1.153e+06 | 3.488e+06 | 2.485e-01 | 1.591e-02 | 5.463e-02 |
| District Heating Preheater | 7.294e+06 | 3.972e+06 | 3.322e+06 | 5.446e-01 | 1.515e-02 | 5.203e-02 |
| ORC Turbine | 1.247e+07 | 1.102e+07 | 1.457e+06 | 8.832e-01 | 6.646e-03 | 2.282e-02 |
| ORC Preheater | 2.911e+06 | 1.751e+06 | 1.160e+06 | 6.014e-01 | 5.293e-03 | 1.817e-02 |
| Geothermal Pump | 1.260e+06 | 9.955e+05 | 2.647e+05 | 7.899e-01 | 1.208e-03 | 4.146e-03 |
| Steam Pump | 2.835e+05 | 2.239e+05 | 5.956e+04 | 7.899e-01 | 2.717e-04 | 9.329e-04 |
| ORC Pump | 1.613e+05 | 1.256e+05 | 3.573e+04 | 7.785e-01 | 1.630e-04 | 5.596e-04 |
| ORC Drum | 2.117e+07 | 2.114e+07 | 3.168e+04 | 9.985e-01 | 1.445e-04 | 4.962e-04 |
| Merge | 4.535e+03 | 4.528e+03 | 6.554e+00 | 9.986e-01 | 2.990e-08 | 1.026e-07 |
| District Heating Consumer | 7.078e+07 | 7.078e+07 | -1.490e-08 | 1.000e+00 | -6.799e-17 | -2.334e-16 |
| ORC Cycle Closer | nan | nan | nan | nan | nan | nan |
| Coolant Sink | nan | nan | nan | nan | nan | nan |
| Coolant Source | nan | nan | nan | nan | nan | nan |
| District Heating Cycle Closer | nan | nan | nan | nan | nan | nan |
| Geothermal Sink | nan | nan | nan | nan | nan | nan |
| Seperator | nan | nan | nan | nan | nan | nan |
| Geothermal Source | nan | nan | nan | nan | nan | nan |
+-------------------------------+-------------+-------------+-------------+-------------+-------------+-------------+
##### RESULTS: Network exergy analysis #####
+-----------+-----------+-----------+-----------+-----------+
| E_F | E_P | E_D | E_L | epsilon |
|-----------+-----------+-----------+-----------+-----------|
| 2.192e+08 | 1.542e+08 | 6.384e+07 | 1.153e+06 | 7.035e-01 |
+-----------+-----------+-----------+-----------+-----------+
epsilon_chp = 0.703
Proposed solution 1.2#
Geothermal plant with only power generation#
First Step: Build low pressure ORC for complete condensation operation
Be sure this one runs standalone first!
Show code cell content
nw_el = Network(fluids=['water', 'air', 'Isopentane'])
nw_el.set_attr(T_unit='C', p_unit='bar', h_unit='kJ / kg')
flu_vec_orc = {'water': 0, 'air': 0, 'Isopentane': 1}
flu_vec_water = {'water': 1, 'air': 0, 'Isopentane': 0}
flu_vec_air = {'water': 0, 'air': 1, 'Isopentane': 0}
# Components
# Low pressure ORC
lp_orc_cc = CycleCloser('LP ORC Cycle Closer')
lp_orc_preheater = HeatExchanger('LP ORC Preheater')
lp_orc_drum = Drum('LP ORC Drum')
lp_orc_evaporator = HeatExchanger('LP ORC Evaporator')
lp_orc_turbine = Turbine('LP ORC Turbine')
lp_orc_condenser = Condenser('LP ORC Condenser')
lp_orc_pump = Pump('LP ORC Pump')
# Condenser coolant cycle
lp_cool_source = Source('LP Coolant Source')
lp_cool_sink = Sink('LP Coolant Sink')
# Geothermal steam Cycle
steam_turbine = Turbine('Steam Turbine')
steam_pump = Pump('Steam Pump')
# Auxiliary source and sink
steam_source = Source('Steam Sep Source')
geo_sink2 = Sink('Geothermal Sink2')
# Connections
# Low pressure ORC
lp_orc_pump2lp_orc_cc = Connection(lp_orc_pump, 'out1', lp_orc_cc, 'in1', label='40')
lp_orc_cc2lp_orc_preheater = Connection(lp_orc_cc, 'out1', lp_orc_preheater, 'in2', label='41')
lp_orc_preheat2lp_orc_drum = Connection(lp_orc_preheater, 'out2', lp_orc_drum, 'in1', label='42')
lp_orc_drum2lp_orc_eva = Connection(lp_orc_drum, 'out1', lp_orc_evaporator, 'in2', label='43')
lp_orc_eva2lp_orc_drum = Connection(lp_orc_evaporator, 'out2', lp_orc_drum, 'in2', label='44')
lp_orc_drum2lp_orc_turb = Connection(lp_orc_drum, 'out2', lp_orc_turbine, 'in1', label='45')
lp_orc_turb2lp_orc_cond = Connection(lp_orc_turbine, 'out1', lp_orc_condenser, 'in1', label='46')
lp_orc_cond2lp_orc_pump = Connection(lp_orc_condenser, 'out1', lp_orc_pump, 'in1', label='47')
nw_el.add_conns(
lp_orc_pump2lp_orc_cc, lp_orc_cc2lp_orc_preheater, lp_orc_preheat2lp_orc_drum,
lp_orc_drum2lp_orc_eva, lp_orc_eva2lp_orc_drum, lp_orc_drum2lp_orc_turb,
lp_orc_turb2lp_orc_cond, lp_orc_cond2lp_orc_pump
)
# Condenser coolant cycle
lp_cool_source2lp_orc_cond = Connection(lp_cool_source, 'out1', lp_orc_condenser, 'in2', label='71')
lp_orc_cond2lp_cool_sink = Connection(lp_orc_condenser, 'out2', lp_cool_sink, 'in1', label='72')
nw_el.add_conns(lp_cool_source2lp_orc_cond, lp_orc_cond2lp_cool_sink)
# Steam cyclye
steam_source2steam_turb = Connection(steam_source, 'out1', steam_turbine, 'in1', label='12')
steam_turb2lp_orc_eva = Connection(steam_turbine, 'out1', lp_orc_evaporator, 'in1', label='13')
lp_orc_eva2lp_orc_preheat = Connection(lp_orc_evaporator, 'out1', lp_orc_preheater, 'in1', label='14')
lp_orc_preheat2steam_pump = Connection(lp_orc_preheater, 'out1', steam_pump, 'in1', label='15')
steam_pump2geo_sink2 = Connection(steam_pump, 'out1', geo_sink2, 'in1', label='16')
nw_el.add_conns(
steam_source2steam_turb, steam_turb2lp_orc_eva, lp_orc_eva2lp_orc_preheat,
lp_orc_preheat2steam_pump, steam_pump2geo_sink2
)
Second Step: Set the process parameters and starting values. After that solve orc cycle with starting and final values
Show code cell content
from CoolProp.CoolProp import PropsSI as PSI
# Parametrization
# Component parameters
steam_turbine.set_attr(eta_s=0.9)
lp_orc_turbine.set_attr(eta_s=0.9)
lp_orc_pump.set_attr(eta_s=0.8)
steam_pump.set_attr(eta_s=0.8)
lp_orc_preheater.set_attr(pr1=1, pr2=1)
lp_orc_evaporator.set_attr(pr1=1)
lp_orc_condenser.set_attr(pr1=1, pr2=1)
# Connection parameter
# Low pressure ORC
p_lp_orc_condenser = PSI("P", "Q", 0, "T", 35 + 273.15, 'Isopentane') * 1e-5
lp_orc_turb2lp_orc_cond.set_attr(p=p_lp_orc_condenser, fluid=flu_vec_orc)
p_lp_orc_evaporator = PSI("P", "Q", 1, "T", 100 + 273.15, 'Isopentane') * 1e-5
lp_orc_eva2lp_orc_drum.set_attr(p=p_lp_orc_evaporator, x=0.5)
lp_orc_preheat2lp_orc_drum.set_attr(Td_bp=-5)
# Geothermal steam cyclye
steam_source2steam_turb.set_attr(m=500*0.45, p=10.8, x=0, fluid=flu_vec_water)
p_steam_lp_orc_evap = PSI("P", "Q", 0, "T", 120 + 273.15, 'water') * 1e-5
steam_turb2lp_orc_eva.set_attr(p=p_steam_lp_orc_evap)
# lp_orc_eva2lp_orc_preheat.set_attr(x0=0)
steam_pump2geo_sink2.set_attr(T=55, p=30)
# Condenser coolant cycle
lp_cool_source2lp_orc_cond.set_attr(T=25, p=1.013, fluid=flu_vec_air)
lp_orc_cond2lp_cool_sink.set_attr(T=30)
# Initial solve with starting values
nw_el.solve("design")
# Final solve
lp_orc_eva2lp_orc_drum.set_attr(p=None)
lp_orc_evaporator.set_attr(ttd_l=10)
lp_orc_turb2lp_orc_cond.set_attr(p=None)
lp_orc_condenser.set_attr(ttd_u=5)
nw_el.solve("design")
Invalid value for ttd_l: ttd_l = -2.214791293993528 below minimum value (0) at component LP ORC Evaporator.
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 1.05e+07 | 50 % | 1.31e+05 | 9.41e+06 | 4.25e+08 | 0.00e+00 |
2 | 1.28e+09 | 50 % | 1.57e+05 | 4.29e+06 | 1.41e+06 | 0.00e+00 |
3 | 3.39e+08 | 50 % | 4.21e+03 | 1.78e+06 | 9.96e+05 | 0.00e+00 |
4 | 8.08e+07 | 50 % | 6.09e+02 | 7.12e+05 | 3.96e+05 | 0.00e+00 |
5 | 5.45e+06 | 50 % | 3.61e+02 | 2.42e+05 | 3.00e+04 | 0.00e+00 |
6 | 6.08e+05 | 50 % | 3.98e+01 | 5.50e+04 | 1.89e+03 | 0.00e+00 |
7 | 3.73e+02 | 51 % | 9.03e-01 | 1.46e-11 | 1.45e+00 | 0.00e+00 |
8 | 1.10e-01 | 52 % | 3.08e-05 | 0.00e+00 | 2.81e-07 | 0.00e+00 |
9 | 2.09e-07 | 53 % | 4.47e-09 | 1.46e-11 | 2.44e-08 | 0.00e+00 |
Total iterations: 9, Calculation time: 0.07 s, Iterations per second: 122.71
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 1.22e+01 | 51 % | 1.35e+03 | 1.22e+06 | 1.74e+05 | 0.00e+00 |
2 | 2.92e+06 | 50 % | 5.98e+02 | 1.67e+05 | 2.59e+04 | 0.00e+00 |
3 | 8.82e+04 | 50 % | 5.96e+01 | 2.24e+03 | 2.61e+03 | 0.00e+00 |
4 | 9.97e+02 | 50 % | 3.23e-01 | 4.98e+01 | 1.60e+01 | 0.00e+00 |
5 | 3.32e-02 | 52 % | 2.84e-06 | 1.73e-03 | 1.29e-04 | 0.00e+00 |
6 | 1.76e-06 | 53 % | 7.60e-06 | 2.18e-03 | 6.04e-04 | 0.00e+00 |
Total iterations: 6, Calculation time: 0.07 s, Iterations per second: 80.66
Third Step: Identically build the ORC as in Proposed solution 1
Show code cell content
# Components
# ORC
orc_cc = CycleCloser('ORC Cycle Closer')
orc_preheater = HeatExchanger('ORC Preheater')
orc_drum = Drum('ORC Drum')
orc_evaporator = HeatExchanger('ORC Evaporator')
orc_turbine = Turbine('ORC Turbine')
orc_condenser = Condenser('ORC Condenser')
orc_pump = Pump('ORC Pump')
# Condenser coolant cycle
cool_source = Source('Coolant Source')
cool_sink = Sink('Coolant Sink')
# Auxiliary source and sink
liquid_source = Source('Liquid Sep Source')
geo_pump = Pump('Geothermal Pump')
geo_sink1 = Sink('Geothermal Sink1')
# Connections
# ORC
orc_pump2orc_cc = Connection(orc_pump, 'out1', orc_cc, 'in1', label='30')
orc_cc2orc_preheater = Connection(orc_cc, 'out1', orc_preheater, 'in2', label='31')
orc_preheat2orc_drum = Connection(orc_preheater, 'out2', orc_drum, 'in1', label='32')
orc_drum2orc_eva = Connection(orc_drum, 'out1', orc_evaporator, 'in2', label='33')
orc_eva2orc_drum = Connection(orc_evaporator, 'out2', orc_drum, 'in2', label='34')
orc_drum2orc_turb = Connection(orc_drum, 'out2', orc_turbine, 'in1', label='35')
orc_turb2orc_cond = Connection(orc_turbine, 'out1', orc_condenser, 'in1', label='36')
orc_cond2orc_pump = Connection(orc_condenser, 'out1', orc_pump, 'in1', label='37')
nw_el.add_conns(
orc_pump2orc_cc, orc_cc2orc_preheater, orc_preheat2orc_drum, orc_drum2orc_eva,
orc_eva2orc_drum, orc_drum2orc_turb, orc_turb2orc_cond, orc_cond2orc_pump
)
# Condenser coolant cycle
cool_source2orc_cond = Connection(cool_source, 'out1', orc_condenser, 'in2', label='51')
orc_cond2cool_sink = Connection(orc_condenser, 'out2', cool_sink, 'in1', label='52')
nw_el.add_conns(cool_source2orc_cond, orc_cond2cool_sink)
# Geothermal liquid cyclye
liquid_source2orc_eva = Connection(liquid_source, 'out1', orc_evaporator, 'in1', label='17')
orc_eva2orc_preheat = Connection(orc_evaporator, 'out1', orc_preheater, 'in1', label='18')
orc_preheat2geo_pump = Connection(orc_preheater, 'out1', geo_pump, 'in1', label='19')
geo_pump2geo_sink1 = Connection(geo_pump, 'out1', geo_sink1, 'in1', label='21')
nw_el.add_conns(
liquid_source2orc_eva, orc_eva2orc_preheat, orc_preheat2geo_pump, geo_pump2geo_sink1
)
# Parametrization
# Component parameters
orc_turbine.set_attr(eta_s=0.9)
orc_pump.set_attr(eta_s=0.8)
geo_pump.set_attr(eta_s=0.8)
orc_preheater.set_attr(pr1=1, pr2=1)
orc_evaporator.set_attr(pr1=1)
orc_condenser.set_attr(pr1=1, pr2=1)
# Connection parameter
# ORC
p_orc_condenser = PSI("P", "Q", 0, "T", 35 + 273.15, 'Isopentane') * 1e-5
orc_turb2orc_cond.set_attr(p=p_orc_condenser, fluid=flu_vec_orc)
p_orc_evaporator = PSI("P", "Q", 1, "T", 150 + 273.15, 'Isopentane') * 1e-5
orc_eva2orc_drum.set_attr(p=p_orc_evaporator, x=0.7)
orc_preheat2orc_drum.set_attr(Td_bp=-5)
# Geothermal liquid cyclye
liquid_source2orc_eva.set_attr(m=500*0.55, p=10.8, x=0, fluid=flu_vec_water)
geo_pump2geo_sink1.set_attr(T=55, p=30)
# Condenser coolant cycle
cool_source2orc_cond.set_attr(T=25, p=1.013, fluid=flu_vec_air)
orc_cond2cool_sink.set_attr(T=30)
# Initial solve with starting values
nw_el.solve("design")
# Final solve
orc_eva2orc_drum.set_attr(p=None)
orc_evaporator.set_attr(ttd_l=10)
orc_turb2orc_cond.set_attr(p=None)
orc_condenser.set_attr(ttd_u=5)
nw_el.solve("design")
Invalid value for ttd_u: ttd_u = -14.956346618676776 below minimum value (0) at component ORC Preheater.
Invalid value for ttd_l: ttd_l = -19.956346618678253 below minimum value (0) at component ORC Evaporator.
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 3.06e+08 | 50 % | 2.99e+05 | 7.93e+06 | 5.70e+06 | 0.00e+00 |
2 | 5.88e+09 | 50 % | 7.64e+06 | 3.09e+06 | 1.29e+08 | 0.00e+00 |
3 | 3.65e+10 | 50 % | 6.44e+06 | 1.27e+06 | 2.81e+07 | 0.00e+00 |
4 | 1.78e+10 | 50 % | 1.03e+06 | 5.57e+05 | 1.10e+06 | 0.00e+00 |
5 | 3.16e+09 | 50 % | 4.34e+05 | 2.13e+05 | 5.90e+06 | 0.00e+00 |
6 | 1.42e+08 | 50 % | 8.71e+03 | 5.50e+04 | 1.42e+05 | 0.00e+00 |
7 | 2.89e+05 | 50 % | 1.26e+01 | 8.06e-07 | 3.02e+02 | 0.00e+00 |
8 | 1.57e+00 | 51 % | 5.20e-04 | 3.31e-06 | 6.06e-04 | 0.00e+00 |
9 | 2.87e-07 | 53 % | 7.33e-08 | 2.09e-05 | 5.99e-06 | 0.00e+00 |
Total iterations: 9, Calculation time: 0.16 s, Iterations per second: 55.90
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 3.00e+01 | 51 % | 2.21e+03 | 6.23e+06 | 4.63e+05 | 0.00e+00 |
2 | 1.46e+07 | 50 % | 1.00e+03 | 1.93e+06 | 5.16e+04 | 0.00e+00 |
3 | 2.39e+06 | 50 % | 8.29e+02 | 3.88e+05 | 1.47e+04 | 0.00e+00 |
4 | 1.42e+05 | 50 % | 2.01e+02 | 2.06e+04 | 6.34e+03 | 0.00e+00 |
5 | 6.85e+03 | 50 % | 3.17e+00 | 9.05e+01 | 8.46e+01 | 0.00e+00 |
6 | 1.16e+00 | 51 % | 3.76e-04 | 4.48e-02 | 1.43e-02 | 0.00e+00 |
7 | 1.19e-07 | 53 % | 3.15e-05 | 7.89e-03 | 2.05e-03 | 0.00e+00 |
Total iterations: 7, Calculation time: 0.16 s, Iterations per second: 44.84
Fourth Step: Connecting ORC with low pressure ORC
Build the merge part
Build the separator part
Set busses and solve the geothermal combined heat and power plant
Create and execute
ExergyAnalysis
instance
Show code cell content
# Components
# Geothermal heat source with interfaces
geo_source = Source('Geothermal Source')
geo_sink = Sink('Geothermal Sink')
seperator = DropletSeparator('Seperator')
merge = Merge('Merge')
# Build up the merge part
# Delete old connections
nw_el.del_conns(geo_pump2geo_sink1, steam_pump2geo_sink2, orc_preheat2geo_pump)
# Set new connections
steam_pump2merge = Connection(steam_pump, 'out1', merge, 'in1', label='16')
orc_preheat2merge = Connection(orc_preheater, 'out1', merge, 'in2', label='19')
merge2geo_pump = Connection(merge, 'out1', geo_pump, 'in1', label='20')
geo_pump2geo_sink = Connection(geo_pump, 'out1', geo_sink, 'in1', label='21')
nw_el.add_conns(steam_pump2merge, orc_preheat2merge, merge2geo_pump, geo_pump2geo_sink)
# Parametrize new connections
orc_preheat2merge.set_attr(T=55)
geo_pump2geo_sink.set_attr(p=30)
lp_orc_preheat2steam_pump.set_attr(T=55)
# Build up the seperator part
# Delete old connections
nw_el.del_conns(liquid_source2orc_eva, steam_source2steam_turb)
# Set new connections
geo_source2sep = Connection(geo_source,'out1', seperator, 'in1', label='11')
sep2steam_turb = Connection(seperator, 'out2', steam_turbine, 'in1', label='12')
sep2orc_eva = Connection(seperator,'out1', orc_evaporator, 'in1', label='17')
nw_el.add_conns(geo_source2sep, sep2steam_turb, sep2orc_eva)
# Parametrize new connections
geo_source2sep.set_attr(m=500, p=10.8, x=0.45, fluid=flu_vec_water)
sep2orc_eva.set_attr(m0=500*0.55)
sep2steam_turb.set_attr(m0=500*0.45)
# Busses
heat_in = Bus('Heat Input')
heat_in.add_comps(
{'comp': geo_source, 'base': 'bus'},
{'comp': geo_sink, 'base': 'component'}
)
power_out = Bus('Power Output')
power_out.add_comps(
{'comp': steam_turbine, 'char': 0.985*0.99, 'base': 'component'},
{'comp': orc_turbine, 'char': 0.985*0.99, 'base': 'component'},
{'comp': lp_orc_turbine, 'char': 0.985*0.99, 'base': 'component'},
{'comp': steam_pump, 'char': 0.975*0.99, 'base': 'bus'},
{'comp': orc_pump, 'char': 0.975*0.99, 'base': 'bus'},
{'comp': lp_orc_pump, 'char': 0.975*0.99, 'base': 'bus'},
{'comp': geo_pump, 'char': 0.975*0.99, 'base': 'bus'}
)
heat_out_cool = Bus('Heat Output Cooling')
heat_out_cool.add_comps(
{'comp': cool_source, 'base': 'bus'},
{'comp': cool_sink, 'base': 'component'},
{'comp': lp_cool_source, 'base': 'bus'},
{'comp': lp_cool_sink, 'base': 'component'}
)
nw_el.add_busses(heat_in, power_out, heat_out_cool)
# Solve model
nw_el.solve("design")
nw_el.print_results()
# Calculate thermal efficiency
eta_el = abs(power_out.P.val)/delta_H
print(f'eta_el = {eta_el:.3f}')
# Create and execute exergy analysis
ean_el = ExergyAnalysis(
network=nw_el, E_F=[heat_in], E_P=[power_out], E_L=[heat_out_cool])
ean_el.analyse(pamb=1.013, Tamb=25)
ean_el.print_results(components=False, connections=False, busses=False, groups=False)
epsilon_el = ean_el.network_data['epsilon']
print(f'epsilon_el = {epsilon_el:.3f}')
iter | residual | progress | massflow | pressure | enthalpy | fluid |
-------+------------+------------+------------+------------+------------+------------+
1 | 6.48e+08 | 50 % | 8.73e+04 | 5.17e+06 | 1.47e+07 | 5.66e-14 |
2 | 3.89e+08 | 50 % | 5.19e+03 | 1.30e+06 | 7.57e+05 | 2.80e-17 |
3 | 2.41e+07 | 50 % | 5.38e+03 | 5.80e+06 | 8.95e+05 | 5.30e-19 |
4 | 2.45e+07 | 50 % | 2.15e+03 | 1.04e+06 | 1.53e+05 | 1.61e-16 |
5 | 6.75e+06 | 50 % | 2.97e+02 | 1.08e+05 | 1.65e+04 | 6.86e-34 |
6 | 4.65e+04 | 50 % | 1.02e+01 | 2.10e+03 | 4.14e+01 | 6.86e-34 |
7 | 1.45e+01 | 51 % | 3.40e-03 | 7.12e-01 | 1.03e-02 | 4.73e-29 |
8 | 1.19e-05 | 53 % | 1.21e-04 | 3.50e-02 | 9.40e-03 | 6.86e-34 |
Total iterations: 8, Calculation time: 0.22 s, Iterations per second: 36.59
##### RESULTS (Condenser) #####
+------------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------+
| | Q | kA | td_log | ttd_u | ttd_l | pr1 | pr2 | zeta1 | zeta2 |
|------------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------|
| LP ORC Condenser | -4.42e+08 | 6.13e+07 | 7.21e+00 | 5.00e+00 | 1.00e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
| ORC Condenser | -1.39e+08 | 1.93e+07 | 7.21e+00 | 5.00e+00 | 1.00e+01 | 1.00e+00 | 1.00e+00 | -8.65e-16 | 0.00e+00 |
+------------------+-----------+----------+----------+----------+----------+----------+----------+-----------+----------+
##### RESULTS (CycleCloser) #####
+---------------------+------------------+-------------------+
| | mass_deviation | fluid_deviation |
|---------------------+------------------+-------------------|
| LP ORC Cycle Closer | 0.00e+00 | 0.00e+00 |
| ORC Cycle Closer | 0.00e+00 | 0.00e+00 |
+---------------------+------------------+-------------------+
##### RESULTS (HeatExchanger) #####
+-------------------+-----------+----------+----------+----------+----------+----------+----------+----------+-----------+
| | Q | kA | td_log | ttd_u | ttd_l | pr1 | pr2 | zeta1 | zeta2 |
|-------------------+-----------+----------+----------+----------+----------+----------+----------+----------+-----------|
| LP ORC Preheater | -2.00e+08 | 1.16e+07 | 1.72e+01 | 1.50e+01 | 1.96e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
| LP ORC Evaporator | -3.13e+08 | 3.13e+07 | 1.00e+01 | 1.00e+01 | 1.00e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
| ORC Preheater | -2.44e+07 | 1.41e+06 | 1.73e+01 | 1.50e+01 | 1.99e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | 0.00e+00 |
| ORC Evaporator | -1.26e+08 | 2.89e+06 | 4.35e+01 | 1.17e+02 | 1.00e+01 | 1.00e+00 | 1.00e+00 | 0.00e+00 | -5.44e-15 |
+-------------------+-----------+----------+----------+----------+----------+----------+----------+----------+-----------+
##### RESULTS (Turbine) #####
+----------------+-----------+----------+----------+
| | P | eta_s | pr |
|----------------+-----------+----------+----------|
| LP ORC Turbine | -7.30e+07 | 9.00e-01 | 1.45e-01 |
| Steam Turbine | -6.04e+07 | 9.00e-01 | 1.84e-01 |
| ORC Turbine | -1.13e+07 | 9.00e-01 | 4.00e-01 |
+----------------+-----------+----------+----------+
##### RESULTS (Pump) #####
+-----------------+----------+----------+----------+
| | P | eta_s | pr |
|-----------------+----------+----------+----------|
| LP ORC Pump | 1.78e+06 | 8.00e-01 | 6.90e+00 |
| Steam Pump | 2.51e+05 | 8.00e-01 | 5.44e+00 |
| ORC Pump | 1.56e+05 | 8.00e-01 | 2.50e+00 |
| Geothermal Pump | 1.22e+06 | 8.00e-01 | 2.78e+00 |
+-----------------+----------+----------+----------+
##### RESULTS (Connection) #####
+----+-----------+-----------+-----------+-----------+
| | m | p | h | T |
|----+-----------+-----------+-----------+-----------|
| 40 | 1.133e+03 | 8.905e+00 | 1.815e+01 | 3.542e+01 |
| 41 | 1.133e+03 | 8.905e+00 | 1.815e+01 | 3.542e+01 |
| 42 | 1.133e+03 | 8.905e+00 | 1.947e+02 | 1.050e+02 |
| 43 | 2.388e+03 | 8.905e+00 | 2.088e+02 | 1.100e+02 |
| 44 | 2.388e+03 | 8.905e+00 | 3.399e+02 | 1.100e+02 |
| 45 | 1.133e+03 | 8.905e+00 | 4.710e+02 | 1.100e+02 |
| 46 | 1.133e+03 | 1.290e+00 | 4.066e+02 | 6.387e+01 |
| 47 | 1.133e+03 | 1.290e+00 | 1.658e+01 | 3.500e+01 |
| 71 | 8.784e+04 | 1.013e+00 | 4.244e+02 | 2.500e+01 |
| 72 | 8.784e+04 | 1.013e+00 | 4.295e+02 | 3.000e+01 |
| 13 | 2.250e+02 | 1.987e+00 | 2.511e+03 | 1.200e+02 |
| 14 | 2.250e+02 | 1.987e+00 | 1.120e+03 | 1.200e+02 |
| 15 | 2.250e+02 | 1.987e+00 | 2.304e+02 | 5.500e+01 |
| 30 | 3.895e+02 | 3.224e+00 | 1.698e+01 | 3.511e+01 |
| 31 | 3.895e+02 | 3.224e+00 | 1.698e+01 | 3.511e+01 |
| 32 | 3.895e+02 | 3.224e+00 | 7.951e+01 | 6.116e+01 |
| 33 | 5.787e+02 | 3.224e+00 | 9.198e+01 | 6.616e+01 |
| 34 | 5.787e+02 | 3.224e+00 | 3.095e+02 | 6.616e+01 |
| 35 | 3.895e+02 | 3.224e+00 | 4.027e+02 | 6.616e+01 |
| 36 | 3.895e+02 | 1.290e+00 | 3.737e+02 | 4.594e+01 |
| 37 | 3.895e+02 | 1.290e+00 | 1.658e+01 | 3.500e+01 |
| 51 | 2.764e+04 | 1.013e+00 | 4.244e+02 | 2.500e+01 |
| 52 | 2.764e+04 | 1.013e+00 | 4.295e+02 | 3.000e+01 |
| 18 | 2.750e+02 | 1.080e+01 | 3.197e+02 | 7.616e+01 |
| 16 | 2.250e+02 | 1.080e+01 | 2.315e+02 | 5.509e+01 |
| 19 | 2.750e+02 | 1.080e+01 | 2.312e+02 | 5.500e+01 |
| 20 | 5.000e+02 | 1.080e+01 | 2.313e+02 | 5.504e+01 |
| 21 | 5.000e+02 | 3.000e+01 | 2.338e+02 | 5.523e+01 |
| 11 | 5.000e+02 | 1.080e+01 | 1.679e+03 | 1.832e+02 |
| 12 | 2.250e+02 | 1.080e+01 | 2.780e+03 | 1.832e+02 |
| 17 | 2.750e+02 | 1.080e+01 | 7.774e+02 | 1.832e+02 |
+----+-----------+-----------+-----------+-----------+
##### RESULTS (Bus: Heat Input) #####
+-------------------+-------------------+-------------+--------------+
| | component value | bus value | efficiency |
|-------------------+-------------------+-------------+--------------|
| Geothermal Source | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| Geothermal Sink | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| total | 0.000e+00 | 0.000e+00 | nan |
+-------------------+-------------------+-------------+--------------+
##### RESULTS (Bus: Power Output) #####
+-----------------+-------------------+-------------+--------------+
| | component value | bus value | efficiency |
|-----------------+-------------------+-------------+--------------|
| Steam Turbine | -6.043e+07 | -5.893e+07 | 9.751e-01 |
| ORC Turbine | -1.130e+07 | -1.102e+07 | 9.751e-01 |
| LP ORC Turbine | -7.298e+07 | -7.117e+07 | 9.751e-01 |
| Steam Pump | 2.514e+05 | 2.605e+05 | 9.652e-01 |
| ORC Pump | 1.557e+05 | 1.613e+05 | 9.652e-01 |
| LP ORC Pump | 1.783e+06 | 1.847e+06 | 9.652e-01 |
| Geothermal Pump | 1.216e+06 | 1.260e+06 | 9.652e-01 |
| total | -1.413e+08 | -1.376e+08 | nan |
+-----------------+-------------------+-------------+--------------+
##### RESULTS (Bus: Heat Output Cooling) #####
+-------------------+-------------------+-------------+--------------+
| | component value | bus value | efficiency |
|-------------------+-------------------+-------------+--------------|
| Coolant Source | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| Coolant Sink | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| LP Coolant Source | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| LP Coolant Sink | 0.000e+00 | 0.000e+00 | 1.000e+00 |
| total | 0.000e+00 | 0.000e+00 | nan |
+-------------------+-------------------+-------------+--------------+
eta_el = 0.190
##### RESULTS: Aggregation of components and busses #####
+---------------------+-------------+-------------+-------------+-------------+-------------+-------------+
| | E_F | E_P | E_D | epsilon | y_Dk | y*_Dk |
|---------------------+-------------+-------------+-------------+-------------+-------------+-------------|
| LP ORC Preheater | 4.402e+07 | 2.628e+07 | 1.774e+07 | 5.970e-01 | 8.094e-02 | 2.311e-01 |
| ORC Evaporator | 3.226e+07 | 1.527e+07 | 1.700e+07 | 4.732e-01 | 7.754e-02 | 2.214e-01 |
| LP ORC Condenser | 1.690e+07 | 3.666e+06 | 1.324e+07 | 2.169e-01 | 6.039e-02 | 1.724e-01 |
| LP ORC Turbine | 8.020e+07 | 7.117e+07 | 9.029e+06 | 8.874e-01 | 4.119e-02 | 1.176e-01 |
| Steam Turbine | 6.553e+07 | 5.893e+07 | 6.594e+06 | 8.994e-01 | 3.008e-02 | 8.589e-02 |
| LP ORC Evaporator | 7.566e+07 | 6.947e+07 | 6.198e+06 | 9.181e-01 | 2.828e-02 | 8.072e-02 |
| ORC Condenser | 4.641e+06 | 1.153e+06 | 3.488e+06 | 2.485e-01 | 1.591e-02 | 4.543e-02 |
| ORC Turbine | 1.247e+07 | 1.102e+07 | 1.457e+06 | 8.832e-01 | 6.646e-03 | 1.897e-02 |
| ORC Preheater | 2.911e+06 | 1.751e+06 | 1.160e+06 | 6.014e-01 | 5.293e-03 | 1.511e-02 |
| LP ORC Pump | 1.847e+06 | 1.438e+06 | 4.088e+05 | 7.787e-01 | 1.865e-03 | 5.325e-03 |
| Geothermal Pump | 1.260e+06 | 9.955e+05 | 2.647e+05 | 7.899e-01 | 1.208e-03 | 3.448e-03 |
| LP ORC Drum | 1.644e+08 | 1.643e+08 | 8.136e+04 | 9.995e-01 | 3.712e-04 | 1.060e-03 |
| Steam Pump | 2.605e+05 | 2.057e+05 | 5.473e+04 | 7.899e-01 | 2.497e-04 | 7.128e-04 |
| ORC Pump | 1.613e+05 | 1.256e+05 | 3.573e+04 | 7.785e-01 | 1.630e-04 | 4.654e-04 |
| ORC Drum | 2.117e+07 | 2.114e+07 | 3.168e+04 | 9.985e-01 | 1.445e-04 | 4.126e-04 |
| Merge | 4.166e+03 | 4.160e+03 | 5.534e+00 | 9.987e-01 | 2.525e-08 | 7.207e-08 |
| LP ORC Cycle Closer | nan | nan | nan | nan | nan | nan |
| LP Coolant Source | nan | nan | nan | nan | nan | nan |
| LP Coolant Sink | nan | nan | nan | nan | nan | nan |
| ORC Cycle Closer | nan | nan | nan | nan | nan | nan |
| Coolant Sink | nan | nan | nan | nan | nan | nan |
| Coolant Source | nan | nan | nan | nan | nan | nan |
| Geothermal Sink | nan | nan | nan | nan | nan | nan |
| Geothermal Source | nan | nan | nan | nan | nan | nan |
| Seperator | nan | nan | nan | nan | nan | nan |
+---------------------+-------------+-------------+-------------+-------------+-------------+-------------+
##### RESULTS: Network exergy analysis #####
+-----------+-----------+-----------+-----------+-----------+
| E_F | E_P | E_D | E_L | epsilon |
|-----------+-----------+-----------+-----------+-----------|
| 2.192e+08 | 1.376e+08 | 7.678e+07 | 4.819e+06 | 6.277e-01 |
+-----------+-----------+-----------+-----------+-----------+
epsilon_el = 0.628
Proposed solution 1.3#
First Step: Evaluate both processes according to Eqs. (43) and (44)
Comparison of energy and exergy efficiency
Combined heat and power |
Only power generation |
|
---|---|---|
\(\eta_{CHP}\) |
80.4 % |
19.0 % |
\(\epsilon_{CHP}\) |
70.3 % |
62.8 % |
Second Step: Compare both processes with a Grassmann diagram
Show code cell content
import plotly.graph_objects as go
links, nodes = ean.generate_plotly_sankey_input()
fig = go.Figure(
go.Sankey(
arrangement="snap",
node={"label": nodes, 'pad': 11, 'color': 'orange'},
link=links
),
layout=go.Layout({'width': 1200})
)
# plot(fig, filename='chp_grassmann')
fig.show()
links_el, nodes_el = ean_el.generate_plotly_sankey_input()
fig_el = go.Figure(
go.Sankey(
arrangement="snap",
node={"label": nodes_el, 'pad': 11, 'color': 'orange'},
link=links_el
),
layout=go.Layout({'width': 1200})
)
fig_el.show()
Explanation
The combined heat and power plant is able to utilize a larger portion of the input energy for both electricity generation and heat production. This results in a higher overall efficiency, as more of the available energy is converted into useful work. On the other hand, the only power generation plant focuses solely on electricity generation, neglecting the potential for heat recovery. As a result, a significant portion of the input energy is wasted as unused heat, leading to a lower overall efficiency.
As for energetic efficiency the combined heat and power plant is able to achieve a higher exergetic efficiency by effectively utilizing both the thermal and electrical energy outputs. This means that a larger portion of the input energy is converted into useful work, resulting in a higher overall efficiency. In contrast, the only power generation plant focuses solely on electricity generation and does not utilize the waste heat. As a result, a significant amount of exergy is lost as unused heat, leading to a lower overall efficiency.
Based on the energy efficiency, it could be conclude that the only power generation plant operates extremely inefficiently. Only by considering the exergy efficiency it becomes clear that the exergetic share of this only power generation plant is significantly higher compared to the combined heat and power plant.
Lessons Learned#
Design and model a complex combined heat and power plant
Analyze and evaluate it based on energy- and exergy-based methods
Compare CHP and pure power plants while incorporating the value of different forms of energy
Identify the influence of specific components on a processes efficiency