24小时热门版块排行榜    

查看: 645  |  回复: 0
当前主题已经存档。

雪狼乖乖

木虫 (正式写手)


[交流] 【交流】gaussian03 UNIX运行

gaussian03 运行   
这一章讲述用于在UNIX计算机系统上运行Gaussian所需要的操作系统命令。对于其它操作系统的等效信息,见随程序一起的说明书。G03W运行简单,这里不再叙述。这一章假定程序已经像在第6章所讲的那样安装完毕。本章最后一部分列出了构成Gaussian 03程序的链接。

运行Gaussian包含以下步骤:

l         创建描述Gaussian计算的输入文件。

l         指定各scratch文件的位置。

l         指定资源需求

l         以交互或批处理模式开始执行程序。

在这一章,我们假定已经创建了基本的Gaussian输入文件,我们的讨论将分析列表中的剩余三项。

指定scratch文件的操作和位置
Gaussian在计算过程中使用数个scratch文件。它们包括:

l         Checkpoint文件:name.chk

l         读写文件:name.rwf

l         双电子积分文件:name.int

l         双电子积分的导数文件:name.d2e

默认情况下,这些文件由Gaussian处理进程的ID命名,并存储于由(UNIX)环境变量GAUSS_SCRDIR定义的scratch目录中。还可以在这个目录中察看name.inp形式的文件。这些是程序使用的内部输入文件。如果没有设置环境变量,则路径默认为Gaussian计算的当前工作目录。

这些文件在计算成功结束后默认删除。但是,你可能会希望保存checkpoint文件,用于以后其它的Gaussian计算任务,用于可视化程序,或者重新开始一个失败的计算,等等。这可以通过在Gaussian输入文件中使用%Chk命令,对checkpoint文件直接命名和/或为其提供路径来实现。例如:

%Chk=water

这一位于输入文件开始的命令(位于计算执行路径之前,详见第3章),给出checkpoint文件的名称water.chk,覆盖通常产生的名称,使这个文件在任务结束后被保存。这样,这个文件就保留在当前目录中。但是,下面的命令将指定其它的目录位置和文件名:

%Chk=/chem/scratch2/water

如果scratch文件目录的磁盘空间有限,但是系统有其它的磁盘空间可用,可以把scratch文件分割后存储到几个磁盘位置中。下面的命令可以定义其它scratch文件的名称和位置:

%RWF=path                      读写文件

%Int=path                      积分文件

%D2E=path                      积分导数文件

一般情况下,读写文件是最大的,所以经常为它指定其它位置。

跨磁盘分割scratch文件
对于在两个或更多磁盘(或文件系统中)上分割读写文件,积分文件,和/或积分导数文件,提供了可选的语法。下面是%RWF命令的语法:

%RWF=loc1,size1,loc2,size2,…

其中的每个loc是目录位置或文件路径名,每一个size是该目录中文件片段的最大尺寸。Gaussian将对任何定义目录的loc自动产生唯一的文件名。在UNIX系统中,目录说明(不包含文件名)必须在末尾包含斜线“/”。

默认的尺寸以字节为单位;数值后可以接KB,MB或GB(中间不插入空格)分别表示KB,MB或GB,或接KW,MW或GW,分别表示千位,兆位或吉位。注意1 MB=10242位=1,048,576位(而不是1,000,000位)。

值-1接任何尺寸参数表示使用所有可用的空间,0值表示使用当前磁盘分区的空间。-1仅对最后指定的文件是有用的,在这种情况下是默认的。

例如,下面的指令把读写文件分割到三个磁盘中:

%RWF=/Dalton/s0/,60MW,/scratch/,800MB,/temp/s0/my_job,-1

文件片段的最大尺寸分别是480 MB,800 MB,和无限制。Gaussian将对前两个片段产生文件名,第三个的名称给定为my_job。注意目录说明的末尾包含斜线。

由于目前UNIX设备的限制,使用-1需要当心,因为它可能把一个文件片段延伸,超过系统所有剩余的磁盘空间;它的另一个作用是防止使用保存在列表中的任何附加的文件片段。

保存和删除scratch文件
未命名的scratch文件在Gaussian计算结束后默认被删除,命名的则被保存。%NoSave命令可以用来改变这一默认约定。当在输入文件中包含这一指令时,指令出现在输入文件%NoSave以前的已命名scratch文件(以及所有未命名的scratch文件)将在计算后被删除。但是如果命名文件的%指令出现在%NoSave指令之后,文件将被保存。例如,下面的命令定义checkpoint文件名,以及读写文件的替代名称和目录位置,导致在Gaussian任务结束后只保存checkpoint文件:

