Beispiel #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')
Beispiel #2
0
import numpy as np

# %% network
btes = network(
    fluids=["water"],
    T_unit="K",
    p_unit="bar",
    h_unit="kJ / kg",
    T_range=[273.25, 373.15],
    p_range=[1, 20],
    h_range=[1, 1000],
)

# %% components
fc_in = source("from consumer inflow")
fc_out = sink("from consumer outflow")

pu = pump("pump")

sp = splitter("splitter", num_out=3)

# bhe:
bhe_name = "BHE1"
assert "BHE1" in bhe_name, "BHE should be named with 'BHE1'"
bhe1 = heat_exchanger_simple(bhe_name)
bhe_name = "BHE2"
assert "BHE2" in bhe_name, "BHE should be named with 'BHE2'"
bhe2 = heat_exchanger_simple(bhe_name)
bhe_name = "BHE3"
assert "BHE3" in bhe_name, "BHE should be named with 'BHE3'"
from tespy.connections import connection
from tespy.components import source, sink, pipe
from tespy.networks import network

import numpy as np
from matplotlib import pyplot as plt

nw = network(['water'], p_unit='bar', T_unit='C', h_unit='kJ / kg')

# %% components
pi = pipe('pipe')
si = sink('sink')
so = source('source')

# %% connections

a = connection(so, 'out1', pi, 'in1')
b = connection(pi, 'out1', si, 'in1')

nw.add_conns(a, b)

# %% connection parameters

a.set_attr(h=40, fluid={'water': 1}, p=1, m=10)


# %% component parameters

pi.set_attr(ks=1e-5, L=100, D='var', Q=0)

# %% solve
Beispiel #4
0
T_cw_cold = 50  # Temperature of cold cooling water
T_cw_hot = 80  # Temperature of hot cooling water

# %% network

fluid_list = ['O2', 'H2O', 'H2']

nw = network(fluids=fluid_list,
             T_unit='C',
             p_unit='bar',
             v_unit='l / s',
             iterinfo=False)

# %% components

fw = source('feed water')
oxy = sink('oxygen sink')
hydro = sink('hydrogen sink')
cw_cold = source('cooling water source')
cw_hot = sink('cooling water sink')
comp = compressor('compressor', eta_s=0.9)
el = water_electrolyzer('electrolyzer')

# %% connections

fw_el = connection(fw, "out1", el, "in2")
el_comp = connection(el, 'out3', comp, 'in1')
comp_hydro = connection(comp, 'out1', hydro, 'in1')
el_oxy = connection(el, 'out2', oxy, 'in1')

cw_cold_el = connection(cw_cold, 'out1', el, 'in1')
Beispiel #5
0
from tespy.components import source, sink, heat_exchanger_simple, pipe
from tespy.connections import connection, bus, ref
from tespy.networks import network

from sub_consumer import (lin_consum_closed as lc, lin_consum_open as lo, fork
                          as fo)

# %% network

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

# %% components

# sources and sinks

so = source('source')
si = sink('sink')

so1 = source('source1')
si1 = sink('sink1')

so2 = source('source2')
si2 = sink('sink2')

# %% construction part

# pipe_feed

pif1 = pipe('pipe1_feed', ks=7e-5, L=50, D=0.15, offdesign=['kA_char'])
pif2 = pipe('pipe2_feed', ks=7e-5, L=200, D=0.15, offdesign=['kA_char'])
Beispiel #6
0
import logging
mypath = logger.define_logging(
log_path=True, log_version=True, timed_rotating={'backupCount': 4},
screen_level=logging.WARNING, screen_datefmt = "no_date")

fluids = ['water', 'Isopentane']

nw = network(fluids=fluids)
nw.set_attr(p_unit='bar', T_unit='C', h_unit='kJ / kg')
# components
# main components
evaporator = evaporator('evaporator')
pump = pump('condensate pump')
merge = merge('geo-fluid merge point')
# working fluid
source_wf = source('working fluid source')
sink_wf = sink('working fluid sink')
#brine
source_s = source('steam source')
source_b = source('brine source')
sink_s = sink('steam sink')
sink_b = sink('brine sink')
# connections
# main cycle

scr_s_merge = connection(source_s, 'out1', merge, 'in1')

scr_b_merge = connection(source_b, 'out1', merge, 'in2')

