Methanol-Synthese, mit Kreislaufführung

Parameter

$T_{ein}=493,15K$

$p=50 bar$

$\mathcal{R}=0,8$ Rücklaufverhältnis

$\dot Q_{Reaktor} = 0$

$T_{Flash} = 333,15K$

Bilanzen

Im Reaktor

  • Variablen: (N) Ablaufströme am Reaktor $\{\dot n_{i,2}\}$, (N) Rücklaufströme $\{\mathcal{R} \dot n_{i,v}\}$, (r) Reaktionslaufzahlen $\{\xi_j\}$, (1) Temperatur $T$
  • Gleichungen: (N) Stoffbilanzen, (1) Energiebilanz

Stoffbilanzen (N)

$\dot n_i = \dot n_{i, 0} + \mathcal{R} \dot n_{i, v} + \sum_{j}{\nu_ij \xi_j}$

Energiebilanz (1)

$\begin{array}{lll} 0 &= \dot Q & + \sum\limits_i(\dot n_i (\Delta H_i^{\circ}(T)-\Delta H_{i,0}^\circ))_{ein}- \sum\limits_i(\dot n_i (\Delta H_i^{\circ}(T)-\Delta H_{i,0}^\circ))_{aus} + \sum\limits_{j}{\xi_j (-\Delta Hr_j(T))}\\ &= 0 &+ \sum\limits_i((\dot n_{i,0}+\mathcal{R}\cdot\dot n_{i,v}) \cdot(\Delta H_i^{\circ}(T_{ein})-\Delta H_{i,0}^\circ))\\ &&- \sum\limits_i(\dot n_{i,2}\cdot(\Delta H_i^{\circ}(T_2)-\Delta H_{i,0}^\circ)) \\ &&+\sum\limits_{j}{\xi_j \cdot (-\Delta Hr_j(T))}\\ \end{array}\\ $

Gleichgewichtskonstanten (r)

$\begin{array}{ll} K_j(T) &= exp \left(-\frac{\Delta H_0^\circ}{R T} + \frac{(\Delta H_0^\circ -\Delta G_0^\circ)}{R T_0} - \frac{1}{T}\int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}dT} + \int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}\frac{dT}{T}}\right) \\ &= \prod_i (n_i)^{\nu_i}\left( \frac{p}{p^0}\right)^{\sum_i \nu_i}(n)^{-\sum_i \nu_i}\end{array}$

$p^0 = 1 bar$

Idealer Gas-Ansatz, $K_{\phi^{eq}}=1$

In der Verdampfungsstufe

  • Variablen: (N) Molbrüche in der Flüssigkeit $\{\dot x_i\}$, (N) Molbrüche im Gas $\{y_i\}$, (1) Dampf/Flüssigkeit Verhältnis
  • Gleichungen: (N) Stoffbilanzen, (N) Isotherme Gleichgewichtsbedingungen, (1) Zusatzverhältnis

Stoffbilanzen (N)

$\dot F z_i = \dot V y_i + \dot L x_i $

Isotherme Verdampfungs-Gleichgewichtsbedingungen (N)

$(\hat{\phi_i}^V P) y_i^V=(\hat{\phi_i}^L P) x_i^L \hspace{2cm} K_i\equiv{{y_i}\over{x_i}}={{\hat{\phi_i}^L}\over{\hat{\phi_i}^V}}$

Zusatzgleichung (1)

$0 = \sum\limits_i y_i - \sum\limits_i x_i$

Verringerung des Systems zu einer Funktion einer Veränderlichen: $\psi\equiv(V/F)$

$\begin{array}{ll} z_i &= \psi y_i + (1-\psi) x_i \\ &= \psi x_i K_i + (1-\psi) x_i \\ x_i &={{z_i}\over{1+\psi(K_i-1)}} \hspace{3cm} y_i &={{z_i K_i}\over{1+\psi(K_i-1)}}\\ \Rightarrow 0 &= \sum\limits_i y_i - \sum\limits_i x_i = \sum\limits_i {{z_i(K_i-1)}\over{1+\psi(K_i-1)}}\\ \end{array}$

Im Splitter

  • Variablen: (2N) austretende Ströme $\dot n_{i,r}$, $\dot n_{i,p}$, (1) Rücklaufverhältnis $\mathcal{R}$
  • Gleichungen: (N) Stoffbilanzen, (N) Splitter-Bedingungen
  • Freiheitsgrad: Rücklaufverhältnis $\mathcal{R}$

Stoffbilanzen (N)

$\dot V y_i = \dot n_{i,v} = \dot n_{i,r} + \dot n_{i,p}$

Splitter-Bedingungen (N)

$\dot n_{i,r} = \mathcal{R} \dot n_{i,v}$

$\Rightarrow \dot n_{i,p} = (1-\mathcal{R}) \dot n_{i,v}$

Methoden Zur Berechnung der thermodynamischen Eigenschaften

  • Verteilungskoeffizienten $K_i(T,x_i)$ mit einem kubischen Zustandsgleichung-Ansatz (Peng-Robinson)
  • Residualenthalpie, residuale freie Gibbs Energie, residuale Enthropie mit dem gleichen Anzatz kubischer Gleichung
  • Gleichgewichtskonstanten $K_j(T)$ mit Wechselwirkung der Thermodynamischen Eigenschaften der Komponenten ($H, G, S$) mit der Temperatur und den residualen Eigenschaften

Verteilungskoeffizienten Ki

