发布: 2006-8-21 10:08 | 作者: niuniu123 | 来源: 化学吧 - 化学论坛 - 学术论坛
Personally I feel this material is a very good ABC for the expt. chemists.
This material is from 厦门大学理论化学研究中心
http://ctc.xmu.edu.cn/cgi-bin/to ... pic=5247&show=0
[这个贴子最后由helpme在 2006/08/07 04:11pm 第 2 次编辑]
有些小问题,论坛上不停有人问。我想把一些入门的小东西总结到一个帖子里面,便于大家查找。错误之处还请指教。一些讨论只适用于入门,深入的讨论还需要看具体文献。
原来想理论和应用分开的,现在看来写不了太多,还是放在一起了。
另外建议多查询。本版许多帖子对初学都是很有用的。
谢谢各位支持,但为了便于阅读,所以删除了一些说“支持”的帖子,还请见谅。
1) 关于自旋多重度
定义: 多重度=2S+1, S=n*1/2,n为单电子数。所以,关键是单电子的数目是多少。
当有偶数个电子时,例如 O2,共有16个电子,那么单电子数目可能是0,即8个alpha和8个beta电子配对,对应单重态,但是也可能是有9个α电子和7个β电子,那么能成对的是7对,还剩2个α没有配对,于是n=2,对应的是多重度3。同理还可以有多重度5,7,9, ...一般而言,是多重度低的能量低,最稳定,所以,一般来说,偶数电子的体系多重度就是1。但是也有例外,例如O2就是一个大家都知道的例子,它的基态是三重态,其单重态反而是激发态。
所以,总结一下,就是
电子数目是偶数,未成对电子数目n=0,2,4,6,...自旋多重度是1,3,5,7,...
电子数目是奇数,未成对电子数目n=1,3,5,7,...自旋多重度是2,4,6,8,...
多数情况是多重度低的能量低,有时(特别是有“磁”性的时候,例如顺磁的O2,以及Fe啊什么的),可能会高多重度的能量低。
2) 关于赝势:
简单来说,赝势就是不计算内层电子,而是把内层电子的贡献用一个势来描述,放在哈密顿里面。适用于重元素。
使用赝势的3个原因:
1。没有相应的全电子基组。
2。减少计算量。
3。赝势可以包含重金属相对论效应的修正。
在高斯中,lanl2dz基组,在手册中可以查到其定义为:
LanL2DZ: D95V on first row , Los Alamos ECP plus DZ on Na-Bi,也就是说,对于C,O等元素来说(量化中,H大概算第0周期,C,O才是第一周期),Lanl2dz实际上还是全电子基组,而对于Na以后才是对内层电子用Los Alamos ECP赝势,外层电子用DZ 基组。
使用赝势的输入文件:
1.所有原子使用lanl2dz
--------------------------
#HF/lanl2dz opt
lanl2dz for all atoms
0 2
O 0.0 0.0 0.0
C 0.0 0.0 1.2
Cu 0.0 0.0 3.2
--------------------------
2.所有原子使用lanl2dz的另一种输入方法。
--------------------------
#HF/genecp opt
lanl2dz for all atoms
0 2
O 0.0 0.0 0.0
C 0.0 0.0 1.2
Cu 0.0 0.0 3.2
C O 0
lanl2dz
****
Cu 0
lanl2dz //定义价电子的基组, C O 0 是碳,氧,零,其中零用作终止符号。
****
Cu 0
lanl2dz //定义内层电子的赝势
--------------------------
3.混和基组,即有的使用全电子,有的使用Lanl2dz。格式同2。
--------------------------
#HF/genecp opt
lanl2dz for Cu, 6-31G(d) for C and O
0 2
O 0.0 0.0 0.0
C 0.0 0.0 1.2
Cu 0.0 0.0 3.2
C O 0
6-31G(d) //另一种全电子基组
****
Cu 0
lanl2dz //定义价电子的基组
****
Cu 0
lanl2dz //定义内层电子的赝势
--------------------------
3) 开壳层和闭壳层
闭壳层计算就是对于多重度是1的体系,此时α和β的电子数目相同,可以把α和β配对,成对的α和β使用同一个轨道,一个轨道上填充2个电子。
开壳层计算就是对α和β电子分别计算,一个轨道上只填充1个电子,一般来说,多重度是1时,开壳层计算和闭壳层计算会给出相同的结果。
开壳层计算是对多重度大于1的体系,此时α和β的电子数目不同,设有m个α和n个β电子,m>n,那么让前n个轨道上每个填充一个α和一个β,剩下的m-n个α电子再填充m-n个轨道。即前n个轨道是闭的(每个轨道2个电子),后m-n个轨道是开的(每个轨道1个电子)
在高斯中,以HF为例,闭、开、开壳层计算分别是RHF,UHF,ROHF。如果只写HF,则按下面的方式取默认方法:
对多重度是1的体系,默认为RHF,对多重度大于1的体系,默认是UHF。
总结如下图。其中M是多重度。 (see the fig. at the bottom)
4) 关于收敛问题 (L502, L508, L9999)
对于一个优化计算,它的过程是先做一个SCF计算,得到这个构型下的能量,然后优化构型,再做SCF,然后再优化构型。。因此,会有两种不收敛的情况:一是在某一步的SCF不收敛(L502错误),或者构型优化没有找到最后结果(L9999错误)。
预备知识:计算时保存chk文件,可以在后续计算中使用guess=read读初始猜测.
对于SCF不收敛,通常有以下的解决方法:
1. 使用小基组,或低级算法计算,得到scf收敛的波函数,用guess=read读初始波函数。
2. 使用scf=qc,这个计算会慢,而且需要用stable关键字来测试结果是否波函数稳定。如果这个还不收敛,会提示L508错误。
3. 改变键长,一般是缩小一点,有时会有用。
4. 计算相同体系的其他电子态,比如相应的阴离子、阳离子体系或单重态体系,得到的收敛波函数作为初始猜测进行计算。
5. 待补充.
对于优化不收敛,即L9999错误,实际上是在规定的步数内没有完成优化,即还没有找到极小值点。(或者对于过渡态优化,还没有找到过渡态)
这有几种可能性:
1. 看一下能量的收敛的情况,可能正在单调减小,眼看有收敛的趋势,这样的情况下,只要加大循环的步数(opt(maxcycle=200)),可能就可以解决问题了。
2. 加大循环步数还不能解决的(循环步数有人说超过200再不收敛,再加也不会有用了,这虽然不一定绝对正确,但200步应该也差不多了),有两种可能。一是查看能量,发现能量在振荡了,且变化已经很小了,这时可能重新算一下,或者构型稍微变一下,继续优化,就可以得到收敛的结果(当然也有麻烦的,看运气和经验了);二是构型变化太大,和你预计的差别过大,这很可能是你的初始构型太差了,优化不知道到哪里去了,这时最好检查一下初始构型,再从头优化。
3. 对于L9999快达到收敛时,考虑减小优化步长有时对于能量振荡的情况也是有用的,opt(maxstep=1).(flyingheart )
一个建议是,对于大体系,难收敛体系,先用小基组,低精度算法优化一下,以得到较好的初始构型,再用高精度的计算接着算。如果前面的方法保留了chk文件,重新计算时需要使用 geom=allcheck 读入构型(就不必麻烦地写构型了), guess=read(读入初始波函数,可以加快第一步SCF收敛)。
5) 关于 window下编写输入文件,在linux下运行的问题
(原贴 http://210.34.15.126/cgi-bin/topic.cgi?forum=3&topic=381)
如果不注意,常常会出错。这是因为wendow和linux的字符格式不一样造成的。
刚刚使用linux的人常会犯这个错误,(我也是)
这里说一下两个最简单的解决办法:
1。windows下用ultraedit编写文件。写好了用鼠标选中,copy,粘贴到linux下的文件中。
就是不要用ftp传输文件过去。
2。最好的办法:直接在linux下编写文件。
(flyingheart )
有些全角符号不心贴到linux下也会出错,我当初输入文件中有一个全角的符号导致文件不能正常运行,看了半天才发现问题所在。还要注意一些文件名不能使用特殊符号,linux下不支持。
( vliant )
我觉得ultraedit中文件选项中的转化栏挺好用的,只要把dos转化为unix格式直接传入即可,我一直如此操作,习惯的很。
( scopio )
1.传到linux/unix后可以执行dos2unix file转换, 对应的命令还有unix2dos
如果没有可以到网上搜dos2unix的源码下来编
2. 另外还有一种方法,我看有人说用vi打开,然后:%s /^M//g 可以搞定,可惜我没有试成功
我用这样的办法试了一下,好象可行
cat -v file > inp vi inp
然后在vi中可以看到^M,在命令模式下,:%s /\\^M//g 搞定, 这里^M的输入方法是ctrl+v,然后按M或者Enter
(kitor)
在windows上编辑完,传到linux后,cat windowsfile|col -b>linuxfile 就ok了。下载本文