merge_sink = connection(merge, 'out1', sink_b, 'in1')
Beispiel #7
0
from tespy.connections import connection

import numpy as np

# %% network

# define full fluid list for the network's variable space
fluid_list = ['Ar', 'N2', 'O2', 'CO2', 'CH4', 'H2O']
# define unit systems and fluid property ranges
nw = network(fluids=fluid_list, p_unit='bar', T_unit='C',
                 p_range=[0.5, 10], T_range=[10, 1200])

# %% components

# sinks & sources
amb = source('ambient')
sf = source('fuel')
fg = sink('flue gas outlet')
cw_in1 = source('cooling water inlet1')
cw_in2 = source('cooling water inlet2')
cw_out1 = sink('cooling water outlet1')
cw_out2 = sink('cooling water outlet2')
split = splitter('splitter')
merge = merge('merge')

# combustion chamber
chp = combustion_engine(label='combustion engine')

# %% connections

amb_comb = connection(amb, 'out1', chp, 'in3')
from tespy.connections import connection

import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
from mpl_toolkits.mplot3d import Axes3D

# %% network

fluid_list = ['H2O']
nw = network(fluids=fluid_list, p_unit='bar', T_unit='C')

# %% components

# sinks & sources
back = source('to collector')
feed = sink('from collector')

# collector
coll = solar_collector(label='solar thermal collector')

# %% connections

b_c = connection(back, 'out1', coll, 'in1')
c_f = connection(coll, 'out1', feed, 'in1')

nw.add_conns(b_c, c_f)

# %% component parameters

# set pressure ratio and heat flow, as well as dimensional parameters of
from tespy.tools.characteristics import char_line
from tespy.tools.data_containers import dc_cc

import numpy as np

# %% network
btes = network(fluids=['water'],
                   T_unit='K',
                   p_unit='bar',
                   h_unit='kJ / kg',
                   T_range=[273.25, 373.15],
                   p_range=[1, 20],
                   h_range=[1, 1000])

# %% components
fc_in = source('from consumer inflow')
fc_out = sink('from consumer outflow')

pu = pump('pump')

sp = splitter('splitter', num_out=3)

# bhe:
bhe_name = 'BHE1'
assert 'BHE1' in bhe_name, "BHE should be named with 'BHE1'"
bhe1 = heat_exchanger_simple(bhe_name)
bhe_name = 'BHE2'
assert 'BHE2' in bhe_name, "BHE should be named with 'BHE2'"
bhe2 = heat_exchanger_simple(bhe_name)
bhe_name = 'BHE3'
assert 'BHE3' in bhe_name, "BHE should be named with 'BHE3'"
Beispiel #10
0
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')

#brine
source_b = source('brine source')
sink_b = sink('brine sink')

# working fluid
close_cycle = cycle_closer('cycle closer before turbines')

# connections
wf_in_spl = connection(close_cycle, 'out1', spl, 'in1')
nw.add_conns(wf_in_spl)
Beispiel #11
0
             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')
pump = pump('Speisewasserpumpe')
Beispiel #12
0
from tespy.tools.characteristics import char_line
from tespy.tools.characteristics import load_default_char as ldc

# %% network

nw = network(fluids=['water', 'NH3'],
             T_unit='C',
             p_unit='bar',
             h_unit='kJ / kg',
             m_unit='kg / s')

# %% components

# sources & sinks

c_in = source('coolant in')
cons_closer = cycle_closer('consumer cycle closer')

amb_in = source('source ambient')
amb_out = sink('sink ambient')

# consumer system

cd = condenser('condenser')
rp = pump('recirculation pump')
cons = heat_exchanger_simple('consumer')

# evaporator system

va = valve('valve')
dr = drum('drum')
Beispiel #13
0
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')

# source and sink for cooling water
source_cw = source('source_cw')
sink_cw = sink('sink_cw')

# %% connections

# turbine part
fs_in = connection(closer, 'out1', valve_turb, 'in1')
fs = connection(valve_turb, 'out1', turbine_hp, 'in1')
ext = connection(turbine_hp, 'out1', split, 'in1')
ext_v = connection(split, 'out1', preheater, 'in1')
ext_turb = connection(split, 'out2', turbine_lp, 'in1')
nw.add_conns(fs_in, fs, ext, ext_v, ext_turb)