%RWF=/chem/scratch2/water              到这里为止的文件都被删除

%NoSave

%Chk=water                             到这里为止的文件都被保存

初始化文件
Gaussian系统包含初始化文件,设置用于运行程序的用户环境。这些文件是:

$g03root/g03/bsd/g03.login             C shell

$g03root/g03/bsd/g03.profile           Bourne shell

注意g03root环境变量必须由用户设置。因此对于Gaussian用户,习惯在.login或.profile文件中包含下面的命令:

.login文件:

setenv g03root 路径

source $g03root/g03/bsd/g03.login

.profile文件:

G03root=路径

export g03root

. $g03root/g03/bsd/g03.profile

正确设置后,使用g03命令运行Gaussian 03(见下)。

控制内存使用
%Mem命令控制Gaussian使用的动态内存总量。默认使用6 MW。这可以通过n个双精度位改变,定义:

%Mem=n

例如,下面的命令设置使用64 MB内存:

%Mem=8000000

%Mem的值也可接KB,KW,MB,MW,GB或GW(中间不要插入空格)表示其它单位。例如,下面的命令同样设置使用64 MB动态内存:

%Mem=64MB

对于非常大的直接SCF计算,需要分配的内存更大——至少3N3位,其中的N是基函数数量。如果可能的话,频率和包含f函数的后-SCF计算需要6 MW内存。对于大多数系统,中等尺寸(即,小于500个基函数的直接SCF)的计算使用6 MW以上的内存并不能改善运行。

警告:如果使用多于实际物理内存的内存总量,会使运行效率极差。

如果Gaussian用在很少物理内存的计算机上,使得默认的48 MB内存不可用,那么在安装时应当对默认算法和默认的内存分配进行设置。关于提高Gaussian效率的更多细节参见第4章。

在UNIX系统中运行Gaussian
一旦准备好所有的输入和设备说明,就可以准备运行程序了。Gaussian 03可以使用两种命令形式之一进行交互运行:

G03 job-name    或

g98 output-file

在第一种形式中,程序从job-name.com读取输入,并把输出写到job-name.log中。当没有指定job-name时,程序从标准的键盘输入读取,并写到标准输出中,这可以使用通常的UNIX形式重新定位或用管道传递。和任何shell命令方式相同,使用&可以强制两种形式命令中的任何一种在后台运行。

脚本与Gaussian
运行Gaussian 03的脚本可以用几种方法创建(这些例子中我们使用C shell)。首先,像上面的g03命令可以包含在shell脚本中。第二,用<<结构,把Gaussian实际的输入包含在脚本中:



#!/bin/csh

G03 <water.log

%Chk=water

#RHF/6-31G(d)



water energy



0   1

O

H   1   1.0

H   1   1.0   2   120.0



END

echo “Job done.”




在接<<符号的字符串前,所有的行都看作是g03的输入命令。

最后,可以建立循环,依次运行几个Gaussian任务。例如,下面的脚本运行所有命令行参数指定的Gaussian输入文件,并把活动的日志文件保存到Status文件中:



#!/bin/csh

echo “Current Job Status:” > Status

      echo “Starting file $file at ‘date’ ” >> Status

      g98 < $file > $file:r.log

      echo “$file Done with status $status” >> Status

end

echo “All Done.” >> Status




下面更复杂的脚本可以从作为脚本命令行参数文件的部分输入中,创建即时的Gaussian输入文件。使用的文件缺少完整的计算执行路径;它们的计算执行路径简单地由#符号,或由包含用于分子体系的特殊关键字,但没有方法、基组或计算类型的#行构成。

脚本对每一个部分输入文件,创建一个两步的任务——Hartree-Fock优化之后是MP2单点能计算——都由脚本中的文字命令和脚本执行时指定的每个文件的内容构成。它通过使用Gaussian 03的@包含文件机制,来包含后者:



#!/bin/csh

echo “Current Job Status:” > Status

foreach file ($argv)

echo “Starting file $file at ‘date’ ” >> Status

g03 << END> $file:r.log

%Chk=$file:r

# HF/6-31G(d) FOpt

@$file/N



--Link1—

%Chk=$file:r

%NoSave

# MP2/6-31G(d,p) SP Guess=Read Geom=AllCheck

END

echo “$file Done with status $status” >> Status

end    # end of foreach

echo “All Done.” >> Status




用NQS批处理
Gaussian可以使用UNIX系统支持的NQS批处理工具。初始化文件中定义的subg03命令可以把输入任务提交到批处理序列中。它的语法是:

