首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >量子化学程序OpenMolcas的简易安装

量子化学程序OpenMolcas的简易安装

作者头像
用户7592569
发布2021-08-10 16:09:48
3.8K0
发布2021-08-10 16:09:48
举报
文章被收录于专栏:量子化学量子化学

本公众号之前发过《离线编译OpenMolcas+QCMaquis》一文,成功安装后可进行DMRG-NEVPT2和DMRG-PDFT计算。但其中需要编译QCMaquis、 HDF5、GSL和Boost库,过程颇为繁琐。笔者发现有的小伙伴不需要做DMRG计算,只想用OpenMolcas中最核心、最特色的功能——CASSCF、CASPT2、ic-MRCISD和MC-PDFT方法,则安装过程可以大大简化。

本文就介绍一下如何在尽可能少的库依赖下安装OpenMolcas,无需QCMaquis、HDF5、GSL和Boost库,也无需安装OpenMPI和Global Array。安装完后是利用MKL的OpenMP并行版OpenMolcas,适用于节点内并行,很多时候就够用了。有的课题组会花钱去买收费的MOLCAS,由于开源免费的OpenMolcas涵盖了MOLCAS的绝大多数(尤其是特色)功能,现如今完全没有必要浪费个人钱财或经费去买MOLCAS,甚至机器上旧的MOLCAS也没什么用处。

安装前提:我们仍需一些必要的编译器和库:

cmake >= 3.12,Intel编译器(含MKL),python

笔者机子上安装的分别是cmake 3.19、Intel 2019 update5和Anaconda Python3。尽管可以使用GNU编译器替代Intel,但笔者的个人使用经验表明用Intel编译器快不少。若读者未装Intel编译器,可以参看《Linux下安装Intel oneAPI》一文。

1. 下载