Kubische Gleichung

  • Eingangs Daten: Zusammensetzungen der Gasphase, der flüssigen Phase, Temperatur und Druck $\{x_i\}, \{y_i\}, T, P$

  • Datenausgabe: Realgasfaktor beider Phasen $Z^L, Z^V$ Fugazitätskoeffizienten der Komponenten in beiden Phasen $\{\hat{\phi_i^L}\}, \{\hat{\phi_i^V}\}$, Verteilungskoeffizienten $\{K_i\}$.

Vorgehensweise:

  1. Phasen-unabhängige Terme berechnen

    $\begin{array}{|c|c|} \hline a_i(T) = \Psi{{ \alpha(Tr_i, \omega_i) R^2 Tc_i^2}\over{Pc_i}}& b_i =\Omega{{R Tc_i}\over{Pc_i}}\\ \hline \beta_i = {{b_i P}\over{R T}}& q_i = {{a_i(T)}\over{b_i R T}} \\ \hline \end{array}$

  2. Phasen-abhängige Mischregeln für jede Phase berechnen (L, V)

    $\begin{array}{|c|c|} \hline a = \sum\limits_i\sum\limits_j x_i x_j a_{ij} & b=\sum\limits_i x_i b_i\\ a_{ij} = (a_i a_j)^{1/2} & \\ \hline \beta^p \equiv {{b^p P}\over{R T}} \hspace{10mm} \textit{p: (L, V)} & q^p \equiv {{a^p}\over{b^p R T}} \hspace{10mm} \textit{p: (L, V)} \\ \hline \end{array}$

  3. Partielle molare Größen in jeder Phase berechnen

    $\require{cancel} \begin{array}{|ccll|} \hline \bar{a_i} &\equiv\left[{{\partial (n a)}\over{\partial n_i}} \right]_{T,n_j} & =\left[{{\partial }\over{\partial n_i}}(n \sum\limits_i\sum\limits_j x_i x_j a_{ij}) \right]_{T,n_j} &=-a + 2\sum\limits_{j\neq i} x_j a_{ij} + 2 x_i a_i\\ \bar{b_i} &\equiv\left[{{\partial (n b)}\over{\partial n_i}} \right]_{T,n_j} &= \left[{{\partial (n_i b_i)}\over{\partial n_i}} \right]_{T,n_j} + \cancelto{0}{\sum\limits_{j\neq i}\left[{{\partial (n_j b_j)}\over{\partial n_i}} \right]_{T,n_j}} &=b_i \\ \bar{q_i} &\equiv \left[{{\partial (n q)}\over{\partial n_i}} \right]_{T,n_j} &= q \left(1+{{\bar{a_i}}\over{a}}-{{\bar{b_i}}\over{b}}\right) &= q \left(1+{{\bar{a_i}}\over{a}}-{{b_i}\over{b}}\right)\\ \hline \end{array}$

  4. Nach den Realgasfaktor $Z^L$ bzw. $Z^V$ jeder Phase die Kubische Zustandsgleichung auflösen:

    • Für die flüssige Phase ist die "L Form" am geeignetesten, mit erster Schätzung $Z^L=\beta^L$. Wenn es sich um einem tatsächlichen Gleichgewichtszustand handelt, soll die Lösung Flüssigkeits-ähnlich (kleinere Nullstelle) sein.
    • Für den Gas ist die "V Form" am geeignetesten, mit erster Schätzung $Z=1,0$. Wenn es sich um einem tatsächlichen Gleichgewichtszustand handelt, soll die Lösung Gas-ähnlich (höhere Nullstelle) sein.

      $\begin{array}{|ll|} \hline L \hspace{2cm} Z^L &= \beta^L+(Z^L+\epsilon \beta^L)(Z^L+\sigma \beta^V)\left({{1+\beta^L-Z^L}\over{q^L \beta^L}}\right) \\ V \hspace{2cm} Z^V &= 1 + \beta^V - q^V \beta^V {{Z^V-\beta^V}\over{(Z^V+\epsilon \beta^V)(Z^V+\sigma \beta^V)}}\\ \hline \end{array}$

  5. Fugazitätskoeffizienten und Verteilungskoeffizienten Mit den Lösungen des Realgasfaktors berechnen sich die Fugazitätskoeffizienten.

    $\begin{array}{|ll|} \hline ln(\hat{\phi_i})&={{b_i}\over{b}}(Z-1)-ln(Z-\beta)-\bar{q_i} I\\ I &={{1}\over{\sigma-\epsilon}}ln\left({{Z+\sigma \beta}\over{Z+\epsilon \beta}} \right)\\ K_i &={{\hat{\phi_i}^L}\over{\hat{\phi_i}^V}}\\ \hline \end{array}$

Ideal- bzw. Residualeigenschaften

In der Dampfphase mit den oben bestimmten Parametern, Residualeigenschaften berechnen

$\begin{array}{|ll|} \hline \frac{G^R}{R T} &= Z-1-ln(Z-\beta)-q I\\ \frac{H^R}{R T} &= Z-1+\left[ \frac{d\thinspace ln \thinspace \alpha(T_r)}{ d \thinspace ln \thinspace T_r} -1\right]q I\\ \frac{S^R}{R} &= ln(Z-\beta)+ \frac{d\thinspace ln \thinspace \alpha(T_r)}{ d \thinspace ln \thinspace T_r} q I\\ \hline \end{array}$

Da $M^{R}\equiv M - M^{Id}$, anhand der aus tabellierten Korrelationen zu ermittelnden Idealgaseigenschaften, die Realeigenschaften berechnen.

