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.

../_images/geothermal_chp_parameters.svg

Fig. 22 Boundary conditions of the geothermal plant with cogeneration of heat and power.#

Additionally, Table 6 lists approximations of typical component parameters.

Table 6 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).

(43)#\[ \eta_{CHP} = \frac{\dot{W}_{net} + \dot{Q}_{DH}}{\dot{H}_1 - \dot{H}_2}\]
(44)#\[ \epsilon_{CHP} = \frac{\dot{W}_{net} + (\dot{E}_{ff} - \dot{E}_{bf})}{\dot{E}_1 - \dot{E}_2}\]

Exercise 1#

  1. Build a geothermal combined heat and power plant according to the boundary conditions in Fig. 22 and Table 6.

  2. Build another geothermal plant based on the one before that replaces the heat output with another cycle extracting electrical power.

  3. 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 solution 1#

First Step: Build the ORC as basis for geothermal combined heat and power plant and geothermal power plant

Hide 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

Hide 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!

Hide 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

  1. Build up the merge part

  2. Build up the separator part

  3. Set busses and solve the geothermal combined heat and power plant

  4. Create and execute ExergyAnalysis instance

Hide 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!

Hide 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

Hide 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

Hide 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

  1. Build the merge part

  2. Build the separator part

  3. Set busses and solve the geothermal combined heat and power plant

  4. Create and execute ExergyAnalysis instance

Hide 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)

Second Step: Compare both processes with a Grassmann diagram

Hide 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()

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