量子化学程序ORCA的安装方法

量子化学程序ORCA的安装方法

Installation method of ORCA quantum chemistry program

文/Sobereva@北京科音
First release 2018-Dec-21  Last update: 2023-Oct-19


0 前言

ORCA是一款对学术用户免费但不开源的量子化学程序,发展迅猛,流行程度越来越高,用户越来越多。虽然ORCA的安装很简单,都不需要编译源代码,但还是有不少量子化学初学者经常问怎么安装,这里就统一说一下。当随着ORCA程序更新,导致最新版安装方法与本文存在较大差异时,本文也将同步更新。ORCA虽然有也有Mac版,但由于极其小众,安装方法这里就不提了。

ORCA官网是https://orcaforum.kofo.mpg.de,和ORCA论坛是在一起的。进去之后注册个新用户,登陆后就可以进入论坛,页面上方有Download按钮,进去就可以下载可执行程序和手册了。如果你注册ORCA论坛时验证码刷不出来,或者根本连ORCA官网都打不开的话,说明需以特殊姿势上网。ORCA程序的动态库版本尺寸较小,而静态库版本体积颇大(和版本关系也很大),对后者,在安装前应保证硬盘有很充裕空间。

为了测试安装后ORCA是否能正常运行,这里提供个简单的测试文件,将以下内容复制到比如test.inp里即可作为输入文件。此任务要求4核并行:

! BLYP def2-SVP noautostart miniprint pal4
* xyz 0 1
 C                  0.00000000    0.00000000   -0.56221066
 H                  0.00000000   -0.92444767   -1.10110537
 H                 -0.00000000    0.92444767   -1.10110537
 O                  0.00000000    0.00000000    0.69618930
*

