Výpočet průtoku recyklem

Zadání

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


Směšovač:
	Teplota = 80 °C
	Průtok = 1600 kg/h
	Hmotnostní bilance = 0 kg/h
	Energetická bilance = -20900 kJ/h

Výměník:
	Teplota = 105 °C
	Průtok = 1600 kg/h
	Hmotnostní bilance = 0 kg/h
	Energetická bilance = 20900 kJ/h

Rozdělovač:
	Hmotnostní bilance = 0 kg/h
	Energetická bilance = 0 kJ/h

Účelová funkce = 8.7362e+08

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)


  fun: 7.084668275422163e-17
 nfev: 5
  nit: 4
    x: 399.9999999999428

Směšovač:
	Teplota = 80 °C
	Průtok = 1400 kg/h
	Hmotnostní bilance = -1.13687e-13 kg/h
	Energetická bilance = 0.000000 kJ/h

Výměník:
	Teplota = 105 °C
	Průtok = 1400 kg/h
	Hmotnostní bilance = 0 kg/h
	Energetická bilance = -5.93718e-09 kJ/h

Rozdělovač:
	Hmotnostní bilance = 0 kg/h
	Energetická bilance = 0 kJ/h

Účelová funkce = 7.08467e-17

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]:
[<matplotlib.lines.Line2D at 0xae7a5e0c>]