前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Gaussian16中同时扫描两个反应坐标

在Gaussian16中同时扫描两个反应坐标

作者头像
用户7592569
发布2020-07-27 15:52:48
2.7K1
发布2020-07-27 15:52:48
举报
文章被收录于专栏:量子化学量子化学量子化学

本公众号之前推送过在高斯中的两种常见势能面扫描:

用高斯做势能面扫描(一):刚性扫描

用高斯做势能面扫描(二):柔性扫描

可能大家都熟知,在柔性扫描中如果写了两个扫描坐标,如

B 1 5 S 7 0.1

B 1 6 S 7 0.1

是依次扫描两个坐标,无法做到同时,因此得到的是一张二维势能面,总扫描点数是两个坐标扫描点数的乘积,计算量较大。然而有时候我们只想同时扫描两个反应坐标,即两个坐标同时改变,得到一条曲线。

例如,找[2+2]环加成反应的过渡态经常会碰到这种问题,对于复杂的分子结构,手动调整过渡态初猜很难合适,此时使用opt=ts找到过渡态的成功率自然也不高,这时候我们可能就想,取柔性扫描势能曲线(面)上的突跃点作为过渡态初猜,然而去扫两个坐标得到一张二维势能面未免过于耗时。

对于这种问题,笔者以往采用了两种做法:(1)写了一个小程序来产生调整键长后新的结构(不仅仅是拉进/远两个原子),然而产生的结构我并不满意,算法还需改进或者仍有bug。(2)若仅算一两步反应,那么就手动在GaussView里调整好两个键长,每次算完下载下来再调键长,这样扫描5个点就要下载、调整5次,甚是麻烦。

由于G16推出了广义内坐标(GIC)功能,于是笔者便研究了一下官网的说明

http://gaussian.com/gic/

琢磨出了一个同时扫描两个键长的文件模板。可能(大概率)这不是最优的方案,欢迎有更简洁做法的小伙伴们留言分享你的技巧,我们可以日后再出一期更新推送。

为简洁起见,本文以甲醛和水的加成反应(真空中)为例,示范如何写输入文件。

在这个反应中有两个主反应坐标(C−O键和O−H键)同时在动,单独去扫描C−O键或者O−H键能量都会一直升高,并不会有突跃点。为防止混淆,短横线−符号左边始终表示甲醛分子中的原子,符号右边则表示水分子中的原子。

当然,化学直觉较强的同学可以直接构造出这个简单反应的合理过渡态初始结构,但这招对复杂结构很难见效,因此有必要掌握同时扫描两个反应坐标的技巧。假设我们希望C−O键和O−H键按如下距离逐渐减小

C−O: 1.8, 1.7, 1.6, 1.5

O−H: 1.7, 1.5, 1.3, 1.1

则利用GIC功能的输入文件如下:

%chk=methanal_water.chk
%mem=24GB
%nprocshared=24
#p M062X/6-31G(d) nosymm geom=addgic

Title Card Required

0 1
 C    -1.13256115   -0.04504504    0.00000000
 H    -0.59939740   -0.97274996    0.00000000
 H    -2.20256115   -0.04504504    0.00000000
 O    -0.50552072    1.04600530    0.00000000
 O    -0.71081810   -0.28742611    1.83667749
 H    -0.42043150   -1.07235298    2.30695978
 H    -0.23246558    0.54490727    1.83667749

R15=R(1,5)
R47=R(4,7)
R15(value=1.8)
R47(value=1.7)

--Link1--
%chk=methanal_water.chk
%mem=24GB
%nprocshared=24
#p opt M062X/6-31G(d) nosymm geom(allcheck,addGIC) guess=read

R15(freeze)
R47(freeze)

--Link1--
%chk=methanal_water.chk
%mem=24GB
%nprocshared=24
#p M062X/6-31G(d) nosymm geom(allcheck,addGIC) guess=read

R15(value=1.7)
R47(value=1.5)

--Link1--
%chk=methanal_water.chk
%mem=24GB
%nprocshared=24
#p opt M062X/6-31G(d) nosymm geom(allcheck,addGIC) guess=read

R15(freeze)
R47(freeze)

--Link1--
%chk=methanal_water.chk
%mem=24GB
%nprocshared=24
#p M062X/6-31G(d) nosymm geom(allcheck,addGIC) guess=read

R15(value=1.6)
R47(value=1.3)

--Link1--
%chk=methanal_water.chk
%mem=24GB
%nprocshared=24
#p opt M062X/6-31G(d) nosymm geom(allcheck,addGIC) guess=read

R15(freeze)
R47(freeze)

--Link1--
%chk=methanal_water.chk
%mem=24GB
%nprocshared=24
#p M062X/6-31G(d) nosymm geom(allcheck,addGIC) guess=read

R15(value=1.5)
R47(value=1.1)

--Link1--
%chk=methanal_water.chk
%mem=24GB
%nprocshared=24
#p opt M062X/6-31G(d) nosymm geom(allcheck,addGIC) guess=read

R15(freeze)
R47(freeze)

其中R15和R47是新起的变量名,可以改成其他名称。而R(1,5)则表示1号和5号原子之间的距离。注意value并不能限制键长严格等于给定的值,只能是十分接近,这是高斯官网提到的(不过这点对普通用户并不重要)。

第一步是先用GIC调整两根化学键至目标键长,调整完成后会做单点计算,下一个任务--Link1--读取之,将调整好的键长冻结、做限制性优化;完成后再用GIC调整两根键至新的键长,算单点,再--Link1--读取之,将调整好的键长冻结、做限制性优化。。。如此几步下来就能同时让两根键缩短了。从始至终只用了一个gjf文件,中途无需人为干预,可以认为是达到了目的。完成后用GV 6.0打开log文件

会发现有很多任务,这是用了--Link1--造成的,只能打开一个个Optimization查看结构和能量,看在哪个任务处发生了突跃。这点不是很方便,后续如果没有发现更优的方案,笔者会考虑写个脚本从log里提取信息,避免这一步操作。

回到这个问题,经过查看后发现第三个任务是能量最高点,下一步能量就会下降了。将第三个任务中最后一帧结构另存为、提取出来作为过渡态初猜,经过10步可以收敛到正确的过渡态上

总结:本文用一个简单的反应展示了如何同时扫描两个反应坐标,该反应若仅扫描其中任何一个反应坐标都是得不到突跃点的。对于更密的扫描步长、及扫描键角等等,读者可根据文中提供的示例文件自己举一反三。

PS1:作为练习,感兴趣的读者可以自己试试找溴化氢HBr与乙烯或乙炔加成的过渡态,考验一下自己的化学直觉。若找不到的话,可试试本文的技巧。

PS2: GIC功能仅在>= G16 A版本才有,G09无法使用该功能。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子化学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档