示例#1
0
    def setup_clausius_rankine(self, fluid_list):
        """Setup a Clausius-Rankine cycle."""
        self.nw = network(fluids=fluid_list)
        self.nw.set_attr(p_unit='bar', T_unit='C', iterinfo=False)

        # %% components

        # main components
        turb = turbine('turbine')
        con = condenser('condenser')
        pu = pump('pump')
        steam_generator = heat_exchanger_simple('steam generator')
        closer = cycle_closer('cycle closer')

        # cooling water
        so_cw = source('cooling water inlet')
        si_cw = sink('cooling water outlet')

        # %% connections

        # main cycle
        fs_in = connection(closer, 'out1', turb, 'in1', label='livesteam')
        ws = connection(turb, 'out1', con, 'in1', label='wastesteam')
        cond = connection(con, 'out1', pu, 'in1', label='condensate')
        fw = connection(pu, 'out1', steam_generator, 'in1', label='feedwater')
        fs_out = connection(steam_generator, 'out1', closer, 'in1')
        self.nw.add_conns(fs_in, ws, cond, fw, fs_out)

        # cooling water
        cw_in = connection(so_cw, 'out1', con, 'in2')
        cw_out = connection(con, 'out2', si_cw, 'in1')
        self.nw.add_conns(cw_in, cw_out)

        # %% parametrization of components

        turb.set_attr(eta_s=0.9)
        con.set_attr(pr1=1, pr2=0.99, ttd_u=5)
        pu.set_attr(eta_s=0.7)
        steam_generator.set_attr(pr=0.9)

        # %% parametrization of connections

        fs_in.set_attr(p=100, T=500, m=100, fluid={self.nw.fluids[0]: 1})

        cw_in.set_attr(T=20, p=5, fluid={self.nw.fluids[0]: 1})
        cw_out.set_attr(T=30)

        # %% solving
        self.nw.solve('design')
    def __init__(self, working_fluid):

        self.working_fluid = working_fluid
        fluids = ['water', self.working_fluid, 'air']
        self.nw = network(fluids=fluids)
        self.nw.set_attr(p_unit='bar', T_unit='C', h_unit='kJ / kg')

        # geo parameters

        geo_mass_flow = 210
        geo_steam_share = 0.1
        T_brine_in = 144.8
        T_reinjection = 70.8

        # ambient parameters

        T_amb = 0
        p_amb = 1

        # main components

        geo_steam = source('steam source')
        geo_brine = source('brine source')
        geo_reinjection = sink('reinjection well')

        air_in = source('ambient air source')
        air_out = sink('ambient air sink')
        air_cond = condenser('main condenser')

        orc_cc = cycle_closer('orc cycle closer')

        evap_steam = condenser('steam evaporator')
        evap_splitter = splitter('splitter evaporation')
        evap_merge = merge('merge evaporation')
        evap_steam = condenser('steam evaporator')
        geo_steam_pump = pump('geosteam condensate pump')
        evap_brine = heat_exchanger('brine evaporator')
        dr = drum('drum')

        eco = heat_exchanger('economiser')
        feed_water_pump = pump('feed water pump')
        geo_merge = merge('brine merge')

        tur = turbine('turbine')

        ls_valve = valve('live steam valve')

        ihe = heat_exchanger('internal heat exchanger')

        # busses
        power_bus = bus('power output')
        power_bus.add_comps({
            'c': tur,
            'char': -1
        }, {
            'c': feed_water_pump,
            'char': -1
        }, {
            'c': geo_steam_pump,
            'char': -1
        })

        geothermal_bus = bus('thermal input')
        geothermal_bus.add_comps({
            'c': eco,
            'char': -1
        }, {
            'c': evap_brine,
            'char': -1
        }, {
            'c': evap_steam,
            'char': -1
        })

        self.nw.add_busses(power_bus, geothermal_bus)

        # turbine to condenser
        ls_in = connection(orc_cc, 'out1', ls_valve, 'in1')
        lsv_tur = connection(ls_valve, 'out1', tur, 'in1')
        tur_ihe = connection(tur, 'out1', ihe, 'in1')
        ihe_cond = connection(ihe, 'out1', air_cond, 'in1')
        self.nw.add_conns(ls_in, lsv_tur, tur_ihe, ihe_cond)

        # condenser to steam generator
        cond_fwp = connection(air_cond, 'out1', feed_water_pump, 'in1')
        fwp_ihe = connection(feed_water_pump, 'out1', ihe, 'in2')
        self.nw.add_conns(cond_fwp, fwp_ihe)

        # steam generator
        ihe_eco = connection(ihe, 'out2', eco, 'in2')
        eco_dr = connection(eco, 'out2', dr, 'in1')
        dr_esp = connection(dr, 'out1', evap_splitter, 'in1')
        esp_eb = connection(evap_splitter, 'out1', evap_brine, 'in2')
        esp_es = connection(evap_splitter, 'out2', evap_steam, 'in2')
        eb_em = connection(evap_brine, 'out2', evap_merge, 'in1')
        es_em = connection(evap_steam, 'out2', evap_merge, 'in2')
        em_dr = connection(evap_merge, 'out1', dr, 'in2')
        ls_out = connection(dr, 'out2', orc_cc, 'in1')
        self.nw.add_conns(ihe_eco, eco_dr, dr_esp, esp_eb, esp_es, eb_em,
                          es_em, em_dr, ls_out)

        # air cold side
        air_cold = connection(air_in, 'out1', air_cond, 'in2')
        air_hot = connection(air_cond, 'out2', air_out, 'in1')
        self.nw.add_conns(air_cold, air_hot)

        # geo source
        gs_es = connection(geo_steam,
                           'out1',
                           evap_steam,
                           'in1',
                           label='geosteam')
        es_gsp = connection(evap_steam, 'out1', geo_steam_pump, 'in1')
        gsp_gm = connection(geo_steam_pump, 'out1', geo_merge, 'in1')
        gb_eb = connection(geo_brine,
                           'out1',
                           evap_brine,
                           'in1',
                           label='geobrine')
        eb_gm = connection(evap_brine, 'out1', geo_merge, 'in2')
        self.nw.add_conns(gs_es, es_gsp, gsp_gm, gb_eb, eb_gm)

        gm_eco = connection(geo_merge, 'out1', eco, 'in1')
        eco_gr = connection(eco,
                            'out1',
                            geo_reinjection,
                            'in1',
                            label='reinjection')
        self.nw.add_conns(gm_eco, eco_gr)

        # fluid settings
        ihe_eco.set_attr(fluid={self.working_fluid: 1, 'air': 0, 'water': 0})
        air_cold.set_attr(fluid={self.working_fluid: 0, 'air': 1, 'water': 0})
        gs_es.set_attr(fluid={self.working_fluid: 0, 'air': 0, 'water': 1})
        gb_eb.set_attr(fluid={self.working_fluid: 0, 'air': 0, 'water': 1})

        # connection parameters
        ls_stable_p0 = PSI('P', 'T', T_brine_in + 273.15, 'Q', 1,
                           self.working_fluid) / 1e5
        lsv_tur.set_attr(p0=ls_stable_p0)
        ws_stable_h0 = (
            PSI('H', 'T', T_amb + 273.15, 'Q', 1, self.working_fluid) + 0.5 *
            (PSI('H', 'T', T_brine_in + 273.15, 'Q', 1, self.working_fluid) -
             PSI('H', 'T', T_amb + 273.15, 'Q', 1, self.working_fluid))) / 1e3
        tur_ihe.set_attr(h=ws_stable_h0)
        ihe_cond.set_attr(
            Td_bp=2,
            design=['Td_bp'],
            p0=PSI('P', 'T', T_amb + 273.15, 'Q', 1, self.working_fluid) / 1e5)
        fwp_ihe.set_attr(h=ref(cond_fwp, 1, 1e3))

        # steam generator
        gs_es.set_attr(m=geo_mass_flow * geo_steam_share,
                       T=T_brine_in,
                       x=1,
                       p0=5)
        gb_eb.set_attr(m=geo_mass_flow * (1 - geo_steam_share),
                       T=T_brine_in,
                       x=0)

        em_dr.set_attr()
        eb_em.set_attr(x=0.5)
        es_em.set_attr(x=0.5, design=['x'])
        eb_gm.set_attr(T=T_brine_in - 20)

        eco_dr.set_attr(Td_bp=-2)

        # main condenser
        air_cold.set_attr(p=p_amb, T=T_amb)
        air_hot.set_attr(T=15)

        # component parameters
        # turbines
        tur.set_attr(design=['eta_s'], offdesign=['cone', 'eta_s_char'])
        ls_valve.set_attr(pr=1, design=['pr'])
        # condensing
        ihe.set_attr(pr1=1, pr2=1, offdesign=['kA_char'])
        air_cond.set_attr(pr1=1,
                          pr2=1,
                          ttd_u=10,
                          design=['ttd_u'],
                          offdesign=['kA_char'])
        feed_water_pump.set_attr(design=['eta_s'], offdesign=['eta_s_char'])

        # steam generator
        evap_steam.set_attr(
            pr1=0.99,
            offdesign=['kA_char'])  # no pr2 due to drum pressure balance
        evap_brine.set_attr(
            pr1=1, ttd_l=10,
            offdesign=['kA_char'])  # no pr2 due to drum pressure balance
        eco.set_attr(pr1=1, pr2=1)
        geo_steam_pump.set_attr(eta_s=0.75,
                                design=['eta_s'],
                                offdesign=['eta_s_char'])

        self.nw.set_attr(iterinfo=False)
        self.nw.solve('design')
        self.nw.print_results()
        tur.set_attr(eta_s=0.9)
        feed_water_pump.set_attr(eta_s=0.75)
        tur_ihe.set_attr(h=None)
        fwp_ihe.set_attr(h=None)
        eb_gm.set_attr(T=None)
