Portfolio 04: Analysis of rate data

CHEN3010/ CHEN5040: chemical reaction engineering

Modified

May 10, 2024

Student ID:

General Instructions for in class Portfolios

  1. The portfolio is an open-book task.
  2. You can use textbooks, the resources provided during class/ workshop etc. to answer the questions.
  3. The portfolio task is made available in both pdf format and as a print.
  4. You are free to choose a solution technique. It is not required that you use the provided python code to answer the questions. You can use any tool (pen and paper, excel, … ) and any technique (graphical, numerical, analytical) that you are comfortable with.
  5. Irrespective of your solution method, you are expected to write your answers on to the printed question paper provided. This is what gets marked.
  6. The portfolio will take place during designated time slot communicated earlier by the unit coordinator. Please refer to the portfolio schedule on blackboard for the portfolio dates and topics.
  7. The tasks will be a mix of theory questions, short calculation type and long numerical examples.
  8. You have 30 minutes to complete the tasks in the portfolio.
  9. The portfolios will be marked immediately after completion by your peers using a provided marking rubric.
  10. The portfolios will be collected by the instructors to verify peer marking and record the marks. You will receive your portfolio back within a week.
  11. When you are required to upload the portfolio answers on to blackboard:
    • Save your report as a pdf file.
    • Rename the file as STUDENTID_Portfolio_x.pdf (Where STUDENTID is your student ID, and x is the portfolio number) and
    • Upload it using assessment submission link on blackboard.

Academic Integrity

Academic integrity at its core is about honesty and responsibility and is fundamental to Curtin’s expectations of you. This means that all of your work at Curtin should be your own and it should be underpinned by integrity, which means to act ethically, honestly and with fairness.

As a Curtin student you are part of an academic community and you are asked to uphold the University’s Code of Conduct, principles of academic integrity, and Curtin’s five core values of integrity, respect, courage, excellence and impact during your studies.

You are also expected to uphold the Student Charter and recognize that cheating, plagiarism collusion, and falsification of data and other forms of academic dishonesty are not acceptable.

For more information, visit https://students.curtin.edu.au/essentials/rights/academic-integrity/

Introduction

Direct vapor phase oxidation of ethylene

\ce{C2H4 + 1/2 O2 -> C2H4O}

was carried out in the presence of a silver catalyst in a differential reactor at 300 °C. Experiments were conducted at different partial pressures of \ce{C2H4} and \ce{O2} and the effluent concentration of EO was measured. The measured rate data is shown in Table 1. (The data is available in csv format: portfolio-4-raw-data.csv).

Table 1: Raw data
Experiment P_{\ce{C2H4}} (atm) P_{\ce{O2}} (atm) C_{\ce{C2H4O}} ( mol/dm^3 \times 10^{4} )
1 0.5 9.5 1.618
2 0.7 9.5 1.853
3 0.9 9.5 2.040
4 1.1 9.5 2.198
5 1.4 9.5 2.337
6 19.0 0.94 1.194
7 19.0 1.88 1.895
8 19.0 2.88 2.484
9 19.0 3.78 3.010
10 19.0 4.68 3.493

The exit volumetric flow rate from a differential packed bed containing 20g of catalyst was maintained at 300 dm^3/min for each run. The partial pressures of \ce{C2H4} and \ce{O2} were determined at the entrance to the reactor, and the \ce{C2H4O} concentration was measured at the reactor exit.

Questions

  1. Why do you think a differential reactor was used for these experiments? (2 marks)

Answer:

The reaction is gas phase solid catalyzed reaction.

(2 marks if all the keywords [gas phase, solid catalyzed] are present. 1 mark if only one keyword is present, 0 marks otherwise)

  1. In a step wise manner, outline the strategy (including any equations) you will use to analyze the data and determine the dependence of rate law on P_{\ce{C2H4}} and, P_{\ce{O2}}. (14 marks)

Answer:

The reaction was carried out in a differential reactor. For a differential reactor, reaction rate can be estimated as:

-r'_A = \frac{\upsilon_0 C_P}{\Delta W} \tag{1} ( 2 marks )

