量化从头计算程序包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.gzCurses.1.05, perlmenu.v4.0, perl.5.005_03
tools.lapack.tar.gzLAPACK, BLAS
tools.GNU.tar.Zmake,grep,tar,gzip,gunzip
standard.5.7.tar.gz基本程序包,单点计算工具箱
grad.5.7.tar.gz分析梯度包,几何优化
parallel.5.7.tar.gz并行CI包
global_arrays.tar.gzglobal arrays工具箱v2.4
turbocol.5.7.tar.gzAO-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.xIBM RS/6000 AIX 3.x
rs6000.4.xIBM RS/6000 AIX 4.x
sgipowerSGI IRIX 6.1, mips4, 32 bit integer
decalphaDEC OSF/1 V3.2, 64bit integer
decalpha32DEC OSF/1 V3.2 32bit integer
linuxLinux, g77 0.5.19.1 / gcc 2.7.2.1 *
linuxegcsLinux, egcs 2.91.66
sp2IBM SP2
T3E64CRAY T3E
hpHP-UX
sunSOLARIS 6.3
sv1Cray 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_idstandardgradientturbocolglobal arraysparallelperlmenu
rs6000
(AIX 3.x)
okokokokokok
rs6000
(AIX 4.x)
ok*okokokokok
linux
g77
okokokokokok
linux
egcs
okokokokokok
sgipowerokok-okok?
decalphaokokokokokok
decalpha32okokok--ok
hpokok---?
sunokokok--ok
sv1okok----
T3E64ok--okok?
SP2okokokokok?

* 对一些版本比较老的编译器,编译器的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_SHMMAXMAX_REGIONS
decalpha, decalpha3264*1024120
sun1024120
rs6000228*1024120
sgipower128*1024120
hp64*1024120
linux16*1024120
othersSHMMAX/10120

问题解答

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/

ARGOSargos
DALTON1dalton, CH2, pvdz
DALTON2dalton, CH2, pv5z
COLIBcolib,矩阵程序
CIDRTMS1cidrtms
CIDRTMS2cidrtms
TRANAO-MO变换
TRAN_D直接AO-MO变换

单点计算
目录:$COLUMBUS/EXAMPLES/single-point-calculations,含有子目录

h2o-mrcidalton(pvdz), scf, SR-AQCC
h2o-mraqccdalton(pvdz), scf, MR-AQCC, 1 root
h2o-sraqccdalton(pvdz), scf, SR-AQCC, 1 root
h2o-srci-argargos(pvdz), scf, SDCI, 偶极矩
h2o-srci-daltdalton(pvdz), scf, SDCI, 偶极矩
ethylene-mrci-argargos(pvdz), scf, MCSCF(CAS(2,2)), MRCI(CAS(2,2)), 四极矩
ethylene-mrci-daltdalton(pvdz), scf, MCSCF(CAS(2,2)), MRCI(CAS(2,2)), 四极矩
ethylene-mcscf-stateavdalton(pvdz), scf, MCSCF(CAS(3,2)), 1B1u, 2B1u和1Ag态的态平均,四极矩
ethylene-mrci-dalt-ftcalcdalton(pvdz), scf, MCSCF(CAS(2,2)), MRCI(CAS(2,2)), no formula tape
N2-multsegsdalton, MR-CI with 7 segments
N2-multsegs-ftcalcdalton, MR-CI with 7 segments, formula tape calc.不工作
transmom乙烯, MCSCF(CAS(6,2)), 1B1u, 2B1u和1Ag态的态平均,跃迁矩
transciCH2, MCSCF, MRCI, 1A1, 1B1, 2B1态的跃迁矩
transci-aqcc1CH2, MCSCF, MRAQCC, 1A1-1B1态的跃迁矩
transci-aqcc2CH2, MCSCF, MRAQCC, 2A1-1B1态的跃迁矩
transci-aqcc3CH2, MCSCF, MRAQCC, 2A1-2B1态的跃迁矩

使用并更改shell脚本$COLUMBUS/runtests用于复制各个测试计算。

自旋—轨道CI计算
目录:$COLUMBUS/EXAMPLES/spin-orbit-CI子目录

Xeargos, SCF, MR-CI
Eu.1argos, SCF, MR-CI
Eu.2argos, SCF, MR-CI
U.1argos, SCF, MR-CI
U.2argos, SCF, MR-CI
U.3argos, SCF, MR-CI

使用并更改shell脚本$COLUMBUS/runtests用于复制各个测试计算。