T_reinjection = 69.1
# cooling air part
mass_flow_rate_air = 6142
T_air = -4.7
p_air = 0.61
# calculation secondary variables
p_before_turbine = PropsSI('P', 'T', T_brine_in + 273.15 - 28, 'Q', 1,
                           'Isopentane') / 1e5
p_steam_in = PropsSI('P', 'T', T_brine_in + 273.15, 'Q', 1, 'water') / 1e5

# main components
evaporator = evaporator('evaporator')
pump_c = pump('condensate pump')
merge = merge('geo-fluid merge point')
preheater = heat_exchanger('preheater')
turbine = turbine('turbine')
ihe = heat_exchanger('internal heat exchanger')
condenser = condenser('condenser')
pump = pump('feeding pump')
# working fluid
source_wf = source('working fluid source')
sink_wf = sink('working fluid sink')
close_cycle = cycle_closer('cycle closer before preheater')
#brine
source_s = source('steam source')
source_b = source('brine source')
sink_s = sink('steam sink')
sink_b = sink('brine sink')
# cooling air
source_ca = source('cooling air source')
sink_ca = sink('cooling air sink')
示例#4
0
    def __init__(self):
        self.nw = network(
            fluids=['BICUBIC::water'],
            p_unit='bar', T_unit='C', h_unit='kJ / kg',
            iterinfo=False)
        # components
        # main cycle
        eco = heat_exchanger_simple('economizer')
        eva = heat_exchanger_simple('evaporator')
        sup = heat_exchanger_simple('superheater')
        cc = cycle_closer('cycle closer')
        hpt = turbine('high pressure turbine')
        sp1 = splitter('splitter 1', num_out=2)
        mpt = turbine('mid pressure turbine')
        sp2 = splitter('splitter 2', num_out=2)
        lpt = turbine('low pressure turbine')
        con = condenser('condenser')
        pu1 = pump('feed water pump')
        fwh1 = condenser('feed water preheater 1')
        fwh2 = condenser('feed water preheater 2')
        dsh = desuperheater('desuperheater')
        me2 = merge('merge2', num_in=2)
        pu2 = pump('feed water pump 2')
        pu3 = pump('feed water pump 3')
        me = merge('merge', num_in=2)

        # cooling water
        cwi = source('cooling water source')
        cwo = sink('cooling water sink')

        # connections
        # main cycle
        cc_hpt = connection(cc, 'out1', hpt, 'in1', label='feed steam')
        hpt_sp1 = connection(hpt, 'out1', sp1, 'in1', label='extraction1')
        sp1_mpt = connection(sp1, 'out1', mpt, 'in1', state='g')
        mpt_sp2 = connection(mpt, 'out1', sp2, 'in1', label='extraction2')
        sp2_lpt = connection(sp2, 'out1', lpt, 'in1')
        lpt_con = connection(lpt, 'out1', con, 'in1')
        con_pu1 = connection(con, 'out1', pu1, 'in1')
        pu1_fwh1 = connection(pu1, 'out1', fwh1, 'in2')
        fwh1_me = connection(fwh1, 'out2', me, 'in1', state='l')
        me_fwh2 = connection(me, 'out1', fwh2, 'in2', state='l')
        fwh2_dsh = connection(fwh2, 'out2', dsh, 'in2', state='l')
        dsh_me2 = connection(dsh, 'out2', me2, 'in1')
        me2_eco = connection(me2, 'out1', eco, 'in1', state='l')
        eco_eva = connection(eco, 'out1', eva, 'in1')
        eva_sup = connection(eva, 'out1', sup, 'in1')
        sup_cc = connection(sup, 'out1', cc, 'in1')

        self.nw.add_conns(cc_hpt, hpt_sp1, sp1_mpt, mpt_sp2, sp2_lpt,
                          lpt_con, con_pu1, pu1_fwh1, fwh1_me, me_fwh2,
                          fwh2_dsh, dsh_me2, me2_eco, eco_eva, eva_sup, sup_cc)

        # cooling water
        cwi_con = connection(cwi, 'out1', con, 'in2')
        con_cwo = connection(con, 'out2', cwo, 'in1')

        self.nw.add_conns(cwi_con, con_cwo)

        # preheating
        sp1_dsh = connection(sp1, 'out2', dsh, 'in1')
        dsh_fwh2 = connection(dsh, 'out1', fwh2, 'in1')
        fwh2_pu2 = connection(fwh2, 'out1', pu2, 'in1')
        pu2_me2 = connection(pu2, 'out1', me2, 'in2')

        sp2_fwh1 = connection(sp2, 'out2', fwh1, 'in1')
        fwh1_pu3 = connection(fwh1, 'out1', pu3, 'in1')
        pu3_me = connection(pu3, 'out1', me, 'in2')

        self.nw.add_conns(sp1_dsh, dsh_fwh2, fwh2_pu2, pu2_me2,
                          sp2_fwh1, fwh1_pu3, pu3_me)

        # busses
        # power bus
        self.power = bus('power')
        self.power.add_comps(
            {'comp': hpt, 'char': -1}, {'comp': mpt, 'char': -1},
            {'comp': lpt, 'char': -1}, {'comp': pu1, 'char': -1},
            {'comp': pu2, 'char': -1}, {'comp': pu3, 'char': -1})

        # heating bus
        self.heat = bus('heat')
        self.heat.add_comps(
            {'comp': eco, 'char': 1}, {'comp': eva, 'char': 1},
            {'comp': sup, 'char': 1})

        self.nw.add_busses(self.power, self.heat)

        # parametrization
        # components
        hpt.set_attr(eta_s=0.9)
        mpt.set_attr(eta_s=0.9)
        lpt.set_attr(eta_s=0.9)

        pu1.set_attr(eta_s=0.8)
        pu2.set_attr(eta_s=0.8)
        pu3.set_attr(eta_s=0.8)

        eco.set_attr(pr=0.99)
        eva.set_attr(pr=0.99)
        sup.set_attr(pr=0.99)

        con.set_attr(pr1=0.99, pr2=0.99, ttd_u=5)
        fwh1.set_attr(pr1=0.99, pr2=0.99, ttd_u=5)
        fwh2.set_attr(pr1=0.99, pr2=0.99, ttd_u=5)
        dsh.set_attr(pr1=0.99, pr2=0.99)

        # connections
        eco_eva.set_attr(x=0)
        eva_sup.set_attr(x=1)

        cc_hpt.set_attr(m=200, T=650, p=100, fluid={'water': 1})
        hpt_sp1.set_attr(p=20)
        mpt_sp2.set_attr(p=3)
        lpt_con.set_attr(p=0.05)

        cwi_con.set_attr(T=20, p=10, fluid={'water': 1})