$\begin{array}{ll} H^{Id} &= H_0^{Id} + \int\limits_{T_0}^{T}{Cp^{Id}dT}\\ S^{Id} &= S_0^{Id} + \int\limits_{T_0}^{T}{\frac{Cp^{Id}}{T}dT}- R \thinspace ln(\frac{p}{p^0})\\ G^{Id} &= H^{Id} - T S^{Id}\\ \end{array}$

Ausdrücke einschließlich Idealgasanteil und Residualeigenschaften:

$\begin{array}{|ll|} \hline H &= H_0^{Id} + R \cdot \int\limits_{T_0}^{T}{\frac{Cp^{Id}}{R}dT} + H^R\\ S &= S_0^{Id} + R \cdot \int\limits_{T_0}^{T}{\frac{Cp^{Id}}{R T}dT}- R \thinspace ln(\frac{p}{p^0})+S^R\\ G &= H - T S\\ \hline \end{array}$

Gleichgewichtskonstanten

Methode B) Wechselwirkung der Reaktionsenthalpie mit der Temperatur [SVNA]

$\begin{array}{ll} exp \left(- \frac{\Delta G_i}{R T} \right) &= K_p K_{\phi^{eq}} = K_x \prod\limits_{i} \left( \frac{p}{p^0}\right)^{\nu_i} K_{\phi^{eq}} \\ &=\prod\limits_{i} (n_i)^{\nu_i}\left( \frac{p}{p^0}\right)^{\sum\limits_{i} \nu_i}(n)^{-\sum\limits_{i} \nu_i} K_{\phi^{eq}}\end{array}$

$\Delta H^\circ = \Delta H_0^\circ + R \int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}dT}$

$\Delta S^\circ = \Delta S_0^\circ + R \int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}\frac{dT}{T}}$

$\Delta G^\circ = \Delta H^\circ - T \Delta S^\circ = \Delta H_0^\circ + R \int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}dT} - T \Delta S_0^\circ - R T \int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}\frac{dT}{T}}$

$\Delta S_0^\circ = \frac{\Delta H_0^\circ - \Delta G_0^\circ}{T_0}$

$\Delta G^\circ = \Delta H_0^\circ - \frac{T}{T_0}(\Delta H_0^\circ -\Delta G_0^\circ) + R \int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}dT} - R T \int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}\frac{dT}{T}}$

$\begin{array}{ll} K_{(T)} &= exp \left(-\frac{\Delta H_0^\circ}{R T} + \frac{(\Delta H_0^\circ -\Delta G_0^\circ)}{R T_0} - \frac{1}{T}\int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}dT} + \int\limits_{T_0}^{T}{\frac{\Delta Cp^\circ}{R}\frac{dT}{T}}\right) \\ &= \prod_i (n_i)^{\nu_i}\left( \frac{p}{p^0}\right)^{\sum_i \nu_i}(n)^{-\sum_i \nu_i}\end{array}$

Somit läßt sich K(T) bestimmen, insofern man über einen Ausdruck für $Cp_i(T)$ verfügt. Bei geringer Veränderung der Wärmekapazität Cp im Temperatur-Bereich kann man auch einen bestimmten Mittelwert als ~konstant einsetzen.

Literaturhinweise

  • [SVNA] Smith J.M., Van Ness H.C., Abbott M.M.; Introduction to chemical engineering thermodynamics; 6th ed.; McGraw-Hill; New York; 2001; S. 458-462.
  • [BP] Barin Isan, Platzki Gregor; Thermochemical data of pure substances; New York; 3. ed.; VCH; 1995.
  • [VWA] VDI Gesellschaft: VDI-Wärmeatlas. Wiesbaden: Springer Berlin Heidelberg, 2005.

In [4]:
from scipy import optimize
import numpy as np

p = 50. # bar
temp = 273.15 + 220. # K
t_flash = 273.16 + 60 # K
t0_ref = 298.15 # K
r = 8.314 # J/(mol K)
rvg = 0.8 # Rückvermischungsgrad

namen = ['CO', 'H2', 'CO2', 'H2O', 'CH3OH', 'N2']

n0co = 750. # kmol/h
n0h2 = 5625. # kmol/h
n0co2 = 750. # kmol/h
n0h2o = 375. # kmol/h
n0ch3oh = 0. # kmol/h
n0n2 = 500. # kmol/h

ne = np.array([n0co, n0h2, n0co2, n0h2o, n0ch3oh, n0n2])

nuij = np.array([[-1, -2, 0, 0, +1, 0] ,
                 [0, -3, -1, +1, +1, 0], 
                 [-1, +1, +1, -1, 0, 0]]).T

h_298 = np.array(
    [-110.541, 0., -393.505, -241.826,-201.167, 0.]) * 1000 # J/mol

g_298 = np.array(
    [-169.474, -38.962, -457.240, -298.164, -272.667, -57.128]) * 1000 # J/mol

# Berechne delta Cp(T) mit Temperaturfunktionen für ideale Gase (SVN).

# Koeffizienten für Cp(T)/R = A + B*T + C*T^2 + D*T^-2, T[=]K
# Nach rechts hin: A, B, C, D
# Nach unten hin: CO, H2, CO2, H2O, CH3OH, N2
cp_coefs =  np.array([
    [
        y.replace(',', '.') for y in x.split('\t')
    ] for x in """
3,3760E+00	5,5700E-04	0,0000E+00	-3,1000E+03
3,2490E+00	4,2200E-04	0,0000E+00	8,3000E+03
5,4570E+00	1,0450E-03	0,0000E+00	-1,1570E+05
3,4700E+00	1,4500E-03	0,0000E+00	1,2100E+04
2,2110E+00	1,2216E-02	-3,4500E-06	0,0000E+00
3,2800E+00	5,9300e-04	0,0000E+00	4,0000e+03
""".split('\n') if len(x)>0], dtype=float)