到OpenMolcas的GitLab主页(https://gitlab.com/Molcas/OpenMolcas)上点击Releases

下载最新稳定版,笔者撰文时是v21.06

笔者下载的是OpenMolcas-v21.06.tar.gz。

2. 编译

在编译前需先在~/.bashrc中写上OpenMolcas环境变量

# OpenMolcas
export MOLCAS_WORKDIR=/scratch/$USER/molcas
export MOLCAS_MEM=32Gb
export MOLCAS=/home/$USER/software/OpenMolcas-v21.06
export PATH=$MOLCAS/bin:$PATH
export MOLCAS_PRINT=3
export MOLCAS_NPROCS=1
export OMP_NUM_THREADS=16

完成后记得执行source ~/.bashrc或退出重登。各种路径可以根据读者自己机子的实际情况进行修改。若/scratch/$USER/molcas目录不存在则需手动创建。无论计算任务正常/异常结束,该目录都会有临时文件存在,每隔一段时间应进行清理。若一个任务算完后在相同位置再次提交,OpenMolcas默认去寻找上次的临时文件,好处是可以加速计算,坏处是万一不想要临时文件里的轨道作为初猜,就可能把自己坑了。若想每次计算完自动清空临时文件,可以再加上环境变量

export MOLCAS_KEEP_WORKDIR=NO

变量MOLCAS_PRINT=3可以让输出内容更多一些,偶尔有小伙伴向笔者反映他们的输出内容比我少,往往就是这个参数造成的。变量MOLCAS_NPROCS用于MPI并行,但本文编译的是MKL并行版,不支持MPI并行,因此设为1。笔者的节点上有16核,因此OMP并行核数设置为16。这些环境变量仅是笔者的个人推荐,并非适用于任何机器,详细的环境变量说明请阅读OpenMolcas手册

https://molcas.gitlab.io/OpenMolcas/Manual.pdf

进入存放压缩包的目录,解压,编译

cd /home/$USER/software
tar -zxf OpenMolcas-v21.06.tar.gz
cd OpenMolcas-v21.06
mkdir bin build
cd build
CC=icc CXX=icpc FC=ifort cmake -DLINALG=MKL -DOPENMP=ON \
-DCMAKE_INSTALL_PREFIX=/home/$USER/software/OpenMolcas-v21.06 ../
make -j16
make install

笔者的习惯是将软件放在/home/$USER/software/目录下,读者也可以放到其他目录下。16核编译仅需1-2 min。正常结束后执行

cd ..
mv pymolcas bin/

即将主程序pymolcas移入我们新建的bin目录里。

3. 测试

执行

pymolcas --version

屏幕应当显示

python driver version = py2.18
(after the original perl EMIL interpreter of Valera Veryazov)

接着测试程序自带标准示例。最好切换到其他目录进行测试

cd ~/
pymolcas verify standard

这个standard其实对应OpenMolcas-v21.06/test/standard目录,内含100个输入文件,可供自学模仿使用。(注意笔者用的是16核)测试完成大约需要45 min。测试过程中输出内容仅有一行,例如

Running test standard: 067... (68%)

在笔者机子上094和099号例子失败,屏幕会提示到哪个目录下检查输出文件,看了一下没什么问题。如果嫌测试时间长,可以自己挑十几个文件测试,例如测试第004,005号文件的命令是

pymolcas verify standard:004,005

4. 从Gaussian向OpenMolcas传轨道

作为量化软件,OpenMolcas有自己的SCF功能可以做HF/DFT计算。但SCF收敛性不如高斯(事实上目前几乎不存在SCF比高斯好的量化软件),也不支持检验波函数稳定性。对于一些SCF难收敛、或具有多个SCF解的体系(如多重键断裂、3d或4d过渡金属等),只要求SCF收敛通常是不够的。这种情况下,我们可以先用高斯做HF/DFT计算、检验波函数稳定性、确保波函数稳定后,再将轨道传给OpenMolcas,后者就能极速收敛。例如高锰酸根负离子的UHF计算,我们先给出高斯输入文件

%chk=MnO4-.chk
%mem=32GB
%nprocshared=16
#p UHF/aug-cc-pVDZ guess=mix stable=opt nosymm int=nobasistransform

title

-1 1
Mn     0.00000000    0.00000000    0.000
 O     0.00000000    0.00000000    1.602
 O     1.51038009    0.00000000   -0.534
 O    -0.75519005    1.30802752   -0.534
 O    -0.75519005   -1.30802752   -0.534

算完后查看输出文件有两个UHF能量

 SCF Done:  E(UHF) =  -1448.97855535     A.U. after   49 cycles
 SCF Done:  E(UHF) =  -1449.02966955     a.u. after   89 cycles

第一个UHF能量对应的波函数是不稳定的,高斯检验发现有internal instability,将其自动优化至稳定的波函数,对应更低的UHF能量。而如果直接用OpenMolcas做计算,类似的输入文件为

&GATEWAY
Coord
5
Angstrom
Mn     0.00000000    0.00000000    0.000
 O     0.00000000    0.00000000    1.602
 O     1.51038009    0.00000000   -0.534
 O    -0.75519005    1.30802752   -0.534
 O    -0.75519005   -1.30802752   -0.534
Basis=aug-cc-pVDZ
Group=Nosym

&SEWARD
&SCF
UHF
Charge=-1
Spin=1
Scramble=0.2

注意对自旋极化单重态UHF/UDFT计算,需要破坏初始轨道的对称性,否则会收敛到RHF解上。在高斯中可能大家都熟知应该用guess=mix关键词,而在OpenMolcas中对应使用Scramble关键词进行扰动,扰动幅度可以自己设,此处我们用手册中推荐的0.2。这个例子用OpenMolcas算出来结果是-1448.83565609 a.u.,连高斯的不稳定波函数都不如。SCF用了145圈,正常结束且末尾输出Happy landing,然而仔细检查会发现第145圈之后显示No convergence, optimization aborted。

笔者还尝试过扰动值换成0.3就收敛不了了。熟练使用MOLCAS的人当然可以看手册加关键词进行各种尝试,但此处我们可以在高斯算完后,直接执行

formchk MnO4-.chk MnO4-.fch
fch2inporb MnO4-.fch

就可生成.input, .INPORB两个文件,内含坐标、基组、分子轨道及适当关键词。formchk是高斯自带的小程序,而fch2inporb是笔者开源的程序包MOKIT中的一个小程序,可以到https://gitlab.com/jxzou/mokit下载,推荐下载源代码到Linux下自行编译(Windows预编译版本落后许久)。前述高斯输入文件中的关键词nosymm int=nobasistransform就是为了此刻传轨道保证正确性所需。

fch2inporb能自动识别fch文件中是RHF/ROHF/UHF哪种类型的计算并在.input文件中写入合适的关键词,不需要自己写input文件。如果有特殊计算需求(例如使用泛函,指定积分格点等等),可以打开输入文件自行增删关键词。此处我们做的是UHF计算,直接提交即可

pymolcas MnO4-.input >& MnO4-.out &
(注意若是Ubuntu系统,默认是dash而非bash,此时应运行pymolcas MnO4-.input >MnO4-.out 2>&1 &)

可以在输出文件中看到2圈即收敛,能量与高斯一样

顺带一提,OpenMolcas做完UHF计算会自动将UNO轨道保存在.UnaOrb文件中。当然了,也可以利用这种传轨道的功能,事先在高斯中算好各种局域轨道,NBO轨道,UNO轨道等等,再传入OpenMolcas做后续计算,一些例子见《CASSCF初始轨道高效构建(一):局域轨道》。

致谢

感谢wsr和zhigang的审阅。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子化学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云函数
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档