示例#5
0
from tespy.networks import network
from tespy.components import (
    sink, source, compressor, turbine, condenser, combustion_chamber, pump,
    heat_exchanger, drum, cycle_closer)
from tespy.connections import connection, bus, ref

# %% network
fluid_list = ['Ar', 'N2', 'O2', 'CO2', 'CH4', 'H2O']

nw = network(fluids=fluid_list, p_unit='bar', T_unit='C', h_unit='kJ / kg')

# %% components
# gas turbine part
comp = compressor('compressor')
c_c = combustion_chamber('combustion')
g_turb = turbine('gas turbine')

CH4 = source('fuel source')
air = source('ambient air')

# waste heat recovery
suph = heat_exchanger('superheater')
evap = heat_exchanger('evaporator')
dr = drum('drum')
eco = heat_exchanger('economizer')
dh_whr = heat_exchanger('waste heat recovery')
ch = sink('chimney')

# steam turbine part
turb = turbine('steam turbine')
cond = condenser('condenser')
示例#6
0
文件: ccbpt.py 项目: MarBrandt/popDH
             v_unit='l / s',
             iterinfo=False)

t_dh_in = 50
t_dh_out = 124  # might change due to 4GDH

# %% components

# gas turbine part
air_source = source('air source')
air_compressor = compressor('air compressor')

