• 常見的多余的和被濫用的Gaussian關鍵詞

    常見的多余的和被濫用的Gaussian關鍵詞

    文/sobereva @北京科音

    First release: 2016-Jun-5  Last update: 2022-May-28



    我平日網上給別人解答無數Gaussian問題,總看到大量初學者的Gaussian輸入文件里的關鍵詞寫得特別污,令我不吐不快。往往越是菜鳥,多余乃至有害的關鍵詞用得越兇,往往還導致自取其辱。這基本都是盲目聽信網上一些偽高手(小白裝大神)的后果,真正有益的經驗技巧沒學到,倒學了一身壞毛病(比如把maxcyc=幾百、5/13=1之類當成每次必用關鍵詞),并以訛傳訛。

    再重申一遍Sobereva的剃刀原理:如無必要,勿增關鍵詞(http://bbs.keinsci.com/forum.php?mod=viewthread&tid=2743)。達到同一個計算目的,用的關鍵詞越少,通常體現經驗越豐富。


    1 scf=maxcyc=幾百,或scfcyc=幾百

    《解決SCF不收斂問題的方法》(http://www.shanxitv.org/61)文中專門批斗過,見紅字部分,故不再多說。用這個的一看就是菜鳥。

    2 freq=noraman

    Gaussian僅對于HF做振動分析時才默認計算raman,別的理論方法默認根本不算raman活性,寫了也白寫,但卻成了大量菜鳥每次必寫的。非HF方法做freq時寫這個關鍵詞的人是什么心態?大抵如此:“我不需要算raman,所以我寫了noraman,讓程序做freq任務時不默認地算raman,從而節省了時間,我多機智!”

    3 IOp(5/13=1)

    飲鴆止渴、掩耳盜鈴的逃避(而不是解決)SCF不收斂的方法,《解決SCF不收斂問題的方法》(http://www.shanxitv.org/61)文中對此進行了殘酷的批判。http://bbs.keinsci.com/forum.php?mod=viewthread&tid=3344帖子中,官方也明確表態使用5/13=1是愚蠢的。用IOp(5/13=1)基本可以與“我是超微小白!”劃等號。

    4 scrf里寫CPCM或PCM或IEFPCM

    Gaussian里scrf默認就用PCM,也等價于寫IEFPCM,顯然寫PCM或IEFPCM純屬多余。有些人盲目效仿文獻,明明默認的PCM原理更嚴格,非要專門寫CPCM用CPCM,完全莫名其妙!PS:對于算能量(激發能不算)的場合,應盡量用SMD模型。關于這些問題,仔細看《談談隱式溶劑模型下溶解自由能和體系自由能的計算》(http://www.shanxitv.org/327)。

    5 不需要nosymm的時候寫nosymm

    很多菜鳥總亂用nosymm,老是寫這個。什么時候該用nosymm,以及nosymm到底有什么用,看此文《談談Gaussian中的對稱性與nosymm關鍵詞的使用》(http://www.shanxitv.org/297)。

    6 scf=tight

    從G09開始SCF收斂限默認就是tight,還老見有人寫這個,毫無意義。

    7 亂用int=fine、int=ultrafine、給非DFT設定格點

    對DFT計算才牽扯到交換-相關泛函的積分格點,而HF、半經驗、后HF等方法根本不牽扯到積分格點,卻看到有些人對這些方法還設什么int=fine或ultrafine,純屬多余,毫無意義。
    G09對DFT默認就是int=fine,有很多G09用戶還寫這個,純屬多余。
    從G16開始默認是int=ultrafine,因此G16用戶想用ultrafine時也沒必要再寫這個。
    注:只有明尼蘇達系列泛函如M06HF、M06-2X等對于積分格點才比較敏感,因此碰見SCF或幾何優化不收斂時用ultrafine格點才是值得優先考慮的。而對其它的泛函諸如B3LYP之類用fine格點就已經足夠了,用ultrafine只會徒增耗時。

    8 opt=maxcyc=幾百、optcyc=幾百

    《量子化學計算中幫助幾何優化收斂的常用方法》(http://www.shanxitv.org/164)文中專門批斗過,見紅字部分,故不再多說。用這個絕大多數都是菜鳥。

    9 test

    根本毫無意義,卻看到不少人寫個這個無用的關鍵詞。

    10 sp

    sp代表做單點計算,默認就是干這個,卻見到一些人還寫sp,純屬多余。

    11 方法名前寫U、R

    自旋多重度為1的時候默認就是R(限制性閉殼層),自旋多重度大于1的時候默認就是U(非限制性開殼層),平時根本沒必要專門去寫這個。僅當自旋極化單重態的計算的時候才有必要明確寫一下U,見《談談片段組合波函數與自旋極化單重態》(http://www.shanxitv.org/82)。有時看個別菜鳥居然計算閉殼層單重態體系也寫個U,額外浪費不少時間,結果和默認的R完全一樣。

    12 激發態計算時寫root=1,以及非限制性開殼層參考態時寫singlet、triplet、50-50

    CIS、TD等計算的時候默認就是root=1,所以感興趣的是一激發態的時候沒必要寫這個。

    做CIS、TD前需要先做SCF得到參考態波函數(通常得到的是基態波函數)。singlet、triplet、50-50關鍵詞可以指定激發態算單重態、三重態或者都算,但很多初學者卻不知道,這僅對于參考態波函數是閉殼層的時候才有意義!參考態是非限制性開殼層時,這仨關鍵詞根本不起作用,此時程序會算出的激發態都不是自旋純態,哪個態對應什么自旋多重度需要根據輸出的<S**2>來確定。

    13 freq=numer

    這代表基于一階解析導數做有限差分得到二階導數來做頻率計算。明明很多人用的方法有二階解析導數(如MP2。而DFT連三階解析導數都有),算頻率卻寫個freq=numer,相比直接寫freq不僅白浪費了幾十乃至幾百倍的耗時,精度還降低了。

    14 scrf里寫solvent=water

    scrf默認就是水做溶劑,寫這個純屬多余,老見到有人寫。

    15 用opt=calcall的時候還寫freq

    opt=calcall的時候最后一步的Hessian也是精確計算的,所以程序直接就自動做振動分析了。故此時再寫freq是多余。

    16 density關鍵詞的亂用

    有三種情況:
    (1)density含義是產生/導出/分析當前級別下的波函數,否則默認用SCF的。比如MP2 density會產生MP2波函數,否則默認用HF的;再比如B3LYP/TZVP TD(root=2) density會產生二激發態的TDDFT波函數,否則默認用基態DFT波函數。很多人不懂density到底怎么用,居然做SCF類型計算(半經驗/HF/DFT/MCSCF)也寫density,純屬多余。
    (b)density寫成density=current:density默認就是density=current,即使用當前級別的密度,所以沒必要特意多寫=current。
    (c)out=wfn/wfx時寫density:從G09 C.01開始,對后HF計算用out=wfn或wfx的時候默認用了density關鍵詞,所以density此時可以不寫。但為了避免一些菜鳥用的是以前版本卻又不知道寫density,導致導出的波函數對應的是SCF波函數,所以給新人傳道時還是寫上density保險。

    17 scrf=externaliteration

    外迭代在隱式溶劑模型下做后HF或TD/CIS算激發態時候才用得著,詳見此文《談談隱式溶劑模型下溶解自由能和體系自由能的計算》(http://www.shanxitv.org/327),很多人都沒搞懂externaliteration是什么意思就亂用,經常看到有人用SCF類型的理論方法時居然還寫externaliteration。

    18 polar=enonly(等價于polar=DoubleNumer)

    是指計算超極化率的時候基于解析一階導數做兩階有限差分得到三階導數。常用的DFT明明在Gaussian里面有三階解析導數,卻看到一些人用DFT計算第一超極化率時候竟然寫polar=enonly,真是令人發指!比直接寫polar白白糟蹋了大量計算資源,結果精度還更低了。更多信息參看《使用Multiwfn分析Gaussian的極化率、超極化率輸出》(http://www.shanxitv.org/231)。

    19 用gen pseudo=read

    很老版本Gaussian中自定義基組+贗勢要寫gen pseudo=read,后來版本提供了更方便的關鍵詞genecp。明明這一個關鍵詞就完事了,可現在還總是見到有人用老式寫法。

    20 scf=conver=6(等價于scfcon=6)

    在《解決SCF不收斂問題的方法》中說過,單點計算(指HF、普通泛函和半經驗的情況。雙雜化、后HF、TDDFT等除外)可以放心把SCF收斂限用這個從G09開始默認的8(即SCF=tight)降到6,有降低不收斂幾率和降低耗時之用,因為6的時候能量收斂得已經足夠準確了。但是很多人在幾何優化、頻率計算、超極化率計算等涉及能量導數計算的時候也用這個關鍵詞,這就很糟糕了。能量的導數計算牽扯到波函數、波函數的導數,能量收斂得足夠準確不代表波函數已經收斂得很準確,故涉及導數計算的時候用這個降低SCF收斂限可能導致極小點/過渡態定位精度不夠、幾何優化時震蕩、頻率計算不準等問題。雖說也不是幾何優化時就一定不能用scf=conver=6,但用的場合應當是SCF實在不好收斂(如過渡金屬團簇),而且對優化精度要求不高的時候。。

    21 IOp(1/8=x)、IOp(6/7=3)

    IOp(6/7=3)相當于pop=full、IOp(1/8=x)相當于在opt里定義maxstep,明明有對應的關鍵詞,卻還老看到有人在輸入文件里直接寫這倆IOp。有對應關鍵詞的場合不要寫IOp,否則自己容易記錯,別人看這輸入文件的時候還得查IOp表。
    順帶強調一下,優化極小點時用maxstep定義步長上限的時候一定要帶著notrust,即opt(maxstep=x,notrust),否則步長上限會隨著優化進行自發發生變化而導致設定沒起到作用。然而灑家經常看到有人用maxstep卻不寫notrust。而對于優化過渡態,本身默認就是用了notrust的,因此opt=TS任務還寫notrust那是完全多余的。

    22 scf=xqc或scf=qc

    在《解決SCF不收斂問題的方法》中介紹過。很多人看到不收斂上來就用這個,甚至將之當成平日計算默認使用的關鍵詞,這樣做是很糟糕的!用qc(二次收斂)做迭代比一般方式迭代每步多花好幾倍時間,雖然收斂的可能性高了不少,但是遠不如先嘗試其它解決不收斂的辦法。而且,如果迫不得已只能用qc方式才能收斂,也極有可能最后得到的波函數并不穩定,此時也暗示很可能當前體系結構、方法、自旋多重度、基組等是不合適的。

    23 int=Acc2E=12

    這個目前用的人還不多,但是預感以后會有很多菜鳥總寫這個,原因是Exploring Chemistry With Electronic Structure Methods三版提供的輸入文件里幾乎每個都帶著這個。寫這個可以比默認時增加點雙電子積分精度,官方的人號稱這對用彌散函數時的收斂有幫助,但實際沒什么用處(除非是中、大體系,用彌散函數奇多的基組如LPol系列),而且比較一下用彌散函數情況下默認和用了這個關鍵詞最后收斂的能量,會發現并沒有顯著區別。
    注:從G16開始int=Acc2E=12已經成為默認了,因此更沒必要手動寫,此時反倒是寫int=acc2e=10(G09默認的)可以在幾乎不犧牲精度的情況下降低耗時。

    24 NMR=GIAO

    Gaussian支持GIAO、CSGT、IGAIM等方式計算磁性質,GIAO是默認的也是最好的,算NMR就寫個NMR就完了,但有時候卻看到別人寫NMR=GIAO,多余,還有些人竟沒有特殊理由卻寫NMR=CSGT。


    25 guess=huckel

    Gaussian默認的SCF初猜方式通常情況是最佳選擇,除非碰見不收斂之類,否則根本沒比必要自行去讓程序用其它的初猜方式,卻經常見到有人習慣性地寫guess=huckel(用擴展huckel方法產生初猜)。其它初猜方式通常由于不如默認的,只會導致需要更多步才收斂,甚至難收斂、不收斂。


    26 gfinput、gfprint

    這是用來輸出基組詳細定義的關鍵詞,然而頻繁在初學者的輸入文件里看到。明明這些初學者連基組定義都讀不懂,搞不明白什么是收縮度、收縮系數、GTF指數等概念,根本不可能去利用這些基組定義額外干什么,還用這些關鍵詞打印出基組定義干嘛?完全毫無意義。


    27 把rwf無意義地分割

    是不是會看到有人的輸入文件里對rwf做無意義的分割,比如%rwf=1,199000mb,2,199000mb,3,199000mb,4,199000mb。這真是莫名其妙,沒事分割rwf作甚?完全多此一舉,毫無意義。分割rwf有意義的情況僅在于單一讀寫rwf文件的分區空間不足的情況,比如你要算一個大型后HF任務,假設rwf總共要產生估計300GB,若/sob/scr只剩200GB,不夠寫入完整的rwf,而幸好/sob/scr2還有300GB可以用,那么你可以寫比如%rwf=/sob/scr/,180GB,/sob/scr2/,280GB,說明在/sob/scr/里寫滿180GB rwf文件后,接下來再寫rwf文件時則往/sob/scr2/里面寫。


    28 pop=full

    這個關鍵詞用來輸出所有軌道的展開系數。很多人的輸入文件里老帶著這個,然而他們之后卻根本不去自行考察軌道系數,那寫這個何用?對于稍微大一點的體系,用了這個關鍵詞之后都會導致輸出文件巨大(原本也就幾百K、幾兆可能會變成幾十兆、幾百兆),此時輸出文件里絕大部分全是軌道系數信息,這搞得打開文件、傳輸文件耗時都高了很多,想找個重要的數據都會被這一大堆系數信息礙事。這個關鍵詞別加,如果你真是以后可能需要看一下軌道系數,把fch文件留下來就行了,用筆者開發的Multiwfn (http://www.shanxitv.org/multiwfn)載入.fch文件后,進主功能6的選項4,直接就能把指定的軌道的所有系數信息全都輸出出來,這比你通過文本編輯器在輸出文件里找對應的軌道的某些系數方便得多得多。


    29 QST任務里寫noeigen

    大家知道,在opt=TS任務中一般都需要寫noeigen,在這里我專門說了:《簡談Gaussian里找過渡態的關鍵詞opt=TS和QST2、3》(http://www.shanxitv.org/460)。有的人居然對QST2、QST3任務也自作聰明地寫noeigen,這是毫無意義的。因為QST方法在計算時根本就不會自動對每一步做Hessian矩陣本征值檢測!


    30 SCF或TD里寫direct

    direct這個選項對于不同關鍵詞有不同含義。對于SCF來說,默認的算法就是direct,因此寫SCF=direct根本毫無意義。對于TD計算,默認的算法也叫direct,這也是最理想的算法,故也毫無寫的必要。



    最后,來看網上答疑時我看到的一個典型的被偽高手或網上/實驗室祖傳坑爹教學資料毒害的菜鳥制造的笑柄,以及一個典型的反面教材:
     



    值得一提的是,目前社會上有很多水平又差,還倒處開培訓騙錢的機構,從那里學不到有用的,反倒學一大堆錯誤的東西。比如某機構講Gaussian的視頻里,胡寫一堆關鍵詞,簡直是把初學者都帶溝里去了,見《某機構講Gaussian的直播,不能直視》(http://bbs.keinsci.com/thread-21551-1-1.html)。

    再次誠心告誡初學者,除了計算化學公社論壇、思想家公社QQ群、www.shanxitv.org,切勿隨意聽信其它地方亂七八糟的關于Gaussian的討論,否則極容易被誤導!怎么真正正確地學習Gaussian,看《談談學量子化學如何正確地入門》(http://www.shanxitv.org/355)。

    久久精品国产99久久香蕉