顺带一提,有些人用ORCA只是想算很常见类型的问题,但不会写关键词。最最简单的做法就是用Multiwfn产生ORCA的输入文件,超级容易,里面的关键词都是绝对最恰当的,见《详谈Multiwfn产生ORCA量子化学程序的输入文件的功能》(http://sobereva.com/490)。此文是一个用Multiwfn创建输入文件结合ORCA做计算的实例:《Simulating UV-Vis and ECD spectra using ORCA and Multiwfn》(http://sobereva.com/485);此视频是一个利用Multiwfn这个功能的综合实例:《基于ORCA量子化学程序对分子做优化、振动分析、观看红外光谱、观看轨道的简单演示》(https://www.bilibili.com/video/av59599938)。


1 Windows版的安装

ORCA的Windows版只有64bit的,如果你还在坚持使用老掉牙的32bit Windows,就别指望用Windows版了,要么装64bit Windows系统,要么在现有的32bit Windows下用VMware虚拟机装个64bit Linux跑ORCA Linux版。

Windows版ORCA用的是分卷压缩。一定要确保所有part都下载完整(可以对比下载下来的文件和网页上的文件尺寸判断),然后放到一起进行解压。

ORCA是基于MPI方式进行并行运算的程序,目前的版本在Windows下是依赖于Microsoft MPI (MSMPI)库运行的,因此还要给系统安装MSMPI。不同的ORCA版本要求的MSMPI库的版本也不同,比如ORCA程序包的文件名带着msmpi10,就说明需要MSMPI 10.0才能运行。Google一下MSMPI 10.0就可以立刻找到MSMPI的下载地址,下载并安装之即可。

下面测试ORCA能否正常并行运行。将本文开头给的测试文件拷到某处,然后进入操作系统的命令行模式,输入比如D:\ORCA\orca H2CO.inp > H2CO.out来执行H2CO.inp并将输出信息输出到H2CO.out。注意输入文件要求并行计算时,必须像这样输入ORCA的绝对路径才行。如果计算中途的输出信息看起来很正常,最后也显示****ORCA TERMINATED NORMALLY****,就说明没问题。如果并行不正常的话,可能会看到输出信息是混乱交错的,这是由于各个进程没有真正协同工作所致。

附:在Windows下使用ORCA的最便捷方法
利用cmder可以令ORCA在Windows下的使用明显更方便,cmder是一个第三方的文本终端。首先去https://cmder.app下载Full版的cmder,然后解压到你平时安装应用程序的目录。之后进入操作系统的命令行窗口,在cmder的目录下,输入Cmder.exe /REGISTER ALL。从此在任意目录下点右键选cmder Here即可进入cmder命令行窗口,并且当前路径就是此文件夹。启动cmder窗口后,在cmder的标题位置点右键选Settings,在General页面里选择{bash::bash as Admin},然后把cmder关了。从此之后,新开的cmder终端里的命令写法就和Linux的Bash环境下一样了,连awk、vi等常用工具都有。用文本编辑器打开cmder安装目录下的config\user_profile.sh,添加一行比如alias oo='D:/study/orca503/orca',这里oo是你启动ORCA想用的自定义命令,后面是ORCA可执行文件路径。这样,进入cmder后就可以使用比如oo Roselia.inp |tee RAS.out来调用ORCA运行.inp文件,输出的信息不仅显示在屏幕上还同时输出到RAS.out里,比起在Windows的cmd或者powershell里运行ORCA方便省事得多。


2 Linux版的安装

下面的内容涉及到一些最基本的Linux常识性知识,如果你对Linux是零基础,看下面内容之前建议看看《Gaussian的安装方法及运行时的相关问题》(http://sobereva.com/439)的1.1节。

2.1 安装OpenMPI

ORCA在Linux下是通过OpenMPI这种MPI库实现并行的,并行方式运行ORCA之前需要先编译OpenMPI库。ORCA文件包的文件名当中直接体现了要求的OpenMPI库版本,比如文件名里有openmpi411就代表需要OpenMPI 4.1.1。所有版本的OpenMPI源代码都包可以在https://www.open-mpi.org上下载,比如4.1.1的下载地址为https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.1.tar.bz2

先检查机子有没有装gcc和gfortran编译器,没有的话必须先装上。比如对于CentOS或Rocky Linux,分别运行yum install gcc、yum install gcc-gfortran就能安装。特别要注意,如果只装了gcc而没装gfortran,虽然OpenMPI能正常编译完成,但是此时会由于没有Fortran的接口而导致之后ORCA没法正常并行运行。

用诸如tar -xf openmpi-4.1.1.tar.bz2命令解压OpenMPI压缩包,进入此目录,输入以下命令,OpenMPI就会被安装到/sob/openmpi411目录下
./configure --prefix=/sob/openmpi411 --disable-builtin-atomics
make all install -j
注:这里用-j是为了通过并行编译降低编译过程耗时。但如果编译中途出现诡异报错,去掉-j再试。

如果你的操作系统的shell是Bash(如CentOS、Rocky Linux就是),就编辑用户目录下的.bashrc文件,比如运行vi ~/.bashrc命令,将诸如以下两行加入到文件末尾
export PATH=$PATH:/sob/openmpi411/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/sob/openmpi411/lib
然后重新登录机子或者重新打开命令行,以上设置就生效了,可以输入比如mpiexec -V,如果正常显示出了OpenMPI的版本,说明已经装好了。之前解压出来的openmpi-4.1.1目录现在也可以删掉了。


2.2 安装ORCA

ORCA的Linux版分为静态库(static)版本和动态库(shared)版本。懂一些编程知识的人都知道差别是什么。ORCA包含一大批可执行文件,有很多子程序在多个可执行文件里被使用。如果开发者在编译ORCA时,这些被共用的子程序都被编译进每一个利用了它们的可执行文件里,就叫静态库版本,这种版本体积比较大。如果把将共用的子程序做成一个动态库文件,被各个可执行文件在实际运行的时候调用,就叫动态库或者共享库版本,这种版本体积比静态库版本要小。这两种版本在实际计算速度上没有可察觉的差别,因此建议使用动态库版本,下载耗时少而且省硬盘。动态库版本在文件包的名字里会有shared字样。

建议大家下载带着shared和.tar.xz字样的ORCA包,比如orca_5_0_3_linux_x86-64_shared_openmpi411.tar.xz。然后用
tar -xf orca_5_0_3_linux_x86-64_shared_openmpi411.tar.xz
命令即可解压之。

假设ORCA解压后的目录是/sob/orca503/,就在.bashrc文件里加入
export PATH=$PATH:/sob/orca503
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/sob/orca503

重新进入终端令以上语句生效后即可运行ORCA,并行运行时必须写明ORCA的绝对路径,如:
/sob/orca503/orca test.inp > test.out
如果懒得每次都写绝对路径,可以在.bashrc里加上下面这句
alias orca='/sob/orca503/orca'
这代表令orca命令等价于/sob/orca503/orca。


2.3 其它

有些系统如CentOS自带了名为orca的带有图形界面的屏幕阅读器程序,直接输入orca命令启动的是那个程序,和本文的orca毫无联系。应当用rpm -e orca命令将自带的那个orca卸载掉。

如果你是在root用户下使用ORCA,由于OpenMPI的一个恶心的要求,必须每次执行的命令都带着-allow-run-as-root选项才行,这很烦人。可以在.bashrc里加入以下两行来避免,这在《root用户在用openmpi并行计算时避免加--allow-run-as-root的方法》(http://sobereva.com/409)里也说过:
export OMPI_ALLOW_RUN_AS_ROOT=1
export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1

如果你的机子里之前装有其它MPI库或OpenMPI的其它版本,且在终端里输入which mpiexec命令的时候指向的是那些库的目录,则ORCA有极大可能会无法正常并行,需要你恰当处理以避免其优先级盖过你自己新装的OpenMPI。具体怎么处理,关键取决于你当前机子里之前具体是怎么装的MPI库。如果你之前是把其它MPI库装到了你自定义的目录下而非默认的/usr/local/bin下面,你就把那个MPI库的目录名随便改一下,或者把那个MPI库在.bashrc里的配置语句注释掉(前面加#号)然后重新登录终端。如果其它MPI被你安装到了默认路径(如/usr/local下),可以把前文的$PATH:/sob/openmpi411/bin改为/sob/openmpi411/bin:$PATH、把$LD_LIBRARY_PATH:/sob/openmpi411/lib改为/sob/openmpi411/lib:$LD_LIBRARY_PATH,然后重新登录终端,之所以这样做会奏效是因为此时openmpi411的路径会先于其它路径出现在这俩环境变量里,会被优先利用。

如果想用强大的波函数分析程序Multiwfn(http://sobereva.com/multiwfn)对ORCA的计算结果进行波函数分析和观看轨道图形,运行orca_2mkl xxx -molden,就把ORCA计算时产生的xxx.gbw转化成了xxx.molden.input,此文件可以直接作为Multiwfn的输入文件。orca_2mkl是ORCA目录下自带的意义上类似于Gaussian的formchk的工具。如果把Multiwfn目录里的settings.ini里的orca_2mklpath参数设为当前机子里orca_2mkl可执行文件的实际路径,则Multiwfn还可以直接载入gbw文件,更方便了。

Multiwfn还可以基于ORCA的输出文件绘制光谱图,见《使用Multiwfn绘制红外、拉曼、UV-Vis、ECD、VCD和ROA光谱图》(http://sobereva.com/224)。但注意,如果在Windows下运行ORCA,不要用PowerShell,要么用cmd要么用cmder。因为PowerShell里通过重定向产生的ORCA输出文件默认是Unicode编码的,Multiwfn没法读取里面的信息。《OfakeG:使GaussView能够可视化ORCA输出文件的工具》(http://sobereva.com/498)介绍的OfakeG程序也同样不认Unicode编码。用cmder的方法前面已经说了,在Win 10里如果想方便快速地进入cmd,只需运行一个注册表配置文件即可,见http://bbs.keinsci.com/thread-22940-1-1.html