24小时热门版块排行榜    

CyRhmU.jpeg
查看: 665  |  回复: 1
【奖励】 本帖被评价1次,作者beefly增加金币 1
当前主题已经存档。

[资源] 【beefly个人文集】在Windows下编译从头计算程序CFour(ACES II)

(一)为什么用CFour

CFour是从头计算ACES II-MAB程序的升级版。CFour的优势有:

1. 不花钱的。
2. 对于非Pople型基组(也即,一般收缩基组,如ANO、cc-pVnZ),双电子积分的计算速度比Gaussian快几倍至十几倍。
(不过,比Molcas和Molpro程序的seward模块还是稍慢)
3. Post-HF计算比Gaussian快得多。最近帮了一个朋友。由于计算条件的限制,他用Gaussian最高只做到MP2/6-311++G**级别的计算。换用CFour以后,同样的体系和基组,CCSD(T)十几分钟就算完了,让他很惊讶。
(再一个不过:对于单点能计算,Molpro程序的CCSD/CCSD(T)更快)
4. 大量的高级Post-HF方法。除了没有SAC-CI(一种EOM-CCSD的变体),以及较少用到的MP5、QCISD(TQ)方法外,比Gaussian、Molpro中的Post-HF方法多很多。
5. 独一无二的功能:CCSD(T)的解析梯度和解析频率,因此做结构优化和振动频率计算要比Gaussian和Molpro程序的数值方法都快得多。此外,还能产生CCSD(T)级别的电子密度,用来进行特性分析。
6. 大量的特性计算。
7. 等等。

就像学习一门语言一样,掌握一个新的程序不是坏事,特别是当你对G**W的速度难以忍受的情况下。为了帮上面那位朋友熟悉CFour的使用,本人最近把CFour移植到了Windows。

(二)在Windows下编译CFour

1. 准备工作。
1) 安装MinGW+MSYS+gcc+g95或者MinGW+MSYS+gcc4.4(含gFortran)。
前一种搭配,gcc版本不限,3.x和4.x都可以。后一种搭配的gcc不要用旧版本,因为gFortran对cpp预编译的支持有问题。
程序的先后顺序就是安装的顺序,具体安装方法可以到网上找。注意:必须下载安装MSYS的coreutils基本包,把其中子目录的文件直接覆盖到MinGW的主目录下。其中的test.exe是必需的,否则做非单点能计算时会出错。另一个可能有用的是nohup.exe,可用来在后台运行作业。
2) 申请和获取CFour源代码,需要寄信或发传真。见主页:http://www.cfour.de/
3) 另外准备一台装有Linux的计算机,备用。两台机器最好都是x86,x86-64或ia64。在同一台计算机装了双系统或Cygwin也可以。

2. 在MinGW/include/sys/stat.h找到
#define        S_IWUSR                _S_IWUSR
#define        S_IRUSR                _S_IRUSR
在后面加上:
#define        S_IRGRP        (S_IRUSR >> 3)
#define        S_IWGRP        (S_IWUSR >> 3)

#define S_IRGRP        0000040        /* read permission, group */
#define S_IWGRP        0000020        /* write permission, group */
分别是从Linux-IA32和Cygwin复制来的,我没发现有什么区别。

3. 解压缩CFour;运行CFour根目录下的configure,然后修改产生的make.config文件。
1) 把
FC:=g77
改为
FC:=g95

FC:=gfortran
2) 找到“#Fortran flags”下面的
fcflags:=......
改为
fcflags:=-O2 -cpp -ffixed-line-length-132
如果用g95编译器,还要再加上
-fsloppy-char -ftrace=full
分别表示:优化;预处理;固定格式用132列(不是默认的72列);整型和字符型变量互相转换;堆栈回溯。
如果是64位计算机,还要为fcflags加上其他参数。运行“configure -h”可以找到。

3. 把librlinux下的文件全部复制到libr。

4. 把vprop目录改名;把vprop_linux目录改名为vprop。

5. 编辑joda\title.f文件。找到
istat=ishell('date > when')
替换为
istat=ishell('/mingw/bin/date > when')
(也可以不改,但是每次运行必须额外输入一个回车,因此无法自动做批处理。)