几何优化
目录:$COLUMBUS/EXAMPLES/geometry-optimizations子目录

h2o-srcidalton(pvdz), SCF, MCSCF(1CSF),SDCI
h2o-sraqccdalton(pvdz), SCF, MCSCF(1CSF),SR-AQCC
ethylen-mrcidalton(pvdz), MCSCF(CAS(2,2)),MRCI(CAS(2,2))
butadien-mrcidalton(pvdz), MCSCF(CAS(4,4)), MRCI(CAS(4,4)), C(1s) frozen
o3-mrcidalton(pvdz), MCSCF(CAS(2,2)), MRCI (CAS(2,2)). O(1s) frozen
o3-mraqccdalton(pvdz),MCSCF(CAS(2,2)),MR-AQCC(CAS(2,2)),O(1s) frozen
o3-mcscfdalton(pvdz), MCSCF(CAS(2,2)), O(1s) frozen, 优化21Ag态
formaldehyde-mrci-1A1dalton(pvdz),态平均(11A1,21A1, 11B1,11B2) MCSCF(CAS(5,6)), MRCI (CAS(5,6)), 优化11A1态
formaldehyde-mraqcc-2A1dalton(pvdz), 态平均(11A1,21A1, 11B1,11B2) MCSCF(CAS(5,6)), MR-AQCC (CAS(5,6)), 优化21A1态
NH3-mrci-saddledalton(pvdz), 态平均(11A1,11B1) MCSCF, MRCI (CAS(9,10)), N(1s) frozen, 对态21A1进行鞍点优化

目录:$COLUMBUS/EXAMPLES/harmonic_freq子目录

h2o-mrci-1a1dalton(pvdz), SCF, MCSCF(CAS(6,8)) ,MRCI(CAS(6,8), O(1s) frozen,频率计算

目录:$COLUMBUS/EXAMPLES/saddle_point_search子目录

HCN-631G-exactdalton(631G), SCF, MCSCF(1CSF), 寻找鞍点
HCN-631G-predictor-updatedalton(631G), SCF, MCSCF(1CSF), 寻找鞍点

使用并更改shell脚本$COLUMBUS/runtests用于复制各个测试计算。

AO-direct模式的单点计算
目录:$COLUMBUS/turbocol.5.7/EXAMPLES子目录

h2o-mrciturbocol(pvdz), mcscf(CAS(7,8)), MRCI(CAS(7,8)), O(1s) frozen
h2o-mraqccturbocol(pvdz),mcscf(CAS(7,8)),MRCI(CAS(7,8)),O(1s) frozen
n2-pvdzturbcol(pvdz),scf, SDCI, N(1s) frozen
n2-pvtzturbocol(pvtz),scf,SDCI,N(1s) frozen
n2-pvqzmturbocol(pvqz without g-functions), scf, SDCI, N(1s) frozen
benzene-srciturbocol(pvtz),scf,SDCI, C(1s) frozen

使用并更改shell脚本$COLUMBUS/runtests用于复制各个测试计算。

使用pciudg和sciudg进行单点计算
目录:$COLUMBUS/parallel.5.7/EXAMPLES子目录

hcho-mraqcc1argos(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-mraqcc2argos(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-mraqcc3argos(pvdz),scf,MR-AQCC(CAS(5,4)),O(1s) and C(1s) frozen, integral files on virtual disk,compression off, use sciudg
sciudg/hcho-mraqcc4argos(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-mrsdciargos(pvdz),scf,MR-SDCI(CAS(5,4)), O(1s) and C(1s) frozen, integral files on virtual disk, compression off, use sciudg
pciudg/hcho-mraqcc1argos(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-mraqcc2argos(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-mrciargos(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写)确定计算的类型。

问题解答:

  1. $COLUMBUS/colinp不运行:检查第一行是否正确,如#!/usr/bin/perl。
  2. perl没有Curses或perlmenu:
    ● 检查是否忘记了安装cpan包。
    ● 检查是否设置了正确的环境变量COLUMBUS。设置方法为:

       /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

  3. 选择CI波函精度但是不能输入,菜单显示:$COLUMBUS/cidrtms.perl might have stopped immediately。执行$COLUMBUS/cidrtms.perl看出错信息。
  4. 选择MCSCF波函精度但是不能输入,菜单显示:$COLUMBUS/makmc.perl might have died immediately。执行$COLUMBUS/makmc.perl看出错信息。

2001年二月十日