Try following problems from Fogler 5e (Fogler 2016). P 7-4, P 7-5, P 7-6, P 7-7, P 7-10
We will go through some of these problems in the workshop.
P 7-4
When arterial blood enters a tissue capillary, it exchanges oxygen and carbon dioxide with its environment, as shown in this diagram.
The kinetics of this deoxygenation of hemoglobin in blood was studied with the aid of a tubular reactor by Nakamura and Staub (J. Physiol., 173, 161).
HbOX2k1k−1Hb+OX2
Although this is a reversible reaction, measurements were made in the initial phases of the decomposition so that the reverse reaction could be neglected. Consider a system similar to the one used by Nakamura and Staub: the solution enters a tubular reactor (0.158 cm in diameter) that has oxygen electrodes placed at 5-cm intervals down the tube. The solution flow rate into the reactor is 19.6 cm3/s with CA0 = 2.33 × 10–6 mol/cm3.
Electrode position
1
2
3
4
5
6
7
Percent decomposition of HbOX2
0.00
1.93
3.82
5.68
7.48
9.25
11.00
Using the method of differential analysis of rate data, determine the reaction order and the forward specific reaction-rate constant k1 for the deoxygenation of hemoglobin.
Repeat using regression.
Solution
Reaction is reversible, but the measurements were taken in the initial phases where the reverse reaction can be neglected
HbOX2kHb+OX2
% decomposition (conversion) along the length of PFR is given
AB+C is carried out in a CSTR. To learn the rate law, the volumetric flow rate, v0 , (hence τ=V/v0 ) is varied and the effluent concentrations of species A are recorded as a function of the space time t. Pure A enters the reactor at a concentration of 2 mol/ dm3. Steady-state conditions exist when the measurements are recorded.
Run
1
2
3
4
5
τ (min)
15
38
100
300
1200
CA (mol/dm3)
1.5
1.25
1.0
0.75
0.5
Determine the reaction order and specific reaction-rate constant.
If you were to repeat this experiment to determine the kinetics, what would you do differently? Would you run at a higher, lower, or the same temperature? If you were to take more data, where would you place the measurements (e.g., τ )?
It is believed that the technician may have made a dilution factor-of-10 error in one of the concentration measurements. What do you think? How do your answers compare using regression (Polymath or other software) with those obtained by graphical methods?
Note: All measurements were taken at steady-state conditions.
Solution
The liquid-phase irreversible reaction
AB+C
carried out in a CSTR.
τ vs. CA data is given
Rate law: −rA=kCAα
For CSTR,
V=−rAυ0(CA0−CA)⇒τ=kCAα(CA0−CA)
∴kCAα=τ(CA0−CA)
Taking log lnk+αlnCA=ln(τCA0−CA)
import numpy as npfrom scipy.stats import linregressimport matplotlib.pyplot as plt# DataC_A0 =2.0# mol/dm^3tau = np.array([15, 38, 100, 300, 1200]) # space time in minutesC_A = np.array([1.5, 1.25, 1.0, 0.75, 0.5]) # concentration in mol/dm^3# plot the dataplt.plot(tau, C_A, 'o-', label='concentration')plt.xlabel('$\\tau$')plt.ylabel('$C_A$')plt.legend()plt.grid(True)plt.xlim(0,1200)plt.show()ln_ca = np.log(C_A)ln_ca_by_tau = np.log((C_A0 - C_A)/ tau)# fit lineres = linregress(ln_ca, ln_ca_by_tau)line = res.slope * ln_ca + res.interceptplt.plot(ln_ca, ln_ca_by_tau, 'o', label='Differential analysis')plt.plot(ln_ca, line, '-', label='fitted line')plt.annotate(f'Slope = {res.slope:.2e}\nIntercept = {res.intercept:.2f}\n$R^2$ = {res.rvalue**2:.3f}', xy=(0.5, 0.15), xycoords='axes fraction', fontsize=12)plt.xlabel('$\ln (C_A)$')plt.ylabel('$\ln(\\frac{C_{A0}-C_A}{\\tau})$')plt.legend()plt.grid(True)plt.show()# pick the closest round orderorder =round(res.slope)k = np.exp(res.intercept)
was carried out in a constant-volume batch reactor where the following concentration measurements were recorded as a function of time.
t (min)
0
5
9
15
22
30
40
60
CA (mol/dm3)
2
1.6
1.35
1.1
0.87
0.70
0.53
0.35
Use nonlinear least squares (i.e., regression) and one other method to determine the reaction order, α, and the specific reaction rate, k.
Nicolas Bellini wants to know, if you were to take more data, where would you place the points? Why?
Prof. Dr. Sven Köttlov from Jofostan University always asks his students, if you were to repeat this experiment to determine the kinetics, what would you do differently? Would you run at a higher, lower, or the same temperature? Take different data points? Explain.
It is believed that the technician made a dilution error in the concentration measured at 60 min.
What do you think? How do your answers compare using regression (Polymath or other software) with those obtained by graphical methods?
Solution
Reaction: AB+C
carried out in a constant-volume batch reactor
−dtdCA=kCAα
concentration measurements were recorded as a function of time.
import numpy as npfrom scipy.integrate import solve_ivpfrom scipy.optimize import minimizefrom scipy.optimize import curve_fitimport matplotlib.pyplot as plt# Given datat = np.array([0, 5, 9, 15, 22, 30, 40, 60]) # minC_A = np.array([2, 1.6, 1.35, 1.1, 0.87, 0.7, 0.53, 0.35]) # mol/dm^3C_A0 = C_A[0]# Define the system of ODEsdef batch_reactor(t, y, *args): C_A = y[0] k, n = args rate =-k*C_A**n dca_dt = ratereturn [dca_dt]t_span = (t.min(), t.max())# initial conditionsy0 = [C_A0]# Initial guesses of k and nk =1n =1# Objective function to minimize: the difference between C_A (experimental) and C_A (model)def objective(params): k,n = params# Solve the ODE using solve_ivp solution = solve_ivp( batch_reactor, # The ODE function to solve t_span, # Time interval y0, # Initial condition in a list args=(k, n), # Additional arguments passed to the ODE function dense_output=True# Generate a continuous solution ) sol_specific = solution.sol(t) C_A_model = solution.sol(t)[0] ssr = np.sum((C_A - C_A_model)**2) # Sum of squared residualsreturn ssr# Minimize the objective functionresult = minimize(objective, [k,n], bounds=[(1e-4, 1e4), (0, 5)])# Extract the resultsk_opt, n_opt = result.xsuccess = result.success# Check if the solution was successfulifnot success:print("Optimization was not successful. Try different initial guesses or methods.")final_solution = solve_ivp( batch_reactor, # The ODE function to solve t_span, # Time interval y0, # Initial condition in a list args=(k_opt, n_opt), # Additional arguments passed to the ODE function dense_output=True# Generate a continuous solution)C_A_model = final_solution.sol(t)[0] # plot the dataplt.plot(t, C_A, 'o', label='Experiment')plt.plot(t, C_A_model, '-', label='model')plt.xlabel('$t (min)$')plt.ylabel('$C_A (mol/dm^3)$')plt.legend()plt.grid(True)plt.xlim(0,60)plt.show()
Initial guess for Reaction order is = 1.00, and k is 1.000e+00.
Optimized value of Reaction order is = 1.52, and k is 3.305e-02.
P 7-7
The following data were reported [from C. N. Hinshelwood and P. J. Ackey, Proc. R. Soc. (Lond)., A115, 215] for a gas-phase constant-volume decomposition of dimethyl ether at 504∘C in a batch reactor. Initially, only (CHX3)X2O was present.
Time (s)
390
777
1195
3155
∞
Total Pressure (mmHg)
408
488
562
799
931
Why do you think the total pressure measurement at t = 0 is missing? Can you estimate it?
Assuming that the reaction
(CHX3)X2OCHX4+HX2+CO
is irreversible and goes virtually to completion, determine the reaction order and specific reaction rate k.
What experimental conditions would you suggest if you were to obtain more data?
How would the data and your answers change if the reaction were run at a higher temperature? A lower temperature?
Solution
constant volume batch reactor
Data on pressure with time is given
(CHX3)X2OCHX4+HX2+CO
yA0=1
δ=3−1=2
ϵ=yA0δ=2
V=V0=V0PP0(1+ϵX)
P=P0(1+ϵX)
X=ϵP0P−P0
At t=∞,X=1
P∞=P0(1+2)3P0
P0=P∞/3
Rate law: −rA=kCAα
As pressure data is given, we need an equation for dP/dt
dP/dt=d/dt(P0(1+ϵX))
dP/dt=P0ϵdX/dt
For constant volume batch reactor
dtdCA=−kCAα
CA=CA0α(1−X)α
dtdX=k(1−X)α
import numpy as npfrom scipy.integrate import solve_ivpfrom scipy.optimize import minimizefrom scipy.optimize import curve_fitimport matplotlib.pyplot as plt# Given datadelta =2y_A0 =1epsilon = y_A0 * deltat = np.array([390, 777, 1195, 3155, 10000]) # s, Replace infinity with a large numberP = np.array([408, 488, 562, 799, 931]) # mmHgP0 = P[-1]/(1+ epsilon)t_eval = t[:-1]P_eval = P[:-1]# Define the system of ODEsdef batch_reactor(t, y, *args): p = y[0] k, n = args X = (p-P0)/(epsilon * P0) dxdt = k * (1-X)**n dpdt = P0 * epsilon* dxdtreturn [dpdt]t_span = (min(t_eval), max(t_eval))# initial conditionsy0 = [P0]# Initial guesses of k and nk =6e-4n =1# Objective function to minimize: the difference between C_A (experimental) and C_A (model)def objective(params): k,n = params# Solve the ODE using solve_ivp solution = solve_ivp( batch_reactor, # The ODE function to solve t_span, # Time interval y0, # Initial condition in a list args=(k, n), # Additional arguments passed to the ODE function dense_output=True# Generate a continuous solution ) P_model = solution.sol(t_eval)[0] ssr = np.sum((P_eval - P_model)**2) # Sum of squared residualsreturn ssr# Minimize the objective functionresult = minimize(objective, [k,n], bounds=[(1e-4, 1e-3), (0, 2)])# Extract the resultsk_opt, n_opt = result.xsuccess = result.success# Check if the solution was successfulifnot success:print("Optimization was not successful. Try different initial guesses or methods.")t_span = (min(t), max(t))final_solution = solve_ivp( batch_reactor, # The ODE function to solve t_span, # Time interval y0, # Initial condition in a list args=(k_opt, n_opt), # Additional arguments passed to the ODE function dense_output=True# Generate a continuous solution)t_plot = np.linspace(t.min(), t.max(),100) P_model = final_solution.sol(t_plot)[0] # plot the dataplt.plot(t, P, 'o', label='Experiment')plt.plot(t_plot, P_model, '-', label='model')plt.xlabel('$t (s)$')plt.ylabel('P (mmHg)')plt.legend()plt.grid(True)plt.show()
Initial guess for Reaction order is = 1.00, and k is 6.000e-04.
Optimized value of Reaction order is = 1.50, and k is 8.184e-04.
P 7-10
Tests were run on a small experimental reactor used for decomposing nitrogen oxides in an automobile exhaust stream. In one series of tests, a nitrogen stream containing various concentrations of NOX2 was fed to a reactor, and the kinetic data obtained are shown in Figure P7-10. Each point represents one complete run. The reactor operates essentially as an isothermal backmix reactor (CSTR). What can you deduce about the apparent order of the reaction over the temperature range studied?
Figure 1: Figure P7-10 - Auto exhaust data.
The plot gives the fractional decomposition of NOX2 fed versus the ratio of reactor volume V (in cm3) to the NO2 feed rate, FNO2,0 (g mol/h), at different feed concentrations of NOX2 (in parts per million by weight). Determine as many rate law parameters as you can.
Solution
X=100% decomposition
Rate law: −rA=kCAn
V/FA0 vs. X data is given
Reaction carried out in CSTR
V=−rAFA0X
FA0V=kCAnX
The linear nature of experiment at a given temperature in Figure 1 indicates that X∝FA0V
Therefore, apparent order must be zero (CAn=1).
kFA0V=X
References
Fogler, H. Scott. 2016. Elements of Chemical Reaction Engineering. Fifth edition. Boston: Prentice Hall.
Citation
BibTeX citation:
@online{utikar2024,
author = {Utikar, Ranjeet},
title = {Solutions to Workshop 05: {Collection} and Analysis of Rate
Data},
date = {2024-03-23},
url = {https://cre.smilelab.dev/content/workshops/05-collection-and-analysis-of-rate-data/solutions.html},
langid = {en}
}