예제 #1
0
    def set_conns(self):

        if not hasattr(self, 'nw'):
            self.create_network()

        i = 0
        for he in self.heat_ex:
            j = str(i)

            inconn = self.nw.conns.loc[
                self.nw.conns['t'].isin([he])
                & self.nw.conns['t_id'].isin(['in1'])].index[0]
            outconn = self.nw.conns.loc[
                self.nw.conns['s'].isin([he])
                & self.nw.conns['s_id'].isin(['out1'])].index[0]

            inconn.set_attr(T=self.get_attr('T_in' + j))
            outconn.set_attr(T=self.get_attr('T_out' + j))
            i += 1

        i = 0
        for pipe in self.pipe_feed:
            j = str(i)

            inconn = self.nw.conns.loc[
                self.nw.conns['t'].isin([pipe])
                & self.nw.conns['t_id'].isin(['in1'])].index[0]
            outconn = self.nw.conns.loc[
                self.nw.conns['s'].isin([pipe])
                & self.nw.conns['s_id'].isin(['out1'])].index[0]

            if self.get_attr('dT_pf' + j + '_set'):
                inconn.set_attr(T=con.ref(outconn, 1, self.get_attr('dT_pf' +
                                                                    j)))
            else:
                inconn.set_attr(T=np.nan)
            i += 1

        i = 0
        for pipe in self.pipe_back:
            j = str(i)

            inconn = self.nw.conns.loc[
                self.nw.conns['t'].isin([pipe])
                & self.nw.conns['t_id'].isin(['in1'])].index[0]
            outconn = self.nw.conns.loc[
                self.nw.conns['s'].isin([pipe])
                & self.nw.conns['s_id'].isin(['out1'])].index[0]

            if self.get_attr('dT_pb' + j + '_set'):
                outconn.set_attr(
                    T=con.ref(inconn, 1, -self.get_attr('dT_pb' + j)))
            else:
                outconn.set_attr(T=np.nan)
            i += 1
예제 #2
0
def conns_set_ref(c, *args):
    r"""
    Sets references on connections as specified in connection data.

    Parameters
    ----------
    c : pandas.core.series.Series
        Connection information from .csv-file.

    args[0] : pandas.core.frame.DataFrame
        DataFrame containing all created connections.

    Returns
    -------
    instance : tespy.connections.ref
        TESPy reference object.
    """
    for col in ['m', 'p', 'h', 'T']:
        # search for referenced connections
        if isinstance(c[col + '_ref'], str):
            # create reference object
            instance = args[0].instance[c[col + '_ref'] ==
                                        args[0]['id']].values[0]
            # write to connection properties
            c['instance'].get_attr(col).ref = con.ref(instance,
                                                      c[col + '_ref_f'],
                                                      c[col + '_ref_d'])