def cp(t):
    return r * (
        cp_coefs[:,0] + 
        cp_coefs[:,1] * t + 
        cp_coefs[:,2] * t**2 + 
        cp_coefs[:,3] * t**-2
    ) # J/(mol K)

# Berechne H(T), G(T) und K(T) mit Cp(T)

def h(t):
    return (
        h_298 + 
        r * cp_coefs[:,0]*(t-t0_ref) + 
        r * cp_coefs[:,1]/2.*(t**2-t0_ref**2) + 
        r * cp_coefs[:,2]/3.*(t**3-t0_ref**3) -
        r * cp_coefs[:,3]*(1/t-1/t0_ref)
    ) # J/mol

def g(t, h_t):
    return (
        h_t - t/t0_ref*(h_298 - g_298) -
        r * cp_coefs[:,0]*t*np.log(t/t0_ref) -
        r * cp_coefs[:,1]*t**2*(1-t0_ref/t) - 
        r * cp_coefs[:,2]/2.*t**3*(1-(t0_ref/t)**2) +
        r * cp_coefs[:,3]/2.*1/t*(1-(t/t0_ref)**2)
    ) # J/mol

def k(t, g_t):
    delta_g_t = nuij.T.dot(g_t)
    return np.exp(-delta_g_t/(r * t))


delta_gr_298 = nuij.T.dot(g_298)

delta_hr_298 = nuij.T.dot(h_298)

cp_493 = cp(493.15) # J/(mol K)
h_493 = h(493.15) # J/mol
g_493 = g(493.15, h_493) # J/mol
k_493 = k(493.15, g_493) # []

for i, f in enumerate(delta_hr_298):
    print('Delta H_' + str(i+1) + '(298.15K)=' + str(f/1000.) + 'kJ/mol')

print('\n')
for i, f in enumerate(k_493):
    print('K' + str(i+1) + '(493K)=' + str(f))
print('\n')

n0 = np.array([n0co, n0h2, n0ch3oh])
    
def fun(x_vec):    
    nco = x_vec[0]
    nh2 = x_vec[1]
    nch3oh = x_vec[2]
    xi1 = x_vec[3]
    t = x_vec[4]
    
    n = np.array([nco, nh2, nch3oh])
    
    cp_t = cp(t)
    h_t = h(t)
    g_t = g(t, h_t)
    k_t = k(t, g_t)
    
    h_ein = h_t[[1, 2, -2]]
    cp_ein = cp_t[[1, 2, -2]]
    cp_t = cp_t[[1, 2, -2]]
    h_t = h_t[[1, 2, -2]]
    g_t = g_t[[1, 2, -2]]
    
    delta_h_t = nuij[[1, 2, -2]].T.dot(h_t) # J/mol
    
    f1 = -nco + n0co - xi1
    f2 = -nh2  + n0h2 -2*xi1
    f3 = -nch3oh + n0ch3oh +xi1
    f4 = -k_t[0] * (nco * nh2**2) + \
            nch3oh * (p/1.)**-2 * (nco + nh2 + nch3oh)**-(-2)
    f5 = np.sum(
        np.multiply(n0, cp_ein)*temp - 
        np.multiply(n, cp_t)*t 
    ) + xi1 * (-delta_h_t[0])
    
    return [f1, f2, f3, f4, f5]

x0 = np.append(n0, [0., temp])

sol = optimize.root(fun, x0)
f_final = - sol.x[:3].reshape([3,1]) + ne[[0,1,4]].reshape([3,1]) + nuij[:,0][[0,1,4]].reshape([3,1])*sol.x[-2]

print(sol)
print('\n\n')
print('Zustand der Optimisierungs-Funktionen\n')
print(f_final)

print('\n\n')
print('T_ein=493.15K, p=50 bar, in adiabatischem Reaktor')
print('Lösung für nur einzige Reaktion (ohne CO2):\n')
for i, f in enumerate(sol.x[:2]):
    print('n_' + namen[i] + '= ' + str(f) + ' kmol/h')
print('n_' + namen[4] + '= ' + str(sol.x[2]) + ' kmol/h')
print('T= ' + str(sol.x[-1]) + ' K')

n0 = np.array([n0co, n0h2, n0co2, n0h2o, sol.x[2], n0n2])
#n0 = ne

# Lösung des einfacheren Falls in schwierigerem Fall einwenden.
def fun(x_vec):    
    nco = x_vec[0]
    nh2 = x_vec[1]
    nco2 = x_vec[2]
    nh2o = x_vec[3]
    nch3oh = x_vec[4]
    nn2 = x_vec[5]
    xi1 = x_vec[6]
    xi2 = x_vec[7]
    xi3 = x_vec[8]
    t = x_vec[9]
    
    n = np.array([nco, nh2, nco2, nh2o, nch3oh, nn2])
    xi = np.array([xi1, xi2, xi3])
    
    h_ein = h_493
    cp_ein = cp_493
    cp_t = cp(t)
    h_t = h(t)
    g_t = g(t, h_t)
    k_t = k(t, g_t)
    
    delta_h_t = nuij.T.dot(h_t) # J/mol
    
    f1 = -nco + n0co - xi1 +0 -xi3
    f2 = -nh2  + n0h2 -2*xi1 -3*xi2 +xi3
    f3 = -nco2 + n0co2 +0 -xi2 +xi3
    f4 = -nh2o + n0h2o +0 +xi2 -xi3
    f5 = -nch3oh + n0ch3oh +xi1 +xi2 -0
    f6 = -nn2 + n0n2 + 0
    f7 = -k_t[0] * (nco * nh2**2) + \
        nch3oh * (p/1.)**-2 * (nco + nh2 + nco2 + nh2o + nch3oh + nn2)**-(-2)
    f8 = -k_t[1] * (nco2 * nh2**3) + \
        nch3oh * nh2o * (p/1.)**-2 * (nco + nh2 + nco2 + nh2o + nch3oh + nn2)**-(-2)
    f9 = -k_t[2] * (nco * nh2o) + \
        nco2 * nh2 * (p/1.)**0 * (nco + nh2 + nco2 + nh2o + nch3oh + nn2)**-0
    f10 = np.sum(
        np.multiply(n0, (h_ein-h_298)) - 
        np.multiply(n, (h_t-h_298))) + np.dot(xi, -delta_h_t)
    
    return [f1, f2, f3, f4, f5, f6, f7, f8, f9, f10]

