Exemplo n.º 1
0
 def test_valve(self):
     """
     Test component properties of valves.
     """
     instance = cmp.valve('valve')
     c1, c2 = self.setup_network_11(instance)
     fl = {
         'N2': 0.7556,
         'O2': 0.2315,
         'Ar': 0.0129,
         'INCOMP::DowQ': 0,
         'H2O': 0,
         'NH3': 0,
         'CO2': 0,
         'CH4': 0
     }
     c1.set_attr(fluid=fl, m=10, p=10, T=120)
     c2.set_attr(p=1)
     instance.set_attr(pr='var')
     self.nw.solve('design')
     eq_(
         round(c2.p.val_SI / c1.p.val_SI,
               1), round(instance.pr.val,
                         1), 'Value of pressure ratio must be ' +
         str(c2.p.val_SI / c1.p.val_SI) + ', is ' + str(instance.pr.val) +
         '.')
     zeta = instance.zeta.val
     instance.set_attr(zeta='var', pr=np.nan)
     self.nw.solve('design')
     eq_(
         round(zeta, 1), round(instance.zeta.val,
                               1), 'Value of pressure ratio must be ' +
         str(zeta) + ', is ' + str(instance.zeta.val) + '.')
Exemplo n.º 2
0
    def create_comps(self):

        self.inlet = cmp.subsys_interface(label=self.label + '_inlet',
                                          num_inter=self.num_branch + 1)
        self.outlet = cmp.subsys_interface(label=self.label + '_outlet',
                                           num_inter=self.num_branch + 1)

        self.splitter = cmp.splitter(label=self.label + '_splitter')
        self.merge = cmp.merge(label=self.label + '_merge')
        self.valve = []

        for i in range(self.num_branch):
            j = str(i)
            self.valve += [
                cmp.valve(label=self.label + '_valve_' + j, mode='man')
            ]
Exemplo n.º 3
0
    def create_comps(self):

        self.num_i = 1
        self.num_o = 1
        self.inlet = cmp.subsys_interface(label=self.label + '_inlet',
                                          num_inter=self.num_i)
        self.outlet = cmp.subsys_interface(label=self.label + '_outlet',
                                           num_inter=self.num_o)

        self.splitter = []
        self.merge = []
        self.heat_ex = []
        self.valve = []
        self.pipe_feed = []
        self.pipe_back = []
        for i in range(self.num_consumer - 1):
            j = str(i)
            self.splitter += [
                cmp.splitter(label=self.label + '_splitter_' + j)
            ]
            self.merge += [cmp.merge(label=self.label + '_merge_' + j)]
            self.heat_ex += [
                cmp.heat_exchanger_simple(label=self.label +
                                          '_heat exchanger_' + j,
                                          mode='man')
            ]
            self.valve += [
                cmp.valve(label=self.label + '_valve_' + j, mode='man')
            ]
            self.pipe_feed += [
                cmp.pipe(label=self.label + '_pipe feed_' + j,
                         offdesign=['kA'])
            ]
            self.pipe_back += [
                cmp.pipe(label=self.label + '_pipe back_' + j,
                         offdesign=['kA'])
            ]

        self.heat_ex += [
            cmp.heat_exchanger_simple(label=self.label + '_heat exchanger_' +
                                      str(i + 1),
                                      mode='man')
        ]
Exemplo n.º 4
0
from tespy import con, cmp, nwk
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# %% network

fluids = ['water']

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

# %% components

# turbine part
valve_turb = cmp.valve(label='valve_turb')
turbine_hp = cmp.turbine(label='turbine_hp')
split = cmp.splitter(label='splitter1')
turbine_lp = cmp.turbine(label='turbine_lp')

# condenser and preheater
condenser = cmp.condenser(label='condenser')
preheater = cmp.condenser(label='preheater')
valve_pre = cmp.valve(label='valve_pre')
valve = cmp.valve(label='valve1')
merge = cmp.merge(label='merge1')

# feed water
pump = cmp.pump(label='pump')
steam_generator = cmp.heat_exchanger_simple(label='steam generator')
Exemplo n.º 5
0
amb_out2 = cmp.sink('sink ambient 2')
c_out = cmp.sink('coolant out')

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

