LoginSignup
2
2

アイリングの式から反応速度定数を見積もる

Posted at

遷移状態理論の範囲において、反応速度定数はアイリングの式(H. EYRING, J. Chem. Phys. 1935, 3, 107–115.)に基づいて温度$T$と活性化エネルギー$\Delta G^{\ddagger}$の関数として与えられます。

k=\varGamma \dfrac{k_{\mathrm{B}}T}{h} \, \exp \left(-{\dfrac{\Delta G^{\ddagger}}{RT}}\right)

【補足】
透過係数 $\varGamma$ は簡単のために$1$とすることが多いですが、トンネル効果を簡便に取り入れる方法として、遷移状態における虚振動 $\omega$ (cm-1) を用いて$$\varGamma = 1 + \dfrac{1}{24}\left(\dfrac{100hc|\omega|}{k_{\mathrm{B}}T}\right)^2$$と見積もる「Wignerの補正」(E. Wigner, Phys. Rev. 1932, 40, 749–759.)が知られています。式を見て分かる通り、トンネル効果は反応速度定数を増加する作用をもちます。

以上をまとめると、次のようなコードで反応速度定数が計算できます。ここではPythonのスクリプトを示します。

barrier2rate.py
import math

# input parameters
temperature = 300.0                 # 273.15+25  # K
activation_barrier = 80.0           # kJ / mol
frequency = 800.0                   # cm-1 : imaginary frequency
ratio = 99.9                        # reactant consumption

# constants
GAS_CONSTANT = 8.3144621            # J / K / mol
PLANCK_CONSTANT = 6.62606957e-34    # J * s
BOLTZMANN_CONSTANT = 1.3806488e-23  # J / K
SPEED_OF_LIGHT = 2.99792458e8       # m / s

# Eyring's equation (H. EYRING, J. Chem. Phys., 1935, 3, 107–115.)
E = math.exp(- activation_barrier * 1000.0 / (GAS_CONSTANT * temperature))
Z = (BOLTZMANN_CONSTANT * temperature / PLANCK_CONSTANT)
k = Z * E

# Wigner's tunneling correction (E. Wigner, Phys. Rev., 1932, 40, 749–759.)
# 100.0 is the scaling factor to convert cm-1 into m-1
wigner_factor = (PLANCK_CONSTANT * abs(frequency) * 100.0 * SPEED_OF_LIGHT / (BOLTZMANN_CONSTANT * temperature))
# the transmission coefficient
kappa = 1 + 1/24 * wigner_factor ** 2
Z_corr = kappa * Z
k_corr = Z_corr * E

print("反応温度 =", '{:>5.1f}'.format(temperature), "(K) / 反応障壁 =", '{:>5.1f}'.format(activation_barrier), "(kJ/mol) / 虚振動数 =", '{:>6.1f}'.format(frequency), "(cm-1)")
print("Wigner補正項 κ = {:e}".format(kappa))
print("反応速度定数 : {:e}".format(k))
print("      補正後 : {:e}".format(k_corr))
print("時定数       : {:e}".format(1/k), "/ sec.")
print("      補正後 : {:e}".format(1/k_corr), "/ sec.")

print("反応物が "+str(ratio)+" % 消費されるまでの時間(補正前)")
print('{:>18.10f}'.format((math.log(100/(100-ratio))/k)/3600), "/ hour")       # / hour
print('{:>18.10f}'.format((math.log(100/(100-ratio))/k)/60), "/ min.")         # / min.
print('{:>18.10f}'.format(math.log(100/(100-ratio))/k), "/ sec.")              # / sec.
print("反応物が "+str(ratio)+" % 消費されるまでの時間(補正後)")
print('{:>18.10f}'.format((math.log(100/(100-ratio))/k_corr)/3600), "/ hour")  # / hour
print('{:>18.10f}'.format((math.log(100/(100-ratio))/k_corr)/60), "/ min.")    # / min.
print('{:>18.10f}'.format(math.log(100/(100-ratio))/k_corr), "/ sec.")         # / sec.
出力
反応温度 = 300.0 (K) / 反応障壁 =  80.0 (kJ/mol) / 虚振動数 =  800.0 (cm-1)
Wigner補正項 κ = 1.613357e+00
反応速度定数 : 7.361770e-02
      補正後 : 1.187716e-01
時定数       : 1.358369e+01 / sec.
      補正後 : 8.419520e+00 / sec.
反応物が 99.9 % 消費されるまでの時間(補正前)
      0.0260646677 / hour
      1.5638800644 / min.
     93.8328038628 / sec.
反応物が 99.9 % 消費されるまでの時間(補正後)
      0.0161555510 / hour
      0.9693330585 / min.
     58.1599835119 / sec.

これより、80.0 kJ/mol の活性化エネルギーをもつ反応が 99.9 % 進行するまでには、1分半程度の時間を要することが分かります。また、トンネル効果を考慮すると、虚振動数の大きさが 800.0 cm-1 の場合、1分程度で反応が 99.9 % 進行することも分かります。

【補足】
「時定数」は反応物が $1-\dfrac{1}{e} \approx 63.212$ % だけ消費される(=反応物が $\dfrac{100}{e}$ % に減じる)までに要する時間なので、 ratio = 100 - 100 * 1/math.exp(1) などと書き換えれば求められます。
類似した概念に「半減期」がありますが、これは反応物が 50 % に減じるまでに要する時間を指しています。


先日連投した記事中で用いている反応速度定数は上記のコードによって求めています。速度論シミュレーションに関心のある方は併せてご覧ください。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2