x0 = np.append(n0, [0., 0., 0., sol.x[-1]])

sol = optimize.root(fun, x0)

print('\n\n')
print('success: ' + str(sol.success))

f_final = - sol.x[:6].reshape([6,1]) + ne.reshape([6,1]) + nuij.dot(sol.x[6:-1].reshape([3,1]))

print('\n\n')
print('T_ein=493.15K, p=50 bar, in adiabatischem Reaktor.')
print('Lösung für alle drei Reaktionen, mit CO2:\n')
for i, f in enumerate(sol.x[:6]):
    print('n_' + namen[i] + '= ' + str(f) + ' kmol/h')

print('\n')

for i, f in enumerate(sol.x[6:-1]):
    print('xi_' + str(i) + '= ' + str(f) + ' kmol/h')
    
print('\n')
    
print('T=' + str(sol.x[-1]) + ' K, oder...')
print('T=' + str(sol.x[-1]-273.15) + ' °C')

print('\n')
print('0 = Q + Sum(Delta H)_ein - Sum(Delta H)_aus')
bilanz = np.sum(
    np.multiply(n0, (h_493-h_298)) -
    np.multiply(sol.x[:6], (h(sol.x[-1])-h_298))
) + np.dot(sol.x[6:-1], -nuij.T.dot(h(sol.x[-1]))) 
annaeherung = np.sum(
    np.multiply(n0, cp_493)*493.15 -
    np.multiply(sol.x[:6], cp(sol.x[-1]))*sol.x[-1]
) + np.dot(sol.x[6:-1], -nuij.T.dot(h(sol.x[-1])))
print('-Q = (n.(H_t-H_298))_ein -(n.(H_t-H_298))_aus  + Sum(xi_j * (-Delta Hr_j)) = ' + 
      str(bilanz) + 'J/h')
print('\n\n')
print('Zustand der Optimisierungs-Funktionen\n')
print(f_final)
print('\n\n')
print('Umsatz(CO): ' + 
      '{:.4g}'.format((ne[0]-sol.x[0])/ne[0]))
print('Umsatz(CO2): ' + 
      '{:.4g}'.format((ne[2]-sol.x[2])/ne[2]))
print('Niedriger Umsatz!')
print('Ausbeute (CH3OH/CO): ' + 
      '{:.4g}'.format((sol.x[4]-ne[4])/(ne[0]-sol.x[0])))
print('Ausbeute (CH3OH/CO2): ' + 
      '{:.4g}'.format((sol.x[4]-ne[4])/(ne[2]-sol.x[2])))


Delta H_1(298.15K)=-90.626kJ/mol
Delta H_2(298.15K)=-49.488kJ/mol
Delta H_3(298.15K)=-41.138kJ/mol


K1(493K)=0.0088102868389
K2(493K)=5.7133657404e-05
K3(493K)=154.204845956


    fjac: array([[ -3.71428495e-06,   5.80563614e-18,  -9.74551128e-21,
         -9.98588456e-01,  -5.31139871e-02],
       [  1.47283115e-05,  -5.36610087e-05,   1.68368925e-20,
          5.31139870e-02,  -9.98588454e-01],
       [ -2.54456735e-01,   8.29823294e-01,  -4.96633737e-01,
          3.50796795e-06,  -4.81585289e-05],
       [ -1.73310184e-01,  -5.44352279e-01,  -8.20758293e-01,
         -7.73093978e-07,   2.66544879e-05],
       [  9.51428058e-01,   1.22775792e-01,  -2.82330932e-01,
         -3.92323978e-06,   7.22647756e-06]])
     fun: array([  2.84217094e-14,  -3.97903932e-13,   0.00000000e+00,
         2.44026606e-02,  -2.37509608e-04])
 message: 'The solution converged.'
    nfev: 19
     qtf: array([  2.12454058e-01,  -1.32989716e-02,  -8.42828449e-07,
         2.17761423e-07,   8.49526289e-07])
       r: array([  2.69230825e+05,   7.38956561e+04,  -1.44719526e+04,
        -5.54468303e+03,   4.73861712e+05,   1.86355051e+04,
         3.11379897e+04,  -2.01882052e+05,   2.68957704e+05,
         2.01355632e+00,  -1.16428174e+01,   1.25365785e+01,
         5.82658253e+00,  -7.47489046e+00,  -3.22350405e-01])
  status: 1
 success: True
       x: array([  614.688443  ,  5354.376886  ,   135.311557  ,   135.311557  ,
         602.11462954])



Zustand der Optimisierungs-Funktionen

[[  2.84217094e-14]
 [ -3.97903932e-13]
 [  0.00000000e+00]]



T_ein=493.15K, p=50 bar, in adiabatischem Reaktor
Lösung für nur einzige Reaktion (ohne CO2):

