Vypočtěte potřebný průtok recyklem, tak aby byly splěny požadované parametry jednotlivých proudů. Uvažujte nejdříve konstantní měrnou tepelnou kapacitu. Následně problém upravte pro využití proměnné cp dle tabulky [Perry's Chemical Engineers' Handbook, 8th Edition, McGraw-Hill, 2008]:
Název | A | B | C | D | E |
---|---|---|---|---|---|
Voda | 276.370 | −2090.1 | 8.125 | −0.014116 | 9.3701E-06 |
In [4]:
from __future__ import division
cp=4.18 #kJ/kg-°C
m_in = 1000. # kg/h
T_in=70. #°C
m_out = 1000. # kg/h
T_out = 105. #°C
Q_vym = 146300. #kJ/h
#------- Odtud níže to lze nahradit funkcí--------
m_rec = 600 #kg/h prvotní odhad
T_rec = 105. #°C
#Směšovač
m_sm = m_in + m_rec
T_sm = 80#(T_in*m_in + T_rec*m_rec)/(m_in + m_rec)
bil_sm_m = m_sm - m_in - m_rec
bil_sm_en = cp*T_sm*m_sm-cp*T_in*m_in-cp*T_rec*m_rec
#Výměník
m_vym=m_sm
T_vym=T_out
bil_vym_m = m_vym - m_sm
bil_vym_en = cp*T_vym*m_vym - Q_vym - cp*T_sm*m_sm #kJ/h
#Rozdělovač
bil_roz_m = m_out + m_rec - m_vym
bil_roz_en = cp*T_rec*m_rec + cp*T_out*m_out - cp*T_vym*m_vym
#Účelová funkce
UF = bil_sm_m**2+bil_sm_en**2 + bil_vym_m**2 + bil_vym_en**2 + bil_roz_m**2 + bil_roz_en**2
#---------až sem------------
print ("Směšovač:")
print ("\tTeplota = %g °C")%T_sm
print ("\tPrůtok = %g kg/h")%m_sm
print ("\tHmotnostní bilance = %g kg/h")%bil_sm_m
print ("\tEnergetická bilance = %g kJ/h")%bil_sm_en
print
print ("Výměník:")
print ("\tTeplota = %g °C")%T_vym
print ("\tPrůtok = %g kg/h")%m_vym
print ("\tHmotnostní bilance = %g kg/h")%bil_vym_m
print ("\tEnergetická bilance = %g kJ/h")%bil_vym_en
print
print ("Rozdělovač:")
print ("\tHmotnostní bilance = %g kg/h")%bil_roz_m
print ("\tEnergetická bilance = %g kJ/h")%bil_roz_en
print
print ("Účelová funkce = %g")%UF
Optimalizace pomocí Pythonu: http://docs.scipy.org/doc/scipy-0.14.0/reference/tutorial/optimize.html
Výpočet z horní buňky "zabalíme" do funkce a necháme si úlohu vyřešit pomocí specializovaného nástroje - funkce minimize_scalar().
In [5]:
#Importujeme funkci z balíku scipy.optimize
from scipy.optimize import minimize_scalar
def recykl(m_rec,tiskni=0):
'''
Funkce pro výpočet recyklu
Vstup: m_rec - průtok [kg/h]
'''
T_rec = 105. #°C
#Směšovač
m_sm = m_in + m_rec
T_sm = 80#(T_in*m_in + T_rec*m_rec)/(m_in + m_rec)
bil_sm_m = m_sm - m_in - m_rec
bil_sm_en = cp*T_sm*m_sm-cp*T_in*m_in-cp*T_rec*m_rec
#Výměník
m_vym=m_sm
T_vym=T_out
bil_vym_m = m_vym - m_sm
bil_vym_en = cp*T_vym*m_vym - Q_vym - cp*T_sm*m_sm #kJ/h
#Rozdělovač
bil_roz_m = m_out + m_rec - m_vym
bil_roz_en = cp*T_rec*m_rec + cp*T_out*m_out - cp*T_vym*m_vym
#Účelová funkce
UF = bil_sm_m**2+bil_sm_en**2 + bil_vym_m**2 + bil_vym_en**2 + bil_roz_m**2 + bil_roz_en**2
if tiskni > 0:
print ("Směšovač:")
print ("\tTeplota = %g °C")%T_sm
print ("\tPrůtok = %g kg/h")%m_sm
print ("\tHmotnostní bilance = %g kg/h")%bil_sm_m
print ("\tEnergetická bilance = %f kJ/h")%bil_sm_en
print
print ("Výměník:")
print ("\tTeplota = %g °C")%T_vym
print ("\tPrůtok = %g kg/h")%m_vym
print ("\tHmotnostní bilance = %g kg/h")%bil_vym_m
print ("\tEnergetická bilance = %g kJ/h")%bil_vym_en
print
print ("Rozdělovač:")
print ("\tHmotnostní bilance = %g kg/h")%bil_roz_m
print ("\tEnergetická bilance = %g kJ/h")%bil_roz_en
print
print ("Účelová funkce = %g")%UF
return UF
res = minimize_scalar(recykl,method='brent')
print res
print
UF=recykl(res.x,1)
In [14]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
UF=np.array([])
m=np.linspace(-1000,3000,100)
for m_rec in m:
UF=np.append(UF,recykl(m_rec))
plt.plot(m, UF)
Out[14]: