計算化學中的一些常見不良寫法和用詞
計算化學中的一些常見不良寫法和用詞
文/Sobereva @北京科音
First release:2015-Jun-28 Last update:2023-Jun-13
經常在看一些文章、帖子,以及回答一些人的問題的時候,看到很多詞匯誤用和不良寫法,令寡人不悅。在這里就舉一些最典型的說說。有的地方其實也只是個人發發牢騷而已。
1 NBO電荷應當叫做NPA電荷
很多文章里都用“NBO電荷”來代表NBO程序產生的原子電荷。這個稱呼是嚴重不合理的,應該叫做“NPA電荷”!NPA的全稱是Natural population analysis(自然布居分析)。
NBO是程序名,NBO分析則是這個程序能實現的一大套波函數分析方法的統稱。這一大套分析方法里包含許多具體的方法和概念,如NPA、NAO、NHO、NBO、NLMO、NRT、NBBP、NEDA、E2、NBO deletion、NBCP等等,幾乎所有這些都是基于NAO(自然原子軌道)的。因此NBO程序做各種NBO分析前,第一步就是先生成NAO。有了NAO,才能做接下來的NBO、E2分析之類。而一旦產生了NAO,就得到了以NAO為基表示的密度矩陣,并立刻得到每個NAO以及每個原子的布居數,以及與原子布居數相對應的原子電荷,這個過程就是NPA分析。這是為什么NBO程序在輸出NBO軌道信息之前就已經把原子電荷都輸出出來了。如果只需要這部分NPA分析而不需要后續的,在Gaussian中寫pop=NPA即可。因此,NBO程序產生的電荷叫做“NPA電荷”才是絕對正確的。NBO程序在輸出原子電荷時,前面的標題也是"Summary of Natural Population Analysis:"。無論是NBO程序,還是發展NBO理論的人,都從來都沒用過“NBO電荷”這個詞!
之所以有大量人錯誤地使用NBO電荷這個詞,原因有二:(1)這個電荷是NBO程序產生的 (2)這是NBO理論框架下誕生的電荷。但這都顯然絕不足矣將這種電荷命名為NBO電荷。使用NBO電荷這個詞的人,充分暴露出其對NBO分析方法基本原理的認識的嚴重匱乏。
NBO電荷這個詞真是以訛傳訛,知道“NPA電荷”這個正確寫法的人是少數,用“NBO電荷”這個誤稱的人卻是大多數。搞笑的是,曾經投一篇文章比較各種原子電荷的計算方法(物理化學學報,28(1),1-18),里面已經詳細比較了NPA電荷,居然審稿人還問,怎么沒比較很常用的NBO電荷?簡直正不壓邪!!!而且,連gview的觀看原子電荷的界面里(Results-Charge Distribution),選擇原子電荷類型時都有一項NBO,說明gview的開發者都誤把NPA電荷稱為了NBO電荷。
每當看到有人用NBO電荷這個詞,我一定會提一句,NBO電荷是NPA電荷的謬稱,或者我在回復里會改用NPA電荷這個詞,如果對方問NPA電荷是什么,我一定順便強烈批判一下NBO電荷這個詞。
2 不要誤拼人名
Mulliken這個名字出現在研究文章里一般都是以“Mulliken電荷”或“Mulliken分析”這個詞來出現的。無數文章、無數帖子里卻誤寫成“Milliken電荷”,而實際上根本就沒有叫Milliken的人!知名的只有兩個,一個是剛才說的Mulliken(馬利肯),這是分子軌道理論的提出者,另一個是做油滴實驗的Millikan(密立根),兩個人都是諾貝爾獎得主。很多人竟把兩個人的名字特征合并到一起創造了一個新的人Milliken。有趣的是,用google搜“Milliken電荷”能搜到,卻似乎沒有人誤寫成過“Millikan電荷”。
很多低水平的文章和學位論文里,甚至一些量化書里,總把Hartree拼成Hatree。希望初學者牢記Hartree的拼法。順帶一提,提到物理學家Feynman(費恩曼)的時候,不要誤拼成Feynmann或者Feyman或者Feymann,這也是諸多人常犯的錯誤。
范德華的正確拼法是van der Waals (vdW),注意打頭的v是小寫,很多人都寫成了大寫。
“Koopmans定理”里的這個人名不要拼成Koopman或Koopmann。
3 注意基組的大小寫
Dunning的相關一致性基組應該寫為諸如cc-pVDZ這樣,但很多文章不注意大小寫,寫為諸如cc-pvdz、cc-PVDZ,這是不好的。這種基組全稱是correlation consistent polarized Valence Double Zeta。大小寫如果沒弄對,會反映出作者比較業余或者不夠謹慎。
其它基組也要注意大小寫,比如6-31G*也不要寫成6-31g*,def2-TZVP不要寫成def2tzvp。
4 不要把程序名隨意簡寫、誤拼程序名!!!!!!!!!!!!!!!
很多人總是圖省事瞎簡寫程序名,而明明官方沒有允許那么簡寫(不像諸如GROMACS那樣官方就有gmx這種簡寫方式),還有人瞎自行發揮。無數人提到筆者開發的Multiwfn程序的時候總是寫成什么mwfn、mfn、wfn、Mul,甚至multi,居然還有人寫成Mullikenwfn、Wultiwfn(W和M分不清,趕緊配眼鏡去!),還有的人叫成什么“多功能波函數”。程序的名字被人家叫得亂七八糟,明顯會令開發者很生氣!無論是誰自己的名字總被別人叫錯肯定不高興!Multiwfn這個程序名很好記,Multi(多)+wfn(波函數),是A multifunctional wavefunction analyzer的簡寫(手冊第一頁、程序剛啟動時都已經顯示全稱了),真是搞不懂為什么一些人就是不能把程序名好好寫全。
還有個超級常見的情況就是拼不對Gaussian(高斯)。拼法真是五花八門,是所有計算化學程序里名字拼錯種類最多的,據筆者答疑時的不完全統計,有:guass、Guassian(瓜斯)、Gaussion(高身)、Gausson(高孫)、Gassian(嘎斯)、Gauss、Guaasian(瓜三)、Gassian(嘎斯)、Gussain(孤塞恩)、Gussion(孤身)、GAUSSIOIAN、guassion(瓜身)...真是不勝枚舉。也往往見到把GaussView寫成Gaussian View的情況。這都是菜鳥提問、菜鳥文章、低水平畢業論文里極為常見錯誤。拼對個程序名怎么就那么難???搞科研最基本的素養就是嚴謹,連個自己常用的程序名都拼不對還搞什么研究!?筆者不指望那些混文憑的學生能搞出什么科研成果,但起碼也應該在科研的歷練過程中把基本的科學素養和嚴謹的態度提升上去。
曾經筆者建立的QQ群里甚至還有個人對于別人對他的不恰當拼寫的指正不以為然,他的意思是:我拼錯就拼錯了,你知道我指的是什么就行了,干嘛較真?這看著真是令人火大,就這種松懈的態度,趕緊甭搞科研了,這樣的人發表的文章還能有可靠度否?實際上,他的提問明明已經給人造成了嚴重理解困難,他想“求個wfn的介紹”,誰知道他到底是指Multiwfn程序的介紹還是wfn格式的介紹亦或是其它什么?
5 拓撲分析里的critical point不要稱為關鍵點
實空間函數的拓撲分析(最常見的就是AIM里對電子密度的拓撲分析)里面有critical point這個概念,指的是函數梯度模為0的點。相關知識見《AIM學習資料和重要文獻合集》(http://bbs.keinsci.com/thread-362-1-1.html)。老見到有人把critical point叫做“關鍵點”,這不妥,應該叫做“臨界點”。關鍵點的英文對應的是key point,臨界點才是critical point。比如眾所周知的critical pressure,被翻譯成臨界壓力,沒有被翻譯成關鍵壓力的。我很納悶,為什么明明翻譯成臨界點是顯然對的,大多人卻都非要錯誤地用關鍵點這個詞,也不知道是誰教的、哪兒看來的。
另外,還總有人把bond critical point(BCP,鍵臨界點)叫成什么鍵鞍點。雖然BCP處電子密度梯度為0,是電子密度的二階鞍點,但直譯成鍵臨界點多好,干嘛添油加醋。
6 關于對實空間函數的稱呼
量化計算里有很多三維實空間函數,每個坐標上都有一個數值,如電子密度、自旋密度、靜電勢、福井函數、雙描述符等等。考察它們的分布一般只能作圖來研究,在這點上Multiwfn(http://www.shanxitv.org/multiwfn)是最方便的工具,可以畫它們的曲線圖、平面圖、等值面圖。我們經常需要研究這些函數在每個原子上的分布,這就需要對這些函數在各個原子空間內進行積分,這樣每個原子上就有一個數值,便于不同原子之間進行定量比較。這樣轉化后,稱呼也變了,比如:
電子密度 --> 原子的電子布居數,或簡稱原子布居數 (Atomic population)
自旋密度 --> 原子的自旋布居數,或簡稱原子自旋布居 (Atomic spin population)
福井函數 --> 簡縮福井函數 (Condensed Fukui function)
雙描述符 --> 簡縮雙描述符 (Condensed dual descriptor)
Parr函數 --> 簡縮Parr函數 (Condensed Parr function)
...
稱呼的時候一定要正確,避免混淆,比如“XX原子的電子密度是8.3”、“XX原子的福井函數是0.02”這樣的說法就明顯錯了,應該說這個原子的布居數、簡縮福井函數是多少。我們平時說的原子電荷相當于原子的核電荷數減去原子的布居數。
有各種各樣的原子空間劃分方式,如Mulliken、Hirshfeld、Becke等,基于這些不同劃分得到的每個原子上的值也不同。比如說,用Mulliken方法計算原子的布居數,就稱為Mulliken原子布居,這個結果當然和基于Hirshfeld劃分得到的Hirshfeld原子布居是不同的,推薦使用后者(可以由Multiwfn很方便地計算)。
注意,Gaussian計算開殼層體系輸出Mulliken自旋布居時顯示的是“Mulliken atomic spin densities”,這在概念上是嚴重錯誤的!為什么錯,看了上面的討論想必已經明白。自旋密度是三維函數,三維空間中每個點一個值,豈能說原子的自旋密度?對很多人都被這輸出所誤導,當我指出錯誤時,居然有的人還顯得挺有理,說Gaussian就是這么寫的。
7 不要把密度差稱為差分密度
在網上的討論中,我發現大多數人把density difference稱為“差分密度”(或者“密度差分”,乃至更難聽的“電荷差分”),我很不喜歡這種稱呼,我從來都只用“密度差”這個詞。“密度差”比“差分密度”少一個字,而且和英文更為對應,干嘛非要用“差分密度”這個詞?
8 慎用“電荷”這個詞
描述問題時一定要慎用“電荷”這個詞,因為指代不明。電子、原子核都帶有電荷,而且,電子的電荷值還是負值,這很容易造成歧義。比如,對某個化學過程,說A片段的電荷減少了,B的電荷增加了,那么這到底是A的電子轉移到了B,還是B的電子轉移到了A?這要是理解錯了就太要命了。兩種理解哪個從語義上都對,假定作者這里把“電荷”等價于“電子”,那就是A的電子向B轉移;如果是按照電荷的數值來說的,由于電子的電荷值為負,A的電荷減少了就應理解為B的電子向A轉移了。
所以我很討厭用電荷這個詞。應該明確地說電子的增減、電子是怎么轉移的,就不會有歧義了。
9 分清基組和方法
很多低水平文章中,把基組稱為方法,把方法稱為基組,真是屢見不鮮,立刻就暴露出作者甚至量化都沒入門。這樣的低級錯誤太多的話,可能直接惹怒審稿人,導致慘遭大斧。HF、B3LYP、MP2、CCSD(T)、PM7這些都叫做“理論方法”(Theoretical method),也可以簡稱為方法或理論;6-31G*、cc-pVDZ、def2-TZVP等都是基組(Basis set);合在一起說,可以說比如“本文所有計算在B3LYP/6-31G*級別(Level)下進行”,不要寫成“...使用B3LYP/6-31G*方法”。
10 分清CCSDT和CCSD(T)
很多人提問的時候,老是說我用CCSDT算了XXX,然后出現某某報錯。99.99999%的情況提問者說的是CCSD(T)!CCSDT和CCSD(T)完全是兩回事,后者是前者的近似,耗時遠遠不是一個數量級的,而且絕大多數主流量化程序,包括Gaussian,是不支持CCSDT而只支持CCSD(T)的。所以初學者一定不要搞混這兩個,同時勸初學者一定要好好學學基礎的理論知識,連自己用的方法的名字都叫不對這太糟糕了。
順帶一提,老有人把CCSD(T)寫成CCSD(t),這很不好。要注意量子化學中的方法名字非常多,名字之間往往非常像(特別是五花八門的后HF方法),往往寫法稍微差一丁點就可能是不同的方法,比如CBS-Q和CBS-q就是兩種不同的熱力學組合方法。所以描述計算級別時必須極度嚴謹,每個字母甚至就連大小寫都一定要寫對,這樣才能完全避免歧義!
11 沒有“靜電勢能面”這個詞!
好幾次網上有人問我問題時都扯到“靜電勢能面”,而這個詞根本不存在!看這個詞完全不知道對方想說什么,說出這個詞的人明顯都沒把最基本的概念搞清楚。要分清楚這些詞:
(1)勢能面:E(R1,R2,R3...)。不同的幾何坐標{R}下體系有不同的能量,是個3N-6維函數
(2)分子表面:有許多不同定義,對于范德華表面,通常定義為電子密度=0.001 a.u.的等值面
(3)靜電勢:V(r)。三維空間中不同位置r下有不同的靜電勢值,是個3N維函數。不懂靜電勢的人看此貼的資源:http://bbs.keinsci.com/forum.php?mod=viewthread&tid=219
(4)靜電勢等值面:可視化展現V(r)在三維空間中分布的一種做法,顯示出來的面上的每個點的靜電勢值都恰與你設的靜電勢的isovalue值相同
(5)靜電勢映射的分子表面:可視化展現V(r)在三維空間中分布的最常用做法。也就是利用電子密度數據如上構建出范德華表面,然后把范德華表面上各個點的靜電勢的值以不同顏色顯示出來以便于考察。這也叫靜電勢填色的分子表面。例如這些文章所繪制的:《使用Multiwfn+VMD快速地繪制靜電勢著色的分子范德華表面圖和分子間穿透圖(含視頻演示)》(http://www.shanxitv.org/443)、《巨大體系的范德華表面靜電勢圖的快速繪制方法》(http://www.shanxitv.org/481)、《使用Multiwfn結合VMD分析和繪制分子表面靜電勢分布》(http://www.shanxitv.org/196)。
順帶一提,還有時候有人問,怎么計算分子的靜電勢值?怎么計算原子的靜電勢值?顯然這種問法完全莫名其妙。靜電勢是個三維函數,三維空間中每個地方都有一個值,什么前提、細節都沒有,你怎么給分子計算一個值,給每個原子計算一個值?
12 慎用“力”字
經常有人說我想計算“弱相互作用力”、“靜電作用力”、“范德華力”之類,實際上他們想說的是“弱相互作用”、“靜電作用”、“范德華作用”。“力”這個字不要加,因為從語義上,會令內行人覺得莫名其妙。計算相互作用,起碼得計算相互作用能吧?總得通過優化得到平衡結構吧?這和“力”有什么關系?要知道力的定義是能量對坐標的導數,而相互作用能是復合物與片段的能量差,跟“力”毫無直接關系。而在優化后的平衡結構下,所有原子受力為0,根本都沒有“力”了。“xxx作用”這個詞包含的含義很廣泛,用它不容易造成語義上的問題,而“xxx力”的含義就很狹隘了,如果作者理論知識不扎實,容易在表達上出現問題。
13 瞎用“溶劑化”一詞,指代不明
網上回答問題時,總是看到無數人用“溶劑化”一詞做意義不明、很不確切的敘述,比如“作溶劑化效應的時候...”、“考慮溶劑化”、“溶劑化用...”、“做了幾個溶劑化...”、“能考慮溶劑化效應嗎"、“溶劑化下吉布斯自由能...”、“用兩種溶劑做了溶劑化...”、“不能溶劑化?”、“貌似有一個自定義溶劑化”。每次我看到這種瞎用“溶劑化”這詞的時候就很不高興,因為根本不知道對方在具體指代什么。
計算化學中溶劑效應通過溶劑模型描述,在溶劑模型下可以做各種事情、算各種問題。要問的時候應該諸如這樣問,盡可能表述清楚(假設我對原來提問的人想問的問題沒理解錯):
“作溶劑化效應的時候...”→“使用溶劑模型研究xx的時候...”
“溶劑化用...”→“溶劑模型用...”
“做了幾個溶劑化...”→“使用xx溶劑模型算了幾個溶解自由能”(或者是指對幾個結構作了幾何優化、算了幾個單點、算了幾個光譜,誰知道他問的具體是什么?)
“能考慮溶劑化效應嗎”→“能考慮溶劑效應嗎”或“能考慮溶劑環境嗎”
“用兩種溶劑做了溶劑化...”→“使用xx溶劑模型在兩種溶劑環境下計算了...”
“不能溶劑化?”→“不能用xx溶劑模型表現溶劑效應?”
“貌似有一個自定義溶劑化”→“貌似可以自定義溶劑參數”
14 不要用“仿真”
計算化學領域里,只有“模擬”,沒有“仿真”。雖然simulation這個詞中文翻譯既有模擬也有仿真,但是在計算化學圈子里交流時,如果冒出來個“仿真”這個詞,一看就特別外行,令內行聽著特別扭。想必大家也只聽說過“分子模擬”而沒聽過什么“分子仿真”。
15 搞清楚xtb和GFN-xTB是什么
老有人亂用xtb這個詞,造成極大的歧義。要搞清楚,xtb是Grimme開發的程序的名字,xtb程序可以實現很多種Grimme搞的方法,包括GFN0-xTB、GFN1-xTB、GFN2-xTB,可以統稱為GFN-xTB,另外xtb程序還支持GFN-FF力場。也有不少其它程序也支持這些方法,比如CP2K里可以也用GFN1-xTB。老有人敘述的時候說“我用xtb計算了某某某”,誰知道他到底指的什么?是用xtb程序算了某某某(那么到底是用xtb程序里面哪個方法算的?)?還是用GFN-xTB方法算了某某某(那么到底是GFN-xTB的哪個版本?用的具體哪個程序算的?)?明顯有嚴重歧義。顯然也不能問什么“GFN的精度如何?”,諸如GFN2-xTB和GFN-FF有天壤之別。必須諸如這樣準確描述才行:“我用xtb程序里的GFN2-xTB計算了某某某”、“我用CP2K程序對某某某體系用GFN1-xTB做了結構優化”、"GFN2-xTB算某某某的精度怎么樣?”。寫程序名和方法名時都絕對不能有一絲的偷懶!任何有可能造成歧義的描述都必須在表達時注意避免!
16 分清楚關鍵詞、代碼、命令
老有人初學者,特別是沒有計算機常識的人,亂用“關鍵詞”、“代碼”、“命令”這幾個詞。比如說“我做Gaussian計算,gjf里寫了xxx代碼”,這真是非常荒唐的描述,有時候還會造成誤會,還以為對方自己改了程序源代碼。關鍵詞(keyword)是指在計算程序的輸入文件里寫的那些東西,告訴程序做什么、怎么做,每個計算程序的開發者都定義了各種關鍵詞,在手冊里都能查到,這跟編程沒直接關系。代碼(code)是指程序的源文件(source code)或者腳本(script)里的那些東西,這是編程層面上的事。命令(command)是指在操作系統的終端里輸入的那些要被執行的指令,諸如ls、cd、g16 < test.gjf |tee test.out等等,或者在某些計算程序的內置終端里輸入的那些要被執行的東西,比如VMD程序的文本窗口里輸入atomselect top all。
一些文章中,寫了自己用了某某關鍵詞,比如什么guess=mix、int=ultrafine,但是卻沒有加以說明,這是不好的。Gaussian用戶自然知道是怎么回事,但非Gaussian用戶就不知道這是干什么的了。所以應該在旁邊也注明關鍵詞的含義和使用它的目的。有些人還寫用了什么IOp,這就更不好了,一些偏門的IOp連Gaussian老鳥都記不住,如果不做相應解釋的話一般讀者就更難以理解了。
某些人說自己用B3算了某某某,這又是明顯體現基本知識不過關,B3LYP、B3PW91、B3P86、B3PBE等等組合多了去了,具體指什么?如果就是指最常用的B3LYP,何故省略LYP三個字母卻給別人的理解帶來不便?
無數人提問時說自己用了6-31G(或6-311G)算了某某某。每次看到這樣的提問我就想,這人到底是用的什么基組?是6-31G*但為了在提問時少打字把*或(d)之類極化函數符號略去了,還是說計算時用的基組本身確實就沒帶極化函數,就是個干巴巴的6-31G?如果是前者,提問時不要偷工減料,要認真把自己的情況全面、如實描述清楚;如果是后者,那計算結果根本沒法用,結果太爛,這屬于基組的基礎知識都沒掌握。
Pople基組用加號代表加彌散函數,這必須寫在G的前頭。很多人寫Pople基組的時候,老是誤把彌散函數的加號寫到G的后頭去,比如6-31G+、6-311G+(d,p),這是嚴重錯誤的,暴露出研究者比較菜。錯誤的書寫還對很多其他人有誤導,人問我文獻中6-31G+是什么意思,和6-31+G有什么區別...
經常有初學者說“極化基組”、“彌散基組”,這非常不妥。那應當叫做“帶極化函數的基組”、“帶彌散函數的基組”。
絕對不要把LUMO拼成LOMO,不要把HOMO拼成HUMO。這種常見的低級錯誤令內行人看著很不爽,一看就是個水平很差的菜鳥。誤拼的人8成都不知道英文全稱怎么拼。
π的英文拼法是pi,老有人按照漢語拼音拼成pai,說什么pai鍵、pai-pai堆積之類,顯得特別low。不可思議的是,越來越多的人在網上提問時還把π寫成“兀”甚至“丌”,說什么“兀兀堆積”、“丌丌激發”,簡直low到不堪入目,毫無最基本科學素養!
老有人把M06-2X寫成MO6-2X,真討厭。還時不時有人把B3LYP寫成b31yp(這里的l是數字)。
不要把單重態(singlet)、三重態(triplet)說成單態、三態。要知道x重態是自旋多重度(spin multiplicity)層面的概念,理應把“重”體現進去。而用“單態”、“三態”在有的語境下還可能會造成明顯歧義。也不建議把x重態叫x線態,以前有的老的書里用后者,這在如今來說是不推薦、不規范的。
最后提一句,別把計算化學領域的名詞拼寫錯誤不當回事。在網上求助時候拼錯了不會有啥大損失,大不了讓內行人看了不高興導致沒人理你的提問。要是寫文章的時候凈是拼錯的地方,不少審稿人(包括我)可能直接就怒了,對你的文章印象驟減,會明顯感覺這是個外行人的文章,直接導致你的文章發表的可能性大大降低。