Subg03 序列名 任务名 [-scrdir dir1] [-exedir dir2] [-p n]

两个必需的参数是序列名和文件名。输入来自job-name.com,输出为job-namelog,与交互运行一样。NQS日志文件发送到job-name.batch-log。可选的参数-scrdir和-exedir分别用于代替默认的scratch和执行目录。其它参数来自NQS选项。特别是-p n可用于设置序列中优先为n。它在启动时优先计算(1是最低的),并不影响运行时间的优先权。

从交互方式提交NQS任务,需要创建类似于下面的文件(文件名为name.job):

# QSUB –r name –o name.out –eo

# QSUB –lt 2000 –lT 2100

# QSUB –lm 7mw –lM 7mw

g98
其中的name应当用实际计算使用的名称代替。第一行命名运行的任务,输出文件名,以及在输出文件中包含出错信息。不同的时间参数允许加入用于清除的任务控制(例如,如果事件超过运行时间限制,就保存checkpoint文件)。内存参数用于最初执行任务的时间安排,以及由程序确定动态内存的使用。

这个任务接下来使用以下的命令提交:

$ qsub name.job

输出的文件将放在当前的工作目录。

Gaussian 03的链接
下面的表列出了Gaussian 03的构成程序——也就是所说的链接(link)——及其主要功能:
链接        功能
L0        初始化程序,控制占位
L1        处理计算执行路径,创建执行链接的列表,并初始化scratch文件
L101        读取标题和分子说明部分
L102        FP优化
L103        Berny优化到最小值和TS,STQN过渡态寻找
L105        MS优化
L106        力常数或偶极矩的数值微分,用以获得极化率或超极化率
L107        线性同步过渡(LST)的过渡态寻找
L108        势能曲面扫描
L109        Newton-Raphson优化
L110        能量的二阶数值微分产生频率
L111        能量的二阶数值微分,用以计算极化率和超极化率
L113        使用解析梯度进行EF优化
L114        EF数值优化(仅使用能量)
L115        使用内反应坐标(IRC)追踪反应路径
L116        数值的自恰反应场(SCRF)
L117        后-SCF SCRF
L118        轨迹计算
L120        控制ONIOM计算
L121        ADMP计算
L122        平衡计算
L202        重新定位坐标,计算对称性,检查变量
L301        产生基组信息
L302        计算重叠积分,动能和势能积分
L303        计算多极积分
L308        计算偶极速率和Rx▽积分
L310        用简单方式计算spdf双电子积分
L311        计算sp双电子积分
L314        计算spdf双电子积分
L316        打印双电子积分
L319        对近似的自旋-轨道耦合计算单电子积分
L401        形成初始MO猜测
L402        进行半经验和分子力学计算
L405        初始化MCSCF计算
L502        迭代求解SCF方程(用于通常的UHF和ROHF,所有的直接方法,以及SCRF)
L503        使用直接最小化迭代求解SCF方程
L506        进行ROHF或GVB-PP计算
L508        二次收敛SCF程序
L510        MC-SCF
L601        布居数和相关的分析(包括多极矩)
L602        单电子特性(势,场,和场梯度)
L604        求解MO,或一个网格点的密度
L607        进行NBO分析
L608        非迭代DFT能量
L609        分子中的原子特性
L701        单电子积分一阶或二阶导数
L702        双电子积分一阶或二阶导数(sp)
L703        双电子积分一阶或二阶导数(spdf)
L716        处理优化和频率的信息
L801        双电子积分变换的初始化
L802        进行积分变换(对in-core方法是N3)
L804        积分变换
L811        变换积分导数,并计算其对MP2二阶导数的贡献
L901        反对称化双电子积分
L902        确定Hartree-Fock波函的稳定性
L903        旧的in-core MP2
L905        复合的MP2
L906        半直接的MP2
L908        OVGF (闭壳层)
L909        OVGF (开壳层)
L913        计算后-SCF能量和梯度项
L914        CIS,RPA和Zindo激发能;SCF稳定性
L915        计算五阶的量(用于MP5,QCISD(TQ)和BD(TQ))
L916        旧的MP4和CCSD
L918        重新优化波函
L1002        迭代求解CPHF方程;计算各种特性(包括NMR)
L1003        迭代求解CP-MCSCF方程
L1014        计算解析的CIS二阶导数
L1101        计算单电子积分导数
L1102        计算偶极导数积分
L1110        双电子积分导数对Fock矩阵的贡献
L1111        2 PDM和后-SCF导数
L1112        MP2二阶导数
L9999        完成计算和输出

[ Last edited by cadick on 2009-12-12 at 00:14 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 雪狼乖乖 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见