290480
当前位置: 首页   >  课题组新闻   >  DMRG openmolcas-QCMaquis
DMRG openmolcas-QCMaquis
发布时间:2021-02-19

from https://mp.weixin.qq.com/s/Gb1Lzv1bcQmvuHMZjAQLxQ

OpenMolcas是收费软件Molcas的开源免费版本,前两年在GitLab上开源;QCMaquis前几个月在GitHub上开源,二者结合可以做DMRG、DMRG-NEVPT2和DMRG-PDFT等方法的计算。软件的详细介绍请阅读公众号前期教程《OpenMolcas 与 QCMaquis 的安装》,文中也讲了如何联网安装。QCMaquis的详细使用请阅读官方手册

    https://github.com/qcscine/qcmaquis/tree/master/dmrg/doc

    然而该格式其实是源码,不利于直接阅读,最好将.bib和.tex文件下载下来,用LaTeX编译成PDF格式。应使用高级一些的LaTeX编译器,如TeX Live等。考虑到不好编译,笔者自己编译了一份放在网盘上,有效期7天

      链接: https://pan.baidu.com/s/1MQ0rf09yN2m4HLtLvI7W5g提取码: 6gqf


      本文仅介绍离线安装方法。由于OpenMolcas和QCMaquis都在不断更新,且近期QCMaquis在GitHub上开源了,以后OpenMolcas很可能会直接在主分支中支持QCMaquis。因此本文可能适用、也可能不适用于以后的版本,请读者举一反三。可以使用个人用户安装,也可以用root账户装。本文安装步骤以个人用户为例,若读者曾经装过以下将介绍的某些库(且版本符合要求),则可直接跳过相应步骤。下文中的make -j16表示用16核并行编译,若读者在实践中发现报错,应先去掉-j参数尝试串行编译下是否仍然报错。

       

      编译器/系统环境基本要求:

      (1)GNU编译器>=5.x版本,笔者机子上装的是5.4.0(读者可运行gcc -v查看版本号)。若读者机子上编译器版本太低,可参考教程《Linux下安装高版本GCC》。


      注意若将GCC安装到非默认位置(如/opt/gcc-5.4.0),请勿在自己账户的~/.bashrc里导出关于/usr/lib64的库路径,因为显然/usr/lib64里是旧版的库,故意导出旧版库容易造成后续编译问题。QCMaquis手册上写着目前不支持Intel编译器,就不尝试了。


      (2)cmake版本>=3.7,笔者机子上装的是3.19.0(可运行cmake --version查看版本号)。若读者机子上版本过低,请到官网

        https://cmake.org/download/

        下载并安装较新版cmake。


        (3)Python 3.x版本,笔者机子上装的是Anaconda Python 3.7.6版(可运行python -V查看版本号)。Anaconda Python可以在其官网

          https://www.anaconda.com/products/individual#

          下载。

           

          1. 安装HDF5库

            https://www.hdfgroup.org/downloads/hdf5/source-code/

            下载HDF5源码压缩包,例如hdf5-1.12.0.tar.bz2,(发送到linux下再)解压,改名,进入文件夹

              tar -jxvf hdf5-1.12.0.tar.bz2mv hdf5-1.12.0 hdf5cd hdf5

              依次执行以下三条命令进行编译

                ./configure --prefix=/home/$USER/software/hdf5-1.12.0 --enable-fortran \--enable-cxx CC=gcc CXX=g++ FC=gfortranmake -j16make install

                注意\是续行符。

                prefix后的安装路径可根据自己的喜好和实际情况修改。

                完成后在~/.bashrc中写上环境变量

                  export HDF5_ROOT=/home/$USER/software/hdf5-1.12.0export PATH=$HDF5_ROOT/bin:$PATHexport CPATH=$HDF5_ROOT/include:$CPATHexport LD_LIBRARY_PATH=$HDF5_ROOT/lib:$LD_LIBRARY_PATH

                  执行source ~/.bashrc或退出重登录。

                  完成后所需库文件都在hdf5-1.12.0文件夹里,而原hdf5文件夹没有用了,可以删除,这也是一开始更改目录名的目的。

                   

                  2. 安装GSL库

                  官网下载若过慢,可寻找合适的镜像点下载,例如

                    https://mirrors.nju.edu.cn/gnu/gsl

                    笔者选择的是2.6版。执行类似步骤

                      tar -zxvf gsl-2.6.tar.gzmv gsl-2.6 gslcd gsl./configure --prefix=/home/$USER/software/gsl-2.6 FC=gfortran CC=gcc CXX=g++make -j16make install

                      完成后在~/.bashrc中写上环境变量

                        export GSL_ROOT_DIR=/home/$USER/software/gsl-2.6export PATH=$GSL_ROOT_DIR/bin:$PATHexport CPATH=$GSL_ROOT_DIR/include:$CPATHexport LD_LIBRARY_PATH=$GSL_ROOT_DIR/lib:$LD_LIBRARY_PATH

                        执行source ~/.bashrc或退出重登录。

                        完成后所需库文件都在gsl-2.6文件夹里,而原gsl文件夹没有用了,可以删除。

                         

                        3. 安装Boost库

                        本公众号之前发过一篇《Boost.MPI的编译》教程,里面是1.55版本。然而QCMaquis要求Boost>=1.56,笔者此次安装的是1.57版,可在

                          https://sourceforge.net/projects/boost/files/boost/1.57.0/

                          下载。不建议使用更高版本的boost,因为可能会导致后续QCMaquis编译报boost相关错误。而1.55与1.57可以共存,不冲突。执行类似步骤

                            tar -jxvf boost_1_57_0.tar.bz2mv boost_1_57_0 boostcd boost./bootstrap.sh --prefix=/home/$USER/software/boost_1_57_0 --with-libraries=all --with-toolset=gcc./b2 -j16 --layout=tagged link=static,shared install

                            此处我们不需要MPI相关库,因此无需修改project-config.jam文件。这里我们也用了GCC编译Boost,不建议去尝试Intel编译器。完成后在~/.bashrc中写上环境变量

                              export BOOST_ROOT=/home/$USER/software/boost_1_57_0export BOOST_INCLUDE=$BOOST_ROOT/include:$BOOST_INCLUDEexport BOOST_LIB=$BOOST_ROOT/lib:$BOOST_LIBexport LD_LIBRARY_PATH=$BOOST_ROOT/lib:$LD_LIBRARY_PATHexport CPATH=$BOOST_ROOT/include:$CPATH

                              执行source ~/.bashrc或退出重登录。完成后所需库文件都在boost_1_57_0文件夹里,而原boost文件夹没有用了,可以删除。

                               

                              4. 安装支持QCMaquis的OpenMolcas

                                https://gitlab.com/Molcas/OpenMolcas/-/tree/qcmaquis-release

                                下载分支压缩包,例如OpenMolcas-qcmaquis-release.tar.bz2。目前请勿使用OpenMolcas master主分支。解压

                                  tar -jxvf OpenMolcas-qcmaquis-release.tar.bz2mv OpenMolcas-qcmaquis-release OpenMolcas_qcd OpenMolcas_qmkdir bin

                                  此处改名仅仅是笔者嫌文件夹名称过长,改个短的。后续一般不删OpenMolcas_q文件夹。创建bin文件夹以便编译完成后存放pymolcas脚本。先在~/.bashrc末尾写上如下环境变量

                                    export MOLCAS_WORKDIR=/scratch/$USERexport MOLCAS_MEM=16GBexport MOLCAS_PRINT=3export MOLCAS_NPROCS=1export PATH=/home/$USER/software/OpenMolcas_q/bin:$PATHexport MOLCAS=/home/$USER/software/OpenMolcas_qexport OMP_NUM_THREADS=16

                                    注意MOLCAS环境变量较多,详细含义请参见官方PDF手册

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

                                      此处的设置仅为笔者个人偏好,不一定适合读者机子的实际情况。建议在~/.bashrc末尾写是因为过一会儿pymolcas才能被自动放至我们新建的bin目录里。执行source ~/.bashrc或退出重登录。

                                       

                                      在编译前我们需要简单改一行代码,打开src/rasscf/cictl.f文件,搜索wfn_dmrg_checkpoint,dmrg,将这行底下的if (doDMRG) then往上挪两行,即挪到#ifdef _DMRG_行下,否则输出文件经常报HDF5-DIAG: Error detected in HDF5的错误,它不影响计算结果,但是看着很乱。官方说以后的OpenMolcas会做这个改动,届时我们就不用自己改了,当前我们只能手动改一下。然后配置编译参数,在OpenMolcas_q文件夹内执行

                                        mkdir build && cd buildCC=gcc CXX=g++ FC=gfortran cmake -DLINALG=MKL -DOPENMP=ON \-DDMRG=ON -DNEVPT2=ON \-DCMAKE_INSTALL_PREFIX=/home/$USER/software/OpenMolcas_q ..

                                        注意最后有两个点不要少,表示上级目录。到

                                          https://github.com/qcscine/qcmaquis/releaseshttps://github.com/qcscine/nevpt2/releases

                                          分别下载qcmaquis和nevpt2压缩包。接着仔细阅读以下步骤,必要时逐行复制粘贴

                                            cd External/qcmaquis/tmp/rm -f qcmaquis-gitcloneNaNake qcmaquis-gitupdateNaNaketouch qcmaquis-gitcloneNaNake qcmaquis-gitupdateNaNakecd ../src/rm -rf qcmaquis将下载好的qcmaquis压缩包发送至此处tar -zxf qcmaquis-release-3.0.1.tar.gzmv qcmaquis-release-3.0.1 qcmaquisrm -rf qcmaquis-release-3.0.1.tar.gz
                                            cd ../../nevpt2_ext/tmprm -f nevpt2_ext-gitcloneNaNake nevpt2_ext-gitupdateNaNaketouch nevpt2_ext-gitcloneNaNake nevpt2_ext-gitupdateNaNakecd ../src/rm -rf nevpt2_ext将下载好的nevpt2压缩包发送至此处tar -zxf nevpt2-release-3.0.tar.gzmv nevpt2-release-3.0 nevpt2_extrm -rf nevpt2-release-3.0.tar.gz
                                            cd ../../..make -j16make install

                                            16核编译仅需约2分钟。执行ls ../bin/可以看到许多.exe可执行文件和pymolcas(这是我们使用OpenMolcas的脚本)

                                             

                                            5. 测试OpenMolcas是否正常工作

                                            我们到一个新的文件夹里去,执行pymolcas --version查看版本号

                                              mkdir ~/molcas_examplescd ~/molcas_examplespymolcas --version

                                              应显示类似如下信息

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

                                                 随意测试几个OpenMolcas自带标准算例

                                                  pymolcas verify standard:000pymolcas verify standard:075pymolcas verify standard:097

                                                  自带标准算例位于OpenMolcas_q/test/standard/下,数目较多。

                                                  若想全部测试,去掉:000即可。

                                                   

                                                  测试QCMaquis全部自带算例(位于OpenMolcas_q/test/qcmaquis/下)

                                                    pymolcas verify qcmaquis

                                                    这需要10-20分钟。在笔者机子上大部分例子通过,009号算例失败,看了下报错没啥影响。若几乎全都失败这说明安装有误,或库不满足要求。若读者想自己学做CASSCF、DMRG和NEVPT2等计算,可以模仿这些自带算例并结合官方手册学习,内容十分丰富。

                                                     

                                                    顺便一提,笔者开发的MOKIT程序可以调用这些软件自动做多参考计算,无需学习使用OpenMolcas和QCMaquis,也无需学习复杂的CASSCF计算。MOKIT免费开源,可在

                                                      https://gitlab.com/jxzou/mokit

                                                      下载,其详细介绍请阅读《自动做多参考态计算的程序MOKIT》。下期笔者将展示MOKIT调用这些软件做DMRG等计算的例子。