• 談談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://www.shanxitv.org/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://www.shanxitv.org/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://www.shanxitv.org/272)里介紹過,對于除了分子間弱相互作用以外,這個泛函通常是最佳選擇之一(雖然遜于后繼者wB97M(2),但目前wB97M(2)僅有Q-Chem一個程序支持)。不過我發現ORCA 5.0沒有自帶這個泛函的DFT-D3(BJ)參數,所以沒法直接用wB97X-2-D3(BJ),而必須自己定義參數才行。為了大家用起來方便,我在《詳談Multiwfn產生ORCA量子化學程序的輸入文件的功能》(http://www.shanxitv.org/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://www.shanxitv.org/498)里介紹的OfakeG程序。除了這個外,新版本還不允許出現grid和gridx關鍵詞,也迫使我今日更新了Multiwfn的相關功能。據說2022年可能要出ORCA 6,但愿出下個大版本的時候別再折騰輸出格式,并且考慮對以往輸入文件的兼容性(之前ORCA 4出來的時候相對于3.x在基組寫法方面就變化甚巨)。老折騰的話對于寫輔助程序、寫相關教程、維護input library的人是很大負擔。

    久久精品国产99久久香蕉