예제 #3
0
    def test_set_attr_errors(self):
        #
        labels = [5, 'Label,', 'Labe;l', 'Label.']
        for l in labels:
            self.cmp_instanciation_ValueError(l)

        # ValueErrors
        self.set_attr_ValueError(self.comp, mode=5)
        self.set_attr_ValueError(self.comp, offdesign=['Q'])

        self.set_attr_ValueError(self.conn, offdesign=['f'])

        self.set_attr_ValueError(self.nw, m_unit='kg')
        self.set_attr_ValueError(self.nw, h_unit='kg')
        self.set_attr_ValueError(self.nw, p_unit='kg')
        self.set_attr_ValueError(self.nw, T_unit='kg')
        self.set_attr_ValueError(self.nw, v_unit='kg')

        self.create_connection_ValueError('source')
        self.create_connection_ValueError('target')

        # TypeErrors
        self.set_attr_TypeError(self.comp, P=[5])
        self.set_attr_TypeError(self.comp, tiP_char=None)
        self.set_attr_TypeError(self.comp, design='f')

        self.set_attr_TypeError(self.conn, design='h')
        self.set_attr_TypeError(self.conn, fluid_balance=1)
        self.set_attr_TypeError(self.conn, h0=[4])
        self.set_attr_TypeError(self.conn, fluid=5)

        self.set_attr_TypeError(self.nw, p_range=5)
        self.set_attr_TypeError(self.nw, h_range=5)
        self.set_attr_TypeError(self.nw, T_range=5)

        self.bus_add_comps_TypeError({'c': self.conn})
        self.bus_add_comps_TypeError({'f': self.comp})
        self.bus_add_comps_TypeError({'c': self.comp, 'char': 'Hi'})
        self.bus_add_comps_TypeError({'c': self.comp, 'p': 5})
        self.bus_add_comps_TypeError({'c': self.comp, 'P_ref': 'what'})

        self.create_ref_TypeError([self.conn, 7, 'hi'])
        self.create_ref_TypeError([self.conn, 'hi', 0])
        self.create_ref_TypeError([self.comp, 1, 0])

        # KeyErrors
        self.set_attr_KeyError(self.comp, wow=5)
        self.set_attr_KeyError(self.conn, jey=5)
        self.set_attr_KeyError(self.sub, a=7)

        self.get_attr_KeyError(self.comp, 'wow')
        self.get_attr_KeyError(self.conn, 'key')
        self.get_attr_KeyError(self.bus, 'components')
        self.get_attr_KeyError(con.ref(self.conn, 1, 0), 'comp')
        self.get_attr_KeyError(self.nw, 'test')
        self.get_attr_KeyError(self.sub, 'test')
        self.get_attr_KeyError(cmp_char.characteristics(), 'test')
        self.get_attr_KeyError(hlp.data_container(), 'somekey')
예제 #4
0
 def test_pump(self):
     """
     Test component properties of pumps.
     """
     instance = cmp.pump('pump')
     c1, c2 = self.setup_network_11(instance)
     fl = {'N2': 0, 'O2': 0, 'Ar': 0, 'INCOMP::DowQ': 1, 'H2O': 0, 'NH3': 0, 'CO2': 0, 'CH4': 0}
     c1.set_attr(fluid=fl, v=1, p=5,T=50)
     c2.set_attr(p=7)
     instance.set_attr(eta_s=1)
     self.nw.solve('design')
     # calculate isentropic efficiency the old fashioned way
     eta_s = (instance.h_os('') - c1.h.val_SI) / (c2.h.val_SI - c1.h.val_SI)
     eq_(eta_s, instance.eta_s.val, 'Value of isentropic efficiency must be ' + str(eta_s) + ', is ' + str(instance.eta_s.val) + '.')
     s1 = round(hlp.s_mix_ph(c1.to_flow()), 4)
     s2 = round(hlp.s_mix_ph(c2.to_flow()), 4)
     eq_(s1, s2, 'Value of entropy must be identical for inlet (' + str(s1) + ') and outlet (' + str(s2) + ') at 100 % isentropic efficiency.')
     instance.set_attr(eta_s=0.7)
     self.nw.solve('design')
     self.nw.save('tmp')
     c2.set_attr(p=np.nan)
     # flow char (pressure rise vs. volumetric flow)
     x = [0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4]
     y = np.array([14, 13.5, 12.5, 11, 9, 6.5, 3.5, 0]) * 1e5
     char = hlp.dc_cc(x=x, y=y, is_set=True)
     # apply flow char and eta_s char
     instance.set_attr(flow_char=char, eta_s=np.nan, eta_s_char=hlp.dc_cc(method='GENERIC', is_set=True))
     self.nw.solve('offdesign', design_path='tmp')
     eq_(round(c2.p.val_SI - c1.p.val_SI, 0), 650000, 'Value of pressure rise must be ' + str(650000) + ', is ' + str(c2.p.val_SI - c1.p.val_SI) + '.')
     c1.set_attr(v=0.9)
     self.nw.solve('offdesign', design_path='tmp')
     eq_(c2.p.val_SI - c1.p.val_SI, 775000.0, 'Value of pressure rise must be ' + str(775000.0) + ', is ' + str(c2.p.val_SI - c1.p.val_SI) + '.')
     eq_(0.694, round(instance.eta_s.val, 3), 'Value of isentropic efficiency must be ' + str(0.694) + ', is ' + str(instance.eta_s.val) + '.')
     instance.eta_s_char.is_set = False
     # test boundaries of characteristic line
     c2.set_attr(T=con.ref(c1, 0, 20))
     c1.set_attr(v=-0.1)
     self.nw.solve('design')
     eq_(c2.p.val_SI - c1.p.val_SI, 14e5, 'Value of power must be ' + str(14e5) + ', is ' + str(c2.p.val_SI - c1.p.val_SI) + '.')
     c1.set_attr(v=1.5)
     self.nw.solve('design')
     eq_(c2.p.val_SI - c1.p.val_SI, 0, 'Value of power must be ' + str(0) + ', is ' + str(c2.p.val_SI - c1.p.val_SI) + '.')
     shutil.rmtree('./tmp', ignore_errors=True)
