Science 版 (精华区)
发信人: zjliu (秋天的萝卜), 信区: Science
标 题: MOLPRO2002.03使用入门(11)
发信站: 哈工大紫丁香 (Fri May 2 13:12:35 2003) , 转信
十三. MOLPRO的高级特性
在以下部分,给出MOLPRO一些特殊功能的例子。说明并不详细,更完整的信息请参阅参考
手
册。
13.1 内存控制
MOLPRO把所有的内部数据存储到一个很大的工作区中,它在计算的开始动态分配。内存量
在
molpro.rc文件中用-m选项指定,默认8 MW (64 Mb)。大的计算需要更多内存,默认值可以
用memory指令修改。这应当是输入文件在*** title卡之后的第一个指令,如果出现的话,
如下面的例子所
示:
***,title
memory,16,m ! 分配16 MW内存
geometry={...} ! 定义核坐标
basis=vdz ! 选择基组
hf ! 执行HF计算
ccsd(t) ! 执行CCSD(T)计算
内存的需要量依赖于基组,分子对称性,以及所用的方法,因此很难提前预测。大多数计
算
使用16 MW或更少,但是低对称性可能需要大内存。保险的选择是指定64 MW,但是这需要
计
算机有足够的内存(这种情况下大于512 MB)。内存也可以在molpro的命令行用-m选项给
出
,见第三章。
如果给出了memory卡,它优先于命令行选项。
13.2 重新开始计算
到目前为止,在所有给出的例子中,默认用草稿文件存储MOLPRO所需的中间数据,而用户
通
常看不到这些文件。不过也可以把计算的轨道和能量数据保存到命名的(固定)文件中,
用
于在以后重新开始计算。MOLPRO使用许多不同的文件,但只有其中的一两个对重新计算是
必
需的。文件1保
存单、双电子积分和相关信息,文件2存储了波函信息,如轨道,轨道能量,以及可选的C
I
矢量。因此文件2对重新计算是必需的,而文件1中的积分可以重新开始,或重新计算。
使用命名的文件可以用file指令,它必须在memory命令(如果出现的话)之后立即给出,
例
如,
***,title
memory,16,m ! 分配16 MW内存
file,1,filename.int ! 指定固定的积分文件
file,2,filename.wfu ! 指定固定的波函(dump)文件
geometry={...} ! 定义核坐标
basis=vdz ! 选择基组
hf ! 执行HF计算
ccsd(t) ! 执行CCSD(T)计算
如果相同的文件名用于随后的计算,MOLPRO将把所有保存的数据自动恢复到给定文件中。
例
如,如果下面的输入用在前一个例子之后,那么积分和轨道将重新开始,用于随后的CASS
CF
和MRCI计算:
***,title
memory,16,m ! 分配16 MW内存
file,1,filename.int ! 指定固定的积分文件
file,2,filename.wfu ! 指定固定的波函(dump)文件
casscf ! CASSCF,用前面的SCF轨道作为初始猜测
mrci ! 使用CASSCF参考波函的MRCI
如果输入文件只定义了文件2,如在下面例子所示,将自动重新计算积分。
***,title
memory,16,m ! 分配16 MW内存
file,2,filename.wfu ! 指定固定的波函(dump)文件
casscf ! CASSCF,用HF轨道作为初始猜测
mrci ! 使用CASSCF参考波函的MRCI
自动重新开始的功能可以在文件名之后指定new来禁止,例如,
***,title
memory,16,m ! 分配16 MW内存
file,2,filename.wfu,new ! 指定固定的波函(dump)文件。如果文件存在则覆盖
hf ! 执行Hartree-Fock计算
casscf ! CASSCF,用HF轨道作为初始猜测
13.3 Punch文件
最重要的结果,像结构,能量,偶极矩,和梯度,通过使用punch指令,都被写入一个叫做
p
unch的文件中永久保存。
punch,filename
13.4 打印选项
MOLPRO对各种方法有许多打印选项,详细说明在参考手册中,但实际上只需要其中的一些
。
一般有两种打印选项:全局选项,用gprint指令定义,用于所有方法;局部选项,用prin
t
指令定义,只能用于一个任务步骤。局部打印命令是某一特定方法输入的一部分,因此必
须
直接接在相应的
命令之后。另一方面,全局打印选项对后面的所有方法起作用。例如,
gprint,orbitals ! 全局打印选项:打印HF和CASSCF轨道
hf
casscf
hf
print,orbitals ! 局部打印选项:打印HF轨道
casscf ! CASSCF轨道不打印
为了避免混淆和意外的结果,我们推荐只使用全局打印选项,除非是用于特殊的调试目的
。
最重要的全局打印选项是
gprint,basis ! 打印基组信息
gprint,orbitals ! 打印占据轨道
gprint,orbitals=2 ! 打印每个对称性的占据轨道和两个最低的虚轨道
gprint,civector ! 打印组态因子
注意,默认只打印大于0.05的CI因子。修改这个阈值见13.5节。
对一个gprint指令可以给出几个打印选项,例如,
gprint,basis,orbitals=1,civector
13.5 收敛阈值
如果打印选项有全局和局部阈值,分别用gthresh和thresh指令定义。我们这里只涉及一些
有用的全局阈值(及其默认值)。
gthresh,energy=1.d-6 ! 能量的收敛阈值。这影响所有的迭代方法
gthresh,orbital=1.d-5 ! 轨道的收敛阈值。这只影响SCF
gthresh,step=1.d-2 ! 轨道旋转的收敛阈值。这只影响MCSCF
gthresh,civec=1.d-5 ! CI和CCSD的CI因子收敛阈值
gthresh,optgrad=1.d-4 ! 几何优化梯度的阈值
gthresh,optenerg=1.d-6 ! 几何优化能量的阈值
gthresh,twoint=1.d-11 ! 忽略小双电子积分的阈值
gthresh,compress=1.d-11 ! 积分压缩的精度
gthresh,printci=0.05 ! 打印所有大于0.05的CI因子
gthresh,punchci=0.05 ! 把所有大于0.05的CI因子写入punch文件中
注意能量阈值也影响有些其它阈值的默认值,例如orbital,step,和civec,因此如果是
高
精度计算的话,通常把能量阈值减小到足够的数值。
一个gthresh指令可以定义任意数量的阈值,例如,
gthresh,energy=1.d-8,printci=0.03
13.6 变量
结果和其它值可以存储到变量中,用于后面的计算。变量可以在输入中简单地设置为:
name=值
变量也可以是一维数组,格式是
name=[值1, 值2, 值3,...]
当前数组的维数是#name。
MOLPRO把某些结果存储到预先定义了名称的变量中。最重要的变量有
ORBITAL 存储最后计算轨道的纪录
ENERGR(istate) 在MRCI和CCSD中,态istate的参考能量
ENERGY(istate) 对态istate最后计算的总能量
ENERGC 除了微扰三重修正之外的总能量(只在CCSD/QCI程序中设置)
ENERGD(istate) 包含Davidson修正的态istate的总能量(只在CI程序中设置)
ENERGP(istate) 包含Pople修正的态istate的总能量(只在CI程序中设置)
ENERGT(1) 包含微扰三重修正(T)的总能量(只在CCSD(T)/QCI(T)程序中设置)
ENERGT(2) 包含微扰三重修正[T]的总能量(只在CCSD(T)/QCI(T)程序中设置)
ENERGT(3) 包含微扰三重修正-t的总能量(只在CCSD(T)/QCI(T)程序中设置)
EMP2 在MPn,CCSD,BCCD,或QCISD计算中保存MP2能量,在MRPT2 (CASPT2)中保存RS2
能
量
EMP3 在MP3和MP4计算中保存MP3能量,在MRPT3 (CASPT3)中保存RS3能量
EMP4 在MP4计算中保存MP4(SDQ)能量。MP4(SDTQ)能量存储到ENERGY变量中
STATUS 最后一步的状态(1=无错误;-1=出错或不收敛)
更多的变量见参考手册。
13.7 用do循环,if块和goto命令控制程序
MOLPRO还可以写简单的输入程序,用于检查条件或对输入的某个部分执行循环。IF块和DO
循
环具有和Fortran类似的形式。
一行IF:
IF (条件) 命令
如果有多个依赖于条件的命令,可以使用IF块:
IF (条件) THEN
命令
END IF
or
IF (条件) THEN
命令
ELSE
命令
END IF
同样地,DO循环的结构也类似于Fortran:
DO ivar=istart,iend,[increment]
命令
ENDDO
ivar是循环的下标变量,istart,iend,和increment是数值或者变量。默认的increment
是
1。
例子:
几个结构的循环(HCl的势能曲线):
***,HCl
geometry ! Z-矩阵结构输入
h
cl,h,r
end
r=1.5 ! 键长的初始变量
hf ! Hartree-Fock用于初始结构
do i=1,10 ! 对键长做循环
casscf; ! 执行CASSCF
ecas(i)=energy ! 把CASSCF能量保存到数组ecas中
mrci ! 执行MRCI
rhcl(i)=r ! 把键长保存到数组rhcl中
emrci(i)=energy ! 把MRCI能量保存到数组emrci中
emrda(i)=energd ! 把Davidson校正能量保存到数组emrda中
r=r+0.2 !增加r
end do
也可以预先设定一些键长:
***,HCl
rhcl=[1.6,1.8,2.0,2.2,2.3,2.4,2.5,2.7,3.0,3.5,4.0,5.0,6.0,7.0]
geometry ! Z-矩阵结构输入
h
cl,h,r
end
do i=1,#rhcl ! 对键长做循环
r=rhcl(i) ! 把r设定为当前的键长
if(i.eq.1) then ! 对第一个计算执行Hartree-Fock
hf ! Hartree-Fock用于初始结构
end if
casscf; ! 执行CASSCF
ecas(i)=energy ! 把CASSCF能量保存到数组ecas中
mrci ! 执行MRCI
rhcl(i)=r ! 把键长保存到数组rhcl中
emrci(i)=energy ! 把MRCI能量保存到数组emrci中
emrda(i)=energd ! 把Davidson校正能量保存到数组emrda中
end do
也可以用GOTO跳到输入文件后面的一些命令。例如,
if(orbital.ne.0) goto casscf ! 如果轨道记录存在,跳到CASSCF
hf !Hartree-Fock
casscf; !CASSCF
13.8 制表与绘图
前面的计算结果可以用表格的形式打印,并用免费的绘图程序xmgrace画图。在前面的输入
中加入:
table,rhcl,ecas,emrci,emrda ! 打印表格
plot,file='hcl.plot' ! 产生xmgrace图表文件
Title,Results for HCl ! 表格的标题
就会打印以下表格:
Results for HCl
RHCL ECAS EMRCI EMRDA
1.6 -459.8049671 -459.9476516 -459.9549021
1.8 -459.9690821 -460.1118784 -460.1192275
2.0 -460.0545599 -460.1972494 -460.2046870
2.2 -460.0940081 -460.2362450 -460.2437423
2.3 -460.1028655 -460.2447475 -460.2522596
2.4 -460.1067696 -460.2482178 -460.2557336
2.5 -460.1069614 -460.2479059 -460.2554148
2.7 -460.0998440 -460.2396165 -460.2470838
3.0 -460.0793517 -460.2171250 -460.2244794
3.5 -460.0401054 -460.1744682 -460.1815696
4.0 -460.0085291 -460.1399223 -460.1467670
5.0 -459.9768057 -460.1047967 -460.1113263
6.0 -459.9685139 -460.0955779 -460.1020174
7.0 -459.9668469 -460.0937046 -460.1001220
随后执行:
xmgrace hcl.plot
产生下面的图:
13.9 到MOLDEN的接口
用PUT指令可以保存结构和轨道,用于MOLDEN的显示。在频率计算中还保存简正模式。例子
如下:
***,H2O
geometry ! H2O的Z-矩阵输入
angstrom ! 键长用埃的单位
o
h,o,roh
h,o,roh,h,theta
end
roh=1.0 ! 键长
theta=104.0 ! 键角
hf ! 进行Hartree-Fock计算
optg ! HF级别的几何优化
frequencies ! 计算谐振频率
put,molden,h2o.molden; ! 把结果保存到h2o.molden文件中
h2o.molden文件可以直接用作MOLDEN的输入。
--
※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 202.118.229.86]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:204.483毫秒