Skip to main content
Chemistry LibreTexts

1.23: Continuously stirred tank reactors

  • Page ID
    46504
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    Thus far in our study of chemical kinetics, we have considered reactions in isothermal batch reactors, in which reactions taking place in closed containers maintained at a constant temperature. While such reactions are commonplace in chemistry labs, most industrial processes instead use continuously stirred tank reactors (CSTRs). In these reactors, reactants are continuously flowed into the reactor, where they undergo a chemical reaction. Simultaneously, an exit stream is extracted from the reactor at the same flow rate as the inlet stream to maintain a constant volume inside the reactor. CSTRs allow for the continuous production of the desired chemical without the need to repeatedly empty and fill the tank. Figure 24.1 displays diagrams for a batch reactor and CSTR. The molar flow rates of species \(j\) into and out of the CSTR are denoted by \(F_{j0}\) and \(F_j\), respectively, with units of \(\text{mol/s}\). Because the contents of the reactors are constantly stirred, we can assume that the contents of the reactor are uniform everywhere.

    Tuckerman Screenshot 24-1.png
    Figure 24.1: Diagrams of a) a batch reactor and b) a CSTR.

    Mass Balance for a CSTR

    A mass balance on species \(j\) in the CSTR can be written as

    \[\left[ \text{accumulation of species} \: j \right] = \left[ \text{flow of species} \: j \: \text{in} \right] - \left[ \text{flow of species} \: j \: \text{out} \right] + \left[ \text{generation of species} \: j \right]\]

    Formally, we can write the mass balance as:

    \[\frac{d N_j}{dt} = F_{j0} - F_j + V r_j \label{24.1}\]

    where \(N_j\) is the number of moles of species \(j\), \(V\) is the volume of the reactor, with units of \(\text{m}^3\), and \(r_j\) is the reaction rate of species \(j\), with units of \(\text{mol/m}^3 \text{s}\).

    To express the mass balance in terms of concentration, we can use the fact that the molar flow rate of species \(j\) is equal to the volumetric flowrate, \(v\), multiplied by the concentration species \(J\):

    \[F-j = v \left[ j \right] \label{24.2}\]

    Equation 24.1 thus becomes

    \[V \frac{d \left[ j \right]}{dt} = v \left( \left[ j \right]_0 - \left[ j \right] \right) V r_j \nu_j \label{24.3}\]

    where \(v\) is the volumetric flow rate into and out of the reactor, with units of \(\text{m}^3/\text{s}\), and \(\nu_j\) is the stoichiometric coefficient of species \(j\) in the reaction. If the rate law is, for example \(r_j = \pm \left[ j \right]^{\nu_j}\), then the kinetic equations become

    \[V \frac{d \left[ j \right]}{dt} = v \left( \left[ j \right]_0 - \left[ j \right] \right) + V \nu_j \left[ j \right]^{\nu_j} \label{24.4}\]

    which constitutes a set of nonlinear differential equations. If there are multiple reactants and multiple steps in the reaction, then the kinetic equations are even more complicated. However, note what differs between these kinetic equations and those of a batch reactor is really the flow term \(v \left( \left[ j \right]_0 - \left[ j \right] \right)\).

    After an initial time period to start the CSTR, we can assume that the reactor is operating at steady-state, so that \(d \left[ j \right]/dt = 0\). We can then write Equation 24.3 as:

    \[v \left( \left[ j \right]_0 - \left[ j \right] \right) + V r_j = 0 \label{24.5}\]

    Dividing the volume, \(V\), by the volumetric flow rate, \(v\), gives a parameter with the units of time, which is defined as \(\tau\), or the residence time in the reactor:

    \[\tau = \frac{V}{v} \label{24.6}\]

    The residence time represents the average amount of time a molecule spends inside the reactor from the time at which it enters the reactor to the time it leaves. Combining Equations 24.5 and 24.6, we arrive at the design equation for CSTRs:

    \[\left[ j \right]_0 - \left[ j \right] = -\tau r_j \label{24.7}\]

    Note that if \(\left[ j \right]_0 - \left[ j \right] > 0\), then \(j\) is depleted in the reaction, and this means that \(r_j < 0\), as we would expect if, for example, \(j\) is a reactant. On the other hand, if \(\left[ j \right]_0 - \left[ j \right] < 0\), then \(j\) is generated, and \(r_j > 0\), as we would expect if, for example, \(j\) is a product. The key parameter in the design equation is the residence time \(\tau\), which is a design feature.

    Fractional Conversion in CSTRs

    In batch reactors, the degree of conversion of reactants to products depends on the amount of time the reaction is allowed to proceed. In CSTRs operating at steady-state, on the other hand, the fractional conversion depends on the residence time \(\tau\) and the volume of the reactor. Consider the following first-order irreversible reaction:

    \[\text{A} \longrightarrow \text{B}\]

    with the following rate law:

    \[r_\text{A} = -k \left[ \text{A} \right] \label{24.8}\]

    We can define the fractional conversion, \(X\), of species \(\text{A}\) in the CSTR as

    \[\left[ \text{A} \right] = \left[ \text{A} \right]_0 \left( 1 - X \right) \label{24.9}\]

    Plugging Equations 24.8 and 24.9 into Equation 24.7 and rearranging, we can write

    \[\left[ \text{A} \right]_0 X = \tau k \left[ \text{A} \right] = \tau k \left[ \text{A} \right]_0 \left( 1 - X \right) \label{24.10}\]

    and solve explicitly for the fractional conversion, \(X\),

    \[X = \frac{k \tau}{1 + k \tau} \label{24.11}\]

    We can also rearrange the equation to solve for the concentration of species \(\text{A}\) in the exit stream:

    \[\left[ \text{A} \right] = \frac{ \left[ \text{A} \right]_0}{1 + \tau k} \label{24.12}\]

    Examining Equation 24.12, we can see that for large values of \(\tau k\), the concentration of \(\text{A}\) in the exit stream will be small. The value of \(\tau\), in turn, is determined by the reactor volume and flow rates. These equations thus provide a means of designing a reactor in order to achieve a desired production rate. For example, suppose we continuously flow \(10 \: \text{mol/s}\) of reactant \(\text{A}\) into a CSTR at a volumetric flow rate \(v = 0.1 \: \text{m}^3/\text{s}\). At an operation temperature of \(500 \: \text{K}\), the rate constant, \(k\), for the reaction is measured to be \(0.1 \: \text{s}^{-1}\). To achieve a fractional conversion of \(0.8\) such that we produce \(8 \: \text{mol/s}\) of product \(\text{B}\), we can calculate the necessary volume of the reactor using Equations 24.11 and 24.6:

    \[X = 0.8 = \frac{0.1 \: \text{s}^{-1} \tau}{1 + 0.1 \: \text{s}^{-1} \tau} \label{24.13}\]

    Solving for \(\tau\),

    \[\tau = 40 \: \text{s} \label{24.14}\]

    Plugging the value of \(\tau\) into Equation 24.6, we can calculate the reactor volume:

    \[V = \tau v = 40 \: \text{s} \times 0.1 \: \text{m}^3/\text{s} = 4 \: \text{m}^3 = 1057 \: \text{gallons} \label{24.15}\]

    Similar equations can be derived for more complex reactions simply by using the appropriate rate law in Equation 24.7.

    CSTRs in Series

    Operating large reactors in industry can be expensive, so a common trick used to reduced costs is to operate multiple CSTRs in series, in which the exit stream of one CSTR is the inlet stream of the next CSTR, as shown in Figure 24.2. Assuming that the

    Tuckerman Screenshot 24-2.png
    Figure 24.2: Diagram of \(3\) CSTRs in series.

    CSTRs are of equal volume and are operated at the same temperature, the residence time, \(\tau\) will be the same for each reactor. Consider a first order irreversible reaction of \(\text{A} \rightarrow \text{B}\). For the first reactor, the concentration in the exit stream, \(\left[ \text{A} \right]_1\), is defined by

    \[\left[ \text{A} \right]_1 = \frac{\left[ \text{A} \right]_0}{\left( 1 + k \tau_1 \right)} \label{24.16}\]

    The exit stream of reactor \(1\) then becomes the inlet stream of reactor \(2\). We can thus calculate the concentration of the exit stream of reactor \(2\), \(\left[ \text{A} \right]_2\) as

    \[\left[ \text{A} \right]_2 = \frac{\left[ \text{A} \right]_1}{\left( 1 + k \tau_1 \right)} = \frac{\left[ \text{A} \right]_0}{\left(1 + k \tau \right) \left( 1 + k \tau \right)} = \frac{\left[ \text{A} \right]_0}{\left( 1 + k \tau \right)^2} \label{24.17}\]

    For \(n\) reactors in series, we can write the general expression:

    \[\left[ \text{A} \right]_n = \frac{\left[ \text{A} \right]_0}{\left( 1 + k \tau \right)^n} \label{24.18}\]

    The fractional conversion parameter becomes

    \[X \left( n \right) = \frac{\left[ \text{A} \right]_0 - \left[ \text{A} \right]_n}{\left[ \text{A} \right]_0} = \frac{\left( 1 + k \tau \right)^n - 1}{\left( 1 + k \tau \right)^n}\]

    As shown in Figure 24.3, as the number of reactors is increased, the total conversion of \(\text{A}\) increases.

    Tuckerman Screenshot 24-3.png
    Figure 24.3: Plot of total conversion of species \(\text{A}\) as a function of the number of CSTRs in series.

    Energy Balances for Constant-Flow Reactors

    A critical parameter of reactor design that has not yet been discussed is the reactor temperature. Because \(k\) strongly depends on \(T\), precise control over the reactor temperature is critical in industrial processes. For an open system in which both mass and heat can be exchanged with the surroundings, we can write the energy balance of of the system as

    \[\frac{dE}{dt} = \frac{dQ}{dt} + \frac{DW}{dt} + \sum_j \left( F_j^\text{(in)} E_j^\text{(in)} - F_j^\text{(out)} E_j^\text{(out)} \right) \label{24.19}\]

    where \(dE/dt\) is the rate of accumulation of energy in the system, \(dQ/dt\) is the rate of heat flow to the system from the surroundings, \(dW/dt\) is the rate of work done by the surroundings on the system, \(\sum_j F_j^\text{(in)} E_j^\text{(in)}\) is the rate of energy added to the system by mass flow into the system, and \(\sum_j F_j^\text{(out)} E_j^\text{(out)}\) is the rate of energy added to the system by mass flow out the system.

    The work term can be expressed as the sum of shaft work, \(W_s\), such as that needed to stir the reactor contents, and flow work to get mass into and out of the system:

    \[\frac{dW}{dt} = \sum_{j=1}^n F_j^\text{(in)} P \nu_j \bar{V}_j^\text{(in)} - \sum_{j=1}^n F_j^\text{(out)} P \nu_j \bar{V}_j^\text{(out)} + \frac{dW_s}{dt} \label{24.20}\]

    where \(\bar{V}_j\) is the specific molar volume of species \(j\). For the purpose of our analysis, we will assume the shaft work to be negligible. the energy balance then becomes

    \[\begin{align} \frac{dE}{dt} &= \frac{dQ}{dt} + \sum_{j=1}^n F_j^\text{(in)} \left( E_j^\text{(in)} + P \nu_j \bar{V}_j^\text{(in)} \right) - \sum_{j=1}^n F_j^\text{(out)} \left( E_j^\text{(out)} + P \nu_j \bar{V}_j^\text{(out)} \right) \\ &= \frac{dQ}{dt} + \sum_{j=1}^n F_j^\text{(in)} \nu_j \bar{H}_j^\text{(in)} - \sum_{j=1}^n F_j^\text{(out)} \nu_j \bar{H}_j^\text{(out)} \end{align} \label{24.21}\]

    We can also express the energy balance in terms of the enthalpy of reaction, \(\Delta_\text{r} H\). Consider the reaction \(a \text{A} + b \text{B} \rightarrow c \text{C} + d \text{D}\). We can write the exit flow rates for each species in terms of the inlet flow rates and conversion of \(\text{A}\):

    \[F_\text{A} = F_{\text{A} 0} - F_{\text{A} 0} X \label{24.22}\]

    \[F_\text{B} = F_{\text{B} 0} - F_{\text{A} 0} X \label{24.23}\]

    \[F_\text{C} = F_{\text{C} 0} + F_{\text{A} 0} X \label{24.24}\]

    \[F_\text{D} = F_{\text{D} 0} + F_{\text{A} 0} X \label{24.25}\]

    Plugging these expressions into Equation 24.21 and rearranging yields

    \[\frac{dE}{dt} = \frac{dQ}{dt} + \sum_{j=1}^n F_j^\text{(in)} \nu_j \left( \bar{H}_j^\text{(in)} - \bar{H}_j^\text{(out)} \right) - \Delta_\text{r} H \left( T \right) F_\text{A}^\text{(in)} X \label{24.26}\]

    where

    \[\Delta_\text{r} H \left( T \right) = d \bar{H}_\text{D}^\text{(out)} + c \bar{H}_\text{C}^\text{(out)} - b \bar{H}_\text{B}^\text{(out)} - a \bar{H}_\text{A}^\text{(out)} \label{24.27}\]

    Using the relationship \(\Delta H = C_P \Delta T\), we can write

    \[\frac{dE}{dt} = \frac{dQ}{dt} + \sum_{j=1}^n F_j^\text{(in)} \left( C_{P, j} \right) \left( T_0 - T \right) - \Delta_\text{r} H \left( T \right) F_\text{A}^\text{(in)} X \label{24.28}\]

    In the steady state, we can take \(dE/dt = 0\), and if the reactions are carried out adiabatically, which requires slow stirring and a low flow rate, then \(dQ/dt = 0\) as well. In this case, we can solve for the operational temperature \(T\), which gives

    \[T = T_0 - \frac{F_\text{A}^\text{(in)} X \Delta_\text{r} H \left( T \right)}{\Sigma_j F_j^\text{(in)} C_{P, j}} \label{24.29}\]

    In principle, this would need to be solved iteratively, given the temperature dependence of \(\Delta_\text{r} H \left( T \right)\) on \(T\). However, if we assume that the reaction enthalpy is temperature independent (and that \(C_{P, j}\) is also independent of \(T\)), then Equation 24.29 gives the temperature directly.


    This page titled 1.23: Continuously stirred tank reactors is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by Mark E. Tuckerman.