import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# constants
R = 8.314 # J/ (mol K)
RATM = 0.082 # atm dm^3/ (mol K)
TRR = 523 # K
# Components
# 0: ethylene
# 1: oxygen
# 2: ethylene oxide
# 3: CO2
# 4: water
# 5: nitrogen
# Heats of formation at 298 K in J/mol
HF = np.array([-52470, 0, -52640, -393500, -285830, 0])
# Specific Heat Capacities J/mol K
CP = np.array([65, 30, 80, 45, 35, 30])
# reactions
# 0. C2H4 + 1/2 O2 -> C2H4O
# 1. C2H4 + 3O2 -> 2CO2 + 2H2O
# Stoichiometry
NU = np.array([
[-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)
KE0, KE1 = 6.5, 4.33
# Heat of reaction at reference temperature J/mol
DELTA_HR_TR = np.dot(NU, HF)
# Functions
k0e = lambda t: 0.15 * np.exp((60700/R) * ((1/TRR) - (1/t)))
k1e = lambda t: 0.0888 * np.exp((73200/R) * ((1/TRR) - (1/t)))
# rates
r0e = lambda t, pe, po: k0e(t) * pe * po**0.58 / (1 + KE0*pe)**2
r1e = lambda t, pe, po: k1e(t) * pe * po**0.3 / (1 + KE1*pe)**2
def pbr(w,y,*args):
# convert dependent variables
f = y[:-1]
t = y[-1]
# convert args
(pt, ua, ta) = args
# total molar flow rate
ft = np.sum(f)
# mol fr.
phi = f/ft
# partial pressures
p = pt * phi
# extract partial pressure for ethylene and oxygen
pe = p[0]
po = p[1]
# calculate reaction rates
r0 = r0e(t,pe,po)
r1 = r1e(t,pe,po)
# Could also be written as an array
# r = np.array([r1e(t,pe,po), r2e(t,pe,po)])
# calculate rates of individual species
r_e = -r0 -r1
r_o = -0.5 * r0 - 3 * r1
r_eo = r0
r_co2 = 2 * r1
r_h2o = 2 * r1
r_n2 = 0
# could also be written as
# ri = np.dot(NU.T, r)
# write mole balances
# dfdw = ri
df_e = r_e
df_o = r_o
df_eo = r_eo
df_co2 = r_co2
df_h2o = r_h2o
df_n2 = r_n2
# energy balance
delta_cp = np.dot(NU,CP)
delta_hr = DELTA_HR_TR + delta_cp * (t - 298)
# isothermal case
dtdw = 0
# non-isothermal case
# replace dtdw with appropriate expression
# dydw = np.append(dfdw,dtdw)
dydw = [df_e, df_o, df_eo, df_co2, df_h2o, df_n2, dtdw]
return dydw
# Problem data
# Heat transfer properties
ua = 300 # J/kg-cat s K
ta = 250 + 273.15 # k
# Inlet pressure and temperature
t0 = 250 + 273.15 # K
p0 = 2 # atm
# inlet flow rate mol/s
ft0 = 0.0093
# Inlet volume (mol) fraction
phi = np.array([0.06,0.12,0,0,0,0.82])
# Inlet molar flow rates for components mol/s
f0 = phi*ft0
# total catalyst weight kg
wcat = 0.1
# 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
initial_conditions = np.append(f0,t0)
args = (p0, ua, ta)
w_final = wcat
sol = solve_ivp(pbr,
[0, w_final],
initial_conditions,
args=args,
method='LSODA',
dense_output=True)
# Extract solution
w = np.linspace(0,w_final, 1000)
# molar flow rate
f = sol.sol(w)[:-1]
f_e = f[0]
f_o = f[1]
f_eo = f[2]
f_co2 = f[3]
f_h2o = f[4]
f_n2 = f[5]
# temperature
t = sol.sol(w)[-1]
# Calculate conversion, selectivity, max temperature etc. as required # after
# this pointPortfolio 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.
Along with the desired reaction, the complete combustion of ethylene also occurs
Lafarga et al. (2000) have proposed following reaction kinetics for the reaction system.
The reaction rate constants are:
The adsorption constants are:
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.
Questions
- Assuming isothermal conditions, what conversion and selectivity of ethylene oxide to 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 .
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}
}