# consumer system

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

# evaporator system

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

# compressor-system

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

# %% connections

# consumer system
Exemplo n.º 6
0
amb_in = cmp.source('source ambient')
amb_out = cmp.sink('sink ambient')
ic_in = cmp.source('source intercool')
ic_out = cmp.sink('sink intercool')

c_out = cmp.sink('coolant out')

# consumer system

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

# evaporator system

va = cmp.valve('valve')
dr = cmp.drum('drum')
ev = cmp.heat_exchanger('evaporator')
su = cmp.heat_exchanger('superheater')
pu = cmp.pump('pump evaporator')

# compressor-system

cp1 = cmp.compressor('compressor 1')
cp2 = cmp.compressor('compressor 2')
he = cmp.heat_exchanger('intercooler')

# %% connections

# consumer system
Exemplo n.º 7
0
    def setup_network_individual_offdesign(self):
        """
        Set up network for individual offdesign tests.
        """
        so = cmp.source('source')
        sp = cmp.splitter('splitter', num_out=2)
        self.pump1 = cmp.pump('pump 1')
        self.sc1 = cmp.solar_collector('collector field 1')
        v1 = cmp.valve('valve1')
        self.pump2 = cmp.pump('pump 2')
        self.sc2 = cmp.solar_collector('collector field 2')
        v2 = cmp.valve('valve2')
        me = cmp.merge('merge', num_in=2)
        si = cmp.sink('sink')

        self.pump1.set_attr(eta_s=0.8,
                            design=['eta_s'],
                            offdesign=['eta_s_char'])
        self.pump2.set_attr(eta_s=0.8,
                            design=['eta_s'],
                            offdesign=['eta_s_char'])
        self.sc1.set_attr(pr=0.95,
                          lkf_lin=3.33,
                          lkf_quad=0.011,
                          A=1252,
                          E=700,
                          Tamb=20,
                          design=['pr'],
                          offdesign=['zeta'])
        self.sc2.set_attr(pr=0.95,
                          lkf_lin=3.5,
                          lkf_quad=0.011,
                          A=700,
                          E=800,
                          Tamb=20,
                          design=['pr'],
                          offdesign=['zeta'])

        fl = {
            'N2': 0,
            'O2': 0,
            'Ar': 0,
            'INCOMP::DowQ': 0,
            'H2O': 1,
            'NH3': 0,
            'CO2': 0,
            'CH4': 0
        }

        inlet = con.connection(so, 'out1', sp, 'in1', T=50, p=3, fluid=fl)
        outlet = con.connection(me, 'out1', si, 'in1', p=3)

        sp_p1 = con.connection(sp, 'out1', self.pump1, 'in1')
        p1_sc1 = con.connection(self.pump1, 'out1', self.sc1, 'in1')
        self.sc1_v1 = con.connection(self.sc1, 'out1', v1, 'in1', p=3.1, T=90)
        v1_me = con.connection(v1, 'out1', me, 'in1')

        self.sp_p2 = con.connection(sp, 'out2', self.pump2, 'in1')
        self.p2_sc2 = con.connection(self.pump2, 'out1', self.sc2, 'in1')
        self.sc2_v2 = con.connection(self.sc2, 'out1', v2, 'in1', p=3.1, m=0.1)
        v2_me = con.connection(v2, 'out1', me, 'in2')

        self.nw.add_conns(inlet, outlet, sp_p1, p1_sc1, self.sc1_v1, v1_me,
                          self.sp_p2, self.p2_sc2, self.sc2_v2, v2_me)
