gaussian在linux下几个问题
(2012-10-10 09:12:13)
标签:
杂谈 |
分类: Gaussian |
1.Gaussian如何实现批处理?
自旋多重度定义为2S+1,其中S是自旋角动量,它与体系内的单电子数(N)相关。S=N/2,所以说到底最简单的判断方法:自旋多重度等于单电子数+1。
怎们判断体系单电子数需要计算者对自己研究的体系有着深入的了解,这是开展科研的前提,不是偷懒的理由。
但有一点可以提醒Gaussian初学者,计算体系总电子数时需要加上体系的电荷,这样才不会算错单电子数。
如果实在无法判断到底有几个单电子,那么根据体系的总电子数,算各种可能情况,找那个能量最低的。
体系总电子数为偶数:自旋多重度可能是1,3,5,7....
体系总电子数为奇数:自旋多重度可能是2,4,6,8....
L9999错误是什么?如何解决?
L502错误是什么?如何解决?
如果你有三个文件分别进行计算
这三个文件叫做a.gjf,b.gjf和c.gjf
那么可以进行的批处理方法是:
1)Linux下
写一个文件x.in,内容如下
==文件开始==
nohup g03 a.gjf a.log &
wait
nohup g03 b.gjf b.log &
wait
nohup g03 c.gjf c.log &
==文件结束==
然后提交这个文件,命令为sh x.in &
2)Window下
写一个文件x.bcf,内容如下
==文件开始==
!start=1
a.gjf , a.out
b.gjf , b.out
c.gjf , c.out
==文件结束==
然后用G03运行这个文件
3)Linux和Windows通用
把三个gjf文件写成一个gjf,内容如下
==文件开始==
a.gjf的全部内容(原封不动照抄)
(空行)
--link1--
b.gjf的全部内容(原封不动照抄)
(空行)
--link1--
c.gjf的全部内容(原封不动照抄)
==文件结束==
2.2070是什么错误啊?什么是log/out文件的错误提示啊,在哪儿看?
这三个文件叫做a.gjf,b.gjf和c.gjf
那么可以进行的批处理方法是:
1)Linux下
写一个文件x.in,内容如下
==文件开始==
nohup g03 a.gjf a.log &
wait
nohup g03 b.gjf b.log &
wait
nohup g03 c.gjf c.log &
==文件结束==
然后提交这个文件,命令为sh x.in &
2)Window下
写一个文件x.bcf,内容如下
==文件开始==
!start=1
a.gjf , a.out
b.gjf , b.out
c.gjf , c.out
==文件结束==
然后用G03运行这个文件
3)Linux和Windows通用
把三个gjf文件写成一个gjf,内容如下
==文件开始==
a.gjf的全部内容(原封不动照抄)
(空行)
--link1--
b.gjf的全部内容(原封不动照抄)
(空行)
--link1--
c.gjf的全部内容(原封不动照抄)
==文件结束==
2070错误
最基本的解释就是,你的系统在安装了g03/g09之后,运行时对内存调用出错.....
解决措施:
1 更换稳定版本的系统, 采用完整的正版系统.
2 使用linux平台,采用稳定版(非最新版), 如果linux下遇到Segementation Fault,在找别的方法处置, 一般只需一个指令,就可以一劳永逸....
对于一个新手,你不必管什么是2070错误。是什么错误应该看最后终止在哪一步,例如L1就是命令行里有错误,L301通常是自选多重度错误等,而且在结果文件中最后部分会给出错误的原因(就是error termination这一行)
最基本的解释就是,你的系统在安装了g03/g09之后,运行时对内存调用出错.....
解决措施:
1 更换稳定版本的系统, 采用完整的正版系统.
2 使用linux平台,采用稳定版(非最新版), 如果linux下遇到Segementation Fault,在找别的方法处置, 一般只需一个指令,就可以一劳永逸....
对于一个新手,你不必管什么是2070错误。是什么错误应该看最后终止在哪一步,例如L1就是命令行里有错误,L301通常是自选多重度错误等,而且在结果文件中最后部分会给出错误的原因(就是error termination这一行)
3.高斯不能优化轨道,只能计算波函数(轨道)和优化构型。
高斯计算某个分子构型的波函数和能量的基本方法是自洽场方法(SCF),就是用迭代的办法解由薛定谔方程变化得到的Hartree-Fock-Roothaan方程得到分子的波函数和能量,如果使用密度泛函理论,则解Kohn-Sham方程。针对不同的需要,还有用于计算组态相关的MCSCF,适用于溶剂模型的SCRF等等,它们都是基于SCF方法,基本原理相同,都是用迭代方法。
优化构型以一定的算法搜索一系列构型,并且每一步都计算能量和梯度,最终达到能量极小点(稳定构型)或者极大点(过渡态或者高阶鞍点)。高斯主要使用本征值跟踪算法(EF)和内坐标的Berny算法等做优化。
4.scf不收敛怎么办?几何优化不收敛怎么办?
虽然二者有联系,但实际上是两个相对独立的问题,要分开回答。 首先要分清scf不收敛和几何构型优化不收敛:scf不收敛指的是自洽场叠代不收敛,可以认为是对指定结构的波函数不断优化的过程,是为了找到这个某个指定结构下能量最低的波函数,而几何构型优化是对结构的优化的过程,是为了找到某个指定的组分下能量极小结构(注意,不一定是能量最小结构)。在量子化学计算的几何构型优化中,每一步的几何构型优化都包含的很多次的scf计算。
1、scf不收敛的解决方案。
(1) 可以加大scf的循环次数,默认的循环次数是128次,通过scf=(maxcycle=n)来设置最大循环次数n。建议不要超过512,更多的循换没有必要。
(2) 如果加大循环次数不管用,在分子有对称性的情况下,使用scf=dsymm关键词来强制密度对称,有时可以收敛。另外,此关键词很多时候对"scf is confused”这种错误很管用。
(3) 使用scf=symm关键词,使用的前提同上,有时可以收敛。
(4) 如果(2)(3)两步都不行,可以将对称的分子中的某几个原子的位置微调,使分子丧失对称性。这等效于nosymm关键词,但个人经验,这种方式比nosymm好用的多。
(5) 如果还不行,只能拿出杀手锏了,就是使用qc,但不建议直接使用,而是使用xqc关键词,比如scf=(maxcycle=80,xqc),意思是如果scf正常计算(dc)在80个循环之内不收敛才进行昂贵的qc计算,因为scf不收敛多数在几个优化的过程中出现,无法判断哪一步优化的时候会出现scf不收敛,所以用xqc比纯粹使用qc要省时的多。
(6) 中级用户可以在输入文件的井号“#”开头那一行井号后面加上字母"p"来输出更多的信息,其中就有自洽场叠代的信息,分析原因可能会对采用什么方法提供指导。
(7) 如果用用小基组计算,scf可以收敛,那么保存好检查点文件,换成大基组的时候从检查点文件中读取初始猜测(使用guess=read关键词),有时可以算过去。
5.自旋多重度是用来区分一组简并的波函数,这些波函数之间只存在自旋角动量的不同。1、scf不收敛的解决方案。
(1) 可以加大scf的循环次数,默认的循环次数是128次,通过scf=(maxcycle=n)来设置最大循环次数n。建议不要超过512,更多的循换没有必要。
(2) 如果加大循环次数不管用,在分子有对称性的情况下,使用scf=dsymm关键词来强制密度对称,有时可以收敛。另外,此关键词很多时候对"scf is confused”这种错误很管用。
(3) 使用scf=symm关键词,使用的前提同上,有时可以收敛。
(4) 如果(2)(3)两步都不行,可以将对称的分子中的某几个原子的位置微调,使分子丧失对称性。这等效于nosymm关键词,但个人经验,这种方式比nosymm好用的多。
(5) 如果还不行,只能拿出杀手锏了,就是使用qc,但不建议直接使用,而是使用xqc关键词,比如scf=(maxcycle=80,xqc),意思是如果scf正常计算(dc)在80个循环之内不收敛才进行昂贵的qc计算,因为scf不收敛多数在几个优化的过程中出现,无法判断哪一步优化的时候会出现scf不收敛,所以用xqc比纯粹使用qc要省时的多。
(6) 中级用户可以在输入文件的井号“#”开头那一行井号后面加上字母"p"来输出更多的信息,其中就有自洽场叠代的信息,分析原因可能会对采用什么方法提供指导。
(7) 如果用用小基组计算,scf可以收敛,那么保存好检查点文件,换成大基组的时候从检查点文件中读取初始猜测(使用guess=read关键词),有时可以算过去。
自旋多重度定义为2S+1,其中S是自旋角动量,它与体系内的单电子数(N)相关。S=N/2,所以说到底最简单的判断方法:自旋多重度等于单电子数+1。
怎们判断体系单电子数需要计算者对自己研究的体系有着深入的了解,这是开展科研的前提,不是偷懒的理由。
但有一点可以提醒Gaussian初学者,计算体系总电子数时需要加上体系的电荷,这样才不会算错单电子数。
如果实在无法判断到底有几个单电子,那么根据体系的总电子数,算各种可能情况,找那个能量最低的。
体系总电子数为偶数:自旋多重度可能是1,3,5,7....
体系总电子数为奇数:自旋多重度可能是2,4,6,8....
L9999错误是什么?如何解决?
L502错误是什么?如何解决?
L9999错误是属于构型优化没有找到最后结果,即在规定的优化步骤内没有找到最终的合适的结构。对于优化不收敛,即L9999错误,实际上是在规定的步数内没有完成优化,即还没有找到极小值点。(或者对于过渡态优化,还没有找到过渡态),可以增加优化步骤,或是拿最后的结构
接着进行优化。
此外这有几种可能性:
1. 看一下能量的收敛的情况,可能正在单调减小,眼看有收敛的趋势,这样的情况下,只要加大循环的步数opt(maxcycle=200),可能就可以解决问题了。
2. 加大循环步数还不能解决的(循环步数有人说超过200再不收敛,再加也不会有用了,这虽然不一定绝对正确,但200步应该也差不多了),有两种可能。一是查看能量,发现能量在振荡了,且变化已经很小了,这时可能重新算一下,或者构型稍微变一下,继续优化,就可以得到收敛的结果(当然也有麻烦的,看运气和经验了);二是构型变化太大,和你预计的差别过大,这很可能是你的初始构型太差了,优化不知道到哪里去了,这时最好检查一下初始构型,再从头优化。
3. 对于L9999快达到收敛时,考虑减小优化步长有时对于能量振荡的情况也是有用的,opt(maxstep=1).
一个建议是,对于大体系,难收敛体系,先用小基组,低精度算法优化一下,以得到较好的初始构型,再用高精度的计算接着算。如果前面的方法保留了chk文件,重新计算时需要使用 geom=allcheck 读入构型(就不必麻烦地写构型了), guess=read(读入初始波函数,可以加快第一步SCF收敛)。
L502错误对应的是SCF不收敛,通常有以下的解决方法:
a. 使用小基组,或低级算法计算,得到scf收敛的波函数,用guess=read读初始波函数。
b. 使用scf=qc,这个计算会慢,而且需要用stable关键字来测试结果是否波函数稳定。如果这个还不收敛,会提示L508错误。
c. 改变键长,一般是缩小一点,有时会有用。
d. 计算相同体系的其他电子态,比如相应的阴离子、阳离子体系或单重态体系,得到的收敛波函数作为初始猜测进行计算。
dos2unix a是将wins类型的文件a转化为linux格式。一版用于由windows上传的文件,否则容易报错
此外这有几种可能性:
1. 看一下能量的收敛的情况,可能正在单调减小,眼看有收敛的趋势,这样的情况下,只要加大循环的步数opt(maxcycle=200),可能就可以解决问题了。
2. 加大循环步数还不能解决的(循环步数有人说超过200再不收敛,再加也不会有用了,这虽然不一定绝对正确,但200步应该也差不多了),有两种可能。一是查看能量,发现能量在振荡了,且变化已经很小了,这时可能重新算一下,或者构型稍微变一下,继续优化,就可以得到收敛的结果(当然也有麻烦的,看运气和经验了);二是构型变化太大,和你预计的差别过大,这很可能是你的初始构型太差了,优化不知道到哪里去了,这时最好检查一下初始构型,再从头优化。
3. 对于L9999快达到收敛时,考虑减小优化步长有时对于能量振荡的情况也是有用的,opt(maxstep=1).
一个建议是,对于大体系,难收敛体系,先用小基组,低精度算法优化一下,以得到较好的初始构型,再用高精度的计算接着算。如果前面的方法保留了chk文件,重新计算时需要使用 geom=allcheck 读入构型(就不必麻烦地写构型了), guess=read(读入初始波函数,可以加快第一步SCF收敛)。
L502错误对应的是SCF不收敛,通常有以下的解决方法:
a. 使用小基组,或低级算法计算,得到scf收敛的波函数,用guess=read读初始波函数。
b. 使用scf=qc,这个计算会慢,而且需要用stable关键字来测试结果是否波函数稳定。如果这个还不收敛,会提示L508错误。
c. 改变键长,一般是缩小一点,有时会有用。
d. 计算相同体系的其他电子态,比如相应的阴离子、阳离子体系或单重态体系,得到的收敛波函数作为初始猜测进行计算。
dos2unix a是将wins类型的文件a转化为linux格式。一版用于由windows上传的文件,否则容易报错
后一篇:Linux设置环境变量