예제 #5
0
def conns_set_ref(c, *args):
    """
    sets references on the created connections

    :param c: connection information
    :type c: pandas.core.series.Series
    :returns: instance (*tespy.components.component*) - TESPy component object

    **additional arguments in args**

    - args[0]: conns (*pandas.core.frame.DataFrame*) - DataFrame containing all
      created connections
    """

    for col in ['m', 'p', 'h', 'T']:
        # search for referenced connections
        if isinstance(c[col + '_ref'], str):
            # create reference object
            instance = args[0].instance[c[col +
                                          '_ref'] == args[0]['id']].values[0]
            # write to connection properties
            c['instance'].get_attr(col).ref = con.ref(instance,
                                                      c[col + '_ref_f'],
                                                      c[col + '_ref_d'])
예제 #6
0
파일: step_1.py 프로젝트: xiaojielin/tespy
# %% component parametrization

cd.set_attr(pr1=0.99,
            pr2=0.99,
            ttd_u=5,
            design=['pr2', 'ttd_u'],
            offdesign=['zeta2', 'kA'])
rp.set_attr(eta_s=0.8, design=['eta_s'], offdesign=['eta_s_char'])
cons.set_attr(pr=0.99, design=['pr'], offdesign=['zeta'])

# %% connection parametrization

c_in_cd.set_attr(T=170, fluid={'water': 0, 'NH3': 1})
cb_rp.set_attr(T=60, p=10, fluid={'water': 1, 'NH3': 0})
cd_cons.set_attr(T=90)
cons_cf.set_attr(h=con.ref(cb_rp, 1, 0), p=con.ref(cb_rp, 1, 0))

# %% key paramter

cons.set_attr(Q=-230e3)

# %% Calculation

nw.solve('design')
nw.print_results()
nw.save('condenser')

cons.set_attr(Q=-200e3)

nw.solve('offdesign', design_path='condenser')
nw.print_results()
예제 #7
0
#                {'c': pump, 'char': 1 / 0.85})
#nw.add_busses(power)
# parametrization of components
#v = np.array([0.1, 0.4])
#dp = np.array([11, 11]) * 1e5
#char = hlp.dc_cc(x=v, y=dp, is_set=True)
#pump.set_attr(eta_s=0.85, flow_char=char, design=['eta_s_char'])
pump.set_attr(pr=14.75, eta_s=0.9)
ihe.set_attr(pr1=0.849056603, pr2=0.957627118)
condenser.set_attr(pr1=0.8889, pr2=1)
turbine.set_attr(pr=0.098148148, eta_s=0.85, design=['eta_s', 'pr'])
p_and_e.set_attr(pr1=1, pr2=0.955752212)
# parametrization of connections
turbine_wf_in.set_attr(T=T_before_turbine, state='g', 
                       fluid={'water': 0, 'Isopentane': 1, 'N2': 0, 'Ar': 0, 'O2': 0})