The data is given at different inlet partial pressures of \ce{C2H4} and \ce{O2}. Below are the steps to obtain the rate expression.

  1. As the rate is dependent on both P_{\ce{C2H4}} and P_{\ce{O2}}, we need to decouple them so that individual dependence on each species can be determined.

    (Identifies need for decoupling (1 mark)).

  2. We observe that the first five experiments were carried out at constant partial pressure of \ce{O2}. These experiments will be used to determine the dependence on P_{\ce{C2H4}}.

    (1 mark)

  3. From the first 5 experiments, it is clear that C_{\ce{C2H4O}} increases with P_{\ce{C2H4}}. Therefore rate dependence on P_{\ce{C2H4}} can be written as

    r'_A = k' P_{\ce{C2H4}}^\alpha \tag{2} (2 mark)

  4. Steps to find \alpha: (3 marks)

    1. Calculate rate for first five experiments using Equation 1

    2. linearize Equation 2 by taking natural logarithm as:

      \ln (r'_A) = \ln k' + \alpha \ln P_{\ce{C2H4}} \tag{3}

    3. A plot of \ln (r'_A) vs. \ln P_{\ce{C2H4}} using first 5 experiments will be linear with a slope of \alpha

  5. From the last 5 experiments, it is clear that C_{\ce{C2H4O}} increases with P_{\ce{O2}}. Therefore rate dependence on P_{\ce{O2}} can be written as

    r'_A = k'' P_{\ce{O2}}^\beta \tag{4} (2 mark)

  6. Steps to find \beta: Similar to step 4. (1 mark)

    1. Calculate rate for last five experiments using Equation 1

    2. linearize Equation 4 by taking natural logarithm as:

      \ln (r'_A) = \ln k'' + \beta \ln P_{\ce{O2}} \tag{5}

    3. A plot of \ln (r'_A) vs. \ln P_{\ce{O2}} using last five experiments will be linear with a slope of \beta

  7. Calculate k at 300 °C using any of the experimental data as (2 marks)

    k = \left. \frac{ r'_A }{ P_{\ce{C2H4}}^\alpha P_{\ce{O2}}^\beta } \right|_{i} \tag{6}

    or k can be calculated as an average of k calculated for all experiments using Equation 6.

  1. Based on the data calculate the rates of reaction. (4 marks)

The code below is not necessary in the final answer.

import numpy as np
from scipy.stats import linregress
from scipy.optimize import least_squares
import matplotlib.pyplot as plt

Temperature = 300  # deg. C
DeltaW = 20 # g
V_0 = 300   # dm^3/min

# Define the data type for each field
dtype = [
    ('Run', int),         # Run number (experiment number)
    ('P_c2h4', float),    # Pressure of C2H4 in atm
    ('P_o2', float),      # Pressure of O2 in atm
    ('C_c2h4o', float)    # Concentration of C2H4O in mol/dm^3 x 10^4
]

# Data for each experiment
data = np.array([
    (1, 0.5, 9.5, 1.618),
    (2, 0.7, 9.5, 1.853),
    (3, 0.9, 9.5, 2.040),
    (4, 1.1, 9.5, 2.198),
    (5, 1.4, 9.5, 2.337),
    (6, 19.0, 0.94, 1.194),
    (7, 19.0, 1.88, 1.895),
    (8, 19.0, 2.88, 2.484),
    (9, 19.0, 3.78, 3.010),
    (10, 19.0, 4.68, 3.493)
], dtype=dtype)

pc2h4 = data["P_c2h4"]
po2 = data["P_o2"]
cc2h4o = data["C_c2h4o"]*1e-4

# Calculate rate
rate = V_0 * cc2h4o/DeltaW
Experiment P_{\ce{C2H4}} (atm) P_{\ce{O2}} (atm) C_{\ce{C2H4O}} (mol/dm^3 \times 10^4) Rate (mol/g-cat\ min) Rate (mol/g-cat\ s)
1 0.5 9.5 1.618 0.002427 4.045e-05
2 0.7 9.5 1.853 0.0027795 4.6325e-05
3 0.9 9.5 2.04 0.00306 5.1e-05
4 1.1 9.5 2.198 0.003297 5.495e-05
5 1.4 9.5 2.337 0.0035055 5.8425e-05
6 19 0.94 1.194 0.001791 2.985e-05
7 19 1.88 1.895 0.0028425 4.7375e-05
8 19 2.88 2.484 0.003726 6.21e-05
9 19 3.78 3.01 0.004515 7.525e-05
10 19 4.68 3.493 0.0052395 8.7325e-05

Rate calculate either as mol/g-cat\ min or mol/g-cat\ s is okay.

Correct rate unit: 2 marks No rate unit given: 0 marks

Correct values of rate: 2 marks Wrong values of rate: 0 marks

  1. Determine the rate law and rate law parameters. Report your values of the orders of reaction with respect to P_{\ce{C2H4}} and, P_{\ce{O2}} and reaction rate constant k (in mol/atm\ kg-cat\ s). Skeleton python code is provided at the end of the portfolio statement. Report all relevant statistical data (such as slope, intercept, and R^2 value for a linear fit; error estimates (optimality) for least squares fit)(8 marks)

The code below is not necessary in the final answer.

# Select appropriate data for analysis
p_c2h4_a = pc2h4[:5]
rate_a = rate[:5]

# transform the data for analysis
log_p_c2h4_a = np.log(p_c2h4_a)
log_rate_a = np.log(rate_a)
res = linregress(log_p_c2h4_a, log_rate_a)
alpha = res.slope
inter_a = res.intercept
rval_a = res.rvalue


# Select appropriate data for analysis
p_o2_b = po2[5:]
rate_b = rate[5:]

# transform the data for analysis
log_p_o2_b = np.log(p_o2_b)
log_rate_b = np.log(rate_b)
res = linregress(log_p_o2_b, log_rate_b)
beta = res.slope
inter_b = res.intercept
rval_b = res.rvalue

k = rate/(pc2h4**alpha * po2**beta) #mol/atm\ g-cat min$
k_avg = np.average(k)

# Convert k to appropriate units 
k = k * 1e3 /60.0  # mol/atm kg-cat s$
k_avg = k_avg * 1e3 /60.0

Answer:

Rate equation:

-r'_A = k P_{\ce{C2H4}}^\alpha P_{\ce{O2}}^\beta

Parameter estimation:

\alpha = 0.363; intercept = -5.760; R^2 = 0.997 (3 marks - 0 marks for wrong value)

\beta = 0.666;
intercept = -6.286;
R^2 = 1.000 (3 marks - 0 marks for wrong value)

k = 0.01162 mol/atm\ kg-cat\ s (using first experiment) (2 marks - 0 marks for wrong value)

k = 0.01120 mol/atm\ kg-cat\ s (using average of all 10 experiments)

  1. What is the limitation of current experimental program in context of deriving the rate law? How will you overcome it? (2 marks)

Answer:

These experiments were carried out at constant temperature Therefore, the activation energy (E) and pre-exponential constant (k_0) in Arrhenius equation can not be determined from these experiments (1 mark)

Experiments should be carried out at different temperatures. The data on k vs. T can be used to estimate E and k_0 (1 mark)

Skeleton code

import numpy as np
from scipy.stats import linregress
from scipy.optimize import least_squares
import matplotlib.pyplot as plt

Temperature = 300  # deg. C
DeltaW = 20 # g
V_0 = 300   # dm^3/min

# Define the data type for each field
dtype = [
    ('Run', int),         # Run number (experiment number)
    ('P_c2h4', float),    # Pressure of C2H4 in atm
    ('P_o2', float),      # Pressure of O2 in atm
    ('C_c2h4o', float)    # Concentration of C2H4O in mol/dm^3 x 10^4
]

# Data for each experiment
data = np.array([
    (1, 0.5, 9.5, 1.618),
    (2, 0.7, 9.5, 1.853),
    (3, 0.9, 9.5, 2.040),
    (4, 1.1, 9.5, 2.198),
    (5, 1.4, 9.5, 2.337),
    (6, 19.0, 0.94, 1.194),
    (7, 19.0, 1.88, 1.895),
    (8, 19.0, 2.88, 2.484),
    (9, 19.0, 3.78, 3.010),
    (10, 19.0, 4.68, 3.493)
], dtype=dtype)

pc2h4 = data["P_c2h4"]
po2 = data["P_o2"]
cc2h4o = data["C_c2h4o"]*1e-4

# Calculate rate

# Select appropriate data for analysis

# Example code
# first data point has index 0
# x_a = x[1:n] # Selects data points 2 to n from x array

# transform the data for analysis

# example code for linear regression
# log_x = np.log(x) # calculate log
# res, _ = linregress(x,y) # fit line
# slope, intercept, and r value can be accessed using res.slope, 
# res.intercept, res.rvalue 
# line = res.slope * x + res.intercept # Create a line from linear regression

# Print results
# print (res.slope, res.intercept, res.rvalue)

# example code for least_squares
# Objective function to minimize: the difference between rate (experimental)
# and rate (calculated) 
#def objective(params, *args):
#    a, b  = params
#    x, y_obs = args
#
#    # calculate objective function
#    y_calc = (a * x**b)  # Replace with your own expressions
#    return y_obs - y_calc
#
# # Initial guesses
# a = 1 
# b = 1
#
# guess = np.array([a,b])
# bounds = (
#    [1e-3, 1e-3],  # lower bound
#    [1e3, 1e3]     # upper bound
# )
# args = (x,y_obs)
#
# # Minimize the objective function
# result = least_squares(objective, guess, args=args, bounds=bounds)
#
# # Extract the results
# a_fit, b_fit = result.x
# optimality = res.optimality

# Print results
# print (a_fit, b_fit)

# Plotting

# Example code

# plt.plot(x,y, label="y") # Normal plot 
# plt.loglog(x, y, 'o', label='Experimental') # log - log plot scatter points
# plt.show()

Citation

BibTeX citation:
@online{untitled,
  author = {},
  title = {Portfolio 04: {Analysis} of Rate Data},
  url = {https://cre.smilelab.dev//content/portfolio/04-analysis-of-rate-data/portfolio-04-answers.html},
  langid = {en}
}
For attribution, please cite this work as:
“Portfolio 04: Analysis of Rate Data.” n.d. https://cre.smilelab.dev//content/portfolio/04-analysis-of-rate-data/portfolio-04-answers.html.