Engineering With Python Rotating Header Image

Reversible, Exothermic, Gas Phase Reaction in a Catalytic Reactor – Problem Description


This is problem 8.24 in “Problem Solving in Chemical Engineering with Numerical Methods” by Michael Cutlip and Mordecai Shacham, Prentice-Hall ISBN 0-13-862566-2.  In this problem, you will be designing a gas phase catalytic reactor with a pressure drop to accomplish a reversible gas phase reaction.


  • Solve a system of ordinary differential equations with the appropriate initial conditions
  • Use Ipython with Scite editor to edit and save files
  • Import packages into workspace
  • Define constants
  • Define functions for the ODE solver
  • Use the odeint solver with initial conditions and time span array
  • Print the solution

Problem Description:

In this reactor, we are carrying out an elementary gas phase reaction, 2A<=>C in a packed bed reactor.  Since the reaction is exothermic, the reactor is encased in a heat exchanger to remove the excess heat.  Also, because the reactor is packed with catalyst, there is a pressure drop along the length of the reactor that we will have to include in our solution approach.  The process is represented schematically below:

Exothermic Gas Phase Catalytic Reactor

Exothermic Gas Phase Catalytic Reactor

Define the parameters for the problem:

Let’s list all of the parameters that we will use in the problem:

Cpa = 40.0 J/g-mol K                                   R = 8.314 J/g-mol K

Cpc = 80.0 J/g-mol K                                   Fao = 5.0 g-mol/min

ΔHR = -40,000 J/g-mol                              Ua = 0.8 J/kg-min K

Ea = 41,800 J/g-mol K                                 Ta = 500 K

k = 0.5 dm6 /kg-min-mol @ 450 K          α = 0.015 kg-1

Kc = 25,000 dm3 /g-mol @ 450 K          Po = 10 atm

Cao = 0.271 g-mol/dm3 yao = 1.0 (Pure A Feed)

To = 450 K

Equations and Additional Information:

Here, we will define the assumptions and equations we will use to set up our program.  We will assume ‘plug flow’ (no radial velocity, concentration or temperature gradients).  The reactor equations will be in the form of conversion of A designated by X and temperature T, both functions of axial location within the bed specified by catalyst weight W.  Let’s define the equations:

General Reactor Design Equation based on mole balance for A:

Fao*dX/dW = -ra

Simple Catalytic Reaction Rate Expression:

-ra = k*[(Ca)2 – (Cc/Kc)]

Rate Constant as a Function of A and T (Arrhenius expression):

k = k(@ T = 450 K) exp{Ea/R*[(1/450) – (1/T)]}

Equilibrium Constant Variation with Temperature (van’t Hoff’s equation):

Kc = Kc(@ T = 450 K) exp{ΔHR/R*[(1/450) – (1/T)]}

Use the reaction stoichiometry 2A<=>C and define the concentrations as functions of conversion (remember this is a gas phase reaction and the number of moles is changing, for every two moles of A reacted you get one mole of C) volume change and temperature.  Here is the rather ugly expression:

Ca = Cao*[(1 – X)/(1 + εX)]*(P/Po)*(To/T) = Cao*[(1 – X)/(1 – 0.5*X)]*y*(To/T)

y = P/Po

Cc = [(0.5*Cao*X)/(1 – 0.5*X)]*y*(To/T)

Pressure Drop Expression:

d(P/Po)/dW = -α*(1 + εX)/2*(Po/P)*(T/To)

or you can use

dy/dW = -α*(1 + εX)/2*y*(T/To)

Energy Balance:

dT/dw = [Ua*(Ta – T) + ra*ΔHR]/[Fao*Cpa]

These will be the equations we will be ‘coding’ into our program to examine our reactor and come up with a design that will make lots of money for the company (and a juicy bonus for us!).  Actually, I’ve never had that happen.  In my experience, it’s made money for the company, but the juicy bonus thing, still waiting on that….


  • Plot the conversion X, reduced pressure y and temperature along the reactor from W = 0 kg up to W = 20 kg.
  • Around W = 16 kg, you will observe a ‘knee’ (hmm, giving away some of the answer) in the conversion profile.  Explain why this occurs and what parameters affect the ‘knee’.  For me, it’s usually a rainstorm a-comin’ that affects my knee…that’s a joke.  Is this mike on?
  • Plot the concentration profiles for A and C from W = 0 kg to 20 kg.

Whew, okay we’re ready to move on to programming the problem.

Leave a Reply