p_and_e_wf_in.set_attr(T=con.ref(ihe_wf_out, 1, 0), p=con.ref(ihe_wf_out, 1, 0), 
                       m=con.ref(ihe_wf_out, 1, 0), fluid={'water': 0, 'Isopentane': 1, 'N2': 0, 'Ar': 0, 'O2': 0})
p_and_e_wf_out.set_attr(T=con.ref(turbine_wf_in, 1, 0), state='g')
pump_ihe.set_attr(p=p_after_pump)
# air cooling connections
ca_in.set_attr(T=T_air, p=p_air, m=mass_flow_rate_air,
               fluid={'water': 0, 'Isopentane': 0, 'N2': 0.7812, 'Ar': 0.0092, 'O2': 0.2096})
ca_out.set_attr(T=T_air+15)
# brine connections
brine_in.set_attr(T=T_brine_in, p=p_brine_in, m=mass_flow_rate_brine, state='l', 
                  fluid={'water': 1, 'Isopentane': 0, 'N2': 0, 'Ar': 0, 'O2': 0})
brine_out.set_attr(T=T_brine_out)
# solving
mode = 'design'
file = 'yangyi'
# solve the network, print the results to prompt and save
예제 #8
0
             design=['eta_s'],
             offdesign=['eta_s_char'],
             eta_s_char=cp_char)
ic.set_attr(pr1=0.98,
            pr2=0.999,
            design=['pr1', 'pr2'],
            offdesign=['zeta1', 'zeta2', 'kA'])

# %% connection parametrization

# condenser system

c_in_cd.set_attr(fluid={'air': 0, 'NH3': 1, 'water': 0})
cb_dhp.set_attr(T=60, p=10, fluid={'air': 0, 'NH3': 0, 'water': 1})
cd_cons.set_attr(T=90)
cons_cf.set_attr(h=con.ref(cb_dhp, 1, 0), p=con.ref(cb_dhp, 1, 0))

# evaporator system cold side

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

# evaporator system hot side

