# Converted from dyn_osc_feed.m - CSTR dynamics: feed temperature control (Kc=0, theta=35)importnumpyasnpfromscipy.integrateimportsolve_ivpfrommiscimportsave_asciip=dict(k_m=0.004,T_m=298.,E=15000.,c_Af=2.,C_p=4.,rho=1000.,T_f=298.,T_a=298.,DeltaH_R=-2.2e5,U=340.,theta=35.,T_set=321.53,c_set=0.48995,T_fs=298.,Kc=0.,)p['C_ps']=p['C_p']*p['rho']defrhs(t,x,p):c_A=x[0];T=x[1]k=p['k_m']*np.exp(-p['E']*(1./T-1./p['T_m']))T_f=p['T_fs']+p['Kc']*(T-p['T_set'])return[(p['c_Af']-c_A)/p['theta']-k*c_A,p['U']/p['C_ps']*(p['T_a']-T)+(T_f-T)/p['theta']-k*c_A*p['DeltaH_R']/p['C_ps']]x0=[p['c_Af'],p['T_f']]tfinal=15.*p['theta']tout=np.linspace(0.,tfinal,1000)sol=solve_ivp(lambdat,x:rhs(t,x,p),[0.,tfinal],x0,method='Radau',t_eval=tout,rtol=np.sqrt(np.finfo(float).eps),atol=np.sqrt(np.finfo(float).eps))x=sol.y.Tu=(x[:,1]-p['T_set'])*p['Kc']+p['T_fs']conv=(p['c_Af']-x[:,0])/p['c_Af']table=np.column_stack([tout,x,conv,u])save_ascii('dyn_osc_feed.dat',table)