Exemplo n.º 8
0
    def setup(self):
        # %% network

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

        # %% components

        # sources & sinks

        c_in = cmp.source('coolant in')
        cb = cmp.source('consumer back flow')
        cf = cmp.sink('consumer feed flow')
        amb_in = cmp.source('source ambient')
        amb_out = cmp.sink('sink ambient')
        ic_in = cmp.source('source intercool')
        ic_out = cmp.sink('sink intercool')

        c_out = cmp.sink('coolant out')

        # consumer system

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

        # evaporator system

        va = cmp.valve('valve')
        dr = cmp.drum('drum')
        ev = cmp.heat_exchanger('evaporator')
        su = cmp.heat_exchanger('superheater')
        pu = cmp.pump('pump evaporator')

        # compressor-system

        cp1 = cmp.compressor('compressor 1')
        cp2 = cmp.compressor('compressor 2')
        he = cmp.heat_exchanger('intercooler')

        # busses

        x = np.array([0, 0.7, 1, 1.3])
        y = 1 / np.array([0.8, 0.95, 1, 0.98]) / 0.9583794
        motor = cmp_char.characteristics(x=x, y=y)

        self.power = con.bus('total compressor power')
        self.power.add_comps({
            'c': cp1,
            'char': motor
        }, {
            'c': cp2,
            'char': motor
        })
        self.heat = con.bus('total delivered heat')
        self.heat.add_comps({'c': cd, 'char': -1})
        self.nw.add_busses(self.power, self.heat)

        # %% connections

        # consumer system

        c_in_cd = con.connection(c_in, 'out1', cd, 'in1')

        cb_rp = con.connection(cb, 'out1', rp, 'in1')
        rp_cd = con.connection(rp, 'out1', cd, 'in2')
        self.cd_cons = con.connection(cd, 'out2', cons, 'in1')
        cons_cf = con.connection(cons, 'out1', cf, 'in1')

        self.nw.add_conns(c_in_cd, cb_rp, rp_cd, self.cd_cons, cons_cf)

        # connection condenser - evaporator system

        cd_va = con.connection(cd, 'out1', va, 'in1')

        self.nw.add_conns(cd_va)

        # evaporator system

        va_dr = con.connection(va, 'out1', dr, 'in1')
        dr_pu = con.connection(dr, 'out1', pu, 'in1')
        pu_ev = con.connection(pu, 'out1', ev, 'in2')
        ev_dr = con.connection(ev, 'out2', dr, 'in2')
        dr_su = con.connection(dr, 'out2', su, 'in2')

        self.nw.add_conns(va_dr, dr_pu, pu_ev, ev_dr, dr_su)

        self.amb_in_su = con.connection(amb_in, 'out1', su, 'in1')
        su_ev = con.connection(su, 'out1', ev, 'in1')
        ev_amb_out = con.connection(ev, 'out1', amb_out, 'in1')

        self.nw.add_conns(self.amb_in_su, su_ev, ev_amb_out)

        # connection evaporator system - compressor system

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

        self.nw.add_conns(su_cp1)

        # compressor-system

        cp1_he = con.connection(cp1, 'out1', he, 'in1')
        he_cp2 = con.connection(he, 'out1', cp2, 'in1')
        cp2_c_out = con.connection(cp2, 'out1', c_out, 'in1')

        ic_in_he = con.connection(ic_in, 'out1', he, 'in2')
        he_ic_out = con.connection(he, 'out2', ic_out, 'in1')

        self.nw.add_conns(cp1_he, he_cp2, ic_in_he, he_ic_out, cp2_c_out)

        # %% component parametrization

        # condenser system

        rp.set_attr(eta_s=0.8, design=['eta_s'], offdesign=['eta_s_char'])
        cons.set_attr(pr=1, design=['pr'], offdesign=['zeta'])

        # evaporator system

        ev.set_attr(pr1=1,
                    pr2=.999,
                    ttd_l=5,
                    design=['ttd_l'],
                    offdesign=['kA'],
                    kA_char1='EVA_HOT',
                    kA_char2='EVA_COLD')

        # characteristic line for superheater kA
        x = np.array(
            [0, 0.045, 0.136, 0.244, 0.43, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2])
        y = np.array(
            [0, 0.037, 0.112, 0.207, 0.5, 0.8, 0.85, 0.9, 0.95, 1, 1.04, 1.07])
        su_char = hlp.dc_cc(x=x, y=y, param='m')
        su.set_attr(kA_char1='default',
                    kA_char2=su_char,
                    offdesign=['zeta1', 'zeta2', 'kA'])
        pu.set_attr(eta_s=0.8, design=['eta_s'], offdesign=['eta_s_char'])

        # compressor system

        cp1.set_attr(eta_s=0.8, design=['eta_s'], offdesign=['eta_s_char'])
        cp2.set_attr(eta_s=0.8, design=['eta_s'], offdesign=['eta_s_char'])

        # characteristic line for intercooler kA
        x = np.linspace(0, 2.5, 26)
        y = np.array([
            0.000, 0.164, 0.283, 0.389, 0.488, 0.581, 0.670, 0.756, 0.840,
            0.921, 1.000, 1.078, 1.154, 1.228, 1.302, 1.374, 1.446, 1.516,
            1.585, 1.654, 1.722, 1.789, 1.855, 1.921, 1.986, 2.051
        ])
        he_char_cold = hlp.dc_cc(x=x, y=y, param='m')

        he.set_attr(kA_char1='default',
                    kA_char2=he_char_cold,
                    offdesign=['zeta1', 'zeta2', 'kA'])
        cd.set_attr(pr2=0.998, design=['pr2'], offdesign=['zeta2', 'kA'])

        # %% connection parametrization

        # condenser system

        c_in_cd.set_attr(fluid={'water': 0, 'NH3': 1}, p=60)
        cb_rp.set_attr(T=60, p=10, fluid={'water': 1, 'NH3': 0})
        self.cd_cons.set_attr(T=105)
        cons_cf.set_attr(h=con.ref(cb_rp, 1, 0), p=con.ref(cb_rp, 1, 0))
        cd_va.set_attr(p=con.ref(c_in_cd, 1, -1000),
                       Td_bp=-5,
                       h0=500,
                       design=['Td_bp'])

        # evaporator system cold side

        pu_ev.set_attr(m=con.ref(va_dr, 10, 0), p0=5)
        dr_su.set_attr(p0=5, T=5)
        su_cp1.set_attr(p=con.ref(dr_su, 1, -5000),
                        Td_bp=5,
                        h0=1700,
                        design=['Td_bp', 'p'])

        # evaporator system hot side

        self.amb_in_su.set_attr(m=20, T=12, p=1, fluid={'water': 1, 'NH3': 0})
        su_ev.set_attr(p=con.ref(self.amb_in_su, 1, -100), design=['p'])
        ev_amb_out.set_attr()

        # compressor-system

        cp1_he.set_attr(p=15)
        he_cp2.set_attr(T=40, p=con.ref(cp1_he, 1, -1000), design=['T', 'p'])
        ic_in_he.set_attr(p=1, T=20, m=5, fluid={'water': 1, 'NH3': 0})
        he_ic_out.set_attr(p=con.ref(ic_in_he, 1, -200), design=['p'])
        cp2_c_out.set_attr(p=con.ref(c_in_cd, 1, 0), h=con.ref(c_in_cd, 1, 0))
Exemplo n.º 9
0
drum = cmp.drum('drum')
eco = cmp.heat_exchanger('economizer')
ch = cmp.sink('chimney')

# steam turbine part
turb_hp = cmp.turbine('steam turbine high pressure')
cond_dh = cmp.condenser('district heating condenser')
mp_split = cmp.splitter('mp split')
turb_lp = cmp.turbine('steam turbine low pressure')
cond = cmp.condenser('condenser')
merge = cmp.merge('merge')
pump1 = cmp.pump('feed water pump 1')
pump2 = cmp.pump('feed water pump 2')
ls_out = cmp.sink('ls sink')
ls_in = cmp.source('ls source')
mp_valve = cmp.valve('mp valve')

# district heating
dh_in = cmp.source('district heating backflow')
dh_out = cmp.sink('district heating feedflow')

# cooling water
cw_in = cmp.source('cooling water backflow')
cw_out = cmp.sink('cooling water feedflow')

# %% connections
# gas turbine part
c_in = con.connection(air, 'out1', comp, 'in1')
c_out = con.connection(comp, 'out1', c_c, 'in1')
fuel_comp = con.connection(CH4, 'out1', comp_fuel, 'in1')
comp_cc = con.connection(comp_fuel, 'out1', c_c, 'in2')