amb_fan.set_attr(T=12,
                 p=4,
                 fluid={
                     'air': 1,
                     'NH3': 0,
                     'water': 0
                 },
예제 #9
0
 def create_ref_TypeError(self, params):
     con.ref(params[0], params[1], params[2])
예제 #10
0
파일: 3bhes.py 프로젝트: vvburlaka/ogs
fc_pu.set_attr(p=inflow_head, m=0.6, fluid={'water': 1})

# pump
pu.set_attr(eta_s=0.90)

# bhes
bhe1.set_attr(D=0.02733, L=100, ks=0.00001)
bhe2.set_attr(D=0.02733, L=100, ks=0.00001)
bhe3.set_attr(D=0.02733, L=100, ks=0.00001)

# consumer
cons.set_attr(D=0.2, L=20, ks=0.00001)

# connection parametrization
# Tin:
pu_sp.set_attr(h=con.ref(cons_fc, 1, 0))

# for BHEs:
# Tout:
bhe1_mg.set_attr(T=303.15)
bhe2_mg.set_attr(T=303.15)
bhe3_mg.set_attr(T=303.15)

# consumer heat demand
heat.set_attr(P=-3000)  # W

# solve
btes.set_printoptions(print_level='info')
btes.solve('design')
# save to csv:
btes.save('tespy_nw', structure=True)
예제 #11
0
bi.set_attr(T_out0=75, T_out1=75, pr0=0.99, pr1=0.99)

# %% connection parameters

# pressure after the valves
mg_pu.set_attr(p=9)
# specify the mass flow distribution between the two btes systems
# a) specify temperature of mixture at merge
#mg_pu.set_attr(T=72)
# b) specify zeta value for one of the valves (I took this value from
# previously calculated results)
#bo.valve[0].set_attr(zeta=67870207254.06077)
# c) specify mass flow distribution directly (without good starting values the
# other methods will most probably fail), 2/5 of total mass flow will flow
# through outer btes pipes
sp_bo.set_attr(m=con.ref(fc_sp, 3 / 5, 0))

# system inlet
fc_sp.set_attr(p=10, T=50, fluid={'water': 1})

# closing the circle
cons_fc.set_attr(p=con.ref(fc_sp, 1, 0), h=con.ref(fc_sp, 1, 0))

# %% consumer heat demand

heat.set_attr(P=-20e3)

# %% solving

btes.solve('design')
btes.save('BTES')
예제 #12
0
cp1.set_attr(eta_s=0.8, design=['eta_s'], offdesign=['eta_s_char'])
cp2.set_attr(eta_s=0.8, pr=5, design=['eta_s'], offdesign=['eta_s_char'])

he.set_attr(pr1=0.98,
            pr2=0.98,
            design=['pr1', 'pr2'],
            offdesign=['zeta1', 'zeta2', 'kA'])

# %% connection parametrization

# condenser system

c_in_cd.set_attr(fluid={'water': 0, 'NH3': 1})
cb_rp.set_attr(T=60, p=10, fluid={'water': 1, 'NH3': 0})
cd_cons.set_attr(T=90)
cons_cf.set_attr(h=con.ref(cb_rp, 1, 0), p=con.ref(cb_rp, 1, 0))

# evaporator system cold side

pu_ev.set_attr(m=con.ref(va_dr, 4, 0), p0=5)
su_cp1.set_attr(p0=5, h0=1700)

# evaporator system hot side

amb_in_su.set_attr(T=12, p=5, fluid={'water': 1, 'NH3': 0})
ev_amb_out.set_attr(T=9)

# compressor-system

he_cp2.set_attr(T=40, p0=10)
ic_in_he.set_attr(p=5, T=20, fluid={'water': 1, 'NH3': 0})
예제 #13
0
# %% starting area & housing area 1

# feed
so_pif1 = con.connection(so,
                         'out1',
                         pif1,
                         'in1',
                         T=90,
                         p=15,
                         fluid={'water': 1})
pif1_k1f = con.connection(pif1,
                          'out1',
                          k1.inlet,
                          'in1',
                          T=con.ref(so_pif1, 1, -1 * pif1.L.val / 100),
                          design=['T'])
k1f_pif2 = con.connection(k1.outlet, 'out2', pif2, 'in1')
pif2_h1 = con.connection(pif2,
                         'out1',
                         h1.inlet,
                         'in1',
                         T=con.ref(pif1_k1f, 1, -1 * pif2.L.val / 100),
                         design=['T'])

# back
h1_pib2 = con.connection(h1.outlet, 'out1', pib2, 'in1')
pib2_k1 = con.connection(pib2,
                         'out1',
                         k1.inlet,
                         'in2',
예제 #14
0
# gas turbine
c_in.set_attr(T=20,
              p=1,
              m=250,
              fluid={
                  'Ar': 0.0129,
                  'N2': 0.7553,
                  'H2O': 0,
                  'CH4': 0,
                  'CO2': 0.0004,
                  'O2': 0.2314
              },
              design=['m'])
gt_in.set_attr(T=1200)
gt_out.set_attr(p0=1)
fuel.set_attr(T=con.ref(c_in, 1, 0),
              h0=800,
              fluid={
                  'CO2': 0.04,
                  'Ar': 0,
                  'N2': 0,
                  'O2': 0,
                  'H2O': 0,
                  'CH4': 0.96
              })

# waste heat recovery
eco_dh.set_attr(T=290, design=['T'], p0=1)
dh_ch.set_attr(T=100, design=['T'], p=1)

# steam turbine
예제 #15
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))
예제 #16
0
# fresh steam properties
fs_in.set_attr(p=100, T=550, fluid={'water': 1})

# pressure after turbine inlet valve
fs.set_attr(p=100, design=['p'])