6. 运行make。当提示缺少某些.h文件时,到linux或cygwin的/usr/include及其子目录下去找,并复制到MinGW/include目录相应的位置。
推荐从linux复制.h文件,因为需要的文件比较少。我只用到四个:
MinGW/include/features.h
MinGW/include/sys/cdefs.h
MinGW/include/sys/times.h
MinGW/include/gnu/stubs.h

7. 其它可能遇到的问题:
1) 编译libr/etime.c时,若显示未定义FC_FUNC,需要在CFOUR根目录下的config.h加入:
#define FC_FUNC(name,NAME) name ## _

2) 装了gcc 4.4后,若出现乱码,可以在msys\1.0\etc\profile文件中加入:
export PS1='[\u@msys \W]$ '
export PS2='> '
export PS4='+ '
export LANG=en

alias l='/bin/ls --show-control-chars --color=tty'
alias la='/bin/ls -aF --show-control-chars --color=tty'
alias ll='/bin/ls -alF --show-control-chars --color=tty'
alias ls='/bin/ls --show-control-chars -F --color=tty'

3) 如果用gFortran编译器,会报告cpdens\xcpdens.f90的多处write语句有语法错误。需要把write的第二个参数都改为*。

4) 输入不认,或者输出文件不分行。这是文本格式的问题。CFOUR只接受UNIX格式,不能用默认的DOS格式。建议用UltraEdit或免费的Crimson Editor编辑器读写输入输出文件。也可以用免费的PSPad,但缺点是图标的颜色都差不多,找起来很费劲,而且打开1MB以上文件时会很慢。

(三)小提示

1. 加快post-HF计算的速度。有以下选择:
1) 加入选项ABCDTYPE=AOBASIS
2) 对于耦合簇计算,用CC_PROGRAM=ECC,调用实验性的耦合簇代码。
3) 用DROPMO指定动芯。和大多数从头计算程序不同,CFOUR默认不用冻芯,而且也没有库存的默认冻芯设置,必须自己指定。
不用冻芯并不意味着结果更准确,因为一般情况下,芯轨道(半芯轨道除外)的相关能影响很小。而且,只有专门优化过的基组才能准确考虑芯电子级别的相关能。
不用冻芯的话,删掉DROPMO就可以,千万不要用DROPMO=0或NONE,否则会得到错误的能量!
以上选项只能用于部分计算方法,有些情况下无法搭配使用,若出现错误,请仔细阅读输出文件的提示信息。

2. 输入格式。说实话,虽然最新版本做了不少改进,但输入格式还不够完善。如果你套用Gaussian、Molpro等程序中约定俗成的习惯,很可能遇到不知名的错误。根据CFour版本的不同,建议遵循以下习惯:

1) 坐标和基组定义部分的元素符号一律用大写
2) 除了restart文件名、基组名、第一行的标题外,所有输入命令一律用大写
3) Z矩阵第一列不能是空格,也不能连用两个空格
4) 不同的关键词只能用逗号或换行隔开,不能用空格。逗号和换行不可连用,也就是说,行尾不能是空格
5) 输入文件最后需要至少两个空行

3. 验证HF结果的可靠性。
CFOUR(包括早期版本的ACES II)有个缺陷,在计算过渡金属体系,或者使用了3-zeta以上的大基组时,经常会得到错误的HF结果。当然此后的post-HF计算当然也就不对了。错误的征兆可能反映在:
1) HF不收敛;
2) HF打印的HOMO、LUMO、芯轨道等轨道能量不合理;
3) 若使用的点群不是分子最高对称性,HF轨道的FULLSYM和COMPSYM不可约表示可能不符合对称关系(如线形分子Delta轨道,在FULLSYM可能会错误地显示为两个SG+);
个别情况下,可能任何特征也没有,但HF却是错的。
解决方法是加入选项:
SCF_EXPSTART=6,SCF_EXPORDER=8,SCF_DAMP=500
个别情况下,SCF_DAMP还需要改为600、700等。但即便如此,也不能保证HF就是对的。
遇到上述体系,最好用其他从头算程序,用同样的基组对同样的结构,在HF级别做个单点计算进行验证。

[ Last edited by yjcmwgk on 2010-6-16 at 21:37 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

★★★★★ 五星级,优秀推荐

永远支持免费、开源、自由和有趣的软件
2楼2009-10-20 14:43:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 beefly 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复(可上传附件)
信息提示
请填处理意见