n_CO= 614.688442999 kmol/h
n_H2= 5354.376886 kmol/h
n_CH3OH= 135.311557001 kmol/h
T= 602.114629539 K



success: True



T_ein=493.15K, p=50 bar, in adiabatischem Reaktor.
Lösung für alle drei Reaktionen, mit CO2:

n_CO= 487.718493 kmol/h
n_H2= 5439.09767882 kmol/h
n_CO2= 862.886897607 kmol/h
n_H2O= 262.113102393 kmol/h
n_CH3OH= 149.394609392 kmol/h
n_N2= 500.0 kmol/h


xi_0= -2215513.20429 kmol/h
xi_1= 2215662.5989 kmol/h
xi_2= 2215775.4858 kmol/h


T=579.830273084 K, oder...
T=306.680273084 °C


0 = Q + Sum(Delta H)_ein - Sum(Delta H)_aus
-Q = (n.(H_t-H_298))_ein -(n.(H_t-H_298))_aus  + Sum(xi_j * (-Delta Hr_j)) = 4.16934490204e-05J/h



Zustand der Optimisierungs-Funktionen

[[ -1.72292403e-10]
 [ -5.80257620e-10]
 [ -1.45519152e-11]
 [ -2.41982434e-10]
 [  4.11233714e-10]
 [  0.00000000e+00]]



Umsatz(CO): 0.3497
Umsatz(CO2): -0.1505
Niedriger Umsatz!
Ausbeute (CH3OH/CO): 0.5696
Ausbeute (CH3OH/CO2): -1.323

Verbesserung des Umsatzes mit Rückvermischung