# pressure extraction steam
ext.set_attr(p=10, design=['p'])

# staring value for warm feed water
fw_w.set_attr(h0=310)

# closing the cycle: fluid properties at sink must be identical to fluid
# properties at the source
fs_out.set_attr(p=con.ref(fs_in, 1, 0), h=con.ref(fs_in, 1, 0))

# cooling water inlet
cw_in.set_attr(T=60, p=10, fluid={'water': 1})

# setting key parameters:
# Power of the plant
power_bus.set_attr(P=5e6)
#
cw_out.set_attr(T=110)

# %% solving

mode = 'design'
nw.set_printoptions(print_level='none')
예제 #17
0
ev.set_attr(pr1=0.99,
            pr2=0.99,
            ttd_l=5,
            design=['pr1', 'ttd_l'],
            offdesign=['zeta1', 'kA'])
su.set_attr(pr1=0.99, pr2=0.99, ttd_u=2)
pu.set_attr(eta_s=0.8)

# %% connection parametrization

# condenser system

c_in_cd.set_attr(T=170, fluid={'water': 0, 'NH3': 1})
cb_rp.set_attr(T=60, p=10, fluid={'water': 1, 'NH3': 0})
cd_cons.set_attr(T=90)
cons_cf.set_attr(h=con.ref(cb_rp, 1, 0), p=con.ref(cb_rp, 1, 0))

# evaporator system cold side

pu_ev.set_attr(m=con.ref(ves_dr, 4, 0), p0=5)
su_cp1.set_attr(p0=5, h0=1700)

# evaporator system hot side

amb_in_su.set_attr(T=12, p=1, fluid={'water': 1, 'NH3': 0})
ev_amb_out.set_attr(T=9)

# %% key paramter

cons.set_attr(Q=-230e3)
예제 #18
0
파일: cet.py 프로젝트: maltefritz/SWSH
cond_dh.set_attr(kA_char1=cd_char_hot, pr1=0.99, pr2=0.98, ttd_u=5, design=['ttd_u', 'pr2'], offdesign=['zeta2', 'kA'], design_path='cet_design_maxQ')
cond.set_attr(pr1=0.99, pr2=0.98, ttd_u=5, design=['ttd_u', 'pr2'], offdesign=['zeta2', 'kA'])

pump1.set_attr(eta_s=0.8, eta_s_char=eta_s_p1, design=['eta_s'], offdesign=['eta_s_char'], design_path='cet_design_maxQ')
pump2.set_attr(eta_s=0.8, eta_s_char=eta_s_p2, design=['eta_s'], offdesign=['eta_s_char'])


mp_valve.set_attr(pr=1, design=['pr'])
# %% connection parameters

# gas turbine
c_in.set_attr(T=20, p=1, fluid={'Ar': 0.0129, 'N2': 0.7553, 'H2O': 0,
                                'CH4': 0, 'CO2': 0.0004, 'O2': 0.2314})
#gt_in.set_attr(T=1315)
#gt_out.set_attr(p=1.05)
fuel_comp.set_attr(p=con.ref(c_in, 1, 0), T=con.ref(c_in, 1, 0), h0=800,
                   fluid={'CO2': 0.04, 'Ar': 0, 'N2': 0,
                          'O2': 0, 'H2O': 0, 'CH4': 0.96})

# waste heat recovery
eco_ch.set_attr(T=142, design=['T'], p=1.02)

# steam turbine
evap_drum.set_attr(m=con.ref(drum_suph, 4, 0))
suph_ls.set_attr(p=130, fluid={'CO2': 0, 'Ar': 0, 'N2': 0,
                               'O2': 0, 'H2O': 1, 'CH4': 0},
                 design=['p'])
ls.set_attr(p=con.ref(suph_ls, 1, 0), h=con.ref(suph_ls, 1, 0))

#mp.set_attr(p=5, design=['p'])
mp_ls.set_attr(m=con.ref(mp_ws, 0.2, 0))