import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# constants
= 8.314 # J/ (mol K)
R = 0.082 # atm dm^3/ (mol K)
RATM = 523 # K
TRR
# Components
# 0: ethylene
# 1: oxygen
# 2: ethylene oxide
# 3: CO2
# 4: water
# 5: nitrogen
# Heats of formation at 298 K in J/mol
= np.array([-52470, 0, -52640, -393500, -285830, 0])
HF
# Specific Heat Capacities J/mol K
= np.array([65, 30, 80, 45, 35, 30])
CP
# reactions
# 0. C2H4 + 1/2 O2 -> C2H4O
# 1. C2H4 + 3O2 -> 2CO2 + 2H2O
# Stoichiometry
= np.array([
NU -1, -0.5, 1, 0, 0, 0], # Reaction 0: C2H4 + 0.5 O2 -> C2H4O
[-1, -3, 0, 2, 2, 0] # Reaction 1: C2H4 + 3 O2 -> 2 CO2 + 2 H2O
[
])
# Adsorption constants (1/atm)
= 6.5, 4.33
KE0, KE1
# Heat of reaction at reference temperature J/mol
= np.dot(NU, HF)
DELTA_HR_TR
# Functions
= lambda t: 0.15 * np.exp((60700/R) * ((1/TRR) - (1/t)))
k0e = lambda t: 0.0888 * np.exp((73200/R) * ((1/TRR) - (1/t)))
k1e
# rates
= lambda t, pe, po: k0e(t) * pe * po**0.58 / (1 + KE0*pe)**2
r0e = lambda t, pe, po: k1e(t) * pe * po**0.3 / (1 + KE1*pe)**2
r1e
def pbr(w,y,*args):
# convert dependent variables
= y[:-1]
f = y[-1]
t
# convert args
= args
(pt, ua, ta)
# total molar flow rate
= np.sum(f)
ft
# mol fr.
= f/ft
phi
# partial pressures
= pt * phi
p
# extract partial pressure for ethylene and oxygen
= p[0]
pe = p[1]
po
# calculate reaction rates
= r0e(t,pe,po)
r0 = r1e(t,pe,po)
r1
# Could also be written as an array
# r = np.array([r1e(t,pe,po), r2e(t,pe,po)])
# calculate rates of individual species
= -r0 -r1
r_e = -0.5 * r0 - 3 * r1
r_o = r0
r_eo = 2 * r1
r_co2 = 2 * r1
r_h2o = 0
r_n2
# could also be written as
# ri = np.dot(NU.T, r)
# write mole balances
# dfdw = ri
= r_e
df_e = r_o
df_o = r_eo
df_eo = r_co2
df_co2 = r_h2o
df_h2o = r_n2
df_n2
# energy balance
= np.dot(NU,CP)
delta_cp = DELTA_HR_TR + delta_cp * (t - 298)
delta_hr
# isothermal case
= 0
dtdw
# non-isothermal case
# replace dtdw with appropriate expression
# dydw = np.append(dfdw,dtdw)
= [df_e, df_o, df_eo, df_co2, df_h2o, df_n2, dtdw]
dydw
return dydw
# Problem data
# Heat transfer properties
= 300 # J/kg-cat s K
ua
= 250 + 273.15 # k
ta
# Inlet pressure and temperature
= 250 + 273.15 # K
t0 = 2 # atm
p0
# inlet flow rate mol/s
= 0.0093
ft0
# Inlet volume (mol) fraction
= np.array([0.06,0.12,0,0,0,0.82])
phi
# Inlet molar flow rates for components mol/s
= phi*ft0
f0
# total catalyst weight kg
= 0.1
wcat
# Differential equations
# 0: dF_e/dW
# 1: dF_o/dW
# 2: dF_eo/dW
# 3: dF_co2/dW
# 4: dF_h2o/dW
# 5: dF_n2/dW
# 6: dT/dW
= np.append(f0,t0)
initial_conditions = (p0, ua, ta)
args
= wcat
w_final
= solve_ivp(pbr,
sol 0, w_final],
[
initial_conditions, =args,
args='LSODA',
method=True)
dense_output
# Extract solution
= np.linspace(0,w_final, 1000)
w
# molar flow rate
= sol.sol(w)[:-1]
f
= f[0]
f_e = f[1]
f_o = f[2]
f_eo = f[3]
f_co2 = f[4]
f_h2o = f[5]
f_n2
# temperature
= sol.sol(w)[-1]
t
# Calculate conversion, selectivity, max temperature etc. as required # after
# this point
Portfolio 06: Nonisothermal reactor design
CHEN3010/ CHEN5040: chemical reaction engineering
Answers to the portfolio questions are uploaded at Portfolio 6 answers
Introduction
The ethylene (E) epoxydation is to be carried out using a cesium-doped silver catalyst in a packed-bed reactor.
\ce{C2H4 + 1/2 O2 -> C2H4O} \qquad \Delta H_{rxn, 1} = -0.17 \ kJ/mol \tag{1}
Along with the desired reaction, the complete combustion of ethylene also occurs
\ce{C2H4 + 3O2 -> 2CO2 + 2H2O} \qquad \Delta H_{rxn, 2} = -1306 \ kJ/mol \tag{2}
Lafarga et al. (2000) have proposed following reaction kinetics for the reaction system.
-r_{1E} = \frac{k_{1E} P_E P_O^{0.58}} {(1 + K_{1E}P_E)^2} \tag{3}
-r_{2E} = \frac{k_{2E} P_E P_O^{0.3}} {(1 + K_{2E}P_E)^2} \tag{4}
The reaction rate constants are:
k_{1E} = 0.15 \ \frac{mol}{kg \cdot s\ atm^{1.58}} \text{ at 523 K with } E_1 = 60.7 \ kJ/mol \tag{5}
k_{2E} = 0.0888 \ \frac{mol}{kg \cdot s\ atm^{1.3}} \text{ at 523 K with } E_2 = 73.2 \ kJ/mol \tag{6}
The adsorption constants are: K_{1E} = 6.50 \ atm^{-1}; \text{ and } K_{2E} = 4.33 \ atm^{-1}
The feed enters the reactor at 250 °C and a pressure of 2 atm. The molar flow rate is 0.0093 mol/s. The reactor contains 100g of catalyst. Pressure drop in the reactor can be neglected. Inlet gas composition along with thermochemical data for the species involved is given in Table 1.
Gas | volume fraction at inlet (%) | \Delta H_f^0 at 298 K (kJ/mol) | C_P (J/mol\ K) |
---|---|---|---|
\ce{C2H4} | 6 | -52.47 | 65 |
\ce{O2} | 12 | 0 | 30 |
\ce{C2H4O} | 0 | -52.64 | 80 |
\ce{CO2} | 0 | -393.5 | 45 |
\ce{H2O} | 0 | -285.83 | 35 |
\ce{N2} | 82 | 0 | 30 |
Questions
- Assuming isothermal conditions, what conversion and selectivity of ethylene oxide to \ce{CO2} are expected at the exit of the PBR? (10 marks)
The reactor is cooled by boiling kerosene with a boiling point of 250 °C (The ambient temperature can be assumed to be constant at 250 °C). The heat transfer coefficient for the system is Ua = 300 J/kg-cat \ s \ K.
Write energy balance for the system. (10 marks)
What would happen if the reactor is operated adiabatically? (10 marks)
Modify the code given in appendix to include energy balance. Simulate adiabatic operations and report the temperature, conversion, and selectivity for adiabatic operations. Briefly comment on the results.
- Using the conditions for heat transfer fluid in question 2, calculate the maximum temperature in the reactor, the temperature, conversion, and selectivity at the exit of the reactor considering heat transfer. Briefly comment on the results. (10 marks)
Appendix
The code is also available as ipython
notebook. Download the file portfolio_6.ipynb
from blackboard. Open Google colab. From menu, click on File > Upload notebook. Upload the downloaded file and modify as per needed.
References
Citation
@online{untitled,
author = {},
title = {Portfolio 06: {Nonisothermal} Reactor Design},
url = {https://cre.smilelab.dev//content/portfolio/06-nonisothermal-reactor-design},
langid = {en}
}