In [8]:
import z_l_v
z_l_v.beispiel_pat_ue_03_vollstaendig(0.65, print_output=True)


    fjac: array([[ -4.51331563e-06,  -7.32292581e-09,  -4.81811603e-08,
          1.39478716e-08,  -1.08011229e-06,  -9.14307354e-10,
         -9.98077701e-01,  -6.19750150e-02],
       [  8.28699633e-06,  -9.45774861e-05,  -4.43872504e-08,
          6.55821536e-07,  -6.50181344e-07,  -1.00305106e-09,
          6.19750147e-02,  -9.98077697e-01],
       [ -1.00857410e-01,   8.62250721e-01,  -4.96305905e-01,
          2.02295631e-05,   5.64956243e-03,   4.51865234e-06,
          5.57049313e-06,  -8.21796838e-05],
       [ -1.49464563e-02,   2.05560115e-01,   3.59900121e-01,
         -9.09722190e-01,  -1.99770237e-02,   1.81464893e-06,
          1.30710572e-06,  -2.01224955e-05],
       [ -4.55130724e-01,   2.46461959e-01,   5.13580866e-01,
          2.80060680e-01,  -6.24430299e-01,  -1.95106215e-04,
          4.34399827e-06,  -2.62958819e-05],
       [  1.07395264e-01,   1.40051811e-01,   2.23907754e-01,
          1.13794916e-01,   2.12487733e-01,  -9.27694317e-01,
          4.80373004e-08,  -1.24492527e-05],
       [  6.40620974e-01,   3.58937121e-01,   4.95700361e-01,
          2.62295779e-01,   1.99982952e-01,   3.25972092e-01,
         -1.35080676e-06,  -2.87578802e-05],
       [ -6.00442699e-01,   7.12380532e-02,   2.54034476e-01,
          1.10558552e-01,   7.24231721e-01,   1.82003877e-01,
          2.66400285e-06,  -1.19811459e-05]])
     fun: array([ -3.57528052e-09,  -3.88819217e-08,  -2.39179144e-07,
        -2.08965048e-07,  -4.79444788e-06,  -5.07441200e-09,
         6.33245111e-02,  -5.41207343e-02])
 message: 'The solution converged.'
    nfev: 30
     qtf: array([ -2.23626953e-01,   4.15131659e-01,   3.47268650e-05,
         9.92067289e-06,   3.19504065e-05,  -3.01333129e-06,
         2.74367033e-06,  -2.04538174e-05])
       r: array([  7.75610512e+04,   6.79721543e+03,  -3.95331811e+03,
        -3.74743837e+03,  -1.49228323e+05,  -4.08036434e+03,
        -6.34958769e+03,  -2.92167170e+06,   3.70098063e+03,
         6.42896200e+03,   9.72260407e+03,   2.18751387e+04,
         4.37903314e+03,  -9.87524643e+04,   7.02517349e+05,
         7.05145304e-01,   8.02583436e-01,   1.87155512e+00,
         3.62581999e-01,  -9.74900950e+00,   5.91236352e+01,
         1.10651855e+00,   4.65383199e-01,   8.55891593e-02,
        -2.40720946e+00,   1.40374764e+01,   1.44835635e+00,
         1.26055714e-01,  -3.26569595e+00,   2.11603164e+01,
         3.77254706e-01,  -1.40606677e+00,   8.68696817e+00,
        -4.00368817e+00,   1.31055420e+01,   2.08625151e+01])
  status: 1
 success: True
       x: array([   978.9184169 ,  13742.07898605,   2127.66256477,    430.54734933,
          587.67743155,   1428.39590741,    407.33387112,    561.88655011])
    fjac: array([[ -8.96020280e-08,   2.00458361e-11,   1.65789110e-10,
          8.60336000e-10,   2.70728100e-09,   2.20049326e-12,
         -2.05631491e-02,   9.99774310e-01,  -5.23913084e-03,
         -1.01882313e-03],
       [ -4.13794452e-06,  -1.99521046e-06,   1.09283206e-08,
          5.64409501e-08,   1.75719432e-07,   1.45806271e-10,
         -9.70550510e-01,  -2.12367356e-02,  -2.29816587e-01,
         -6.90293070e-02],
       [ -1.86144018e-05,   1.98088855e-04,  -7.71405735e-05,
         -5.08903841e-07,  -1.88958167e-06,  -2.38988794e-09,
         -2.15586006e-01,  -3.58752529e-05,   7.08671006e-01,
          6.71794636e-01],
       [ -2.41674261e-05,   1.80662498e-04,  -1.24992190e-04,
         -3.58353590e-05,  -9.70950736e-07,   3.28941891e-09,
         -1.05506085e-01,   5.73905773e-04,   6.67039882e-01,
         -7.37513310e-01],
       [ -3.37361673e-01,  -2.12486814e-03,   3.29658305e-01,
          6.97609150e-01,  -5.39304538e-01,  -2.71650192e-04,
         -8.87673161e-06,   3.17770235e-08,   5.23378351e-05,
         -2.99152302e-05],
       [  9.85147035e-02,   7.24829063e-04,   2.78288181e-01,
          1.10566901e-01,   2.51962309e-01,  -9.14953534e-01,
         -9.80355194e-06,   2.32707536e-08,   4.42161422e-05,
         -1.45289930e-05],
       [  5.79625222e-01,   4.65916486e-01,   6.02981619e-01,
          5.47844602e-02,   7.48898167e-02,   2.73422337e-01,
          3.53401367e-06,  -1.32242588e-08,  -2.06074768e-05,
         -2.89571975e-05],
       [ -5.39022370e-01,   6.09248425e-01,   1.73826309e-01,
         -5.00566742e-01,  -2.06400268e-01,  -1.22014316e-01,
          3.89632132e-05,  -9.14695867e-08,  -1.63087528e-04,
          8.96172677e-06],
       [  1.36582378e-01,   6.38689869e-01,  -6.22378813e-01,
          4.12900973e-01,   6.57609236e-02,  -1.06081792e-01,
          5.37128112e-05,  -1.20962484e-07,  -2.38804991e-04,
          1.36387351e-05],
       [ -4.80953942e-01,   6.17116157e-02,   1.80895727e-01,
          2.77598306e-01,   7.70150346e-01,   2.48916337e-01,
          2.06298363e-06,   3.70608438e-09,   3.50373162e-06,
         -1.14079028e-05]])
     fun: array([  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
         0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
        -6.85155392e-04,  -1.59175873e+00,   7.29460269e-04,
        -1.80567801e-03])
 message: 'The solution converged.'
    nfev: 69
     qtf: array([ -5.71976857e+01,   1.15855735e+00,   3.05741401e-02,
        -1.20182456e-02,  -4.96066166e-08,   2.03641057e-07,
        -2.05540087e-07,  -5.73197958e-07,  -1.67055783e-06,
        -1.83650501e-08])
       r: array([  3.90660092e+06,  -8.09680810e+06,  -2.19341765e+07,
         9.14039019e+07,   6.80055875e+07,   3.90465480e+06,
        -1.01345811e+02,  -6.06514573e+01,  -3.97291062e+01,
         1.25153212e+09,   1.75324918e+05,   4.54357654e+05,
        -1.93901696e+06,  -1.59693389e+06,  -9.14775420e+04,
        -6.82359525e+03,  -4.12508545e+03,  -2.69852716e+03,
        -2.98105227e+07,   4.57897085e+03,  -4.45397886e+04,
        -4.64214827e+04,  -4.73847711e+03,   6.64074789e+04,
         4.01453759e+04,   2.62621048e+04,  -9.60531492e+05,
         2.74156797e+04,   3.32601299e+04,   4.18560016e+03,
        -7.29038298e+04,  -4.40726191e+04,  -2.88312088e+04,
         1.02704717e+06,   1.70475757e+00,   1.58266116e-01,
        -3.15483959e+00,  -1.95266550e+00,  -1.20217395e+00,
         4.46899591e+01,   3.82546007e-01,  -1.28420565e+00,
        -7.86162879e-01,  -4.98042651e-01,   1.90230018e+01,
        -4.29901235e+00,  -3.60149275e+00,  -6.97519650e-01,
         6.89774424e+00,  -2.17300021e+00,   2.17299974e+00,
        -4.03113113e+01,  -6.63456368e-07,  -5.41132965e+01,
         1.95577020e+01])
  status: 1
 success: True
       x: array([  1.10581881e+03,   1.33743071e+04,   1.92067153e+03,
         5.01809810e+02,   6.10128855e+02,   1.42838879e+03,
         3.96754083e+08,  -3.96753648e+08,  -3.96753720e+08,
         5.63676209e+02])
========================================
MISCHER
========================================
Zulauf des gesammten Prozesses:
CO: 750 kmol/h
H2: 5625 kmol/h
CO2: 750 kmol/h
H2O: 375 kmol/h
CH3OH: 0 kmol/h
N2: 500 kmol/h
n: 8000 kmol/h
T: 493.15 K
p: 50 bar
H: -4.21145e+08 kJ/h


Rücklaufstrom bei Rücklaufverhältnis 0.65 :
CO: 718.7297462928211 kmol/h
H2: 8692.671689917182 kmol/h
CO2: 1243.185757165039 kmol/h
H2O: 54.29557888498699 kmol/h
CH3OH: 174.7036841929468 kmol/h
N2: 928.3887867488986 kmol/h
n: 11811.97524320188 kmol/h
T: 333.15 K
p: 50 bar
H: -6.04446e+08 kJ/h