# preheater and condenser
ext_cond = connection(preheater, 'out1', valve_pre, 'in1')
cond_ws = connection(valve_pre, 'out1', merge_ws, 'in2')
Beispiel #14
0
turb_lp = turbine('low pressure turbine')

# condenser and preheater
cond = condenser('condenser')
preheat = condenser('preheater')
mer = merge('waste steam merge')
val = valve('valve')

# feed water
pu = pump('pump')
sg = heat_exchanger_simple('steam generator')

closer = cycle_closer('cycle closer')

# source and sink for cooling water
dh_in = source('district heating backflow')
dh_out = sink('district heating feedflow')

# %% connections

# turbine part
cc_turb_hp = connection(closer, 'out1', turb_hp, 'in1')
turb_hp_split = connection(turb_hp, 'out1', split, 'in1')
split_preheat = connection(split, 'out1', preheat, 'in1')
split_turb_lp = connection(split, 'out2', turb_lp, 'in1')
nw.add_conns(cc_turb_hp, turb_hp_split, split_preheat, split_turb_lp)

# preheater and condenser
preheat_val = connection(preheat, 'out1', val, 'in1')
val_mer = connection(val, 'out1', mer, 'in2')
turb_lp_mer = connection(turb_lp, 'out1', mer, 'in1')
Beispiel #15
0
T_brine_out = 69.1

# calculation
T_before_turbine = PropsSI('T', 'P', p_after_pump * 0.957627118 * 0.955752212 *
                           1e5, 'Q', 1, 'Isopentane') - 273.15 + 2.3
# basic network
nw = network(fluids=fluids)
nw.set_attr(p_unit='bar', T_unit='C', h_unit='kJ / kg')
# main components
condenser = condenser('condenser')
ihe = heat_exchanger('internal heat exchanger')
pump = pump('feeding pump')
turbine = turbine('turbine')
p_and_e = heat_exchanger('preheater and evaporator')
# cooling air
source_ca = source('cooling air source')
sink_ca = sink('cooling air sink')
#brine
source_b = source('brine source')
sink_b = sink('brine sink')
# working fluid
source_wf_1 = source('working fluid source before turbine')
sink_wf_1 = sink('working fluid sink from before turbine')
source_wf_2 = source('working fluid source from ihe')
sink_wf_2 = sink('working fluid sink from ihe')
# connections
# main cycle
p_and_e_wf_in = connection(source_wf_2, 'out1', p_and_e, 'in2')
p_and_e_wf_out = connection(p_and_e, 'out2', sink_wf_2, 'in1')
turbine_wf_in = connection(source_wf_1, 'out1', turbine, 'in1')
turbine_ihe = connection(turbine, 'out1', ihe, 'in1')
Beispiel #16
0
T_source_rl = 50
T_source_vl = 70

# %% network

nw = network(fluids=['water', 'NH3', 'air'],
             T_unit='C',
             p_unit='bar',
             h_unit='kJ / kg',
             m_unit='kg / s')

# %% components

# sources & sinks
cc = cycle_closer('coolant cycle closer')
cb = source('consumer back flow')
cf = sink('consumer feed flow')
lt_si = sink('low temp sink')
lt_so = source('low temp source')

# low temp water system
pu = pump('pump')

# consumer system

cd = condenser('condenser')
dhp = pump('district heating pump')
cons = heat_exchanger_simple('consumer')

# evaporator system
                               screen_datefmt="no_date")
fluids = ['Isopentane', 'air']
T_air = -4.7
p_air = 0.61
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
condenser = condenser('condenser')
# cooling air
source_ca = source('cooling air source')
sink_ca = sink('cooling air sink')
# working fluid
source_wf = source('working fluid source')
sink_wf = sink('working fluid sink')
# connections
# main cycle
# geo-fluid
ihe_condenser = connection(source_wf, 'out1', condenser, 'in1')
condenser_pump = connection(condenser, 'out1', sink_wf, 'in1')
nw.add_conns(ihe_condenser, condenser_pump)
# cooling air
ca_in = connection(source_ca, 'out1', condenser, 'in2')
ca_out = connection(condenser, 'out2', sink_ca, 'in1')
nw.add_conns(ca_in, ca_out)
# parametrization of components
# calculation secondary variables
p_before_turbine = PropsSI('P', 'T', T_brine_in + 273.15 - 26, 'Q', 1, 'Isopentane')/1e5
# basic network
nw = network(fluids=fluids)
nw.set_attr(p_unit='bar', T_unit='C', h_unit='kJ / kg')

