particles in a box Chemical Kinetics
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
Understanding Chemical Kinetics in a Box Model Simulation
Chemical kinetics describes how the concentration of a species changes over time. Unlike thermodynamics, which does not explicitly incorporate time, kinetics is essential for understanding biological and chemical processes.
This model simulates the reaction:
1-propanol ⇌ 2-propanol
using NetLogo's boxes-Propanol-Simulation to visualize reaction kinetics and equilibrium.
HOW IT WORKS
Activation Energy and Reaction Progression
A new switch, Ea (Energy of Activation), introduces a barrier between the two compartments. This barrier limits molecular transitions—only molecules with energy greater than Ea can change states.
Initially, observe how the system evolves:
- ΔG (Free Energy Change) over time
- ΔG° (Standard Free Energy Change) over time
- RTln([Product]/[Reactant])—its relationship with ΔG° at equilibrium
Now, introduce the activation barrier by increasing Ea from 0 to 1 kcal. Analyze:
- How ΔG, ΔG°, and RTln([Product]/[Reactant]) change with time
- How the reaction reaches equilibrium
- How temperature affects equilibrium and reaction rates
When equilibrium is reached, increase temperature and observe its effects on ΔG°, ΔG, and RTln([Product]/[Reactant]).
How does the activation barrier influence the system?
REACTION RATE
In a simple reaction, reactant molecules convert into product molecules at a measurable rate. Since each reactant molecule forms exactly one product molecule, forward and reverse reaction rates are equal:
- Forward rate:
v₁ = -d[R]/dt = d[P]/dt
- Reverse rate:
v₋₁ = -d[P]/dt = d[R]/dt
Reaction speed can be measured by counting how many molecules transition between compartments per unit time.
To obtain accurate rate measurements, use initial reaction velocity to avoid interference from reverse reactions.
RATE, ACTIVATION ENERGY, AND CONCENTRATION
We analyze how reaction rate changes with reactant concentration.
- Set temperature to 310 K, Ea to 0 kcal, and advance to 0 (all molecules start as reactants).
- Activate single-molecule tracking (switch “single” = On).
- Adjust reactant concentration (number-of-particles) to 2000, 4000, 6000, 8000, and 10000 molecules.
- Count the number of molecules transitioning to the product state (red), representing
v₁
. - Plot v₁ vs. concentration.
Now, repeat with Ea = 1 kcal and graph again.
The slope of this graph defines the rate constant (k) for the reaction:
v₁ = k[A]
REACTION RATE AND TEMPERATURE
Exercise
In a box with 10,000 molecules and Ea = 1 kcal, measure initial reaction rates at 400 K, 600 K, and 800 K:
1. Set advance = 0 (all reactants on one side).
2. Activate single-molecule tracking (switch “single” = On).
3. Count how many molecules cross the barrier in one tick (red molecules).
4. Repeat with all molecules initially in the product state (advance = 1). Count green molecules.
Now, calculate the rate constants:
k₁ = v₁ / 10000
k₋₁ = v₋₁ / 10000
EQUILIBRIUM CONSTANT (Keq) AND RATE CONSTANTS
At equilibrium, the reaction balances:
v₁ = v₋₁
Since reaction rates are defined as:
v₁ = k₁[A]
and v₋₁ = k₋₁[B]
At equilibrium:
k₁[A] = k₋₁[B]
Rearrange:
k₁/k₋₁ = [B]/[A]
,
where [B]/[A]
represents the equilibrium constant Keq.
Verification
Compare Keq = k₁/k₋₁
with the direct equilibrium calculation from simulation:
Keq = (number of product molecules) / (number of reactant molecules)
.
Does the model correctly follow this equilibrium relationship?
RATE CONSTANT, ACTIVATION ENERGY, AND ARRHENIUS RELATION
Using measured k₁
values at different temperatures, calculate Ea using the Arrhenius equation:
k = A * exp(-Ea / RT)
Rearrange to determine Ea graphically:
ln(k) = ln(A) - Ea / (R*T)
Exercise
- Plot ln(k₁) vs. 1/T
- The slope of the plot gives Ea/R, allowing calculation of Ea.
- Repeat the calculation using
k₋₁
values to find reverse activation energy.
PRE-EXPONENTIAL FACTOR IN ARRHENIUS EQUATION
In this box model, the pre-exponential factor (A) in the Arrhenius equation corresponds to the ordinate at origin in the plot of ln(k) vs. 1/T.
Physically, this factor represents the frequency of successful molecular transitions between compartments. It can be calculated directly in the model.
Interestingly, the ln(A) is equivalent to the ln of the probability of jumping to the other compartment, which is determined by the width of the destination sector. This reinforces the statistical basis of reaction kinetics, demonstrating that the likelihood of transition is tied to entropy-driven accessibility.
COPYRIGHT AND LICENSE
Copyright 1997 Uri Wilensky.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.
This model was created as part of the project: CONNECTED MATHEMATICS: MAKING SENSE OF COMPLEX PHENOMENA THROUGH BUILDING OBJECT-BASED PARALLEL MODELS (OBPML). The project gratefully acknowledges the support of the National Science Foundation (Applications of Advanced Technologies Program) -- grant numbers RED #9552950 and REC #9632612.
This model was converted to NetLogo as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227. Converted from StarLogoT to NetLogo, 2002.
Comments and Questions
globals [ box-edge1 box-edge2 leftbox-edge rightbox floor1 floor2 entropy1 ; entropy2 ; temperature R yboltz enthalpy1 ; enthalpy2 ; scale Eafloor initialstate ; particles in initially in state 1 ΔG ΔG0 ΔG0e -ΔG0e ΔS ΔH Kin1 Kin2 K tracer a ] breed [ particles particle ] breed [ flashes flash ] flashes-own [birthday] particles-own [ mass energy ;; particle info last-collision state ] to setup clear-all set-default-shape particles "circle" set-default-shape flashes "plane" set R 1.9858775 / 1000 ;constante de gases en kcal/mol/K ; set entropy1 0.3 set entropy1 1 - entropy2 set enthalpy1 0 ifelse enthalpy1 <= enthalpy2 [set floor1 0 set floor2 enthalpy2 * scale] ; scale 1kcal= scale y coordenate [set floor2 0 set floor1 -1 * scale * enthalpy2] ; scale 1kcal=scale y coordinate set Eafloor max (list floor1 floor2) + Ea * scale ; set initialstate 0.1 set box-edge2 (max-pxcor) set box-edge1 min-pxcor + (entropy1 * max-pxcor * 2) set ΔH enthalpy2 - enthalpy1 set ΔS R * ln (entropy2 / entropy1) ;calculo entropía set ΔG0 ΔH - temperature * ΔS ;calculo Δ G cero teórica make-box set initialstate 1 - avance make-particles update-variables reset-ticks set a 1 end to go ask particles [ bounce ] update-variables update-plots display set a a + 1 if single = true [stop] ; if a > 1 [stop] end to update-variables set ΔG0 ΔH - temperature * ΔS ;calculo Δ G cero teórica set Kin1 count turtles with [state = 1] set Kin2 count turtles with [state = 2] set K count turtles with [state = 2] / (count turtles with [state = 1] + 0.0000000000000001) set ΔG0e (- R * temperature * ln (K + 1E-10)) set -ΔG0e -1 * ΔG0e set ΔG R * temperature * ln (K + 1E-10) + ΔG0 end to bounce ;; particle procedure ifelse state = 1 [ set yboltz floor1 - scale * ln (random-float 1) * R * temperature if yboltz >= Eafloor [set xcor min-pxcor + random (max-pxcor - min-pxcor)] ] [ set yboltz floor2 - scale * ln (random-float 1) * R * temperature if yboltz >= Eafloor [set xcor min-pxcor + random (max-pxcor - min-pxcor)] ] ifelse yboltz > max-pycor [set ycor max-pycor] [set ycor yboltz] ifelse (xcor >= min-pxcor and xcor < box-edge1) [set state 1 set color green] [set state 2 set color red] end ;;; ;;; drawing procedures to make-box ; white the part of the box that is inactive ifelse floor1 <= floor2 [ ask patches with [ (pxcor > box-edge1) and (pycor < floor2) ] [ set pcolor white ] ] [ ask patches with [ (pxcor < box-edge1) and (pycor < floor1) ] [ set pcolor white ] ] ; limite superior ask patches with [ pycor > max-pycor - 5 ] [ set pcolor blue ] ; limite inferior ask patches with [ (pycor < floor1 + 5 and pycor > floor1 ) and (pxcor <= box-edge1) ] [ set pcolor yellow ] ask patches with [ (pycor < floor2 + 5 and pycor > floor2) and (pxcor >= box-edge1) ] [ set pcolor yellow ] ; limite izquierdo ask patches with [ (pxcor < min-pxcor + 5) and (pycor >= floor1) ] [ set pcolor yellow ] ; limite derecho ask patches with [ (pxcor > max-pxcor - 5) and (pycor >= floor2) ] [ set pcolor yellow ] ; limite central ask patches with [ (pxcor < box-edge1 + 3 and pxcor > box-edge1 - 3) and (pycor <= Eafloor) ] [ set pcolor yellow ] end ;;; ;; creates initial particles to make-particles create-particles number-of-particles [ set size 6 ifelse random-float 1 < initialstate [ set xcor min-pxcor + random (box-edge1 - min-pxcor) set yboltz floor1 - scale * ln (random-float 1) * R * temperature ifelse yboltz > max-pycor [set ycor max-pycor] [set ycor yboltz] ] [ set xcor box-edge1 + random (box-edge2 - box-edge1) set yboltz floor2 - scale * ln (random-float 1) * R * temperature ifelse yboltz > max-pycor [set ycor max-pycor] [set ycor yboltz] ] ifelse (xcor >= min-pxcor and xcor < box-edge1) [set state 1 set color green] [set state 2 set color red] ;;random-position ] set K count turtles with [state = 2] / (count turtles with [state = 1] + 0.00000000000000000000001) set ΔG0e (- R * temperature * ln (K + 0.0000000000001)) set ΔG R * temperature * ln (K + 0.0000000000001) + ΔG0 end ; Copyright 1997 Uri Wilensky. ; See Info tab for full copyright and license.
There are 2 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
particles in a box Chemical Kinetics.png | preview | Preview for 'particles in a box Chemical Kinetics' | 3 months ago, by Luis Mayorga | Download |
This model does not have any ancestors.
This model does not have any descendants.