量化从头计算程序包COLUMBUS(5.7版)
Columbus当前包括的主要功能:
RHF和ROHF SCF代码
态平均MCSCF
标准MR-CISD,包括大小一致性的修正方法MR-CISD+Q,MR-AQCC,MR-AQCC/LRT及相关方法
在MCSCF,MR-CISD和MR-AQCC理论级别上进行几何分析和鞍点优化
从
解析梯度进行数值哈密顿频率与力常数计算
MCSCF,MR-CISD和MR-AQCC/LRT理论级别上的跃迁密度和跃迁矩
有关5.51版的主要变化:
Spin-Orbit CI(SO-CI)代码现在是标准Columbus程序包的一部分。SO-CI计算受使用AO积分程序Argos与标准CI程序结合的限制。仅支持单点SO-CI计算。
使用分析梯度自动进行鞍点优化。
力常数和频率计算。
激发态的AQCC和AQCC/LRT。
MCSCF,MR-CISD和MR-AQCC/LRT理论级别的跃迁矩。
用自由使用的Molden软件包界面,支持结果的可视化。
安装过程相当简化,特别是关于必须的CPAN包和数学库。
扩展的交互式输入支持。
COLUMBUS的安装
基本要求
需要Perl(版本5.005_03或更高)管理计算。菜单控制的用户输入设备依靠perl的curses extensions(1.05版以上)和perlmenu extensions(4.0版以上)。所有提到的perl模块可以自由地从任何提供CPAN的FTP服务器上获得(可以查阅http://www.perl.com/CPAN/src)。此外,程序需要lapack和blas数学库,而并行CI程序必须依靠global array工具箱(2.4版)。最后,安装过程依靠一些GNU应用程序,特别是GNU make和GNU zip/unzip。
在目录里面提供了所有必须的工具(见后)。
开始安装的步骤:
(i)
得到源代码;
(ii)任选gnu工具的安装;
(iii)任选perl 5.005_03的安装;
(iv)安装COLUMBUS代码;
(v)任意运行测试程序。
I. 得到源代码
安装支持的机型浅显易懂。全部COLUMBUS程序包由几个压缩文件组成:
tools.cpan.tar.gz | Curses.1.05, perlmenu.v4.0, perl.5.005_03 |
tools.lapack.tar.gz | LAPACK, BLAS |
tools.GNU.tar.Z | make,grep,tar,gzip,gunzip |
standard.5.7.tar.gz | 基本程序包,单点计算工具箱 |
grad.5.7.tar.gz | 分析梯度包,几何优化 |
parallel.5.7.tar.gz | 并行CI包 |
global_arrays.tar.gz | global arrays工具箱v2.4 |
turbocol.5.7.tar.gz | AO-direct SCF/MCSCF/CI代码 |
再加上安装脚本install.automatic和包含升级信息与技术问题的README.1st文件。standard.5.7.tar.gz文件包含了基本程序和主要的COLUMBUS库colib。standard程序必须首先安装。剩下的tar文件包括对standard包的加强,可以另外安装。
II. 安装GNU工具
系统需要安装GNU make和GNU zip/unzip。用下面的命令检查他们是否可用:
make -v 显示GNU header
which gunzip 显示gunzip全部路径
如果以上命令都不可用,需要安装这一工具:
compress -d tools.GNU.tar.Z
tar -xvf tools.GNU.tar
./install.gnutools
文件就复制到当前目录中。
III. 安装Perl
通常不需要安装perl,因为它是系统的一部分。但是要检查它的版本号(至少是5.005_03):
which perl 显示perl的全部路径
perl -v 显示版本信息
接下来就是安装perl:
问题解答:
安装是非常友好的,然而,如果你系统中的路径设置有问题,例如部分库和include文件不在search路径里,安装就不会成功。由出错信息你可以很容易地知道哪个文件没有找到。寻找正确的目录并重新运行sh ./config提供正确的目录。最坏的假设是你必须修改makefile文件。参看perl包中的文件。
IV. 安装Columbus
对于支持的机型直接安装:
install.automatic [-nox] [-p machine_id] packages [runtests]
(括号内表示可选内容)
其中的packages任何组合:
一旦你需要修正源代码或者makefiles文件(见下),需要使用-nox选项禁止从tar文件解压缩源代码,因此可以预防覆盖所有的修改。
-p选项强制在编译之前展开包里全部源代码,如果是第一次安装,必须调用。machine_id描述下面列出的所支持的机型:
machine_id | 说明 |
rs6000.3.x | IBM RS/6000 AIX 3.x |
rs6000.4.x | IBM RS/6000 AIX 4.x |
sgipower | SGI IRIX 6.1, mips4, 32 bit integer |
decalpha | DEC OSF/1 V3.2, 64bit integer |
decalpha32 | DEC OSF/1 V3.2 32bit integer |
linux | Linux, g77 0.5.19.1 / gcc 2.7.2.1 * |
linuxegcs | Linux, egcs 2.91.66 |
sp2 | IBM SP2 |
T3E64 | CRAY T3E |
hp | HP-UX |
sun | SOLARIS 6.3 |
sv1 | Cray SV1/unicos |
*用 g77 -v查询在linux系统中的版本
g77不太稳定,推荐使用linuxegcs。
安装:
Shell:/bin/csh
./install.automatic -p machine_id [standard grad direct parallel runtests]
或者
./install.automatic -nox [-p machine_id standard grad direct parallel runtests]
-nox: 不从tar文件中展开源代码。如果你已经展开了所有的文件并使用了修改的源代码,这一选项非常有用。
-p machine_id: 对计算机的machine_id输入源代码。如果-nox选项没有调用,这一项是必须的,否则随意。例:
1) 安装整个系统
./install.automatic -p linuxegcs standard grad parallel cpan direct
2) 安装成功后测试整个系统
./install.automatic -nox standard grad parallel cpan direct runtests
3) 仅安装standard及相应的测试
./install.automatic -p linuxegcs standard runtests
4) 使用了standard包中一些修改的源代码,并重新编译必要的部分
./install.automatic -nox standard
当自动进行安装的时候,将显示选择的项。各个程序包可以一个接一个地安装。当重新进行完全安装的时候,必须从install.config中删除所有多余的项,或者把它完全删除(见下)。
安装过程自动维护配置文件install.config,里面包括大量的关键字和控制程序特性的设置。这使得完全安装可以一步步进行,不需要多余的输入和编辑步骤。每一行包括一个关键字,后面接一个空格和关键字的值。关键字和表示的意思为:
注意:install.automatic往configuration文件中输入了默认的关键字,提供自动测得的值。
Install.automatic展开档案,调用其他的有关安装的脚本。
下面的表包括了可以自动安装的列表:
machine_id | standard | gradient | turbocol | global arrays | parallel | perlmenu |
rs6000 (AIX 3.x) | ok | ok | ok | ok | ok | ok |
rs6000 (AIX 4.x) | ok* | ok | ok | ok | ok | ok |
linux g77 | ok | ok | ok | ok | ok | ok |
linux egcs | ok | ok | ok | ok | ok | ok |
sgipower | ok | ok | - | ok | ok | ? |
decalpha | ok | ok | ok | ok | ok | ok |
decalpha32 | ok | ok | ok | - | - | ok |
hp | ok | ok | - | - | - | ? |
sun | ok | ok | ok | - | - | ok |
sv1 | ok | ok | - | - | - | - |
T3E64 | ok | - | - | ok | ok | ? |
SP2 | ok | ok | ok | ok | ok | ? |
* 对一些版本比较老的编译器,编译器的bug会中断Dalton代码;必须进行测试!
global arrays工具箱
为使global array工具箱成功安装,必须考虑global array中设置的与编译到操作系统内核中的共享内存,和物理内存之间的常见的兼容性问题。global array的共享内存设置位于$COLUMBUS/parallel.5.5/source/g/global/shmem.c,SHMMAX定义了共享内存以kB为单位的最大尺寸,MAX_REGIONS定义了支持的共享内存的最大数量。因此,可以使用总量为SHMMAX*MAX_REGIONS kB的共享内存。另一方面,例如在Linux或DEC OSF中,定义了SHMMAX(共享内存最大尺寸),SHMMIN(共享内存最小尺寸),SHMMNI(一个处理过程中的共享内存最大数量)和SHMSEG(整个体系共享内存最大数量)。下面是它们之间的关系:SHMMAX 3 _SHMMAX,SHMMNI = SHMSEG 3 MAX_REGIONS。相反的设置会引起程序停止,因为不能连接到共享内存上。
Global Array默认设置(版本2.4)。不要使用与COLUMBUS程序中不同的版本。
machine-id | _SHMMAX | MAX_REGIONS |
decalpha, decalpha32 | 64*1024 | 120 |
sun | 1024 | 120 |
rs6000 | 228*1024 | 120 |
sgipower | 128*1024 | 120 |
hp | 64*1024 | 120 |
linux | 16*1024 | 120 |
others | SHMMAX/10 | 120 |
问题解答
V. 进行测试
脚本install.automatic也提供了对具体的程序包运行所有测试:
install.automatic package_name runtests
其中package_name可以使standard,grad,direct或parallel中的任何一个。输出文件位于$COLUMBUS/TESTS子目录,日志文件是tests.log.package。也可以直接执行runtests脚本。C-shell脚本runtests执行EXAMPLES各个子目录中的一个测试计算,并检查正确结果。用下面的命令行参数,可以把测试限定为几类:
$COLUMBUS/runtests -c arguments
其中的标记-c表示名称列表,终端"$end"用"/"代替(与编译器的选项有关,运行AIX的机器终端不能使用"$end"),arguments代表下面关键字的任意组合:
执行没有参量的runtests,显示用到的选项。运行测试要建立一个子目录,进入子目录,调用
$COLUMBUS/runtests arguments > testdiff
testdiff包含参考输出文件和测试计算的输出文件之间的差异。runtest脚本建立同EXAMPLES目录一样的目录结构。在检查testdiff文件的时候,应当考虑小的数字偏差导致的不同机器精度。如果出现大的偏差,要确定问题出现在哪里:
实例目录
验证
目录:$COLUMBUS/EXAMPLES/
ARGOS | argos |
DALTON1 | dalton, CH2, pvdz |
DALTON2 | dalton, CH2, pv5z |
COLIB | colib,矩阵程序 |
CIDRTMS1 | cidrtms |
CIDRTMS2 | cidrtms |
TRAN | AO-MO变换 |
TRAN_D | 直接AO-MO变换 |
单点计算
目录:$COLUMBUS/EXAMPLES/single-point-calculations,含有子目录
h2o-mrci | dalton(pvdz), scf, SR-AQCC |
h2o-mraqcc | dalton(pvdz), scf, MR-AQCC, 1 root |
h2o-sraqcc | dalton(pvdz), scf, SR-AQCC, 1 root |
h2o-srci-arg | argos(pvdz), scf, SDCI, 偶极矩 |
h2o-srci-dalt | dalton(pvdz), scf, SDCI, 偶极矩 |
ethylene-mrci-arg | argos(pvdz), scf, MCSCF(CAS(2,2)), MRCI(CAS(2,2)), 四极矩 |
ethylene-mrci-dalt | dalton(pvdz), scf, MCSCF(CAS(2,2)), MRCI(CAS(2,2)), 四极矩 |
ethylene-mcscf-stateav | dalton(pvdz), scf, MCSCF(CAS(3,2)), 1B1u, 2B1u和1Ag态的态平均,四极矩 |
ethylene-mrci-dalt-ftcalc | dalton(pvdz), scf, MCSCF(CAS(2,2)), MRCI(CAS(2,2)), no formula tape |
N2-multsegs | dalton, MR-CI with 7 segments |
N2-multsegs-ftcalc | dalton, MR-CI with 7 segments, formula tape calc.不工作 |
transmom | 乙烯, MCSCF(CAS(6,2)), 1B1u, 2B1u和1Ag态的态平均,跃迁矩 |
transci | CH2, MCSCF, MRCI, 1A1, 1B1, 2B1态的跃迁矩 |
transci-aqcc1 | CH2, MCSCF, MRAQCC, 1A1-1B1态的跃迁矩 |
transci-aqcc2 | CH2, MCSCF, MRAQCC, 2A1-1B1态的跃迁矩 |
transci-aqcc3 | CH2, MCSCF, MRAQCC, 2A1-2B1态的跃迁矩 |
使用并更改shell脚本$COLUMBUS/runtests用于复制各个测试计算。
自旋—轨道CI计算
目录:$COLUMBUS/EXAMPLES/spin-orbit-CI子目录
Xe | argos, SCF, MR-CI |
Eu.1 | argos, SCF, MR-CI |
Eu.2 | argos, SCF, MR-CI |
U.1 | argos, SCF, MR-CI |
U.2 | argos, SCF, MR-CI |
U.3 | argos, SCF, MR-CI |
使用并更改shell脚本$COLUMBUS/runtests用于复制各个测试计算。
几何优化
目录:$COLUMBUS/EXAMPLES/geometry-optimizations子目录
h2o-srci | dalton(pvdz), SCF, MCSCF(1CSF),SDCI |
h2o-sraqcc | dalton(pvdz), SCF, MCSCF(1CSF),SR-AQCC |
ethylen-mrci | dalton(pvdz), MCSCF(CAS(2,2)),MRCI(CAS(2,2)) |
butadien-mrci | dalton(pvdz), MCSCF(CAS(4,4)), MRCI(CAS(4,4)), C(1s) frozen |
o3-mrci | dalton(pvdz), MCSCF(CAS(2,2)), MRCI (CAS(2,2)). O(1s) frozen |
o3-mraqcc | dalton(pvdz),MCSCF(CAS(2,2)),MR-AQCC(CAS(2,2)),O(1s) frozen |
o3-mcscf | dalton(pvdz), MCSCF(CAS(2,2)), O(1s) frozen, 优化21Ag态 |
formaldehyde-mrci-1A1 | dalton(pvdz),态平均(11A1,21A1, 11B1,11B2) MCSCF(CAS(5,6)), MRCI (CAS(5,6)), 优化11A1态 |
formaldehyde-mraqcc-2A1 | dalton(pvdz), 态平均(11A1,21A1, 11B1,11B2) MCSCF(CAS(5,6)), MR-AQCC (CAS(5,6)), 优化21A1态 |
NH3-mrci-saddle | dalton(pvdz), 态平均(11A1,11B1) MCSCF, MRCI (CAS(9,10)), N(1s) frozen, 对态21A1进行鞍点优化 |
目录:$COLUMBUS/EXAMPLES/harmonic_freq子目录
h2o-mrci-1a1 | dalton(pvdz), SCF, MCSCF(CAS(6,8)) ,MRCI(CAS(6,8), O(1s) frozen,频率计算 |
目录:$COLUMBUS/EXAMPLES/saddle_point_search子目录
HCN-631G-exact | dalton(631G), SCF, MCSCF(1CSF), 寻找鞍点 |
HCN-631G-predictor-update | dalton(631G), SCF, MCSCF(1CSF), 寻找鞍点 |
使用并更改shell脚本$COLUMBUS/runtests用于复制各个测试计算。
AO-direct模式的单点计算
目录:$COLUMBUS/turbocol.5.7/EXAMPLES子目录
h2o-mrci | turbocol(pvdz), mcscf(CAS(7,8)), MRCI(CAS(7,8)), O(1s) frozen |
h2o-mraqcc | turbocol(pvdz),mcscf(CAS(7,8)),MRCI(CAS(7,8)),O(1s) frozen |
n2-pvdz | turbcol(pvdz),scf, SDCI, N(1s) frozen |
n2-pvtz | turbocol(pvtz),scf,SDCI,N(1s) frozen |
n2-pvqzm | turbocol(pvqz without g-functions), scf, SDCI, N(1s) frozen |
benzene-srci | turbocol(pvtz),scf,SDCI, C(1s) frozen |
使用并更改shell脚本$COLUMBUS/runtests用于复制各个测试计算。
使用pciudg和sciudg进行单点计算
目录:$COLUMBUS/parallel.5.7/EXAMPLES子目录
hcho-mraqcc1 | argos(pvdz),scf,MR-AQCC(CAS(5,4)),O(1s)and C(1s) frozen, integral files, ci- and sigma vector on virtual disk, compression on, restart test, use sciudg |
sciudg/hcho-mraqcc2 | argos(pvdz),scf,MR-AQCC(CAS(5,4)),O(1s) and C(1s) frozen, integral files, ci- and sigma vector on virtual disk, compression off, restart test,,use sciudg |
sciudg/hcho-mraqcc3 | argos(pvdz),scf,MR-AQCC(CAS(5,4)),O(1s) and C(1s) frozen, integral files on virtual disk,compression off, use sciudg |
sciudg/hcho-mraqcc4 | argos(pvdz),scf, MR-AQCC(CAS(5,4)),O(1s) and C(1s) frozen, integral files, ci- and sigma vector on virtual disk, compression on , use sciudg |
sciudg/hcho-mrsdci | argos(pvdz),scf,MR-SDCI(CAS(5,4)), O(1s) and C(1s) frozen, integral files on virtual disk, compression off, use sciudg |
pciudg/hcho-mraqcc1 | argos(pvdz), scf, MR-AQCC(CAS(5,4)), O(1s) and C(1s) frozen, ofdg* files on virtual disk, all other files on global array, use pciudg, runs 2 processes, compression off |
pciudg/hcho-mraqcc2 | argos(pvdz),scf, MR-AQCC(CAS(5,4)), O(1s) and C(1s) frozen, ofdg* files on virtual disk, all other files on global array, use pciudg, runs 2 processes, compression on, restart test |
pciudg/hcho-mrci | argos(pvdz), scf, MR-AQCC(CAS(5,4)),O(1s) and C(1s) frozen,ofdg* files on virtual disk, all other files on global array, use pciudg, runs 2 processes, compression on |
复制测试计算必须手动分别拷贝文件。或者使用$COLUMBUS/runtests。参考shell脚本。
VI. 运行COLUMBUS
$COLUMBUS/colinp是交互式输入工具,用于定义波函和计算类型,并对各输入模块书写各种输入文件。colinp特别要求两个脚本makmc.perl和cidrtms.perl,与MCSCF和CI波函的精确度有关。
$COLUMBUS/runc是组织整个计算的脚本。它依赖于由colinp产生的输入文件的全部设置,由control.rundetermines(可以用colinp写)确定计算的类型。
问题解答:
/bin/csh
setenv COLUMBUS path (path是colinp文件绝对路径)
或者:
/bin/ksh
COLUMBUS=path (path是colinp文件绝对路径)
export COLUMBUS
以后每次开机,都要设置colinp的路径,为避免这种情况,可以把上面任意一种设置方法加入到系统的profile文件中。以后可以随时调用colinp。
● 检查行
use lib join('/',$ENV{"COLUMBUS"},"CPAN");
是否在文件colinp,cidrtms.perl和makmc.perl开头出现。
● 检查第一行是否指向perl binary,如
#!/usr/bin/perl
2001年二月十日