combustion_chamber = combustion_chamber('combustion chamber')
fuel_source = source('fuel source')

gas_turbine = turbine('gas turbine')
steam_generator = heat_exchanger('steamgenerator')
exhaust_gas = sink('exhaust gas')

# steam turbine part
fs_source = source('steam source')
steam_turbine = turbine('steam turbine')
dh_heat_exchanger = heat_exchanger('district heating heat exchanger')
pump = pump('pump')
fs_sink = sink('steam sink')

steam_cycle_closer = cycle_closer('steam cycle closer')

# district heating part
dh_source = source('district heating source')
dh_sink = sink('district heating sink')
示例#7
0
T_brine_in = 146.6
p_brine_in = 9.4
T_brine_out = 69.1

# basic network
nw = network(fluids=fluids)
nw.set_attr(p_unit='bar', T_unit='C', h_unit='kJ / kg')

# main components
cond1 = condenser('condenser 1')
cond2 = condenser('condenser 2')
ihe1 = heat_exchanger('internal heat exchanger 1')
ihe2 = heat_exchanger('internal heat exchanger 2')
pu1 = pump('feeding pump 1')
pu2 = pump('feeding pump 2')
turb1 = turbine('turb 1')
turb2 = turbine('turb 2')
val1 = valve('control valve 1')
val2 = valve('control valve 2')

