计算化学公社

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

[Molclus] 使用molclus程序做团簇构型搜索和分子构象搜索

  [复制链接 Copy URL]

6万

帖子

99

威望

5万

eV
积分
120049

管理员

公社社长

本文更新频繁,每次出molclus新版本都会更新。文中评论区的很多讨论都是对于已过时的老版本的,不要作为最新版本的参考。

使用molclus程序做团簇构型搜索和分子构象搜索
Using molclus program to perform configuration search of clusters and conformational search of molecules

文/Sobereva @北京科音
First release:2015-Jan-5   Last update:2025-Mar-16

前言:molclus(主页:http://www.keinsci.com/research/molclus.html)是北京科音自然科学研究中心卢天开发的一款免费的用于原子/分子团簇构型搜索和分子构象搜索的程序包,目前已十分流行并被大量知名期刊的高水平研究文章所使用(见molclus主页的被引用统计)。本文将对此程序包的基本特征和其中的molclus组件的用法进行介绍。第1节介绍基于分子动力学做构型/构象搜索的基本原理,第2节介绍molclus程序的基本使用,第3、4节通过实例进行演示。看完本文后强烈建议再阅读《Molclus FAQ》(http://sobereva.com/730


1 构型/构象搜索原理

团簇的构型搜索和分子的构象搜索是计算化学经常涉及的问题。团簇构型搜索的目的是找到原子团簇(如Li6)或者分子团簇(如水的五聚体)的最稳定的一批构型,包括坐标和相对能量。构象搜索是对于柔性分子而言的,柔性分子有许多可旋转的键,因此势能面上有很多极小点,构象搜索目的是找到最稳定的一批构象,得知哪个构象能量最低、构象的能量彼此间相差多少。在得到最稳定的一批团簇构型或者分子构象之后,我们还可以根据它们的自由能,进一步根据Boltzmann分布估计出特定温度下它们的分布比率,见《根据Boltzmann分布计算分子不同构象所占比例》(http://sobereva.com/165)。

构型/构象搜索的算法很多,比如势能面扫描、分子动力学、蒙特卡罗、基因算法、LMOD等等,适用场合不同。团簇构型搜索和分子构象搜索都可以基于分子动力学实现,基本过程是:在合适的方法下做一定长度的分子动力学模拟,由于热运动,体系能够反复穿越势垒到达势能面不同区域。每隔一定步数取一次结构,将这些分布在势能面的不同位置上的结构作为初猜结构分别进行几何优化,最终就会得到势能面上各个极小点位置的构型和能量,之后可以对能量进行排序取最低的一批。还可以通过分子动力学做周期性退火来实现构象搜索,效果往往更好。比如每200 ps期间让温度从0 K上升至500 K然后再平缓降到0 K,如果跑2000 ps,就会产生10个对应0 K的结构,对这些结构再进行依次优化,即可得到一批极小点结构和能量。退火过程中每次当体系温度较高时,体系就有较大动能,从而能够较容易地穿越势垒而跑到其它势阱区域,然后温度降低时,体系就会陷入势阱的极小点附近。对于分子团簇的构型搜索和分子的构象搜索而言,并不会涉及到化学键的形成和断裂,因此不需要用极耗时的从头算分子动力学,而只需要计算量极低的分子力场来跑分子动力学就够了。这样的程序很多,比如免费的GROMACS、AMBER、Tinker、NAMD。用xtb基于半经验DFT层面的GFN-xTB方法跑动力学耗时也并不很高,而且没有折腾参数和弄拓扑文件的麻烦,还可以在动力学过程中描述键的形成和断裂,故也可以用于原子团簇的搜索。至于结构优化和能量计算部分,可以用分子力场、半经验、DFT、高精度后HF方法等来做,具体用什么就取决于体系特征、需要的精度和运算能力了。

另外,一种简单粗暴但很实用的做分子构象搜索的方法是“系统式搜索法”,即让分子的某些二面角按照指定规则旋转并将所产生的结构做为优化的初始结构。比如设定4个键可以旋转,每个键每120度旋转一次,那么总共就可以产生3*3*3*3=81个初始构象,对这些构象都做优化,就可以得到一批极小点结构,都进行优化后,肯定能找到能量最低构型。molclus程序包中的gentor组件就可以实现这个目的。也有一些专门的构象生成程序如Confab、Frog2,比gentor考虑的因素更多,也更傻瓜化。

对于团簇构型搜索,一种也是看起来很暴力但实际效果不错的做法是把指定类型和指定数目的分子或原子随机挨在一起,形成球形团簇,将这样产生的几十乃至几百个团簇当做初猜结构来依次进行优化,就可以得到一批团簇极小点构型,只要生成的初始团簇数目较多,其中总会有能量最低结构。molclus里的genmer组件就可以实现产生团簇初猜结构的目的。

简单来说,基于molclus做构型/构象搜索所要干的主要事情就是:用户先基于第三方分子动力学程序,或者基于molclus自带的gentor/genmer组件,或者用Confab等构象生成程序,先产生一批初始结构,然后molclus就可以调用量子化学程序或分子力学程序对这些结构依次进行优化(还可以做单点、振动分析等任务),然后用molclus自带的isostat组件对结果进行归簇、排序,从而最终得到能量最低结构和能量较低的一批结构。这个过程看起来没什么复杂的,但molclus将整个过程变得极尽方便省事,而且使用者可以对整个流程进行十分灵活的控制,是想要较低的耗时还是要较高的精度,都可以完全由使用者决定。目前市面上有不少收费的构象搜索程序,比如Spartan、GMMX、HyperChem、Sybyl、MOE、M$里的Conformer、MacroModel之类,我相信,只要你稍微花点时间用明白了molclus,之后一定就再也不想用那些程序了,又不灵活又贵又没法达到像样的精度。


2 molclus程序

2.1 简介

molclus主页为:http://www.keinsci.com/research/molclus.html,程序的可执行文件可在此免费下载。molclus会不断改进、更新。

如果molclus在你的文章中被使用,必须正确引用,基本格式为(可根据期刊要求修改):
Tian Lu, molclus program, Version x.x, http://www.keinsci.com/research/molclus.html  (accessed 月 日, 年)
这里的月、日、年就是你下载Molclus程序的日期。笔者在未来会专门撰写介绍Molclus的文章发表,届时请引用论文(发表后会在molclus官网和此帖中提及)。

在通过分子动力学程序,或者molclus自带的gentor/genmer组件,或者Confab等程序产生记录了大量初始结构的.xyz格式的轨迹文件之后,molclus就可以调用计算程序对其中的结构进行优化或者能量计算了。molclus目前支持调用以下程序:
• Gaussian:支持G09及之后版本。这是最最常用的做量子化学计算的程序,收费。Gaussian也支持UFF/AMBER/Dreiding分子力场计算,比半经验方法又快出两数量级乃至更多
• ORCA:网址https://orcaforum.cec.mpg.de/。免费。这是第二流行的量子化学程序。由于其RI技术利用得很好,在纯泛函、双杂化泛函下比Gaussian快得多得多,还支持又非常精确又能算得动中等大小体系的DLPNO-CCSD(T)。
• MOPAC:支持2012及之后的版本,网址http://openmopac.net。免费。专门做半经验计算,它支持的PM6-DH+或PM7对有机体系通常足矣得到定性合理的结果,而速度比DFT快两个数量级,故很适合用于中、大体系的优化
• xtb:做GFN-xTB方法计算的程序,免费。此方法相当于半经验的DFT,精度整体强于各种半经验方法,特别是普适性更好,而且xtb速度比MOPAC更快,在此文中有安装方法和基本用法介绍:《将Gaussian与Grimme的xtb程序联用搜索过渡态、产生IRC、做振动分析》(http://sobereva.com/421
• Open Babel:网址http://openbabel.org/wiki/。免费。此程序主要用于转换化学领域的文件格式,但也可以实现MMFF94高精度有机分子力场以及其它一些力场的计算

可以说,molclus支持的Gaussian、ORCA、MOPAC、xtb和Open Babel程序把不同尺度、不同精度范围都覆盖了,精度&耗时的基本关系是:高级别后HF > DFT > 半经验/GFN-xTB > 分子力场,这些方法都可以由上述程序实现。如果读者不熟悉ORCA和RI,建议参看《详谈Multiwfn产生ORCA量子化学程序的输入文件的功能》(http://sobereva.com/490)当中的介绍,如果不熟悉MOPAC,可参看本文中的相关信息:《大体系弱相互作用计算的解决之道》(http://sobereva.com/214)。分子团簇和弱相互作用关系极为密切,必须选择合适的计算级别,否则团簇搜索将毫无意义。不熟悉弱相互作用计算的话建议看看《乱谈DFT-D》(http://sobereva.com/83)、《谈谈“计算时是否需要加DFT-D3色散校正?》。(http://sobereva.com/413)。


2.2 使用方式

以下是molclus使用的流程框图:



Molclus通常有以下使用方式,各有长处,可根据实际情况决定最佳组合:
● Molclus自带的genmer程序结合Molclus:用于分子团簇或原子团簇构型搜索,使用简便。对于分子团簇搜索这通常是首选。唯一局限性是对分子的构象考虑不够充分,因为genmer将分子当成刚性来堆积,因此不适合单分子柔性很强的情况(这种情况适合后面说的做动力学程序结合molclus)。相关介绍和示例看《genmer:生成团簇初始构型结合molclus做团簇结构搜索的超便捷工具》(http://bbs.keinsci.com/thread-2369-1-1.html
● Molclus自带的gentor程序结合Molclus:用于分子构象搜索。使用简便,但不支持环状区域构象搜索(环状区域是指诸如环己烷这样有多种构象的环状区域)。对于可旋转的键不很多的分子的构象搜索这是首选,可控性最强。相关介绍和示例看《gentor:扫描方式做分子构象搜索的便捷工具》(http://bbs.keinsci.com/thread-2388-1-1.html
● 第三方的Confab或Frog2构象生成程序结合Molclus:用于分子构象搜索。使用最为傻瓜化,但不支持环状区域构象搜索、不支持普通有机分子以外的情况。相关介绍和示例看《将Confab或Frog2与Molclus联用对有机体系做构象搜索》http://bbs.keinsci.com/thread-20063-1-1.html
● xtb程序跑动力学轨迹结合Molclus:普适性极强,用于构象搜索、原子/分子团簇构型搜索皆可,使用容易。但由于模拟时间长度有限,有动力学采样不充分导致遗漏构型/构象的风险(风险随动力学模拟时间增长而减小)。相关介绍和示例看《使用Molclus结合xtb做的动力学模拟对瑞德西韦(Remdesivir)做构象搜索》(http://bbs.keinsci.com/thread-16255-1-1.html
● GROMACS等经典力场分子动力学程序结合Molclus:用于分子团簇搜索和分子构象搜索。使用稍繁琐,因为得创建拓扑文件,且被动力学模拟的体系必须有恰当的力场,好处是动力学模拟耗时极低,因此动力学采样不充分导致遗漏构型/构象的风险很小。相关介绍和示例看《使用molclus程序做团簇构型搜索和分子构象搜索》(http://bbs.keinsci.com/thread-577-1-1.html)。不了解GROMACS使用的话推荐通过《北京科音分子动力学与GROMACS培训班》(http://www.keinsci.com/KGMX)学习相关使用知识。

molclus的基本使用流程如下:
(1) 产生记录所有初始结构的多帧traj.xyz文件。通常有这些做法:
● 用分子动力学程序模拟团簇或单个分子,每隔一定步数将结构写入一次轨迹;也可以做周期性退火,将对应0 K的帧写入轨迹。令轨迹名为traj.xyz(如果程序不支持输出xyz轨迹格式,可用免费的VMD程序将其私有轨迹格式转化为.xyz格式的轨迹)。
● 用molclus程序自带的gentor产生含有一批分子初始构象的traj.xyz文件。见《gentor:扫描方式做分子构象搜索的便捷工具》(http://bbs.keinsci.com/thread-2388-1-1.html)● 用genmer工具产生含有一批团簇初始构型的traj.xyz文件。见《genmer:生成团簇初始构型结合molclus做团簇结构搜索的超便捷工具》(http://bbs.keinsci.com/thread-2369-1-1.html
● 用Confab直接产生含有分子的一批随机的构象的traj.xyz文件。见《将Confab或Frog2与Molclus联用对有机体系做构象搜索》(http://bbs.keinsci.com/thread-20063-1-1.html
(2) 对于让molclus调用Gaussian、ORCA或MOPAC的情况,需提供这些量子化学程序的模板文件并放到当前目录下。对于Gaussian程序,名为template.gjf;对于ORCA,名为template.inp;对于MOPAC,名为template.mop。模板文件里要写好调用这些程序计算时要用的关键词,如理论方法、基组、相关关键词(内存分配量、辅助SCF收敛的设定、优化的关键词和选项等),但是坐标部分写成[GEOMETRY]。molclus计算时会自动将[GEOMETRY]字段替换为traj.xyz里的结构,然后传递给这些量子化学程序执行。对于调用xtb和Open Babel的情况,不需要设定模板文件,因为这俩本身就是通过命令行调用的。
(3) 设定好molclus的参数文件settings.ini指定任务类型和运行设置,详见2.3节。
(4) 启动molclus。molclus会载入traj.xyz、settings.ini和模板文件,然后自动调用量子化学或分子力学程序对traj.xyz的每一帧结构进行优化,并将优化好坐标和能量写入到当前目录下的isomers.xyz文件中(molclus很灵活方便,也可以直接对每帧结构做比如优化+振动分析+高精度单点能计算,这种情况molclus会把坐标、自由能、自由能的热校正量和虚频数目写入到isomers.xyz中,也同时输出在屏幕上)
(5) 启动molclus中附带的isostat工具,载入上一步得到的isomers.xyz,此工具会对其中的结构根据能量进行排序并进行统计、去除能量和几何结构相似度过高的重复结构。isostat在当前目录下输出的cluster.xyz文件就是根据能量从低到高排列并且去除了重复结构后的文件,可以载入VMD来方便地观看每个结构。之后还可以根据提取的各结构的能量,输出指定温度下各个构型的波尔兹曼分布比例(原理见《根据Boltzmann分布计算分子不同构象所占比例》http://sobereva.com/165)。isostat支持并行计算来大大降低耗时,在启动时可以设置并行核数。

如果想使用比结构优化更高级别的方法精确计算每个结构的能量,可以把settings.ini里的itask改为1,把模板文件改成单点任务所用的关键词,再把cluster.xyz改名为traj.xyz,然后启动molclus。此时molclus就会调用量子化学程序对其中每个结构再做一次单点计算,可以再次用isostat进行统计筛选。

程序的安装与运行:Molclus本身不需要安装就可以直接启动。在Windows下启动molclus就是双击molclus.exe图标。在Linux下启动就是进入molclus所在目录,输入./molclus(有时需要先用chmod +x ./molclus加上可执行权限)。每次程序运行前,会对当前目录下.out、.arc等量子化学或分子力学程序之前产生的临时文件进行清理,所以如果有重要的临时文件在当前目录下,执行molclus前应当先手动将它们挪至别处。

Windows版molclus包里有isostat.exe和isostat_32bit.exe。如果你的机子是64位系统,一定要用前面的。后面那个纯粹是给仍然在用32bit系统的人用的,对内存可使用量限制较大,对巨大的isomers.xyz进行筛选可能会崩溃,而且不支持并行计算。

如果你想中断molclus的运行,可以直接在molclus运行窗口里按Ctrl+C终止。还有一种做法是在当前目录下创建名为STOP的空文件,molclus每开始循环traj.xyz里的一个结构时,一旦发现当前目录下有名叫STOP的文件就会自动结束任务。

如果你想让molclus在远程服务器上一直运行,不会因为断开与服务器的连接后自动中断,应当运行比如nohup ./molclus > out.txt &,然后要断开终端时输入exit以优雅的方式断开,这样molclus就会在服务器上一直跑直到结束。molclus输出信息都会被输出到out.txt里,可以随时打开查阅,也可以运行tail -f out.txt来实时监控新写入到此文件里的内容便于跟踪计算进度。

超算上的使用:对于在超算等特殊情况下使用,必须需要通过提交的方式执行上述量子化学程序,有可能molclus没法自动调用那些程序。为此molclus程序包里还提供了xyz2QC工具来解决这个问题,请参看《将多帧xyz文件转化成量子化学输入文件的工具:xyz2QC》(http://bbs.keinsci.com/thread-12468-1-1.html)。如果你之前没接触过xyz文件格式,建议你看一看《谈谈记录化学体系结构的xyz文件》(http://sobereva.com/477)。另外,有molclus用户针对在集群上通过PBS作业提交方式使用molclus的方法做了介绍,见:http://bbs.keinsci.com/thread-15598-1-1.html

相关程序的安装:如果你不会装Gaussian,看http://sobereva.com/439;如果不会装ORCA,看http://sobereva.com/451;如果不会装MOPAC,看http://sobereva.com/262。如果不会装xtb,看http://sobereva.com/421。Open Babel在Windows下安装很简单,直接启动安装程序然后一直下一步即可,对于Redhat派系的Linux系统(如CentOS),用yum install epel-release添加EPEL源后用yum install openbabel即可安装。


2.3 参数文件settings.ini

molclus目录下的settings.ini在molclus启动时会被载入,其中记录了运行参数,在下面进行介绍(此文件里的注释也有描述)。实际情况需要改什么就在原文件基础上修改,注意格式别改乱了,用不到的设置也不要自己删掉。通常做一个新任务只需要改两、三个参数就够了。

iprog:molclus调用的量子化学或分子力学程序。1=Gaussian;2=MOPAC;3=ORCA;4=xtb; 5=Open Babel
ngeom:0=处理traj.xyz里每一帧;n=处理前n帧;也可以直接指定考虑的帧号,如2,5-8,12-14(如果只处理比如第6帧需要写6-6)。利用这个结合下面说的iappend=1可以实现续算等目的
itask:对traj.xyz里每一帧所做的任务类型。0=几何优化;1=计算单点能;2=振动分析;3=优化+振动分析;-1=热力学组合方法计算(仅对Gaussian有效)
注:对于Gaussian、ORCA、MOPAC这样需要设置template模板文件的情况,itask仅决定按照什么任务的形式来从输出文件中提取数据,而所做的任务的关键词需要照常写(如itask=0的时候,模板文件里得照常写优化的关键词opt及相关选项,例如对于Gaussian可以是opt(gdiis,maxstep=5,notrust))。而对于xtb和Open Babel,并不需要设模板文件,itask直接就决定了在调用时做什么任务。
ibkout:1=每处理完一帧结构,把程序的输出文件备份,以便之后检查或根据自己的需要提取其它数据。比如对于第5帧结构,Gaussian的输出文件会备份到gau00005.out,ORCA的会备份到orca00005.out,MOPAC的会备份到MOPAC00005.arc;0=不做备份,因此molclus运行完毕后将找不到计算程序中间输出的文件;2=只备份成功的任务;3=只备份失败的任务;-1=对于调用Gaussian或ORCA的情况,如果发现当前目录下有以前备份好的文件(如gau00002.out、orca00005.out),则Molclus会直接读里面的数据而不再重新计算
distmax:n=如果结构中任意两个原子间的距离超过n埃则跳过这一帧。做团簇动力学的时候,有可能某个分子跑飞了,对这样的结构优化没有意义,利用这个参数就可以忽略掉此结构。如果设0的话,可以从一个文本文件里读取更精细的设置,能设置某一批和另一批原子间必须满足的最近和最远距离,违背要求的结构将被跳过,详见http://bbs.keinsci.com/thread-28128-1-1.html
ipause:1=对于Gaussian和ORCA,计算出错(如不收敛)则暂停,以便用户对输出文件进行检查,然后可以按回车继续处理下一帧结构;2=每处理完一个结构后都暂停;0=总是不暂停
iappend:0=新产生的结构会覆盖原有的isomers.xyz文件;1=新产生的结构会续写到当前目录下之前的isomers.xyz文件(如果有的话)末尾,若没有则会新建之
freeze:设置含有优化过程的任务中原子的冻结情况。0代表不做冻结,设成诸如1,4-6,8-10代表对1,4,5,6,8,9,10原子的笛卡尔坐标进行冻结。对Gaussian/ORCA/MOPAC/xtb有效

为了避免有些人糊涂,在这里提供一个表格,明确说明molclus支持哪些任务(itask)和哪些程序的组合。绿色代表支持,棕色代表不支持。绿色里如果有文字的话,说明需要在模板文件里体现相应的关键词


----以下是Gaussian专用的参数----
gaussian_path:调用Gaussian的命令,比如"/sob/g09/g09"、"D:\study\g16w\g16.exe"。在linux下如果Gaussian已正常安装了,可以只写诸如g09或g16。如果路径中有空格,路径两边必须加上双引号,后同
[注意:如果是Windows版Gaussian,gaussian_path必须指向诸如g09.exe而不能是g09w.exe,因为后者只是前者的一个图形界面而已。另外,运行前还必须进入“控制面板”-“高级系统设置”-“高级”-“环境变量”,添加GAUSS_EXEDIR环境变量,使之指向Gaussian目录(不是指向可执行文件名),如D:\study\g09w,否则Gaussian没法以命令行方式运行,也因此molclus将没法调用Gaussian。另外,不要用太老的G09版本,比如年代久远的G09 A.01、A.02版可能没法被molclus支持]
igaucontinue:1=如果优化失败,则会基于另一个模板文件template2.gjf对之前最后一帧结构继续优化,如果还失败了会再基于template3.gjf继续优化;0=不做这个处理。igaucontinue=1的主要用处在于给用户更多备选方案。比如可以在template.gjf里写常规的优化关键词(并且步数上限设得比较有限,如80),而在template2.gjf、template3.gjf里使用更有助于收敛的关键词,诸如calcfc、GDIIS、opt(maxstep=x,notrust)等等。这样当第一次优化不收敛的时候,就会自动利用其它模板文件里的关键词进一步优化。关于辅助收敛的方法,在此贴有汇总:《量子化学计算中帮助几何优化收敛的常用方法》(http://sobereva.com/164)。另外,有时候优化过程中途出现三个原子排成直线而报错,靠igaucontinue=1可以实现基于之前的结构继续优化,通常也能进一步优化下去。
energyterm:molclus是从Gaussian输出文件中末尾的archive字段部分读取电子能量的,这个选项用于设定读取哪项。对于HF/DFT计算,这个参数应设为HF=,即读取HF=这个字符串后面紧跟着的那个数(HF/DFT能量)。如果是MP2或双杂化泛函计算,就应当设MP2=;如果是CCSD(T),就应当设CCSD(T)=,以此类推,不懂的话仔细看http://sobereva.com/488。如果模板文件设的是TDDFT激发态计算,且这个参数设的是TD=,则molclus会读取激发态能量(TD里root选项指定的态),从而可以做激发态构型/构象搜索。
molclus也可以从Gaussian的热力学组合方法输出中读取指定的热力学量,当itask被设为了-1,template.gjf里的关键词比如设成了# G4,如果将energyterm定义为"G4 Free Energy="(此处的双引号必须写),则molclus就会从输出文件里面找这个字段来读取G4方法算的自由能。
对于freq (itask=2)和opt freq (itask=3)任务不需要设这个,因为总是读取的直接输出的自由能(但如果用提供了template_SP.gjf让molclus在这两种任务后自动算高精度单点来得到较准确自由能,则需要设这个来指定从单点任务中读取什么能量,见后文)。
ibkchk:和ibkout的用法一样,但这个控制的是如何备份.chk文件

----以下是ORCA专用的参数----
orca_path:ORCA可执行文件的路径,比如"D:\study\ORCA4\orca.exe"、"/sob/ORCA4/orca"
ibkgbw:和ibkout的用法一样,但这个控制的是如何备份.gbw文件
ibktrj:1=把每次优化后产生的后缀为_trj.xyz的文件改名为orca[帧号].xyz备份出来。这是优化过程的轨迹文件,因此可以用VMD直接观看优化过程
ibkhess:1=把每次振动分析或优化+振动分析后产生的.hess的文件改名为orca[帧号].hess备份出来。这是Hessian文件,以便用户之后以某些方式利用之
mpioption: ORCA并行运算时传递给MPI的额外选项。默认为none,即什么也不设。此选项有特殊的用处,例如在root下通过较新版本OpenMPI运行ORCA,不带--allow-run-as-root选项就运行不了,此时可以设定mpioption= --allow-run-as-root来解决此问题。如果参数里面有空格,应当写成比如mpioption= " '--bind-to core' "

----以下是MOPAC专用的参数----
mopac_path:MOPAC可执行文件的路径,比如"C:\Program Files\MOPAC\MOPAC2016.exe"、"/sob/MOPAC2016/MOPAC2016.exe"。

----以下是xtb专用的参数----(molclus总是通过"xtb"命令调用xtb,因此不用指定其可执行文件路径)
xtb_arg:xtb程序运行时额外接的参数,要用双引号扩住,比如"--chrg 1 --uhf 1"代表体系电荷为1,alpha电子比beta电子多1个。(虽然自行使用xtb做优化时应加上--opt,但不要写在此处,因为molclus会根据任务类型自动加上)

----以下是Open Babel专用的参数----(以正常方式安装好Open Babel后molclus即可直接调用,不用指定其可执行文件obabel的路径)
obabel_FF:Open Babel中使用的力场。建议用MMFF94,是最准确的有机分子力场,但支持的元素也仅限有机体系所涉及的。目前的Open Babel里还可以用UFF、ghemical、GAFF力场
obabel_param:Open Babel运行时额外加入的参数,比如--steps 2500代表几何优化做2500步。(注意,2.4版之前的Open Babel使用默认的共轭梯度法优化时有bug,应加上--sd改为最陡下降法优化)

----以下是Shermo专用的参数----
Shermo_path:Shermo程序(http://sobereva.com/soft/shermo)的可执行文件的路径,必须用Shermo >=2.3版。如果此路径设置正确,则molclus调用Gaussian或ORCA做振动分析或优化+振动分析后,会自动调用Shermo来计算自由能而不直接从Gaussian和ORCA输出文件里读取。Shermo在这方面计算上比Gaussian和ORCA自己的代码更为强大、灵活、稳健
T:Shermo程序计算自由能用的温度(K)
P:Shermo程序计算自由能用的压力(atm)
sclZPE:Shermo程序计算自由能时ZPE部分用的频率校正因子
ilowfreq:低频模式的处理方式。0=RRHO模型(和Gaussian相同,不推荐),1=将低于100波数的频率提升到100波数,2=用Grimme的准RRHO方法模型(强烈推荐!对柔性大体系比RRHO模型精确得多,详见Shermo程序原文里的介绍)


2.4 技巧&细节

xyz格式:xyz是一种格式非常简单的可用记录多帧结构的格式,可以直接用文本编辑器手动编辑,因此用户可以自由修改traj.xyz、cluster.xyz和isomers.xyz的内容,从而控制molclus处理哪些结构,或者手动提取特定结构、删除多余的结构等。molclus完全基于.xyz文件,这使得molclus非常灵活。不懂xyz格式的话可以参看《谈谈记录化学体系结构的xyz文件》(http://sobereva.com/477)。

直接产生高精度自由能:在便宜级别下做优化和振动分析,而在高精度级别下算电子能量,二者相加来得到较准确的自由能是司空见惯的做法,看比如《谈谈隐式溶剂模型下溶解自由能和体系自由能的计算》(http://sobereva.com/327)。Molclus的振动分析(itask=2)和优化+振动分析(itask=3)任务直接支持这种做法。具体做法是在当前目录下提供template_SP.gjf(template_SP.inp)文件,设置Gaussian(ORCA)高精度单点计算的关键词,格式同template.gjf(template_SP.inp)。之后,当优化或优化+振动分析任务结束后,程序发现当前目录下有template_SP.gjf(template_SP.inp)时就会用其中的信息构成单点任务文件并调用Gaussian(ORCA)计算,然后自动将新算出来的单点能与前面算的自由能热校正量相加作为最终能量输出。几个细节:
(a)如果template.gjf和template_SP.inp同时存在,优先考虑template_SP.inp
(b)opt、opt freq任务用的程序与自动算高精度单点的可以不同,比如iprog=1调用Gaussian时也可以通过在当前目录下提供template_SP.inp来令程序自动调用ORCA算高精度单点
(c)利用template_SP.gjf基于Gaussian自动算高精度单点时,Gaussian用户需要在settings.ini里对energyterm参数恰当设置,用于指定如何读取这个级别的单点任务输出文件里的能量

molclus运行意外原因中断的续算方式:比如traj.xyz里总共有1000个结构要算,算到第180个结构的时候没算完就意外中断了,此时就把settings.ini里的ngeom设为180-1000,把iappend设为1,然后重新启动molclus计算,程序就会把之前没算的第180~1000个结构算完,并且把新产生的结构续写到之前产生的isomers.xyz里。这样,最后得到的isomers.xyz里就有1000帧了,和一次性全跑完得到的精确一样。

同时运行多个molclus:molclus可以同时运行多个以试图节约时间。大家都知道支持并行的计算程序的计算耗时不会和调用的核数线性相关,随着核数增加并行效率必然会愈发降低。比如你的机子核数很多,有56核,traj.xyz里有1000个结构需要处理,你希望降低molclus处理这个traj.xyz的总耗时,那么你可以比如把molclus文件夹复制成四份,比如分别叫molc1、molc2、molc3、molc4,分别将这四个目录下的settings.ini里的ngeom设为1,250、251,500、501,750、751,1000。然后开启四个终端,分别进入这四个目录并且运行molclus。等都运行完了,使用这条命令把四个目录下产生的isomers.xyz合并在一起:
cat molc1\isomers.xyz molc2\isomers.xyz molc3\isomers.xyz molc4\isomers.xyz > isomers.xyz
之后用isostat对这样的isomers.xyz产生的统计结果,和只跑一个molclus但是一次性考虑所有1000个结构的情况是完全一样的,而总耗时能降低不少。类似地,如果你有很多台机子可用,也可以这样把一个任务分开在不同机子上计算,然后把不同机子上的isomers.xyz合并到一起。
注:对于分割运行的数目非常多的情况,手动操作麻烦,可以考虑使用ggdh开发的辅助工具《分解合并Molclus任务的小脚本splitMC》(http://bbs.keinsci.com/thread-14361-1-1.html)。
为了灵活,molclus也可以直接指定设置文件和初始结构文件的路径。例如molclus /RAS/Layer.ini代表将/RAS/Layer.ini作为设置文件。再比如molclus lock.ini /RAS/chu2.xyz代表用当前目录下的lock.ini的设定对/RAS/chu2.xyz里的结构进行计算。因此设置文件和初始结构文件并非只能是当前目录下的settings.ini和traj.xyz。
isostat运行时可以结合各种参数。比如执行isostat Rize.xyz -Nout 8 -Eout 2.4 -Edis 0.5 -Gdis 0.2 -T 350 -nt 32命令,代表将当前目录下的Rize.xyz作为输入文件,往cluster.xyz里导出的簇是能量最低的8个且相对能量还必须在2.4 kcal/mol以内。使用0.5 kcal/mol和0.2埃分别作为归簇的能量和几何偏差判据。计算Boltzmann分布使用350K。使用32个线程并行计算。凡是通过命令行指定的参数就不需要在交互式界面里再输入。忘记这些选项怎么写的话可以随时运行isostat -h查看。

isostat的算法:有用户对isostat程序的运行机制感兴趣,这里具体交代一下。isostat使用能量和几何结构偏差作为判断两个结构是否相似的标准,同时小于两个阈值才算相似。几何结构在判断时是基于距离矩阵来比较的(因此对比前isostat并不会对两个结构做对齐(align),也不要求原子间序号顺序一致)。isostat会循环输入的.xyz里的每个isomer。对于输入文件里第一个isomer,或者当前isomer和之前已有的所有簇都不相似,那么这个isomer将被作为一个新的簇,此簇的能量、结构也等同于这个isomer。若当前isomer与之前某个簇相似(能量和结构差异都同时小于自设的阈值),那么这个isomer就被认为归入了这个簇,因此这个簇的容量会+1;如果与此同时这个isomer的能量比这个簇的能量更低,那么这个isomer将被作为这个簇的代表,即使用这个isomer的能量和结构作为这个簇的能量和结构。等所有isomer都循环完之后,程序就会输出各个簇的绝对能量,相对于能量最低的簇的能量差(DE),以及这个簇与与它结构最相近的另一个簇的原子间距偏差最大值(DGmin)。显然,最终得到的簇的数目<=isomer的数目。两个isomer的结构差异在isostat中是这样算:根据isomer的原子坐标计算距离矩阵,将其非对角元转化为一维数组形式,并从小到大进行排序,这称为原子间距数组。两个isomer间的结构差异用二者的距离间距数组的差值数组的绝对值的最大值来衡量。

traj.xyz和settings.ini也不是必须叫这俩名字、必须放到当前目录下。如果molclus启动时发现当前目录下没有这俩文件,会直接提示用户输入,因此也可以命名为便于分辨的名字。





下面,本文将示例如何将GROMACS或AMBER分子动力学程序、molclus程序和量子化学程序相结合进行团簇构象搜索和分子构型搜索。如果你不打算利用这俩分子动力学程序产生初始结构(其实一般也没必要,因为过程较麻烦),那么可以把下面例子中的动力学部分直接略过,直接参考基于molclus做搜索的部分,之后再看以下文章分别了解怎么用gentor、genmer、xtb、Confab明显更便利地产生初始结构并结合molclus做搜索:
《gentor:扫描方式做分子构象搜索的便捷工具》(http://bbs.keinsci.com/thread-2388-1-1.html
《genmer:生成团簇初始构型结合molclus做团簇结构搜索的超便捷工具》(http://bbs.keinsci.com/thread-2369-1-1.html
《使用Molclus结合xtb做的动力学模拟对瑞德西韦(Remdesivir)做构象搜索》(http://bbs.keinsci.com/thread-16255-1-1.html
《将Confab或Frog2与Molclus联用对有机体系做构象搜索》(http://bbs.keinsci.com/thread-20063-1-1.html
如果你虽然想基于动力学程序产生初始结构,但是又不太会用GROMACS、AMBER等基于经典力场的分子动力学程序,那么建议用上面帖子里提到的通过xtb程序跑动力学,方便得多得多。


3 分子团簇构型搜索实例:(H2O)4

此例我们通过molclus结合GROMACS分子动力学程序以及MOPAC、Gaussian 09 D.01量子化学程序搜索(H2O)4团簇构型,这个团簇已经被很多文章研究过了。这里用这种很小的团簇进行示例仅是为了节约时间,对无论多大的团簇计算过程基本都是一样的。

GROMACS是免费、最主流、速度快且很好用的小分子溶液和生物大分子的分子动力学模拟程序,所以我们这里用GROMACS 4.6.7,编译方法参见《Gromacs 5.0与4.6.7编译方法》(http://sobereva.com/247),较新版本的见《GROMACS的安装方法(含全程视频演示)》(http://sobereva.com/457)。大家也可以用其它自己擅长的动力学程序,只要能产生VMD能支持的轨迹就行,因为我们要靠VMD来把轨迹转为molclus能读取的.xyz轨迹格式(当然啦,如果自己有其它办法能转成.xyz轨迹格式也行)。

动力学我们用NVT系综。对于当前体系实际上不用周期边界条件也行。不过对于较大团簇的话,当模拟温度较高时,可能模拟过程中外侧的某个分子跑着跑着就飞了,越飞越远,之后的轨迹就没意义了。而如果用了周期边界条件,它飞过边界后还会跑回来。

GROMACS模拟部分所有涉及到的文件都可以在这里下载,如果有的地方不清楚直接看里面的文件就明白了。
H20_4_MD.rar.rar (55.96 KB, 下载次数 Times of downloads: 2531)


3.1 准备模拟体系

对H2O我们就用SPC/E水模型,它的拓扑文件是Gromacs自带的,就是gromacs/top/gromos54a7.ff/spce.itp。我们用gview之类工具画一个水分子,保存成H2O.pdb。由于spce.itp里氧原子名字为OW,两个氢原子名分别为HW1和HW2,所以我们也把pdb里的原子名改为与之对应的。

然后建立个文件夹用于存放模拟相关的文件。把H2O.pdb放进去,并建立一个空盒子文件emptybox.gro,盒子各边长都为1nm,内容如下:
  1. emptybox
  2. 0
  3.    1.0 1.0 1.0
复制代码

运行此命令往这个小盒子里加入4个H2O
genbox -cp emptybox.gro -ci H2O.pdb -o H2O_box.gro -nmol 4

:本文的Gromacs的操作是对于4.x版而言的。如果你是gromacs >= 5.0版用户,不用按上面步骤建立emptybox.gro,直接写gmx insert-molecules -box 1 1 1 -ci H2O.pdb -o H2O_box.gro -nmol 4就行了。而且后文的mdrun应改为gmx mdrun,grompp应该为gmx grompp。

然后运行
editconf -f H2O_box.gro -o H2O_box2.gro -d 2
此命令重新建立了盒子,是围绕这四个水在各个方向延展2nm得到的,这使得这4个水处在这个大盒子中间区域,而且盒子尺寸也大于非键作用cutoff距离的两倍。(也有其它建立初始结构的方法,比如用packmol生成初始结构,可控性更高)

编写当前体系的拓扑文件system.top,内容如下
  1. #include "gromos54a7.ff/forcefield.itp"
  2. #include "gromos54a7.ff/spce.itp"

  3. [ system ]
  4. 4*H2O

  5. [ molecules ]
  6. SOL 4
复制代码
之所以[ molecules ]部分这么写,是因为spce.itp当中水的分子名是SOL。


3.2 动力学模拟

我们用1fs步长,模拟1000000步(1ns),每隔10000步(10ps)保存一次坐标,共会得到101帧。保存间隔太大则需要更多的模拟时间,而太短的话则相邻两帧结构往往差异较小,优化后会容易收敛到相同的结构。对于这种小团簇来说,动力学模拟的耗时是可以忽略不计的,所以间隔可以设大些,但太大也没意义。关键是获得的帧数要足够多。

特别需要注意的一点是,像水团簇这样以静电作用为主导的团簇构型(氢键的本质主要是静电作用),如果直接模拟的话,由于氢键作用太强,团簇结构很稳固,总是在最稳定的那几个结构中变化,难以跑到高能结构上。虽说提高模拟温度可以让不同结构之间变化得更容易,但是实际做过就会发现,温度设很高后虽然团簇没这么牢固了,结构变化更自由了,却很容易跑散,最终还是得不到能量较高的构型。因此,我们要人为把静电作用削弱,这里我们用epsilon-r=4关键词来把相对介电常数由默认下真空的1改为4,即静电相互作用被削弱到了1/4。此时,氢键维持的高度有序的结构就容易被热运动破坏了,缺乏取向性的范德华作用对于保持团簇状态的重要性也大为提升了。

由于氢键被我们削弱了,范德华作用的强度又远远低于氢键,因此我们模拟所用的温度也必须比一般化学直觉要低得多,不然肯定跑散了。应该对模拟温度进行几次测试,摸索出尽可能高但又保证团簇不散架的温度。对于此例,我们发现60K比较理想。注意不宜一上来就控温到60K,否则由于初始动能太大靠前的一些帧容易散架。因此我们需要利用gromacs的退火设定,设起始温度为0K,在前60ps内线性升温至60K(即1ps升温1K),然后一直保持在60K。

非键相互作用用最简单直接的cut-off方式计算就行了,1.4nm截断距离完全绰绰有余了。

以下是我们模拟用的参数文件md.mdp
  1. integrator = md
  2. dt = 0.001 ; ps
  3. nsteps = 1000000
  4. nstxtcout = 10000
  5. ;
  6. pbc = xyz
  7. rlist = 1.4
  8. coulombtype = cut-off
  9. rcoulomb = 1.4
  10. vdwtype = cut-off
  11. rvdw = 1.4
  12. ;
  13. epsilon-r=4
  14. Pcoupl = no
  15. Tcoupl = v-rescale
  16. tau_t = 0.5
  17. ref_t = 100
  18. tc_grps = system
  19. annealing = single
  20. annealing_npoints = 2
  21. annealing_time = 0 60
  22. annealing_temp = 0 60
  23. constraints = h-bonds
复制代码
(ref_t这个参数此时无意义,因为退火设定已经设了温度了,但不写的话程序会报错)

执行下列命令开始模拟
grompp -f md.mdp -c H2O_box2.gro -p system.top -o md1.tpr
mdrun -v -deffnm md1
因为体系很小,几秒钟就模拟完了。


3.3 观看和转换轨迹

把H2O_box2.gro载入VMD,然后在VMD main里选择它,在上面点右键,选delete frames,点delete按钮,这样目前的这一帧,即初始结构就被删掉了。再右键选Load Data into Molecule,选md1.xtc。当前共有101帧,编号为0~100。从轨迹上看,体系没有跑散,而且结构波动还是比较大的,因此适合作为molclus的输入结构。

像当前例子这么小的体系,虽然极小点结构最多超不过10个,但是由于轨迹中的很多结构优化后都会收敛到相同结构,而且还有可能碰上优化不收敛之类的问题,因此我们要从轨迹中取至少几十帧才有可能把各种构型都找全,特别是找到其中高能结构。如果目的只是为了找到能量最低构型,难度显然会低不少,用的帧数也可以少一些。

我们这里把轨迹中所有帧都保存成.xyz轨迹格式。在VMD Main窗口里点击当前项目,点右键选Save coordinate,file type设为xyz,然后点save,输入traj.xyz,这个文件就可以用作molclus的输入了。如果觉得帧数太多算不动,或者想排除掉对应升温过程的帧,也可以在保存轨迹时使用First和Last设定保存范围,以及stride设定每隔几帧保存一次。

特别注意:标准的.xyz文件对各个原子记录的是元素名,而不应当是原子名。但是,按照上述方式载入gro和轨迹文件,再转换出的traj.xyz里记录的却是原子名,如果你用文本编辑器打开traj.xyz就会看到里面每个水包含OW、HW1、HW2,这都是GROMACS模拟过程中水分子里的氧原子和两个氢原子的原子名。一般情况下,用molclus读入traj.xyz之前,应当手动把这些原子名替换为对应的元素名,这样才能100%确保molclus能正常工作、结果有意义。但是,由于周期表里没有叫做OW、HW1、HW2的元素,因此molclus在读取的时候会进一步试图通过首字母判断元素,因此molclus是可以恰当地将这三种原子判断为氧原子和氢原子的,因此接下来的分析也没有问题。但为了稳妥,建议最好还是先把traj.xyz里的原子名手动替换为元素名,否则元素判断错误时结果将明显和实际不符(比如如果有个碳原子的原子名叫CA,那么就会被molclus视为钙原子,那之后的任务肯定就没意义了)。


3.4 molclus+MOPAC做初步优化

这一节涉及到的molclus的相关的文件在此:
molclus_MOPAC2012.rar (37.5 KB, 下载次数 Times of downloads: 1429)

虽说这个体系比较小,DFT优化一个结构不会很耗时,但是我们这里要优化101帧结构,直接用Gaussian做DFT优化还是颇耗时的。而且轨迹中的结构由于热运动,偏离极小点往往比较远,优化不仅需要的步数很多,还经常容易发生震荡,或者坐标系出现问题(Gaussian的一个老毛病)导致优化了半天最终却失败。一个比较机智的方法是先用MOPAC在半经验方法下预优化一下(或者用xtb程序预优化),瞬间就能把这么多结构都优化完,而且几乎不会报错。但是优化出的结构的质量还只能算是作为精确计算的初猜的水平,没法直接用,因此之后还得再用DFT来精炼一下。虽然Gaussian也支持很多半经验方法,其中PM6-D3和PM7描述弱相互作用也不赖,但速度比起MOPAC还是慢很多。本例用的PM6-DH+用于氢键计算在半经验的层面上算是最理想的选择之一。

在molclus文件夹下编写一个MOPAC输入文件的模板文件,文件名应当为template.mop,内容为
  1. PM6-DH+ precise
  2. molecule
  3. All coordinates are Cartesian
  4. [GEOMETRY]
复制代码
其中precise代表用比默认更高的数值精度进行计算。[GEOMETRY]在molclus执行过程中将被自动替换为traj.xyz的每一帧的结构并产生MOPAC输入文件MOPAC.mop。

把molclus目录下的settings.ini设定好,大部分不用改,只需要确认iprog和mopac_path是否设对,请根据2.3节的说明合理地设定。

把上一节得到的traj.xyz拷到molclus所在目录下,启动molclus。运行过程中会提示处理到了第几帧,优化是否顺利完毕,最终能量为多少。每个顺利优化完成的结构都会被记录到当前目录下的isomers.xyz里。本例的MOPAC优化转眼间就都顺利完成了,isomers.xyz最后共有101帧。用文本编辑器打开isomers.xyz就会看到每个优化后的结构坐标和能量。

isomers.xyz里这101帧里绝大多数都是重复的结构,我们用isostat工具按能量对之进行排序并去除重复结构。Windows版直接双击isostat.exe,Linux版运行./isostat就启动了isostat。启动后如果直接敲回车,它就会载入当前目录下的isomers.xyz,然后问你区分重复结构的能量阈值和几何阈值各是多少。由于几何优化的收敛精度所限,即便实际上两个结构对应于同一个极小点,结构也会稍有偏离,能量也会有所差异。在isostat中,如果两个结构间能量偏差和几何偏差都小于阈值的话,则这两个结构会被认为是相同的而去除其一,或者说,它们被归到了一个簇里。这里我们只使用能量阈值而不用几何偏差作为判断(这么做没特殊含义,这里仅作为示例),输入能量阈值时直接敲回车用默认的0.25kcal/mol,然后输入几何阈值时输入一个很大的数比如99。我们然后屏幕上就会看到isomers.xyz中每个构型的能量,以及是被当成了新的结构还是被认为和之前的结构是重复的:
Energy of structure     1 :     -0.38549952 a.u.,  new cluster
Energy of structure     2 :     -0.39920546 a.u.,  new cluster
Energy of structure     3 :     -0.39694736 a.u.,  new cluster
Energy of structure     4 :     -0.39290484 a.u.,  new cluster
Energy of structure     5 :     -0.39648044 a.u.,  new cluster
Energy of structure     6 :     -0.39694738 a.u.,  attributed to cluster     3
Energy of structure     7 :     -0.39290484 a.u.,  attributed to cluster     4
Energy of structure     8 :     -0.39637520 a.u.,  attributed to cluster     5
...

然后看到排除了重复结构后,能量由低到高排序的结果。E是体系能量,DE是相对于能量最低的构型的相对能量,DGmin是当前构型与与它构型最相近的构型的几何偏差(此例这里没意义,因为刚才没启用几何阈值来区分构型)。Count代表isomers.xyz中根据能量和距离阈值判断与这个结构相同的结构共有多少。可见能量最低的3个结构在轨迹中出现几率占了主导。
The lowest energy is     -0.39920546 a.u.
Sorting clusters according to energy...
#    1 Count:   21  E=     -0.399205 a.u.  DGmin=   0.17  DE=    0.00 kcal/mol
#    2 Count:   23  E=     -0.396947 a.u.  DGmin=   0.20  DE=    1.42 kcal/mol
#    3 Count:   37  E=     -0.396480 a.u.  DGmin=   0.20  DE=    1.71 kcal/mol
#    4 Count:    1  E=     -0.395613 a.u.  DGmin=   0.33  DE=    2.25 kcal/mol
#    5 Count:    1  E=     -0.394521 a.u.  DGmin=   0.38  DE=    2.94 kcal/mol
#    6 Count:   10  E=     -0.392905 a.u.  DGmin=   0.17  DE=    3.95 kcal/mol
#    7 Count:    2  E=     -0.391901 a.u.  DGmin=   0.50  DE=    4.58 kcal/mol
#    8 Count:    2  E=     -0.388161 a.u.  DGmin=   0.90  DE=    6.93 kcal/mol
#    9 Count:    2  E=     -0.387285 a.u.  DGmin=   0.47  DE=    7.48 kcal/mol
#   10 Count:    1  E=     -0.385500 a.u.  DGmin=   0.36  DE=    8.60 kcal/mol
#   11 Count:    1  E=     -0.384237 a.u.  DGmin=   0.90  DE=    9.39 kcal/mol

这11个结构连同能量都被记录到了当前目录下的cluster.xyz中,格式与traj.xyz一致。之后再按回车可以退出isostat,如果输入温度值可以得到此温度下各个构型的波尔兹曼分布百分比。

PM6-DH+的计算结果,主要就是作为个初筛,接下来我们用DFT对这11个结构进行二次优化和筛选。


3.5 molclus+Gaussian做优化

这一节涉及到的molclus的相关的文件在此:
molclus_G09_M062X_6-31Gx.rar (8.49 KB, 下载次数 Times of downloads: 2093)

为了节省时间,我们用便宜但对于当前体系来讲几何优化精度可以接受的M06-2X/6-31G*来做优化。编写Gaussian输入文件的模板文件template.gjf,内容如下(请自行合理地添加%nprocs、%mem等关键词)
  1. # M062X/6-31G* int=ultrafine opt(tight,maxcyc=40) nosymm

  2. Template file

  3. 0 1
  4. [GEOMETRY]

复制代码

同时,我们也写一个备用方案的模板文件template2.gjf。当基于template.gjf优化达到步数上限不收敛时,如果settings.ini里igaucontinue被设为了1,就会取最后的结构基于template2.gjf继续优化。此例template2.gjf的内容为
  1. # M062X/6-31G* int=ultrafine opt(tight,gdiis,maxstep=2,notrust,maxcyc=100) nosymm

  2. Template file

  3. 0 1
  4. [GEOMETRY]

复制代码

以这种方式写这两个模板文件是有一些考虑的。经过MOPAC预优化,初始结构偏离准确结构已经不算太远了,当基于template.gjf的默认优化设定进行优化时,如果40步还没收敛,很可能已经发生了震荡,继续优化下去可能白费功夫,因此用了maxcyc=40来设定步数上限(对此体系默认值比这个高)。在template2.gjf中,我们尝试改用其它优化方法GDIIS,并且还把步长上限设定在了很小的值,这对于解决优化末期的震荡往往很有效。nosymm关键词其实不需要写,但写了的好处在于可以令Gaussian输出文件中的结构在观看时不会突跃(这是因为默认情况下Gaussian总把结构调整到标准朝向),而且写了也不会多花时间,因为初始结构偏离对称性还是不小的,Gaussian自动判断不出对称性。

模板文件里用了int=ultrafine和opt=tight,这是因为M06-2X这类明尼苏达系列泛函对积分格点要求高,优化时用较高质量格点比较放心(从G16开始int=ultrafine已成默认,不需要再手动写)。用较严的收敛限是因为分子团簇势能面有时会很缓(尤其是范德华作用主导的情况),用默认收敛限的话构型和能量都可能不很精确,可能有零点几kcal/mol的误差,甚至会收敛到带虚频的结构上。

检查settings.ini中的各项设置。现在iprog应该从上一节用的2改为1,确认gaussian_path是否设对,igaucontinue是否已被设为了1。

删掉原先的traj.xyz,把上一节得到的cluster.xyz改名为traj.xyz作为这次的输入结构。执行molclus。根据molclus的输出我们发现,第5、6、8、9、10、11号结构第一次优化都没有收敛,但自动切换为template2.gjf继续优化后都顺利收敛了,说明利用双模板文件的方案是有效的(如果不用tight收敛限的话,第一次优化就收敛的可能性明显大得多)

算完之后,运行isostat,结果为
The lowest energy is   -305.56099830 a.u.
Sorting clusters according to energy...
#    1 Count:    3  E=   -305.560998 a.u.  DGmin=   0.49  DE=    0.00 kcal/mol
#    2 Count:    2  E=   -305.560941 a.u.  DGmin=   0.27  DE=    0.04 kcal/mol
#    3 Count:    2  E=   -305.558619 a.u.  DGmin=   0.25  DE=    1.49 kcal/mol
#    4 Count:    3  E=   -305.558223 a.u.  DGmin=   0.25  DE=    1.74 kcal/mol
#    5 Count:    1  E=   -305.557159 a.u.  DGmin=   0.49  DE=    2.41 kcal/mol

可见,之前MOPAC优化出的结构经过二次优化后又去掉了些重复的,目前有5个构型。它们的结构如下


这5个结构确实都不相同。1和5比较相似,都是非平面的,主要差异在于1比5多了一条氢键。2~4比较相似,四个氧都基本处在同一个平面上,4条氢键组成一个环,区别仅在于这四个水的氢的朝向。结构2当中,1-3号、2-4号水的氢都在平面同侧;结构3当中,1-2号、3-4号水的氢都在平面同侧;结构4当中,1-3-4号水的氢都在同侧。其中结构2的能量最低容易理解,因为对称度最高,氢键形成得最自在,而结构4的氧原子就不在一个平面上了。

为了稳妥起见,大家可以对它们都做振动分析看看是否确实无虚频,这也顺便得到了各种热力学校正量,可用于随后获得吉布斯自由能等数据。上面得到的5个结构经检验确实都无虚频。

注:为了方便,可以直接利用molclus对每个结构做振动分析。也就是把模板文件里的opt有关的关键词去掉,写上freq,然后把settings.ini里的itask改为2。运行molclus时,每计算完一个结构后就会提示这个结构的自由能、自由能热校正量,以及虚频数目,并且写入isomers.xyz。最终的isomers.xyz中,在每个结构的注释行里,G是自由能,Gcorr是自由能热校正量,Nimag是虚频数。如果你希望得到更高精度的自由能,可以比如在Linux下使用grep Gcorr isomers.xyz |cut -c 29-38命令提取对应Gcorr数据的列,将它加到下一节得到的高精度单点能上就获得了高精度的自由能,然后可以根据《根据Boltzmann分布计算分子不同构象所占比例》(http://sobereva.com/165)准确计算出这些构型在特定温度下的分布比例。

如果想直接让molclus调用Gaussian时直接做opt和freq,就把模板文件里写上opt和freq关键词,把itask设为3。这样得到的isomers.xyz里存的是优化后的结构,优化后结构下的G、Gcorr、Nimag也都体现在里面。


3.6 高精度单点能计算

现在只有5个结构了,直接手工一一处理也比较方便了。M06-2X/6-31G*的结构还说得过去,但算的能量只是定性合理,准确比较不同异构体的能量显然还是得用更高精度再计算一下单点能。

利用molclus也可以方便地对这5个结构做单点能计算。一般认为MP2算氢键比较理想(虽然MP2计算其它类型相互作用很不划算因此强烈不建议使用),故我们用Gaussian在MP2/aug-cc-pVTZ下做单点,template.gjf内容写为
  1. # MP2/aug-cc-pVTZ

  2. Template file

  3. 0 1
  4. [GEOMETRY]

复制代码

把settings.ini里的itask改为1,说明只做单点不做优化。把energyterm由HF=改为MP2=,说明molclus将从输出文件末尾读取MP2能量而非HF/DFT能量。对于其它计算级别,如果不知道energyterm该怎么写,找个小体系试试,看一下末尾部分输出信息就知道了。

删掉原先的traj.xyz,把上一节得到的cluster.xyz改名为traj.xyz,运行molclus对其中的结构进行计算。然后运行isostat,用默认的判断阈值,我们就看到了这些结构的MP2/aug-cc-pVTZ下的相对能量:
#    1 Count:    1  E=   -305.360246 a.u.  DGmin=   0.27  DE=    0.00 kcal/mol
#    2 Count:    1  E=   -305.358657 a.u.  DGmin=   0.25  DE=    1.00 kcal/mol
#    3 Count:    1  E=   -305.358541 a.u.  DGmin=   0.25  DE=    1.07 kcal/mol
#    4 Count:    1  E=   -305.353735 a.u.  DGmin=   0.49  DE=    4.09 kcal/mol
#    5 Count:    1  E=   -305.352220 a.u.  DGmin=   0.49  DE=    5.04 kcal/mol

用VMD再看一下刚得到的cluster.xyz,会发现在MP2/aug-cc-pVTZ下,居然形成平面构型的三个水团簇变成了能量最低的,而原先有6条氢键的那个现在竟成了能量最高的。

在《大体系弱相互作用计算的解决之道》(http://sobereva.com/214)一文中笔者大力推荐在ORCA里使用双杂化泛函PWPB95-D3(BJ)结合质量很高的def2-QZVPP基组做计算,精度很好,而且由于RI技术使得计算速度很快。这里演示一下molclus+ORCA在这个级别下对这些构型做单点能计算。

我们编写ORCA的单点计算模板文件template.inp,内容如下(假设用4核,每核分配约3GB内存)
  1. ! RI-PWPB95 D3 def2-QZVPP def2/JK def2-QZVPP/C rijk nopop pal4 grid4 tightscf noautostart
  2. %maxcore 3000
  3. * xyz 0 1
  4. [GEOMETRY]
  5. *
复制代码

把settings.ini里的iprog设为3。然后运行molclus即开始计算。结果如下
#    1 Count:    1  E=   -305.771954 a.u.  DGmin=   0.27  DE=    0.00 kcal/mol
#    2 Count:    1  E=   -305.770464 a.u.  DGmin=   0.25  DE=    0.93 kcal/mol
#    3 Count:    1  E=   -305.770325 a.u.  DGmin=   0.25  DE=    1.02 kcal/mol
#    4 Count:    1  E=   -305.766111 a.u.  DGmin=   0.49  DE=    3.67 kcal/mol
#    5 Count:    1  E=   -305.765025 a.u.  DGmin=   0.49  DE=    4.35 kcal/mol

这个级别下,用Intel 4核机子计算每个构型才花了约2分钟。虽然定量结果和MP2/aug-cc-pVTZ的有差异,但是能量顺序一致。可见M062X/6-31G*错误地预测了能量顺序,因此在优化后做一下高精度计算是很有必要的。之所以看似有六个氢键的结构能量反倒最高,应该解释为氢键键角都太大,因此强度都较弱。

在J. Phys. Chem. A, 115, 12034一文中,作者获得了三种水团簇在金标准CCSD(T)/CBS级别下的能量,相对能量为0.00, 0.85, 3.55kcal/mol,对相应结构PWPB95-D3(BJ)/def2-QZVPP给出的能量是0.00, 0.93, 3.67kcal/mol。可见,PWPB95-D3(BJ)/def2-QZVPP的误差非常小。因此,对于分子团簇单点能计算,笔者强烈推荐用ORCA做PWPB95-D3(BJ)/def2-QZVPP,100个原子以内都能搞定,性价比远胜其它方法。

PS:如果想用molclus结合ORCA做优化,template.inp里写上opt关键词,并确认itask设为了0、iprog设为了3即可。


3.7 分子团簇搜索小结

通过(H2O)4这个例子,基本上把分子团簇构型搜索需要注意的各种问题都讨论了,其处理过程对于多种分子构成的混合团簇也完全适用。一定要注意不同分子团簇特点不同,构型搜索需要的参数、具体策略往往差异很大,没有唯一通用的处理办法,必须根据实际情况反复摸索、灵活变通、合理巧妙运用molclus才可能得到想要的结果。对于缺乏经验的人,一次就做成功的可能性比较有限。

在不同计算级别下优化,极小点构型、数目往往会有差异(特别是那些高能、不太稳定的构型)。而且优化参数、筛选策略也影响最终是否能找全极小点。建议以不同优化方式多试试,否则很容易漏掉高能构型。

顺带一提,只要随便逮几个分子,按照此节方法用molclus搜索一下它们组成的团簇构型,算算能量差,做个振动分析算下Boltzmann分布比率,然后再根据此帖《Multiwfn支持的弱相互作用的分析方法概览》(http://sobereva.com/252)的方法做一通相互作用本质的分析,就很容易能出一篇文章,但切勿用此方法大量灌水!下图就是用帖子里提到的RDG方法绘制的图像,氢键(蓝色等值面)、范德华作用(绿色)和弱位阻作用(棕色)都生动直观地显示了出来,对于把握结构复杂的分子团簇中的相互作用很有帮助。


4 分子构象搜索实例:麻黄素(Ephedrine)

molclus的使用方法通过第3节的例子已经讲得很透彻了,将molclus用于分子构象搜索的过程是大同小异的。这里我们对麻黄素(Ephedrine)进行构象搜索。分子结构如下,可见它有许多可旋转的键,不做构象搜索很难确定哪种构象能量最低。


此例Amber模拟部分所有涉及到的文件都可以在这里下载
Ephedrine_MD.rar (608.63 KB, 下载次数 Times of downloads: 1130)


4.1 动力学模拟

本例用Amber动力学程序来做动力学部分,用的是Amber12,Ambertools里的antechamber工具可以方便地生成基于GAFF力场的小分子在Amber中模拟所需要的文件。如果想用GROMACS来模拟也完全可以,用《几种生成有机分子GROMACS拓扑文件的工具》(http://sobereva.com/266)提到的acpype基于antechamber产生GROMACS格式的GAFF全原子力场拓扑文件跑动力学即可。

PS:免费的Ambertools从14版开始已经包含了amber的主要的动力学模块sander了,可以不必花钱买amber了。如果不会装Amber或Ambertools,可参见《Amber14安装方法》(http://sobereva.com/263)。

首先建立个文件夹,在里面再建立antech文件夹,把麻黄素结构文件Ephedrine.pdb拷进去,执行
antechamber -i Ephedrine.pdb -fi pdb -o Ephedrine.prepin -fo prepi -c bcc -s 2
parmchk -i Ephedrine.prepin -f prepi -o Ephedrine.frcmod
这样就得到了麻黄素的库文件Ephedrine.prepin和补充的参数文件Ephedrine.frcmod。若用文本编辑器打开Ephedrine.prepin,会看到当前分子名叫INT。
(PS:应确认输入的.pdb文件里的分子结构合理、没有原子缺失。pdb文件里是否有记录原子连接关系的CONNECT字段无所谓。)

把Ephedrine.prepin和Ephedrine.frcmod拷到上一级目录,然后执行下面的命令启动tleap
tleap -s -f leaprc.ff10
在tleap里输入
source leaprc.gaff
loadamberprep Ephedrine.prepin
loadamberparams Ephedrine.frcmod
saveamberparm INT EPH.prmtop EPH.inpcrd
quit
就得到了拓扑文件EPH.prmtop和结构文件EPH.inpcrd。

为了让动力学能够充分采样麻黄素的势能面各个区域,而且由于不必像分子团簇那样担心跑散,我们用很高的温度模拟(1000K)。总共模拟1ns,步长2fs,每5000帧写入一次轨迹,即间隔10ps。周期边界条件对此体系是多余的因此这里不用。此例是做真空下的构象搜索,所以igb=0。相应的参数文件md1.in如下
  1. 1ns si<font>mul</font>ation at 1000K
  2. &cntrl
  3. imin=0,nstlim=500000,dt=0.002,ntpr=50,ntwr=100,ntwx=5000,ntc=2,
  4. tempi=1000,temp0=1000,ntt=3,ntb=0,cut=12.0,gamma_ln=2.0,igb=0
  5. /
复制代码

执行此命令进行模拟,很快就完成了
sander -O -i md1.in -o md1.out -p EPH.prmtop -c EPH.inpcrd -r md1.rst -x md1.mdcrd


4.2 转换轨迹

将EPH.prmtop拖入VMD,然后在相应项目上面点右键选Load Data into Molecule,然后选md1.mdcrd,总共有100帧。播放轨迹的话,会看到分子在不断旋转,很难比较不同帧之间结构的差异。笔者建议把分子的苯环部分做一下align,这样苯环部分就基本固定了,只会看到柔性链的构象在不断变动。具体做法是在VMD里选择Extensions - Analysis - RMSD Trajectory Tool,在左上角把内容改为index 16 to 25(对应于苯环上原子的编号),去掉"noh"复选框,然后点ALIGN按钮。再次播放轨迹,就可以清楚地看到由于模拟温度足够高,导致柔性链的构象不断显著变化,达到了我们的目的。笔者把这100帧组合成了动画,如下所示


在VMD main窗口里点当前项目,点右键选Save coordinates,格式选xyz,然后保存成traj.xyz。


4.3 molclus+MOPAC做初步优化

像第3节的例子一样,我们先用半经验方法进行初筛,可以将要考虑的结构数目降低近一个数量级。我们编写MOPAC的模板文件template.mop:
  1. PM6-DH+ precise
  2. molecule
  3. All coordinates are Cartesian
  4. [GEOMETRY]
复制代码

确认settings.ini中的iprog设为了2,itask设为了0,并且已经设好了mopac_path。然后把traj.xyz拷到molclus目录中,运行molclus对其中的结构进行优化。然后运行isostat对结果进行统计,直接敲三下回车用默认的能量和几何判断阈值,结果如下
#    1 Count:    8  E=     -0.059452 a.u.  DGmin=   0.24  DE=    0.00 kcal/mol
#    2 Count:    1  E=     -0.057176 a.u.  DGmin=   0.29  DE=    1.43 kcal/mol
#    3 Count:    9  E=     -0.056859 a.u.  DGmin=   0.18  DE=    1.63 kcal/mol
#    4 Count:    4  E=     -0.056548 a.u.  DGmin=   0.29  DE=    1.82 kcal/mol
#    5 Count:    1  E=     -0.056523 a.u.  DGmin=   0.12  DE=    1.84 kcal/mol
#    6 Count:    1  E=     -0.056513 a.u.  DGmin=   0.12  DE=    1.84 kcal/mol
#    7 Count:    2  E=     -0.055854 a.u.  DGmin=   0.16  DE=    2.26 kcal/mol
#    8 Count:    4  E=     -0.055561 a.u.  DGmin=   0.23  DE=    2.44 kcal/mol
#    9 Count:    4  E=     -0.055465 a.u.  DGmin=   0.20  DE=    2.50 kcal/mol
#   10 Count:    2  E=     -0.054854 a.u.  DGmin=   0.26  DE=    2.88 kcal/mol
#   11 Count:    1  E=     -0.054807 a.u.  DGmin=   0.28  DE=    2.91 kcal/mol
#   12 Count:    5  E=     -0.054777 a.u.  DGmin=   0.24  DE=    2.93 kcal/mol
#   13 Count:    4  E=     -0.054723 a.u.  DGmin=   0.19  DE=    2.97 kcal/mol
#   14 Count:    1  E=     -0.054690 a.u.  DGmin=   0.55  DE=    2.99 kcal/mol
#   15 Count:    1  E=     -0.054521 a.u.  DGmin=   0.24  DE=    3.09 kcal/mol
#   16 Count:   12  E=     -0.054478 a.u.  DGmin=   0.21  DE=    3.12 kcal/mol
#   17 Count:    7  E=     -0.054461 a.u.  DGmin=   0.18  DE=    3.13 kcal/mol
#   18 Count:    1  E=     -0.054459 a.u.  DGmin=   0.16  DE=    3.13 kcal/mol
#   19 Count:    1  E=     -0.054366 a.u.  DGmin=   0.23  DE=    3.19 kcal/mol
#   20 Count:    5  E=     -0.054328 a.u.  DGmin=   0.27  DE=    3.21 kcal/mol
#   21 Count:    1  E=     -0.054317 a.u.  DGmin=   0.25  DE=    3.22 kcal/mol
#   22 Count:    1  E=     -0.054276 a.u.  DGmin=   0.16  DE=    3.25 kcal/mol
#   23 Count:    1  E=     -0.054258 a.u.  DGmin=   0.16  DE=    3.26 kcal/mol
#   24 Count:    5  E=     -0.052824 a.u.  DGmin=   0.28  DE=    4.16 kcal/mol
#   25 Count:    2  E=     -0.052341 a.u.  DGmin=   0.17  DE=    4.46 kcal/mol
#   26 Count:    5  E=     -0.052125 a.u.  DGmin=   0.41  DE=    4.60 kcal/mol
#   27 Count:    5  E=     -0.051873 a.u.  DGmin=   0.16  DE=    4.75 kcal/mol
#   28 Count:    4  E=     -0.051050 a.u.  DGmin=   0.21  DE=    5.27 kcal/mol
#   29 Count:    2  E=     -0.050232 a.u.  DGmin=   0.16  DE=    5.78 kcal/mol
现在只有29个结构了,可以把得到的cluster.xyz放到VMD里进行观看了解它们的结构。

如果感兴趣的只是能量最低的一些构象,可以把cluster.xyz靠后的高能结构删掉,以降低下一节量化计算的耗时。


4.4 molclus+Gaussian做优化

我们接下来用B3LYP-D3(BJ)/6-31G*对MOPAC优化后的结构进一步优化。虽然对于当前体系DFT-D3色散校正不是必须,但由于是“免费”的,所以不如加上。我们编写几何优化的模板文件template.gjf,内容如下
  1. # B3LYP/6-31G* empiricaldispersion=GD3BJ opt=maxcyc=40

  2. Template file

  3. 0 1
  4. [GEOMETRY]

复制代码

另编辑一个备用方案的模板文件template2.gjf,把关键词部分替换为# B3LYP/6-31G* empiricaldispersion=GD3BJ opt(gdiis,maxstep=2,notrust,maxcyc=80)。其实,当前体系凭经验就能知道优化不会难收敛,远比优化团簇容易得多,所以其实用不用备用方案也无所谓。

把settings.ini中的iprog改为1,并且确认energyterm目前为HF=、itask为0。删掉之前的traj.xyz,把上一节得到的cluster.xyz改名为traj.xyz。然后运行molclus,再运行isostat下默认阈值下进行处理,结果减少到了24个:
#    1 Count:    3  E=   -520.107194 a.u.  DGmin=   0.22  DE=    0.00 kcal/mol
#    2 Count:    1  E=   -520.107187 a.u.  DGmin=   0.21  DE=    0.00 kcal/mol
#    3 Count:    1  E=   -520.105306 a.u.  DGmin=   0.17  DE=    1.18 kcal/mol
#    4 Count:    1  E=   -520.102523 a.u.  DGmin=   0.28  DE=    2.93 kcal/mol
#    5 Count:    1  E=   -520.102399 a.u.  DGmin=   0.19  DE=    3.01 kcal/mol
...略
#   24 Count:    3  E=   -520.095625 a.u.  DGmin=   0.23  DE=    7.26 kcal/mol


笔者把其中部分结构做成了动画,如下所示


我们用VMD看看cluster.xyz中的第2帧,思考一下为什么它能量几乎最低。从结构上可以发现,它的柔性链的结构很舒展,没什么位阻,而且羟基氢和氮的孤对电子离得比较近,可能有内氢键的特征。为了确认这一点,我们用Multiwfn+VMD作RDG图,如下所示


可见,羟基氢和氮的孤对电子区域之间的等值面上明显有一块蓝色,很明确地证明了存在内氢键,这是这个结构能量低的重要因素之一。

我们可以看看这24个结构中苯环的取代基的构象是怎么分布的。用4.2节的做法令苯部分进行align,然后在VMD的Graphics - Representations-Trajectory里的Draw Multiple Frames里输入0:24,就可以将这24个结构同时显示出来,如下所示


可见,这些构象中苯环部分结构没有任何差异,只是取代基部分构象发生很大变化,分布很广,几乎把所有可能性都覆盖了。这个例子证明利用molclus结合分子动力学和量子化学程序可以很好地也比较方便地搜索小分子构象。

如果需要更准确的能量从而更可靠地判断哪个构象是能量最低、获得更准确的能量差以获得可靠的构象分布比例,可以像(H2O)4那个例子一样用更高精度的方法对各个结构计算单点,比如M06-2X/ma-TZVP、B2PLYP-D3(BJ)/may-cc-pVTZ。此例中,在MOPAC粗略优化后,其实没必把所有结构都用B3LYP-D3(BJ)/6-31G*优化,只要把能量低的一批(比如10个)优化即可,此时只需要把settings.ini里的ngeom设为10,接下来molclus调用Gaussian对traj.xyz里的结构优化就只考虑前10个了。


5 总结

本文介绍了molclus程序的用法,通过(H2O)4分子团簇的构型搜索和麻黄素的构象搜索这两个例子充分证明了molclus的重要实用性。可能有人觉得本文介绍的过程不够傻瓜化,得具备基本的计算化学知识,没法像一些商业化的程序那样点点按钮就出结果。但实际上,那样看似傻瓜的程序其实非常难用,可控程度差,很不灵活,精度也烂,教学用或者粗浅地研究可能比较适合,而做为正经的研究目的则基本派不上用场。而本文示例的分子动力学+molclus+量子化学程序联用的构型/构象搜索方法,只要稍加揣摩,就能在日后的研究中得心应手,起到重要价值。当然,千万别忘了molclus本身绝对没有局限于只能用经典力场的动力学程序产生初始构型/构象,因为还可以用molclus自带的gentor、genmer组件,或者Confab、Frog2构象生成工具,或者xtb跑动力学等其它别的方式产生traj.xyz,然后molclus就能自动对其中的结构通过计算程序进行优化、能量计算和筛选,比起本文例子这样做基于经典力场的分子动力学产生初始结构更方便、更好用得多得多,本文的读者一定别忘了看本文第二节末尾提到的相应的帖子。


评分 Rate

参与人数
Participants 83
eV +331 收起 理由
Reason
monoceros + 5 谢谢分享
吴双 + 5 好物!
Changesite_Y + 5 好物!
iceww + 3 谢谢分享
MVK + 4 谢谢
小可几何 + 2 赞!
2287201964 + 4 谢谢
faylovesnow + 5 谢谢
Patrickppppp + 3 赞!
Diiiiii + 3 精品内容
goodname + 4 牛!
7788-壹贰 + 3 学到了很多东西 少走很多弯路
lurensan + 5 牛!
zhaoyan417 + 3 好物!
Xulx2022 + 4 谢谢分享
丛炜熹 + 4 赞!
飒小飒 + 3
TubeOfChoking + 4 赞!
guojingni + 4 牛!
洁然不同 + 4 太棒了,完美解决问题,不用自己写脚本了!

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

6万

帖子

99

威望

5万

eV
积分
120049

管理员

公社社长

539#
 楼主 Author| 发表于 Post on 2025-7-18 07:02:42 | 只看该作者 Only view this author
peter123 发表于 2025-7-17 12:04
“老师您好,我这个帖子是能量分解的问题,本来应该发到sobEDA帖子下面的,但是因为您之前给我的指导还有我 ...

No f atoms found in this molecule应当是基组文件里定义了F,当前体系里又没有F所致
可以自己根据脚本内容手动做里面的每一步
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

52

帖子

0

威望

271

eV
积分
323

Level 3 能力者

538#
发表于 Post on 2025-7-17 12:04:05 | 只看该作者 Only view this author
本帖最后由 peter123 于 2025-7-18 15:04 编辑

“老师您好,我这个帖子是能量分解的问题,本来应该发到sobEDA帖子下面的,但是因为您之前给我的指导还有我相关的提问都在这个帖子下面,因此我就打算在这个帖子下面请教您,如果有违反规则还请您跟我说一声,我重新去发帖”
想请教一下老师,我目前在进行氯仿溶液中150个原子的有机分子笼(不带电)和阴离子体系(ClO4-、BF4-、PF6-、NO3-、F-、Cl-、Br-、I-)的弱相互作用(C-H...X氢键)分析。体系的示意图如图1显示。
之前您推荐我使用B3LYP/ma-def2-TZVP(-f) w.CB级别来给我这个体系做能量分解,我目前用这个级别对除了碘离子以外的7种阴离子和有机笼的复合物进行能量分解,发现都可以成功计算得出结果。但是对于碘离子和有机笼的复合物进行能量分解却失败了。
相关的输入输出文件我全部上传了,我这两天请我师兄帮我看了一下,貌似是第二步计算fragment2.gjf的时候出现了问题,fragment2.out里面显示No f atoms found in this molecule.但是我这个体系是没有氟原子的。我师兄花了一些时间逐个看了您sobEDA.sh里面的代码,逐个去分析,最后发现好像是因为第二步计算的时候碘是虚原子,而产生的输入文件fragment2.gjf中默认给碘这个虚原子也加了赝势,然后我师兄去查了相关的手册,发现貌似不能给虚原子加赝势?
然后我手动构造了fragment2.gjf,把里面的赝势部分给删掉了。后来就可以运行了。但是前面两步我自己跑完了,无法使用sobEDA.sh单独跑后面两步。于是我师兄修改了sobEDA.sh的内容,只让脚本调用multiwfn来产生第三步的 promol.fch波函数和promol.gjf文件。然后让我自己手动把promol.gjf交到高斯上面去跑。然后后面还没有做的第四步我应该也是自己手动交到高斯去跑,然后最后使用sobEDA.sh调用multiwfn来读取高斯的四个输出文件,进而输出能量分解结果。
我想请教老师以下问题
1. 请问第二步失败是不是因为无法给虚原子加赝势呢?为什么会出现No f atoms found in this molecule这个报错呢?
2.  因为我有机笼-碘离子复合物体系无法直接用sobEDA.sh脚本来跑,总是失败(原因在上面提到了)。请问我这样把sobEDA.sh脚本的任务拆成很多个小任务,自己把这些小任务跑了,得到几个高斯输出文件。最后我再用sobEDA.sh调用multiwfn来读取高斯的输出文件,进而得到能量分解的输出结果,请问您觉得这样做没有问题吧?

图片2025.6.20.png (205.1 KB, 下载次数 Times of downloads: 0)

图片2025.6.20.png

6万

帖子

99

威望

5万

eV
积分
120049

管理员

公社社长

537#
 楼主 Author| 发表于 Post on 2025-7-14 05:16:15 | 只看该作者 Only view this author
peter123 发表于 2025-7-11 16:01
非常感谢老师一直以来给我的耐心指导,关于昨天这个能量分解的问题,我还想请教一下您。根据表1、表2的能量 ...

1 C-H是非常弱的氢键给体,C-H...X氢键必定很弱

2 卤素阴离子的情况负电荷只集中分布在一个原子上,比起负电荷分散在多个原子上的酸根来说显然是更强的氢键受体,必然前者的氢键更强、静电成份对吸引作用贡献比率更大。

3 你的体系不算多么非常规。对于极化率较大的诸如I-作受体,显然色散作用比例会相对较大。建议看下文,了解什么因素影响色散贡献
使用Multiwfn计算原子的C6色散系数
http://sobereva.com/709http://bbs.keinsci.com/thread-45686-1-1.html
使用Multiwfn图形化展现原子对色散能的贡献以及色散密度
http://sobereva.com/705http://bbs.keinsci.com/thread-44723-1-1.html

4 搞清楚氢键的本质特征,自然就知道怎么讨论
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

52

帖子

0

威望

271

eV
积分
323

Level 3 能力者

536#
发表于 Post on 2025-7-11 16:01:42 | 只看该作者 Only view this author
本帖最后由 peter123 于 2025-7-11 16:18 编辑

非常感谢老师一直以来给我的耐心指导,关于昨天这个能量分解的问题,我还想请教一下您。
根据表1、表2的能量分解结果,我感觉我这个体系的氢键肯定是可以和范德华作用区分开的(我昨天在本帖的535楼提到IGMH分析结果和范德华作用颜色相近无法区分)。因为我这个氢键体系ΔE_els/ΔE_disp的值(表1的最后一列)明显和典型的范德华作用(比如甲烷二聚体的值为0.198)不一样。
我看您2019年那篇氢键文章中提到“强度很低的氢键主要是通过静电吸引和色散吸引效果一起维持的。而中等强度氢键,比如水二聚体,静电吸引作用占绝对主导,而色散吸引和诱导作用一起起到辅助效果。”
我发现我这个体系中有机笼和四种酸根(高氯酸根、硝酸根、BF4-、PF6-)形成的C-H...X氢键,其ΔE_els/ΔE_disp的值都在1-2之间(表1的最后一列),刚好处在H2O-HF二聚体(4.195)和甲烷二聚体(0.198)之间(表2的最后一列)。有机笼和三种卤素离子(Cl、Br、I)形成的C-H...X氢键,其ΔE_els/ΔE_disp的值都在2-3之间(表1的最后一列),也处在H2O-HF二聚体和甲烷二聚体之间(表2的最后一列)。
只有氟离子和有机笼形成的氢键ΔE_els/ΔE_disp的值,偏离了以上7种离子C-H...X氢键氢键的数值范围。但是按照您昨天给我的那个指导,我觉得我可以把您的那个原理解释写进我的文章里,来解释为什么氟偏离了范围。
我想请教您以下问题
1. 我能否引用您2019年的那篇氢键文章,给我的这个氢键体系下一个定义呢?从ΔE_els/ΔE_disp值的大小,来说明我这种非常规氢键是一种比常规氢键(比如H2O-HF二聚体)要弱的氢键?然后再强调氟离子因为半径太小,是一个特例?
2. 我发现三种卤素离子(Cl、Br、I)的氢键ΔE_els/ΔE_disp的值在2-3之间,而四种酸根(高氯酸根、硝酸根、BF4-、PF6-)的氢键ΔE_els/ΔE_disp的值在1-2之间。虽然都在H2O-HF二聚体(4.195)和甲烷二聚体(0.198)之间,但是酸根和卤素离子的ΔE_els/ΔE_disp值的范围还是有一些差别,您觉得我可以把它们归为一类进行讨论吗?
3.我看您在sobEDA的帖子里面提到“SAPT在分子间弱相互作用的能量分解方面特别流行,而且很多文章都用SAPT给出的ΔE_disp和静电作用项ΔE_els的比值来对相互作用体系进行分类,说谁是静电主导、谁是色散主导、谁是混合型作用,比如非常知名的S66弱相互作用测试集的原文里就是这样做的”。根据表1和表2显示,我觉得我这个体系的非常规氢键应该是混合型作用?因为色散作用的贡献比典型的H2O-HF二聚体中的氢键要高不少。
4.请问您觉得我可以参考您的哪些文章来对这个能量分解的结果进行讨论呢?上面这些只是我提出的一些不太成熟的想法,我感觉我目前还是不太懂怎么来讨论

图片2025.7.11.png (79.63 KB, 下载次数 Times of downloads: 95)

图片2025.7.11.png

6万

帖子

99

威望

5万

eV
积分
120049

管理员

公社社长

535#
 楼主 Author| 发表于 Post on 2025-7-11 02:19:36 | 只看该作者 Only view this author
peter123 发表于 2025-7-10 19:30
非常感谢老师耐心的指导,我懂您的意思了,太感激您了。我还想请教一下您, 我目前在进行氯仿溶液中150个原 ...

同一族元素,周期表越靠后,极化率越大、色散系数越大,和另外同种分子形成的色散作用明显越强。F-的色散作用注定明显比不上更后周期的卤素。而和那些多原子的酸根比,F-就一个原子,肯定色散作用也比不上它们
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

52

帖子

0

威望

271

eV
积分
323

Level 3 能力者

534#
发表于 Post on 2025-7-10 19:30:32 | 只看该作者 Only view this author
非常感谢老师耐心的指导,我懂您的意思了,太感激您了。
我还想请教一下您, 我目前在进行氯仿溶液中150个原子的有机分子笼(不带电)和阴离子体系的弱相互作用(C-H...X氢键)分析。体系的示意图如图1显示。
我之前在本帖的523楼请教过您,当时我说我那个氢键的IGMH分析等值面也是绿色的,和范德华作用类似,如图2显示。您当时是建议我做EDA-FF能量分解,来直观的展示静电作用,并作图展现各个原子对分子间静电作用的贡献。我后来就准备用能量分解的结果来区分我这种弱氢键和范德华作用。
我现在使用您开发的sobEDAw能量分解方法对酸根和有机笼之间的非常规氢键进行分析,并参考您2019年的那篇氢键文章,对一些典型的中等强度氢键体系(如HF-H2O二聚体)和典型的范德华作用体系(如两个甲烷分子形成的二聚体)也进行了sobEDAw能量分解分析。并且对一些带电荷的小分子氢键体系,如强氢键体系(如H3O+-H2O),中等强度氢键体系(如NH3-OH-)也进行了能量分解,并试图和我这个体系进行对比。
我看您2019年那篇氢键文章中提到“强度很低的氢键主要是通过静电吸引和色散吸引效果一起维持的。而中等强度氢键,比如水二聚体,静电吸引作用占绝对主导,而色散吸引和诱导作用一起起到辅助效果。”我发现我这个体系中有机笼和四种酸根(高氯酸根、硝酸根、BF4-、PF6-)形成的C-H...X氢键,其静电作用和色散作用的比值(表1的最后一列)刚好处在H2O-HF二聚体和甲烷二聚体之间,这一点可以说明我体系中的C-H...X氢键是一种较弱的氢键。
但是我发现我这个体系中有机笼和三种卤素离子(氟、氯、溴,碘还没计算好)形成的C-H...X氢键,其静电作用和色散作用的比值(表1的最后一列)和酸根的比值有差异,而且氟离子的差异最大。并且我发现氯、溴、碘离子做完几何优化以后都可以待在有机笼的中心,而氟离子则是跑到有机笼内壁上了(根据IGMH分析,如图3显示,可能是因为氟离子半径小,在笼子中心无法形成氢键,只有在有机笼的内壁上才能形成氢键)。
并且我还发现随着氟、氯、溴离子半径增大,对应的范德华吸引作用和总吸引作用(静电+色散+轨道)的比值也在变大(如表1显示)。我觉得可能是因为色散作用随着距离的衰减要快于静电作用,所以离子变小色散作用的占比也就变小,离子变大色散作用的占比也就逐渐变大了。
后来我想到因为我这种氢键是带了电荷的氢键,于是我就选了您2019年那篇氢键文章中的几个带电荷氢键的例子(表二中的H3O+-H2O、HF-F-、NH3-OH-、NH4+-HF),分别计算了其静电吸引和范德华作用的比值(表2的最后一列),但是发现也无法和我这个体系做对照,这些比值都明显大于我的那个体系(表1的最后一列)。
现在我不清楚这种情况应该怎么样分析,从表1最后一列的比值来看,氯、溴的静电作用和色散作用的比值和4种酸根还算接近,(目前还没有算出来的碘离子能量分解情况应该和溴类似),但是氟离子这个比值和酸根差的就太多了。请问我在文章中对能量分析结果进行讨论的时候是要把氟和其他的7种离子分开讨论吗?我想请您给我一些指导。

图片2025.6.20.png (205.1 KB, 下载次数 Times of downloads: 131)

图片2025.6.20.png

图片2025.6.25.png (280.86 KB, 下载次数 Times of downloads: 133)

图片2025.6.25.png

图片2025.7.10.png (364.82 KB, 下载次数 Times of downloads: 133)

图片2025.7.10.png

图片2025.7.10-2.png (91.49 KB, 下载次数 Times of downloads: 132)

图片2025.7.10-2.png

6万

帖子

99

威望

5万

eV
积分
120049

管理员

公社社长

533#
 楼主 Author| 发表于 Post on 2025-7-9 23:17:26 | 只看该作者 Only view this author
peter123 发表于 2025-7-9 16:50
非常感谢老师一直以来给我的耐心指导,我还想请教一下您。我发现您近两次给我的指导不一样,我在本帖538楼 ...

做sobEDAw的时候,显然不能不同体系用的基组不同。全都用ma-def2-TZVP(-f) w.CB做就完了。

前面你自己算单点时候那么算显然没问题,其它有机笼又没有碘,且所有体系里除了碘以外的基组都是统一的。

molecules也不算多低档。取决于遇到的审稿人,中的难度未必比投JPCA小。投CTC、JMM比投molecules极大概率更容易中
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

52

帖子

0

威望

271

eV
积分
323

Level 3 能力者

532#
发表于 Post on 2025-7-9 16:50:27 | 只看该作者 Only view this author
非常感谢老师一直以来给我的耐心指导,我还想请教一下您。
我发现您近两次给我的指导不一样,我在本帖538楼请教过您基组混用的问题,您在539楼指导我不用担心基组不同的事情,不用重算。但是我在本帖540楼请教您sobEDAw混用基组的时候,您指导我说对结果进行横向对比的时候,每个计算用的基组需要统一,否则说不清楚结果差异是计算级别的差异还是体系本身的差异。
因为您两次给我的指导不一样,所以我现在非常迷茫不知道该怎么做,重头算一遍的成本太高了。因此我打算重新说一下我的情况,还请您帮我看一下。
我目前在进行氯仿溶液中150个原子的有机分子笼(不带电)和阴离子体系的弱相互作用(C-H...X氢键)分析,如图1显示,我一共有8种离子和有机笼结合形成复合物,这里面只有碘离子需要用赝势基组,剩下7种离子和有机笼本体(只含C、H、O、N)都不需要用赝势基组。我之前优化剩下7种离子和有机笼复合物的时候用的级别都是B3LYP-D3/6-31G**(其中带负电荷的原子加了弥散),算单点的时候用的级别是M062X-D3/6-311+G(2d,p)。
但是碘和有机笼形成的复合物,我需要给碘用赝势基组。我给碘和有机笼的复合物做几何优化和算单点能都没有换泛函,和上面7种复合物体系唯一的区别就是给碘换成了赝势基组,具体情况如下
有机笼部分(计算级别和上面7个体系完全一样):优化B3LYP-D3/6-31G**,单点M062X-D3/6-311+G(2d,p)
碘离子部分(泛函一样,基组换成了赝势基组):优化B3LYP-D3/ma-def2-TZVP,单点M062X-D3/ma-def2-TZVP
我文章的分析部分包括量化计算(算8个体系结合能和溶液中的结合自由能并放在一张表里)、波函数分析(AIM分析、静电势分析、范德华势分析、CVB指数分析、弱相互作用可视化分析),我个人觉得后面波函数分析的部分应该基本不会受影响。至于前面的量化计算,我把用ma-def2-TZVP算出来的碘-有机笼复合物中的结合能、结合自由能和另外7种离子-有机笼复合物算出来的结合能、结合自由能做了对比,感觉算出来的结果差别其实也并不大。
后续的sobEDAw能量分解,另外7种离子-有机笼复合物体系我用的计算级别是B3LYP-D3/6-311+G(2d,p)w.CB,碘离子-有机笼用的级别是B3LYP-D3/ma-def2-TZVP(-f) w.CB。
我想请问一下您,我目前这样的基组设置有问题吗?因为您两次给我的指导不一样,您第一次说没有问题不需要重算,但是您第二次又说基组要统一才能横向对比。我目前准备把这个课题发一篇低档次的文章,比如MDPI旗下的molecule。您觉得对于这些低档次的文章,我这个基组设置会有问题吗?

图片2025.7.4.png (37.16 KB, 下载次数 Times of downloads: 134)

图片2025.7.4.png

6万

帖子

99

威望

5万

eV
积分
120049

管理员

公社社长

531#
 楼主 Author| 发表于 Post on 2025-7-9 02:52:02 | 只看该作者 Only view this author
peter123 发表于 2025-7-7 19:54
老师,之前我在这个帖子里请教您的一些问题,我担心个人隐私泄露,因此把请教的问题进行了编辑,删去了一 ...

如果横向对比结果,每个计算用的基组定义需要统一,否则说不清楚结果差异是计算级别的差异还是体系本身的差异

是。参考sobEDA教程文档里用genecp的例子
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

52

帖子

0

威望

271

eV
积分
323

Level 3 能力者

530#
发表于 Post on 2025-7-7 19:54:09 | 只看该作者 Only view this author
本帖最后由 peter123 于 2025-7-7 20:15 编辑
sobereva 发表于 2025-7-5 10:23
不用担心基组不同的事,不需要重算。另外,opt freq目的I用ma-def2-SVP就够了,没必要非得明显更贵的ma-d ...

老师,之前我在这个帖子里请教您的一些问题,我担心个人隐私泄露,因此把请教的问题进行了编辑,删去了一些内容。我担心您误会,因此专门跟您说一下。如果违反了论坛的规定,还望您能提醒我一下。

非常感谢老师一直以来对我的耐心指导,我准备就按照您的建议,把碘离子-有机笼的这个复合物,在B3LYP-D3(BJ)/ma-def2-TZVP(-f) w.CB级别下做能量分解。

另外我还想请教一下您,是不是我用您的sobEDAw能量分解,用于对比的不同体系的基组也可以不同呢?就如我上次在本帖528楼请教您的,我另外7种离子(均为前四周期元素)和有机笼(C、H、O、N)的复合物之前进行sobEDAw计算都是用的B3LYP-D3/6-311+G(2d,p)级别,用于进行对比的小分子体系(比如甲烷二聚体,水分子二聚体)我之前进行sobEDAw计算用的也是B3LYP-D3/6-311+G(2d,p)级别。也就是说我只有碘离子-有机笼复合物现在进行sobEDAw计算用的是和上面都不一样的B3LYP-D3(BJ)/ma-def2-TZVP(-f) w.CB级别,请问这样也没有问题是吧?sobEDAw能量分解的结果仍然可以互相对照讨论?


另外还想请教一下,因为ma-def2-TZVP(-f) 这个基组平常用高斯计算的时候需要用您提供的外部文件,请问在sobEDAw里面怎么写基组关键词呢?我看您帖子里面也没有提到。请问是在template.gjf文件中[geometry]和-5 5 中间空出一行来引用外部基组文件吗?然后在前面写成gen?

6万

帖子

99

威望

5万

eV
积分
120049

管理员

公社社长

529#
 楼主 Author| 发表于 Post on 2025-7-5 10:23:58 | 只看该作者 Only view this author
peter123 发表于 2025-7-4 16:33
非常感谢老师一直以来的耐心指导,我还想请教您一个问题。这个问题我昨天本来在群里发了,但是感觉没说清楚 ...

不用担心基组不同的事,不需要重算。另外,opt freq目的I用ma-def2-SVP就够了,没必要非得明显更贵的ma-def2-TZVP。

sobEDAw时可以在B3LYP-D3(BJ)/ma-def2-TZVP(-f) w.CB级别下做,如sobEDA原文表1所示,有相应级别的参数。用这个级别精度好,能照顾所有元素,耗时也不很高。
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

52

帖子

0

威望

271

eV
积分
323

Level 3 能力者

528#
发表于 Post on 2025-7-4 16:33:35 | 只看该作者 Only view this author
非常感谢老师一直以来的耐心指导,我还想请教您一个问题。这个问题我昨天本来在群里发了,但是感觉没说清楚,因此我后来在群里引用了那条消息说准备来论坛详细请教您一下。
我目前在进行氯仿溶液中150个原子的有机分子笼(不带电)和阴离子体系的弱相互作用(C-H...X氢键)分析,体系如图1显示。
如图2显示,我一共有8种离子和有机笼结合,这里面只有碘离子需要加赝势,剩下7种离子和有机笼(只含C、H、O、N)都不用加赝势。我之前优化剩下7种离子和有机笼复合物的时候用的级别都是B3LYP-D3/6-31G**(其中带负电荷的原子加了弥散),算单点的时候用的级别是您讲义中推荐的M062X-D3/6-311+G(2d,p)。
但是如图2显示,我这里面有一种阴离子是碘离子,需要加赝势。我之前请教了您,您指导我给碘优化和算单点都使用ma-def2-TZVP。于是我后来在优化有机笼--碘的复合物的时候,复合物中只给碘离子换成了ma-def2-TZVP基组,而有机笼部分优化和单点保持之前的6-31G**和6-311+G(2d,p)级别。
但是现在我意识到一个问题,因为我最后进行弱相互作用分析的时候要横向对比这8种阴离子和有机笼形成的复合物,但是因为用的基组不是完全一样的,我担心现在我做横向对比发文章的时候是否会被审稿人质疑呢?
我的这个弱相互作用的分析是按照您的波函数分析文章模板来做的,主要包括量化计算(算结合能和溶液中的结合自由能)、波函数分析(AIM分析、静电势分析、范德华势分析、CVB指数分析、弱相互作用可视化分析、sobEDA能量分解分析),我个人觉得后面波函数分析的部分应该基本不会受影响,因为6-311+G(2d,p)和ma-def2-TZVP都是带了弥散函数的3-zeta基组。至于前面的量化计算,我把用ma-def2-TZVP算出来的碘-有机笼复合物中的结合能、结合自由能和另外7种离子-有机笼复合物算出来的结合能、结合自由能做了对比,感觉算出来的结果差别其实也并不大。
因为之前做过构象搜素,导致我每一种离子-有机笼的复合物都有6-8种构象,8种离子-有机笼复合物就有50多个构象。我现在时间不够,并且我们计算资源也不太够,因此我感觉这50个构象全部重做一遍优化和振动分析肯定来不及了,我打算如果重做,就把单点重新算一遍。目前我算单点有两种待选方法,我不知道要选哪一种?
(1)把另外7种离子-有机笼的复合物中阴离子部分的基组换成ma-def2-TZVP,而有机笼部分仍然用6-311+G(2d,p)。因为我之前计算碘-有机笼复合物的单点的时候就是这样设置基组的,但是这样发文章的时候会不会让审稿人觉得奇怪呢?因为基组使用了混合基组,对体系中不同部分分别进行了设置
(2)把8种阴离子-有机笼的复合物中离子和有机笼部分全部设置成ma-def2-TZVP基组,这样似乎看起来更合理一些。但是我根据您讲义上的基组耗时大概做了估算,感觉ma-def2-TZVP的耗时比6-311+G(2d,p)高了至少一倍。因为我计算资源不太够,因此这样做时间成本要高很多
我想请教您以下几个问题
1. 请问您觉得我之前的基组设置是否合理呢?(即只有碘离子-有机笼复合物中的碘离子用了ma-def2-TZVP基组,其他离子和有机笼的复合物仍然用6-311+G(2d,p))
2. 如果您觉得不合理,请问您觉得我提出后面两种待选解决方法哪一种更合适呢?或者您有更好的解决方法推荐吗?
3. 我使用您开发的sobEDAw给除了碘离子以外的阴离子-有机笼复合物弱相互作用做能量分解的时候,用的级别是B3LYP-D3/6-311+G(2d,p)。当我对碘离子-有机笼复合物进行能量分解的时候,我看您sobEDAw似乎没有拟合ma-def2-TZVP的参数,那我这种情况是直接使用def2-TZVP即可?请问您觉得不会有问题吧?
    4.如第3个问题叙述,我另外7种阴离子-有机笼复合物做sobEDAw能量分解用的是6-311+G(2d,p),而碘离子-有机笼复合物做能量分解我准备用def2-TZVP。我最后准备参考您的文章,把这8种离子-有机笼的复合物的能量分解结果中静电作用、色散作用占各自体系总吸引作用的比例来进行讨论。我应该不会直接对比能量的大小。请问您觉得我做能量分解的时候需要把8种阴离子-有机笼复合物的基组全部统一成def2-TZVP吗?还是像我前面那样分别用6-311+G(2d,p)和def2-TZVP即可呢?

图片2025.6.20.png (205.1 KB, 下载次数 Times of downloads: 129)

图片2025.6.20.png

图片2025.7.4.png (37.16 KB, 下载次数 Times of downloads: 131)

图片2025.7.4.png

52

帖子

0

威望

271

eV
积分
323

Level 3 能力者

527#
发表于 Post on 2025-7-3 09:37:05 | 只看该作者 Only view this author
sobereva 发表于 2025-7-3 04:55
可以先把阴阳离子对的结合能算出来,转化为平衡常数,看是否能校正之前和实验不符的顺序。但也说不定阴阳 ...

非常感谢老师的耐心指导,我昨天在本帖的534,535都请教了您问题。534楼的问题您可能没看到,是关于sobEDAw结果分析的问题,还想请您有时间帮我看一下,非常感谢您

6万

帖子

99

威望

5万

eV
积分
120049

管理员

公社社长

526#
 楼主 Author| 发表于 Post on 2025-7-3 04:55:46 | 只看该作者 Only view this author
peter123 发表于 2025-7-2 17:15
另外还想请教老师一个问题,我目前在进行氯仿溶液中150个原子的有机分子笼(不带电)和阴离子体系的弱相互 ...

可以先把阴阳离子对的结合能算出来,转化为平衡常数,看是否能校正之前和实验不符的顺序。但也说不定阴阳离子对是一起结合到有机笼里的,这样的话算阴阳离子对解离平衡就没什么意义。我还是建议有可能的话跑一下动力学,了解一下实际是怎么和有机笼结合的。
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

52

帖子

0

威望

271

eV
积分
323

Level 3 能力者

525#
发表于 Post on 2025-7-2 17:15:48 | 只看该作者 Only view this author
本帖最后由 peter123 于 2025-7-8 09:28 编辑

另外还想请教老师一个问题,我目前在进行氯仿溶液中150个原子的有机分子笼(不带电)和阴离子体系的弱相互作用(C-H...X氢键)分析。
目前我还在学习您的分子动力学讲义,同时我也在想别的方法,因为我这个课题时间不太够了。我前两天通过查阅资料发现,原文中使用的是四丁基铵盐,阳离子部分是四丁基铵阳离子,阴离子部分则是ClO4-、PF6-、BF4-、NO3-。这种盐在高极性溶剂中可以全部解离,在氯仿这种低极性溶剂中只能部分解离,大部分都是以离子对形式存在的。离子对和自由离子之间存在一个解离平衡,而且这个解离平衡常数应该对于不同的阴离子都是不一样的。

我目前在论坛里面搜索了相关的内容,发现有一个帖子“使用Gaussian计算阴阳离子对的相互作用能与文献数据存在数量级的差别”(http://bbs.keinsci.com/thread-39212-1-1.html)里面提到了计算离子对结合能的方法。请问您觉得我能否通过这种方式,计算出四丁基铵阳离子和ClO4-、PF6-、BF4-、NO3-在氯仿溶液的结合能,或者对应的离子对在氯仿溶液中的解离常数。然后通过这个方法来定性解释,或者定量对我上面算出来的自由能进行一个校正呢?如果您觉得可以,请问您觉得应该怎么做呢?我想听听您的指导

图片2025.6.10.png (215 KB, 下载次数 Times of downloads: 125)

图片2025.6.10.png

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

GMT+8, 2025-8-12 04:37 , Processed in 0.187332 second(s), 25 queries , Gzip On.

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