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) + '.')
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') ]
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') ]
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')
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
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
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)
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))
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')