Erzeugnis des Mischers:
CO: 1468.729746292821 kmol/h
H2: 14317.67168991718 kmol/h
CO2: 1993.185757165039 kmol/h
H2O: 429.295578884987 kmol/h
CH3OH: 174.7036841929468 kmol/h
N2: 1428.388786748899 kmol/h
n: 19811.97524320188 kmol/h
T: 398.025 K
p: 50 bar
H: -1.02559e+09 kJ/h



========================================
F-HEIZ
========================================
Aufheizung des Eingangsstroms:
Q: 5.84038e+07 kJ/h



========================================
R-MeOH
========================================
Aufgeheizter Eingangsstrom am Reaktor:
CO: 1468.729746292821 kmol/h
H2: 14317.67168991718 kmol/h
CO2: 1993.185757165039 kmol/h
H2O: 429.295578884987 kmol/h
CH3OH: 174.7036841929468 kmol/h
N2: 1428.388786748899 kmol/h
n: 19811.97524320188 kmol/h
T: 493.15 K
p: 50 bar
H: -9.67187e+08 kJ/h


Reaktionslaufzahlen des adiabatisch betriebenen Reaktors:
xi_0: 3.96754e+08
xi_1: -3.96754e+08
xi_2: -3.96754e+08
Q: -0.00180568 kJ/h ~ 0


Erzeugnis des Reaktors:
CO: 1105.818806924245 kmol/h
H2: 13374.30711737032 kmol/h
CO2: 1920.671525917192 kmol/h
H2O: 501.8098101222183 kmol/h
CH3OH: 610.1288548463247 kmol/h
N2: 1428.388786748899 kmol/h
n: 18941.1249019292 kmol/h
T: 563.676 K
p: 50 bar
H: -9.63439e+08 kJ/h



========================================
KUEHLER
========================================
Abkühlungsleistung des Ausgangsstroms:
Q: -1.38412e+08 kJ/h



========================================
FLASH
========================================
Abgekühlter Strom nach Reaktorkühler:
CO: 1105.818806924245 kmol/h
H2: 13374.30711737032 kmol/h
CO2: 1920.671525917192 kmol/h
H2O: 501.8098101222183 kmol/h
CH3OH: 610.1288548463247 kmol/h
N2: 1428.388786748899 kmol/h
n: 18941.1249019292 kmol/h
z(CO): 0.05838189720250538
z(H2): 0.7060988820156144
z(CO2): 0.1014021889334337
z(H2O): 0.02649313663894945
z(CH3OH): 0.03221185953872156
z(N2): 0.07541203567077548
T: 563.676 K
p: 50 bar
H: -9.63439e+08 kJ/h



Dampf/Flüssigkeit Verhältnis am Flash:
V/F: 0.9594081502031103 kJ/h



Produkt Flüssigkeit:
CO: 0.08073570452021403 kmol/h
H2: 0.9660559592694081 kmol/h
CO2: 8.078053355591846 kmol/h
H2O: 418.2781502991627 kmol/h
CH3OH: 341.3539560879465 kmol/h
N2: 0.09834559674618278 kmol/h
n: 768.8552970032368 kmol/h
x(CO): 0.0001050076715799412
x(H2): 0.001256486055353718
x(CO2): 0.01050659777864266
x(H2O): 0.5440271425969011
x(CH3OH): 0.4439768541862688
x(N2): 0.0001279117112537351
T: 333.15 K
p: 50 bar
H: -1.71934e+08 kJ/h



Dampf aus Verdampfer:
CO: 1105.738071219725 kmol/h
H2: 13373.34106141105 kmol/h
CO2: 1912.593472561599 kmol/h
H2O: 83.53165982305691 kmol/h
CH3OH: 268.7748987583796 kmol/h
N2: 1428.290441152152 kmol/h
n: 18172.26960492596 kmol/h
y(CO): 0.06084754932977617
y(H2): 0.7359202428840222
y(CO2): 0.1052479142199801
y(H2O): 0.004596655323692422
y(CH3OH): 0.01479038692478581
y(N2): 0.07859725131774319
T: 333.15 K
p: 50 bar
H: -9.29917e+08 kJ/h



Dampf-Ablauf:
CO: 387.0083249269036 kmol/h
H2: 4680.669371493867 kmol/h
CO2: 669.4077153965595 kmol/h
H2O: 29.23608093806992 kmol/h
CH3OH: 94.07121456543285 kmol/h
N2: 499.9016544032531 kmol/h
n: 6360.294361724085 kmol/h
y(CO): 0.06084754932977619
y(H2): 0.7359202428840225
y(CO2): 0.1052479142199801
y(H2O): 0.004596655323692423
y(CH3OH): 0.01479038692478581
y(N2): 0.07859725131774321
T: 333.15 K
p: 50 bar
H: -3.25471e+08 kJ/h



Rücklaufstrom bei Rücklaufverhältnis 0.65 :
CO: 718.7297462928211 kmol/h
H2: 8692.671689917182 kmol/h
CO2: 1243.185757165039 kmol/h
H2O: 54.29557888498699 kmol/h
CH3OH: 174.7036841929468 kmol/h
N2: 928.3887867488986 kmol/h
n: 11811.97524320188 kmol/h
T: 333.15 K
p: 50 bar
H: -6.04446e+08 kJ/h



Umsatz (CO): 0.483881
Umsatz (CO2): 0.0966856
Ausbeute (CH3OH/CO, Flüssigkeit): 0.9406
Ausbeute (CH3OH/CO2, Flüssigkeit): 4.70741

Out[8]:
341.35395608794647