|
|
分享一个从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 都挺简单。
- function [wigner_K,tunnelingFactor,K] = Calc_TST_bimolecular (deltaG,negmode_from_gauss)
- % below is the code for bi-molecular reaction,
- % result is consistent with Kisthelp
- % reprogrammed from Kisthelp source code
- deltaG2Joule=deltaG*1000;
- h=6.6260696E-34 ;
- kb=1.380649E-23;
- T=298;
- P0 = 1E05;
- NA = 6.0221413E23;
- c = 2.99792458E8;
- R = NA * kb;
- unitCoeff = ((R*T) /P0)*(1.0e6/NA);
- convertCm_1ToM_1=1.0E2;
- convertCm_1ToKelvin= 100*c*h/kb;
- K=(kb*T/h)*exp(-deltaG2Joule/(R*T));
- K=K*unitCoeff;
- freqImag=-negmode_from_gauss*(convertCm_1ToM_1/convertCm_1ToKelvin);%这个好像原作者错了
- factor = ( h * freqImag * ( c /( kb * T) ))^2;
- tunnelingFactor = 1.0 + (1.0/24.0) * factor;
- wigner_K= K*tunnelingFactor;
- end
复制代码- function [wigner_K,tunnelingFactor,K] = Calc_TST_unimolecular (deltaG,negmode_from_gauss)
- % below is the code for uni-molecular reaction,
- % result is consistent with Kisthelp
- % reprogrammed from Kisthelp source code
- deltaG2Joule=deltaG*1000;
- h=6.6260696E-34 ;
- kb=1.380649E-23;
- P0 = 1E05;
- NA = 6.0221413E23;
- c = 2.99792458E8;
- R = NA * kb;
- T=298;
- convertCm_1ToM_1=1.0E2;
- convertCm_1ToKelvin= 100*c*h/kb;
- K=(kb*T/h)*exp(-deltaG2Joule/(R*T));
- freqImag=-negmode_from_gauss*(convertCm_1ToM_1/convertCm_1ToKelvin);%这个好像原作者错了
- factor = ( h * freqImag * ( c /( kb * T) ))^2;
- tunnelingFactor = 1.0 + (1.0/24.0) * factor;
- wigner_K=K*tunnelingFactor;
- end
复制代码
|
评分 Rate
-
查看全部评分 View all ratings
|