NBO是程序名,NBO分析则是这个程序能实现的一大套波函数分析方法的统称。这一大套分析方法里包含许多具体的方法和概念,如NPA、NAO、NHO、NBO、NLMO、NRT、NBBP、NEDA、E2、NBOdeletion、NBCP等等,几乎所有这些都是基于NAO(自然原子轨道)的。因此NBO程序做各种NBO分析前,第一步就是先生成NAO。有了NAO,才能做接下来的NBO、E2分析之类。而一旦产生了NAO,就得到了以NAO为基表示的密度矩阵,并立刻得到每个NAO以及每个原子的布居数,以及与原子布居数相对应的原子电荷,这个过程就是NPA分析。这是为什么NBO程序在输出NBO轨道信息之前就已经把原子电荷都输出出来了。如果只需要这部分NPA分析而不需要后续的,在Gaussian中写pop=NPA即可。因此,NBO程序产生的电荷叫做“NPA电荷”才是绝对正确的。NBO程序在输出原子电荷时,前面的标题也是"SummaryofNaturalPopulationAnalysis:"。无论是NBO程序,还是发展NBO理论的人,都从来都没用过“NBO电荷”这个词!
之所以有大量人错误地使用NBO电荷这个词,原因有二:(1)这个电荷是NBO程序产生的(2)这是NBO理论框架下诞生的电荷。但这都显然绝不足矣将这种电荷命名为NBO电荷。使用NBO电荷这个词的人,充分暴露出其对NBO分析方法基本原理的认识的严重匮乏。
每当看到有人用NBO电荷这个词,我一定会提一句,NBO电荷是NPA电荷的谬称,或者我在回复里会改用NPA电荷这个词,如果对方问NPA电荷是什么,我一定顺便强烈批判一下NBO电荷这个词。
范德华的正确拼法是vanderWaals(vdW),注意打头的v是小写,很多人都写成了大写。
“Koopmans定理”里的这个人名不要拼成Koopman或Koopmann。
其它基组也要注意大小写,比如6-31G*也不要写成6-31g*,def2-TZVP不要写成def2tzvp。
很多人总是图省事瞎简写程序名,而明明官方没有允许那么简写(不像诸如GROMACS那样官方就有gmx这种简写方式),还有人瞎自行发挥。无数人提到笔者开发的Multiwfn程序的时候总是写成什么mwfn、mfn、wfn、Mul,甚至multi,还有的人叫成什么“多功能波函数”。程序的名字被人家叫得乱七八糟,明显会令开发者很生气!无论是谁自己的名字总被别人叫错肯定不高兴!Multiwfn这个程序名很好记,Multi(多)+wfn(波函数),是Amultifunctionalwavefunctionanalyzer的简写(手册第一页、程序刚启动时都已经显示全称了),真是搞不懂为什么一些人就是不能把程序名好好写全。
我在网上答疑过程中,还经常看到Multiwfn拼不对的情况,甚至拼错几率都超过了1/3,老是拼成诸如什么multifwn、multiwn!甚至居然还有人瞎写成Mullikenwfn、Wultiwfn!(W和M分不清,赶紧配眼镜去!)只要看到有人提问时拼错Multiwfn,在他进行纠正之前我绝对不回复他的问题。
电子密度-->原子的电子布居数,或简称原子布居数(Atomicpopulation)自旋密度-->原子的自旋布居数,或简称原子自旋布居(Atomicspinpopulation)福井函数-->简缩福井函数(CondensedFukuifunction)双描述符-->简缩双描述符(Condenseddualdescriptor)Parr函数-->简缩Parr函数(CondensedParrfunction)...
称呼的时候一定要正确,避免混淆,比如“XX原子的电子密度是8.3”、“XX原子的福井函数是0.02”这样的说法就明显错了,应该说这个原子的布居数、简缩福井函数是多少。我们平时说的原子电荷相当于原子的核电荷数减去原子的布居数。
有各种各样的原子空间划分方式,如Mulliken、Hirshfeld、Becke等,基于这些不同划分得到的每个原子上的值也不同。比如说,用Mulliken方法计算原子的布居数,就称为Mulliken原子布居,这个结果当然和基于Hirshfeld划分得到的Hirshfeld原子布居是不同的,推荐使用后者(可以由Multiwfn很方便地计算)。
注意,Gaussian计算开壳层体系输出Mulliken自旋布居时显示的是“Mullikenatomicspindensities”,这在概念上是严重错误的!为什么错,看了上面的讨论想必已经明白。自旋密度是三维函数,三维空间中每个点一个值,岂能说原子的自旋密度?对很多人都被这输出所误导,当我指出错误时,居然有的人还显得挺有理,说Gaussian就是这么写的。
在网上的讨论中,我发现大多数人把densitydifference称为“差分密度”(或者“密度差分”,乃至更难听的“电荷差分”),我很不喜欢这种称呼,我从来都只用“密度差”这个词。“密度差”比“差分密度”少一个字,而且和英文更为对应,干嘛非要用“差分密度”这个词?
描述问题时一定要慎用“电荷”这个词,因为指代不明。电子、原子核都带有电荷,而且,电子的电荷值还是负值,这很容易造成歧义。比如,对某个化学过程,说A片段的电荷减少了,B的电荷增加了,那么这到底是A的电子转移到了B,还是B的电子转移到了A?这要是理解错了就太要命了。两种理解哪个从语义上都对,假定作者这里把“电荷”等价于“电子”,那就是A的电子向B转移;如果是按照电荷的数值来说的,由于电子的电荷值为负,A的电荷减少了就应理解为B的电子向A转移了。
所以我很讨厌用电荷这个词。应该明确地说电子的增减、电子是怎么转移的,就不会有歧义了。
很多人提问的时候,老是说我用CCSDT算了XXX,然后出现某某报错。99.99999%的情况提问者说的是CCSD(T)!CCSDT和CCSD(T)完全是两回事,后者是前者的近似,耗时远远不是一个数量级的,而且绝大多数主流量化程序,包括Gaussian,是不支持CCSDT而只支持CCSD(T)的。所以初学者一定不要搞混这两个,同时劝初学者一定要好好学学基础的理论知识,连自己用的方法的名字都叫不对这太糟糕了。
还老有人明明用的是CCSD(T),居然提问时写成CCSD,这都不是缺乏量子化学素养的事了,而是体现出缺乏最基本的科学素养,堂堂(T)难道是摆设?顺带一提,CCSD在计算能量方面基本没有使用价值,因此用CCSD干这个完全是莫名其妙。CCSD算得动的用CCSD(T)通常也照样算得动,而CCSD(T)精度比CCSD高多了去了,前者属于高精度级别的方法,而后者仅仅是一个鸡肋的中高级别方法,比便宜得多得多的双杂化泛函里的一些顶级的往往都没精度优势。
顺带一提,老有人把CCSD(T)写成CCSD(t),这很不好。要注意量子化学中的方法名字非常多,名字之间往往非常像(特别是五花八门的后HF方法),往往写法稍微差一丁点就可能是不同的方法,比如CBS-Q和CBS-q就是两种不同的热力学组合方法。所以描述计算级别时必须极度严谨,每个字母甚至就连大小写都一定要写对,这样才能完全避免歧义!
网上回答问题时,总是看到无数人用“溶剂化”一词做意义不明、很不确切的叙述,比如“作溶剂化效应的时候...”、“考虑溶剂化”、“溶剂化用...”、“做了几个溶剂化...”、“能考虑溶剂化效应吗"、“溶剂化下吉布斯自由能...”、“用两种溶剂做了溶剂化...”、“不能溶剂化?”、“貌似有一个自定义溶剂化”。每次我看到这种瞎用“溶剂化”这词的时候就很不高兴,因为根本不知道对方在具体指代什么。
计算化学中溶剂效应通过溶剂模型描述,在溶剂模型下可以做各种事情、算各种问题。要问的时候应该诸如这样问,尽可能表述清楚(假设我对原来提问的人想问的问题没理解错):“作溶剂化效应的时候...”→“使用溶剂模型研究xx的时候...”“溶剂化用...”→“溶剂模型用...”“做了几个溶剂化...”→“使用xx溶剂模型算了几个溶解自由能”(或者是指对几个结构作了几何优化、算了几个单点、算了几个光谱,谁知道他问的具体是什么?)“能考虑溶剂化效应吗”→“能考虑溶剂效应吗”或“能考虑溶剂环境吗”“用两种溶剂做了溶剂化...”→“使用xx溶剂模型在两种溶剂环境下计算了...”“不能溶剂化?”→“不能用xx溶剂模型表现溶剂效应?”“貌似有一个自定义溶剂化”→“貌似可以自定义溶剂参数”
计算化学领域里,只有“模拟”,没有“仿真”。虽然simulation这个词中文翻译既有模拟也有仿真,但是在计算化学圈子里交流时,如果冒出来个“仿真”这个词,一看就特别外行,令内行听着特别扭。想必大家也只听说过“分子模拟”而没听过什么“分子仿真”。
老有人乱用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算某某某的精度怎么样?”。写程序名和方法名时都绝对不能有一丝的偷懒!任何有可能造成歧义的描述都必须在表达时注意避免!
老有人初学者,特别是没有计算机常识的人,乱用“关键词”、“代码”、“命令”这几个词。比如说“我做Gaussian计算,gjf里写了xxx代码”,这真是非常荒唐的描述,有时候还会造成误会,还以为对方自己改了程序源代码。关键词(keyword)是指在计算程序的输入文件里写的那些东西,告诉程序做什么、怎么做,每个计算程序的开发者都定义了各种关键词,在手册里都能查到,这跟编程没直接关系。代码(code)是指程序的源文件(sourcecode)或者脚本(script)里的那些东西,这是编程层面上的事。命令(command)是指在操作系统的终端里输入的那些要被执行的指令,诸如ls、cd、g16 无数人提问时说自己用了6-31G(或6-311G)算了某某某。每次看到这样的提问我就想,这人到底是用的什么基组?是6-31G*但为了在提问时少打字把*或(d)之类极化函数符号略去了,还是说计算时用的基组本身确实就没带极化函数,就是个干巴巴的6-31G?如果是前者,必须深刻记住提问时绝对不得偷工减料,必须认真把自己的情况全面、如实描述清楚;如果是后者,那计算结果根本没法用,结果太烂,这属于基组的基础知识都没掌握。这两种情况都会严重遭人鄙视。 Pople基组用加号代表加弥散函数,这必须写在G的前头。很多人写Pople基组的时候,老是误把弥散函数的加号写到G的后头去,比如6-31G+、6-311G+(d,p),这是严重错误的,暴露出研究者比较菜。错误的书写还对很多其他人有误导,人问我文献中6-31G+是什么意思,和6-31+G有什么区别... 无论在什么场合,对理论方法的描述都必须非常严谨,这个问题在前面第10条已经说了一部分,这里再进一步说一下。 很多次看到有人说自己用B3算了某某某,这又是明显体现基本知识不过关,B3LYP、B3PW91、B3P86、B3PBE等等组合多了去了,具体指什么?如果就是指最常用的B3LYP,何故省略LYP三个字母却给别人的理解带来不便? 还老有人计算时明明带了DFT-D3校正,提问时居然不说,只说泛函原本名字,等我强调必须加DFT-D3时,对方才说已经加了DFT-D3,这极其令我愤怒!加不加色散校正根本就不是同样的理论方法,而且很多情况对结果影响巨大,这么重要的事怎么能不在提问时强调!?诸如你实际计算用了PBE结合DFT-D3(BJ),就必须在提问时说用的是PBE-D3(BJ)! 经常有初学者说“极化基组”、“弥散基组”,这非常不妥。那应当叫做“带极化函数的基组”、“带弥散函数的基组”。顺带一提,一定要注意不要自己随便造词,科学研究领域的用词是非常严谨的,容不得任意性,绝对不可随便自由发挥。 绝对不要把LUMO拼成LOMO,不要把HOMO拼成HUMO。这种常见的低级错误令内行人看着很不爽,一看就是个水平很差的菜鸟。误拼的人8成都不知道英文全称怎么拼。 π的英文拼法是pi,老有人按照汉语拼音拼成pai,说什么pai键、pai-pai堆积之类,显得特别low。不可思议的是,越来越多的人在网上提问时还把π写成“兀”甚至“丌”,说什么“兀兀堆积”、“丌丌激发”,简直low到不堪入目,毫无最基本科学素养! 时常见到有人竟然把相互作用写成“互作”、伞状采样写成“伞采”,哪有这种恶心的缩写!绝对不要自己图方便乱发明缩写。我也很讨厌看到有人把表面活性剂写成“表活”的。 老有人把M06-2X写成MO6-2X,真讨厌。还时不时有人把B3LYP写成b31yp(这里的l是数字)。 不要把单重态(singlet)、三重态(triplet)说成单态、三态。要知道x重态是自旋多重度(spinmultiplicity)层面的概念,理应把“重”体现进去。而用“单态”、“三态”在有的语境下还可能会造成明显歧义。也不建议把x重态叫x线态,以前有的老的书里用后者,这在如今来说是不推荐、不规范的。自旋多重度不要简称为多重度,否则显得很不专业,还可能有歧义。 close-shell、open-shell叫做闭壳层、开壳层。“壳”发的是ke二声(不接受抬杠)。居然老有人写成开窍层、闭窍层。