计算化学公社

 找回密码 Forget password
 注册 Register
Views: 13263|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[辅助/分析程序] 分享一个用过渡态理论TST和Wigner tunneling 校正算反应速率的代码

[复制链接 Copy URL]

127

帖子

1

威望

1231

eV
积分
1378

Level 4 (黑子)

分享一个从Kisthelp源代码中提取出来的 用TST+wigner校正算反应速率的代码。 代码照抄自Kisthelp的 源代码,固结果是一样的。输入 只需要提供反应自由能变化和过渡态 的 那个虚频 即可。因此,除了高斯外,Orca/Mopac 等软件的输出也能用来算反应速率了。温度是默认的298K, 其他的温度需要改动下代码,因此没有 写。
阿伦尼乌斯公式 K=A*exp(Ea/RT) 和Erying 公式的对应关系, 反应的焓ΔH@298K 即是对应的活化能Ea,反应的熵变化对速率的影响包含在 指数前系数 A里面了。


Sob 老师写的关于Kisthelp软件用法的帖子:http://sobereva.com/246


另外,Kisthelp计算wigner校正时 频率单位转换似乎写错了,已经向作者反应,正在等回信中。

原来的kisthelp 不能计算 分子对称性对 反应自由能 的贡献,这个提取出来的代码因为不需要向Kisthelp那样从新计算delta G ,而是直接使用高斯、orca,mopac,等等的输出 因此反倒比kisthelp更准确点。


代码如下,用MATLAB写的。 只是些简单的加减乘除平方,各位如果想将它改成fortran, python,c++或者 Excel 都挺简单。
  1. function [wigner_K,tunnelingFactor,K] = Calc_TST_bimolecular (deltaG,negmode_from_gauss)
  2. % below is the code for bi-molecular reaction,
  3. % result is consistent with Kisthelp
  4. % reprogrammed from Kisthelp source code
  5. deltaG2Joule=deltaG*1000;
  6. h=6.6260696E-34 ;
  7. kb=1.380649E-23;
  8. T=298;
  9. P0 = 1E05;
  10. NA = 6.0221413E23;
  11. c = 2.99792458E8;
  12. R = NA * kb;
  13. unitCoeff =  ((R*T) /P0)*(1.0e6/NA);
  14. convertCm_1ToM_1=1.0E2;
  15. convertCm_1ToKelvin= 100*c*h/kb;

  16. K=(kb*T/h)*exp(-deltaG2Joule/(R*T));
  17. K=K*unitCoeff;
  18. freqImag=-negmode_from_gauss*(convertCm_1ToM_1/convertCm_1ToKelvin);%这个好像原作者错了
  19. factor =  (  h * freqImag * ( c /( kb * T) ))^2;
  20. tunnelingFactor = 1.0 + (1.0/24.0) * factor;
  21. wigner_K= K*tunnelingFactor;
  22. end
复制代码
  1. function [wigner_K,tunnelingFactor,K] = Calc_TST_unimolecular (deltaG,negmode_from_gauss)
  2. % below is the code for uni-molecular reaction,
  3. % result is consistent with Kisthelp
  4. % reprogrammed from Kisthelp source code
  5. deltaG2Joule=deltaG*1000;
  6. h=6.6260696E-34 ;
  7. kb=1.380649E-23;
  8. P0 = 1E05;
  9. NA = 6.0221413E23;
  10. c = 2.99792458E8;
  11. R = NA * kb;
  12. T=298;
  13. convertCm_1ToM_1=1.0E2;
  14. convertCm_1ToKelvin= 100*c*h/kb;

  15. K=(kb*T/h)*exp(-deltaG2Joule/(R*T));

  16. freqImag=-negmode_from_gauss*(convertCm_1ToM_1/convertCm_1ToKelvin);%这个好像原作者错了
  17. factor =  (  h * freqImag * ( c /( kb * T) ))^2;
  18. tunnelingFactor = 1.0 + (1.0/24.0) * factor;

  19. wigner_K=K*tunnelingFactor;
  20. end
复制代码


评分 Rate

参与人数
Participants 3
eV +20 收起 理由
Reason
zjutwbai + 5 GJ!
卡开发发 + 5 好物!
sobereva + 10

查看全部评分 View all ratings

538

帖子

2

威望

2592

eV
积分
3170

Level 5 (御坂)

2#
发表于 Post on 2018-8-5 15:47:06 | 只看该作者 Only view this author
您好!您是说用这个代码在matlab中计算速率常数吗?

136

帖子

0

威望

2207

eV
积分
2343

Level 5 (御坂)

3#
发表于 Post on 2022-7-30 23:53:02 | 只看该作者 Only view this author
”Kisthelp计算wigner校正时 频率单位转换似乎写错了,已经向作者反应,正在等回信中“请问有回信嘛?目前想要用该软件计算Wigner correction。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-2-21 07:54 , Processed in 0.157352 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list