spl = splitter('main cycle splitter')
mer = merge('main cycle merge')

preh = heat_exchanger('preheater')
evap = heat_exchanger('evaporator')

# cooling air
source_ca_1 = source('cooling air source 1')
sink_ca_1 = sink('cooling air sink 1')
source_ca_2 = source('cooling air source 2')
sink_ca_2 = sink('cooling air sink 2')
示例#8
0
文件: ccet.py 项目: MarBrandt/popDH
nw = network(fluids=fluid_list,
             p_unit='bar',
             T_unit='C',
             h_unit='kJ / kg',
             p_range=[1, 15],
             T_range=[10, 1200],
             h_range=[500, 4000])

t_dh_in = 50
t_dh_out = 124  # might change due to 4GDH

# %% components
# gas turbine part
compressor_gtp = compressor('compressor')
combustion_chamber = combustion_chamber('combustion')
gas_turbine = turbine('gas turbine')

fuel_source = source('fuel source')
combustion_air_source = source('ambient air')

rauchgas = sink('Rauchgas')
steam_generator_gas = heat_exchanger('Abhitzekessel')

# steam turbine part
fs_source = source('Frischdampf')
hp_turbine = turbine('Hochdruck Turbine')
splitter_1 = splitter('splitter hp-extraction')

lp_turbine = turbine('low pressure turbine')
merge = merge('Merge vor Kondensator')
condenser_stp = condenser('Kondensator')
示例#9
0
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# %% network

fluids = ['water']

nw = network(fluids=fluids, p_unit='bar', T_unit='C', h_unit='kJ / kg')

# %% components

# turbine part
valve_turb = valve('turbine inlet valve')
turbine_hp = turbine('high pressure turbine')
split = splitter('extraction splitter')
turbine_lp = turbine('low pressure turbine')

# condenser and preheater
cond = condenser('condenser')
preheater = condenser('preheater')
merge_ws = merge('waste steam merge')
valve_pre = valve('preheater valve')

# feed water
pump = pump('pump')
steam_generator = heat_exchanger_simple('steam generator')

closer = cycle_closer('cycle closer')
    plt.show()

    fig.savefig('efficiency.svg')

# %% network

fluids = ['water']

nw = network(fluids=fluids)
nw.set_attr(p_unit='bar', T_unit='C', h_unit='kJ / kg',
            p_range=[0.01, 150], T_range=[5, 800], h_range=[10, 5000])

# %% components

# main components
turb = turbine('turbine')
con = condenser('condenser')
pu = pump('pump')
steam_generator = heat_exchanger_simple('steam generator')
closer = cycle_closer('cycle closer')

# cooling water
so_cw = source('cooling water inlet')
si_cw = sink('cooling water outlet')

# %% connections

# main cycle
fs_in = connection(closer, 'out1', turb, 'in1')
ws = connection(turb, 'out1', con, 'in1')
cond = connection(con, 'out1', pu, 'in1')