谈谈ORCA 5.0的新特性和改变

谈谈ORCA 5.0的新特性和改变

文/Sobereva@蜘蛛池租用

First release: 2021-Jul-2  Last update: 2021-Jul-10


1 前言

2021年7月1日,量子化学程序ORCA 5.0发布了,造成了不小影响。这个程序现在流行度已经相当高,从《2021年计算化学公社论坛“你最常用的计算化学程序和DFT泛函”投票结果统计》(http://163gold.cn/599)的投票结果上可见一斑。这里就简单说下这个更新对于大多数用户值得一提的新功能和改变,以及我的一些相关看法,便于读者了解新版本都带来了什么。更全面的更新说明见5.0版手册1 ORCA 5.0 Foreword和2 ORCA 5 Changes部分。

5.0版手册比4.2.1扩增了近300页,达到了1300多页的规模。我所知的手册最厚的量化程序是Q-Chem(5.3.2版是1391页)。按照ORCA的势头,据说将在2022年发布的ORCA 6的手册厚度预计将超过Q-Chem。


2 比较重要的改进

5.0的一个很大进步是加入了全新开发的积分代码SHARK。号称对于低角动量和高角动量基函数比以前版本用的Libint电子积分库更快。ORCA自动决定用SHARK还是Libint来达到最好的效率。据说此改变令解析Hessian、TDDFT、磁相关属性速度提升较大。SHARK既适合片段收缩基组,对广义收缩基组也专门做了优化,因此能算得动ANO那种完全广义收缩的基组了。笔者实际测试了一下,ANO这种完全广义收缩的基组确实在ORCA 5.0里能算得动了,而在4.2.1里哪怕用ANO-pVDZ算个很小的分子都极其吃力。我用带有高角动量函数的基组cc-pVQZ也简单测试了一下算一个小体系HF的耗时,5.0比4.2.1耗时低了百分之十几。

DFT积分格点和COSX积分格点利用机器学习技术进行全新的设计。目前版本定义了三种格点的关键词,defgrid1、defgrid2和defgrid3,控制所有涉及到积分格点步骤用的格点(COSX、CPSCF、TDDFT等)。默认是defgrid2,据称没有特殊情况这个档次的格点质量就足够了,而对积分格点要求特高的情况(近乎Gaussian里int=superfine的情况),比如VPT2做非谐振计算的时候,才需要defgrid3。另外,使用对积分格点要求较高的明尼苏达系列泛函的时候程序会提示建议用defgrid3。defgrid1的大小近似相当于之前版本默认的挺糙的格点。由于默认的defgrid2比之前的积分格点明显更好,因此DFT计算的数值精度比以往版本有明显提升,而且这还令DFT的SCF收敛、几何优化收敛等也往往更为容易。据说即便把之前版本的格点数设得和当前版本的差不多,新的积分格点的精度也更好,这是因为格点分布调教得更科学了,期间还利用了GMTKN55数据集进行了训练和测试。defgrid系列格点还有一个特点就是有自适应能力,对于带弥散的基组、带紧s基函数的基组、带核极化函数的基组,新版本在对格点剪裁的时候有相应的特殊考虑来保证数值精度。特别要注意的是,之前版本分别控制DFT和COSX格点的grid和gridx关键词不仅不能用了,而且连出现都不行,这导致原先大量输入文件都不能用了,这点很变态(哪怕自动无视也好)。

新版本里COSX计算解析积分的代码效率得到了优化。结合新的COSX格点,令数值稳健性也显著提升、SCF和几何优化达到收敛的步数有可能更少。由于RIJCOSX已经非常成熟、理想了,因此从5.0开始RIJCOSX成为了杂化和双杂化泛函计算时默认开启的加速方法(以前版本只是纯泛函默认用RIJ)。如果要关闭RIJCOSX的话,写noCOSX。由于RIJCOSX已变得更完美,RIJK可以算是没有任何用武之地了,而且用RIJK时功能限制很大。


提升了CPSCF的效率,因此做freq等需要求解CPSCF方程的任务耗时有所降低。

隐式溶剂模型得到了提升。一个很大的改变是5.0用的CPCM的默认设置是范德华型的溶质孔洞结合Gaussian分布的表面显著电荷,而老版本默认用的设置是gepol_ses型溶质孔洞结合离散的表面点电荷,新版本默认的溶剂模型的数值稳定性更好,解决了原来版本溶剂模型下可能出现的势能面不连续问题,这也使得从头算动力学过程结合溶剂模型的时候更令人放心了。另外,新版本的溶剂模型能用的场合更多了,新版本可以在CPCM溶剂模型下算解析Hessian是个巨大的进步,不过尚不支持SMD下的解析Hessian。并且新版本的CPCM可以结合(DLPNO-)CCSD(T)使用。

由于上述数值方面的各种改进,估计计算Hessian容易出虚频的毛病会得到明显改善。

CPCM(线性响应的形式)正式支持了TDDFT。我发现之前版本的ORCA在溶剂模型下得到的TDDFT激发能不合理,和Gaussian的线性响应溶剂模型相差很大,貌似是因为之前版本没有考虑隐式溶剂对电子激发的响应。我找了个D-pi-A体系做了个简单测试(氨基-苯-硝基),用PBE0/def2-SV(P)结合SMD描述的水环境做TDDFT计算,考察最低激发能和振子强度。G16算出来是3.77 eV,f=0.44;ORCA 5.0算出来是3.76 eV,f=0.45;ORCA 4.2.1算出来是3.90 eV,f=0.36。明显ORCA 5.0比4.2.1合理多了,和G16基本一致了。注:ORCA里的SMD的极性部分用的是CPCM,和Gaussian的SMD的极性部分用的IEFPCM有异,结果注定不可能非常相近,但差异不会太显著。

ORCA作为MPI并行程序,内存消耗量问题一直为人所诟病。5.0在SCF和CPSCF过程中部分程度使用了共享内存方式节约内存消耗量。希望以后能想办法把DLPNO的巨大内存花费降下来。

支持了VV10色散校正的解析梯度,wB97M-V、wB97X-V之类的带VV10的泛函终于都可以用于优化了,以前这是Q-Chem的专利(阿Q一直都活在Gaussian的阴影下,现在免费的ORCA又来势汹汹,把阿Q的卖点一个一个拔掉,在二者的夹缝中日子真不好过)。不过wB97M-V虽然支持了解析梯度优化,但我感觉也没什么实际意义,毕竟还不支持解析Hessian。而优化完了不做个振动分析检验虚频的话很难发文章。而且wB97M-V虽然能量计算精度很好,但并不代表几何优化方面会有什么突出的。实际上B3LYP-D3(BJ)优化就已经挺理想了,这点我在《谈谈量子化学研究中什么时候用B3LYP泛函优化几何结构是适当的》(http://163gold.cn/557)中已经说过;而且就算遇到B3LYP-D3(BJ)不适合的时候,还有wB97X-D3或wB97M-D4可用,就算真的优化结果比wB97M-V差一些,也就是毫厘之间。

终于支持了meta-GGA、meta-杂化泛函的解析Hessian了,可以用诸如M06-2X在优化完之后做振动分析了。

加入了一些新泛函:B97M-D4、wB97X-D4、wB97M-D4。wB97M-D4的精度略逊于wB97M-V一丁点,但好处是有解析Hessian。不过我实测了一下,发现这泛函结合小基组下对苯分子这么简单的体系做振动分析时CPSCF都特别难收敛,所以在opt freq方面我不觉得这泛函有什么实用性。双杂化加入了wB88PP86、wPBEPP86、RSX-QIDH、RSX-0DH、PBE-QIDH、PBE0-DH,以及它们的为激发态计算优化参数的SCS、SOS形式的变体。不过这些双杂化泛函在我来看并没什么用处,算基态不灵,算激发态的话,对于普通价层激发肯定不如DSD-PBEP86,而算显著的CT态、里德堡态比起之前就有的wB2GP-PLYP也不会有什么优势。

还有一个新加入的双杂化泛函是2009年提出的wB97X-2。这个泛函带DFT-D3(BJ)的版本wB97X-2-D3(BJ)在《简谈量子化学计算中DFT泛函的选择》(http://163gold.cn/272)里介绍过,对于除了分子间弱相互作用以外,这个泛函通常是最佳选择之一(虽然逊于后继者wB97M(2),但目前wB97M(2)仅有Q-Chem一个程序支持)。不过我发现ORCA 5.0没有自带这个泛函的DFT-D3(BJ)参数,所以没法直接用wB97X-2-D3(BJ),而必须自己定义参数才行。为了大家用起来方便,我在《详谈Multiwfn产生ORCA量子化学程序的输入文件的功能》(http://163gold.cn/490)介绍的Multiwfn的相应功能中已经直接加入了产生wB97X-2-D3(BJ)输入文件的选项。

支持了刚提出不久的r2SCAN-3c。其构建思想类似于已经流行开来的B97-3c,而其中的纯泛函部分改用了2020年底才提出的SCAN泛函的第二个修改版,即r2SCAN。虽然r2SCAN-3c耗时比B97-3c高百分之几十,但精度有了全面提升,因此多付出的代价是划得来的。建议r2SCAN-3c能算得动的情况一律用它代替B97-3c。由于其重要性,我在《详谈Multiwfn产生ORCA量子化学程序的输入文件的功能》介绍的功能中也已经加入了产生其输入文件的选项。

当默认的SCF solver收敛失败或者表现不佳时,会默认切换为新加入的augmented Hessian trust radius SCF converger (TRAH)。TRAH比默认的SCF solver要慢,但据说收敛能力很强,号称除非结构不合理、基组有问题、有线性依赖这些严重硬伤外几乎总能收敛,并声称对付收敛普遍偏难的含过渡金属的体系很好。至于实际效果如何笔者没试过,但至少是又多了一个可能解决SCF不收敛的选择。想关闭的话可以用noTrah。

NEB功能得到了改进,并且支持结合TDDFT对激发态势能面找过渡态和反应路径。

支持了共线形式的spin-flip TDDFT以及其解析梯度。这个挺有意义,一些圆锥交叉点的搜索都可以用这个做了。以前spin-flip TDDFT用得比较多的是GAMESS-US和Q-Chem,而前者用着麻烦,后者又收费。

改良了NEVPT2、CASPT2的计算形式,号称对大活性空间情况提升了计算速度。

动力学模块支持了一维和二维的metadynamics获得自由能面。集合变量可以用距离、角度、二面角、配位数,还可以加谐振或高斯限制势。支持了Nose-Hoover chain压浴,支持了velocity-rescale热浴(这个很重要,之前只能用Berendsen热浴,很容易被瞎较真的审稿人吐槽)。新支持了消除质心运动的设置以避免模拟过程中漂移,手册里搜CenterCOM(在之前版本中为了消除漂移,我都是靠质心约束来实现的)。

支持了两层和三层ONIOM,并支持电子嵌入,可以结合到优化、扫描、NEB、IRC、振动分析等各种任务。并且改进了原先的QM/MM。不过我感觉,做ONIOM没有个gview这样的专门开发的界面还是不够方便直观。

DLPNO-MP2和DLPNO-双杂化可以算NMR和极化率了。这对于需要算较大体系高精度NMR者是个福音,有测试表明DLPNO-DSD-PBEP86算NMR很好,不仅胜于普通泛函,比MP2也更好。相比之下,Gaussian的MP2或双杂化算稍大一点体系的NMR都非常吃力。另外值得一提的是,当体系不大时,这种DLPNO形式和RI形式计算耗时相仿佛,而当体系很大时,DLPNO形式耗时显著低于RI形式。

支持了Ionic-Crystal-QMMM和Mol-Crystal-QMMM以簇模型分别计算离子晶体和分子晶体中的局部区域,背景电荷可以自洽地自动确定(对于离子晶体的情况,中心部分和背景电荷之间还有一层capped ECP)。利用这种模型可以算晶体中的电子光谱、NMR,乃至算离子晶体的带隙,还可以算表面吸附问题(这比起第一性原理程序里能用的理论方法丰富得多,还有准确得多得多的方法可用)。对Ionic-Crystal-QMMM方式的计算,ORCA中新加入了专门的orca_crystalprep工具用来构造模型。

在workflow控制方面做了加强,可以在输入文件里控制多个任务的执行、数据提取(计算过程中涉及的大量信息都可以通过变量直接访问)、输出、数学运算,还可以用循环、条件判断,相当于在输入文件里可以直接用脚本语言进行非常灵活的计算流程的控制,也因此可以方便地实现热力学组合方法,而不必依赖于外部的Shell、Python等脚本。甚至还可以靠脚本实现自动循环各个振动频率,发现有虚频则自动按虚频模式调节结构,之后重新做优化,反复如此直到没有虚频为止。

支持了通过简单的关键词实现很多组合方法。比如写compound[W2-2]就可以做W2.2高精度热力学组合方法的计算。支持的组合方法关键词看ORCA 5.0手册9.47.3 List of known Simple input commands部分。


3 其它一些值得一提的改进或变化

新版本默认对双杂化启用RI,但做纯粹的MP2则不默认用。可以noRI关闭RI。

DLPNO支持了multi-level,对不同片段内部和片段间的电子相关用不同的PNO阈值考虑,从而在不明显损失精度的情况下节约耗时。

SARC ZORA/DKH基组支持了Rb-Xe,这是J. Comput. Chem., 41, 1842 (2020)中提出的。

已经可以直接使用月份基组了,现在ORCA的基组库已经做得挺完善了。

加入了J. Chem. Phys., 152, 214110 (2020)中提出的CASPT2-K方法,入侵态问题比CASPT2更小,和IPEA  shift一样对CASPT2结果大有改进,而不需要IPEA shift那种经验性的参数,因此从本质上更好。此方法算激发能不如CASPT2-IPEA和NEVPT2,不过算Cr2的解离曲线则比CASPT2加不加IPEA都好。此方法只能算是对CASPT2自身的一种改良,相对于NEVPT2并没什么实际优势。

Iterative configuration expansion (ICE)这个功能之前就有,属于selected CI的一种,利用微扰方法筛选出对Full CI贡献较大的组态用于计算,从而在精度牺牲很小的前提下大幅减少传统做Full CI要考虑的组态数,因此比Full CI能算更大一些的体系。5.0对这个功能进行了强化(近期Neese在JCC和JCTC上发了相关文章)。做超高精度计算的人可以尝试。

算激发态支持了SCS-CIS(D)和SOS-CIS(D),不过适用场合很有限。当各种泛函下TDDFT结果都不理想,而DLPNO-STEOM-CCSD又算不动的话可以试一把。

支持了DLPNO-NEVPT2-F12。支持了完全内收缩多参考耦合簇(FIC-MRCC)。

DLPNO系列方法支持了做PNO外推。DLPNO加速方法受TCutPNO参数影响,此外推是在一个较大(较便宜)和一个较小(较昂贵)的TCutPNO下分别计算能量,再根据简单的公式经验外推到TCutPNO=0的极限得到更精确的能量。写compound[EXTRAPOLATE-PNO]关键词的话会在DLPNO-CCSD(T1)/cc-pVTZ下做自动这种外推。

支持了VPT2非谐振模型得到振动平均的NMR化学位移和EPR超精细耦合常数,由此还可以体现不同同位素的差异。

加入了ANISO程序用来计算自旋哈密顿参数和属性。

ab initio ligand field analysis (AILFT)做了改进。

支持了化学位移的定域轨道的分解分析,并给NBO的NCS(自然化学屏蔽)分析留了接口。


4 一些吐槽和局限性

windows版只有静态库版本,解压完了竟然占24.8GB,而4.2.1版则只有9.2GB而已。

PWPB95、PW6B95、DSD-PBEB95没解析梯度,这个之前版本的局限性到现在还没解决。

可惜没有直接支持比DSD-PBEP86-D3(BJ)精度更好的后继者revDSD-PBEP86-D3(BJ)。它在现有双杂化泛函中精度是名列前茅的。

双杂化泛函依然不支持解析Hessian。

meta-泛函做TDDFT时没有解析梯度。

算拉曼活性依然还得用数值Hessian,是个硬伤,算中等体系都超级耗时,和Gaussian完全没法比。

TDDFT的解析Hessian什么时候ORCA才能支持是个未知数,不过我相信ORCA早晚会支持的。这对于一个普适型、大众型,而且又对激发态计算特别重视的程序来说太重要了。

新版本振动分析的输出格式发生了变化,迫使我今日更新了《OfakeG:使GaussView能够可视化ORCA输出文件的工具》(http://163gold.cn/498)里介绍的OfakeG程序。除了这个外,新版本还不允许出现grid和gridx关键词,也迫使我今日更新了Multiwfn的相关功能。据说2022年可能要出ORCA 6,但愿出下个大版本的时候别再折腾输出格式,并且考虑对以往输入文件的兼容性(之前ORCA 4出来的时候相对于3.x在基组写法方面就变化甚巨)。老折腾的话对于写辅助程序、写相关教程、维护input library的人是很大负担。