# main components
condenser = condenser('condenser')
ihe = heat_exchanger('internal heat exchanger')
pump = pump('feeding pump')
turbine = turbine('turbine')
preh = heat_exchanger('preheater')
evap = heat_exchanger('evaporator')

# cooling air
source_ca = source('cooling air source')
sink_ca = sink('cooling air sink')

#brine
source_b = source('brine source')
sink_b = sink('brine sink')

# working fluid
close_cycle = cycle_closer('cycle closer before turbine')

# connections
# main cycle
turbine_wf_in = connection(close_cycle, 'out1', turbine, 'in1')
turbine_ihe = connection(turbine, 'out1', ihe, 'in1')
ihe_condenser = connection(ihe, 'out1', condenser, 'in1')
condenser_pump = connection(condenser, 'out1', pump, 'in1')
Beispiel #19
0
class HeatPump(object):
    # define the structure of heat pump

    # %% network

    nw = network(fluids=['water', 'NH3', 'air'],
                 T_unit='C',
                 p_unit='bar',
                 h_unit='kJ / kg',
                 m_unit='kg / s')

    # %% components

    # sources & sinks

    cc = cycle_closer('coolant cycle closer')
    cb = source('consumer back flow')
    cf = sink('consumer feed flow')
    amb = source('ambient air')
    amb_out1 = sink('sink ambient 1')
    amb_out2 = sink('sink ambient 2')

    # ambient air system

    sp = splitter('splitter')
    pu = pump('pump')

    # consumer system

    cd = condenser('condenser')
    dhp = pump('district heating pump')
    cons = heat_exchanger_simple('consumer')

    # evaporator system

    ves = valve('valve')
    dr = drum('drum')
    ev = heat_exchanger('evaporator')
    su = heat_exchanger('superheater')
    erp = pump('evaporator reciculation pump')

    # compressor-system

    cp1 = compressor('compressor 1')
    cp2 = compressor('compressor 2')
    ic = heat_exchanger('intercooler')

    # %% connections

    # consumer system

    c_in_cd = connection(cc, 'out1', cd, 'in1')
    cb_dhp = connection(cb, 'out1', dhp, 'in1')
    dhp_cd = connection(dhp, 'out1', cd, 'in2')
    cd_cons = connection(cd, 'out2', cons, 'in1')
    cons_cf = connection(cons, 'out1', cf, 'in1')
    nw.add_conns(c_in_cd, cb_dhp, dhp_cd, cd_cons, cons_cf)

    # connection condenser - evaporator system

    cd_ves = connection(cd, 'out1', ves, 'in1')
    nw.add_conns(cd_ves)

    # evaporator system

    ves_dr = connection(ves, 'out1', dr, 'in1')
    dr_erp = connection(dr, 'out1', erp, 'in1')
    erp_ev = connection(erp, 'out1', ev, 'in2')
    ev_dr = connection(ev, 'out2', dr, 'in2')
    dr_su = connection(dr, 'out2', su, 'in2')
    nw.add_conns(ves_dr, dr_erp, erp_ev, ev_dr, dr_su)
    amb_p = connection(amb, 'out1', pu, 'in1')
    p_sp = connection(pu, 'out1', sp, 'in1')
    sp_su = connection(sp, 'out1', su, 'in1')
    su_ev = connection(su, 'out1', ev, 'in1')
    ev_amb_out = connection(ev, 'out1', amb_out1, 'in1')
    nw.add_conns(amb_p, p_sp, sp_su, su_ev, ev_amb_out)

    # connection evaporator system - compressor system

    su_cp1 = connection(su, 'out2', cp1, 'in1')
    nw.add_conns(su_cp1)

    # compressor-system

    cp1_he = connection(cp1, 'out1', ic, 'in1')
    he_cp2 = connection(ic, 'out1', cp2, 'in1')
    cp2_c_out = connection(cp2, 'out1', cc, 'in1')
    sp_ic = connection(sp, 'out2', ic, 'in2')
    ic_out = connection(ic, 'out2', amb_out2, 'in1')
    nw.add_conns(cp1_he, he_cp2, sp_ic, ic_out, cp2_c_out)

    def __init__(self, q, eff, Temp):
        r"""
        :param Temp:
        :param q: q output
        :param eff: efficient of each part in pump
        """
        self.q = q
        self.eff = eff
        self.Temp = Temp

    def caculation(self):
        self.set_attr()

        HeatPump.nw.solve('design')
        P = [
            HeatPump.cp1.P.val, HeatPump.cp2.P.val, HeatPump.erp.P.val,
            HeatPump.pu.P.val
        ]
        P_total = sum(map(abs, P))
        P = list(map(abs, P))

        COP = self.q / P_total
        # T = [HeatPump.su_cp1.T.val, HeatPump.cp2_c_out.T.val, HeatPump.cd_ves.T.val, HeatPump.su_ev.T.val]
        # p = [HeatPump.su_cp1.p.val, HeatPump.cp2_c_out.p.val, HeatPump.cd_ves.p.val, HeatPump.su_ev.p.val,
        #      HeatPump.cp1_he.p.val]

        return P, P_total, COP

    def set_attr(self):
        r"""
        # %% set the attribution of the heat pump
        :return: heat output of the heat pump
        """

        HeatPump.cd.set_attr(pr1=0.99,
                             pr2=0.99,
                             ttd_u=15,
                             design=['pr2', 'ttd_u'],
                             offdesign=['zeta2', 'kA'])
        HeatPump.dhp.set_attr(eta_s=self.eff,
                              design=['eta_s'],
                              offdesign=['eta_s_char'])
        HeatPump.cons.set_attr(pr=0.99, design=['pr'], offdesign=['zeta'])

        # water pump

        HeatPump.pu.set_attr(eta_s=self.eff,
                             design=['eta_s'],
                             offdesign=['eta_s_char'])

        # evaporator system

        kA_char1 = ldc('heat exchanger', 'kA_char1', 'DEFAULT', char_line)
        kA_char2 = ldc('heat exchanger', 'kA_char2', 'EVAPORATING FLUID',
                       char_line)
        HeatPump.ev.set_attr(pr1=0.98,
                             pr2=0.99,
                             ttd_l=5,
                             kA_char1=kA_char1,
                             kA_char2=kA_char2,
                             design=['pr1', 'ttd_l'],
                             offdesign=['zeta1', 'kA'])

        HeatPump.su.set_attr(pr1=0.98,
                             pr2=0.99,
                             ttd_u=2,
                             design=['pr1', 'pr2', 'ttd_u'],
                             offdesign=['zeta1', 'zeta2', 'kA'])

        HeatPump.erp.set_attr(eta_s=self.eff,
                              design=['eta_s'],
                              offdesign=['eta_s_char'])

        # compressor system

        HeatPump.cp1.set_attr(eta_s=self.eff,
                              design=['eta_s'],
                              offdesign=['eta_s_char'])
        HeatPump.cp2.set_attr(eta_s=self.eff,
                              pr=3,
                              design=['eta_s'],
                              offdesign=['eta_s_char'])
        HeatPump.ic.set_attr(pr1=0.99,
                             pr2=0.98,
                             design=['pr1', 'pr2'],
                             offdesign=['zeta1', 'zeta2', 'kA'])

        # %% connection parametrization

        # condenser system

        HeatPump.c_in_cd.set_attr(fluid={'air': 0, 'NH3': 1, 'water': 0})
        HeatPump.cb_dhp.set_attr(T=20,
                                 p=10,
                                 fluid={
                                     'air': 0,
                                     'NH3': 0,
                                     'water': 1
                                 })
        HeatPump.cd_cons.set_attr(T=self.Temp)
        HeatPump.cons_cf.set_attr(h=ref(HeatPump.cb_dhp, 1, 0),
                                  p=ref(HeatPump.cb_dhp, 1, 0))

        # evaporator system cold side

        HeatPump.erp_ev.set_attr(m=ref(HeatPump.ves_dr, 1.25, 0), p0=5)
        HeatPump.su_cp1.set_attr(p0=5, h0=1700)

        # evaporator system hot side

        # pumping at constant rate in partload

        HeatPump.amb_p.set_attr(T=12,
                                p=2,
                                fluid={
                                    'air': 0,
                                    'NH3': 0,
                                    'water': 1
                                },
                                offdesign=['v'])
        HeatPump.sp_su.set_attr(offdesign=['v'])
        HeatPump.ev_amb_out.set_attr(p=2, T=9, design=['T'])

        # compressor-system

        HeatPump.he_cp2.set_attr(Td_bp=5, p0=20, design=['Td_bp'])
        HeatPump.ic_out.set_attr(T=15, design=['T'])

        # %% key paramter

        HeatPump.cons.set_attr(Q=self.q)
