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
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'])
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')
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)
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'])
# %% 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()
# {'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
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 },
def create_ref_TypeError(self, params): con.ref(params[0], params[1], params[2])
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)
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')
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})
# %% 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',
# 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
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))
# 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')
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)
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))