Beispiel #20
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})
Beispiel #21
0
fluid_list = ['Ar', 'N2', 'O2', 'CO2', 'CH4', 'BICUBIC::H2O']

nw = network(fluids=fluid_list,
             p_unit='bar',
             T_unit='C',
             h_unit='kJ / kg',
             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')
# 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')

# connections
# main cycle
preheater_wf_in = connection(close_cycle, 'out1', preheater, 'in2')
preheater_evaporator = connection(preheater, 'out2', evaporator, 'in3')
Beispiel #23
0
# %% network

nw = network(fluids=['water', 'NH3'],
             T_unit='C',
             p_unit='bar',
             h_unit='kJ / kg',
             m_unit='kg / s')

# %% components

# sources & sinks

cool_closer = cycle_closer('coolant cycle closer')
cons_closer = cycle_closer('consumer cycle closer')

amb_in = source('source ambient')
amb_out = sink('sink ambient')

ic_in = source('source intercool')
ic_out = sink('sink intercool')

# consumer system

cd = condenser('condenser')
rp = pump('recirculation pump')
cons = heat_exchanger_simple('consumer')

cp1 = sink('compressor 1')

# consumer system
Beispiel #24
0
# %% network

# define full fluid list for the network's variable space
fluid_list = ['TESPy::myAir', 'TESPy::myFuel', 'TESPy::myFuel_fg']

# define unit systems and fluid property ranges
nw = network(fluids=fluid_list,
             p_unit='bar',
             T_unit='C',
             p_range=[1, 10],
             T_range=[10, 2000])

# %% components

# sinks & sources
amb = source('ambient')
sf = source('fuel')
fg = sink('flue gas outlet')

# combustion chamber
comb = combustion_chamber_stoich('stoichiometric combustion chamber')

# %% connections

amb_comb = connection(amb, 'out1', comb, 'in1')
sf_comb = connection(sf, 'out1', comb, 'in2')
comb_fg = connection(comb, 'out1', fg, 'in1')

nw.add_conns(sf_comb, amb_comb, comb_fg)

# %% component parameters
Beispiel #25
0
from tespy.networks import network
from tespy.components import (source, sink, condenser, pump,
                              heat_exchanger_simple, cycle_closer)
from tespy.connections import connection, ref

# %% network

nw = network(fluids=['water', 'NH3'], T_unit='C', p_unit='bar',
             h_unit='kJ / kg', m_unit='kg / s')

# %% components

# sources & sinks

c_in = source('coolant in')
cons_closer = cycle_closer('consumer cycle closer')

va = sink('valve')

# consumer system

cd = condenser('condenser')
rp = pump('recirculation pump')
cons = heat_exchanger_simple('consumer')

# %% connections

# consumer system

c_in_cd = connection(c_in, 'out1', cd, 'in1')
Beispiel #26
0
import numpy as np
import pandas as pd

# %% network

nw = network(fluids=['water', 'NH3', 'air'],
             T_unit='C',
             p_unit='bar',
             h_unit='kJ / kg',
             m_unit='kg / s')

# %% components

# sources & sinks
cc = cycle_closer('coolant cycle closer')
cb = source('consumer back flow')
cf = sink('consumer feed flow')
amb = source('ambient air')
amb_out1 = sink('sink ambient 1')
amb_out2 = sink('sink ambient 2')

# ambient air system
sp = splitter('splitter')
fan = compressor('fan')

# consumer system

cd = condenser('condenser')
dhp = pump('district heating pump')
cons = heat_exchanger_simple('consumer')
Beispiel #27
0
    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')
pu = pump('feed water pump')
cc = cycle_closer('ls cycle closer')
    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)
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')
fw = connection(pu, 'out1', steam_generator, 'in1')
fs_out = connection(steam_generator, 'out1', closer, 'in1')
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')