安装OpenMolcas+QCMaquis做DMRG-SCF计算
安装OpenMolcas+QCMaquis做DMRG-SCF计算

安装OpenMolcas+QCMaquis做DMRG-SCF计算

安装OpenMolcas+QCMaquis做DMRG-SCF计算
Installing OpenMolcas and QCMaquis to Perform DMRG-SCF Calculations

Jiawei Xu
Released: 2022-12-30 / Updated: 2022-12-30

密度矩阵重整化群(density matrix reorganization group, DMRG)方法对于处理活性空间较大的体系具有重要意义。比较流行的做法之一是OpenMolcas与QCMaquis联用做DMRG-SCF计算。网络上传播的一些安装方法随着源代码的不断更新已经不再适用于最新版本,本文的安装方法针对当前最新版本是可行的。

1. 编译器和环境要求

GNU compiler >= version 5.x,笔者使用的是7.4.0版本,可通过gcc -v查看。
CMake >= version 3.7,笔者使用的是3.24.0版本,可通过cmake –version查看。
Python >= version 3.x,笔者使用的是Anaconda Python-3.9.13版本,可通过python –version查看。

2. 安装步骤

2.1 安装HDF5库
https://www.hdfgroup.org/downloads/hdf5/source-code/下载HDF5库安装包,笔者使用的是HDF5-1.12.1版本。下面都假定软件安装于/home/jwxu/programs目录下。

tar -xf hdf5-1.12.1.tar.gz
mv hdf5-1.12.1 hdf5
cd hdf5
./configure --prefix=/home/jwxu/programs/hdf5-1.12.1 --enable-fortran --enable-cxx CC=gcc CXX=g++ FC=gfortran
make -j && make install
cd ..
rm -rf hdf5

如果机子上有多个版本的GNU compiler,也可直接指定所用编译器,如:

./configure --prefix=/home/jwxu/programs/hdf5-1.12.1 --enable-fortran --enable-cxx \
-DCMAKE_C_COMPILER=/share/apps/gcc/7.4.0/bin/gcc \
-DCMAKE_CXX_COMPILER=/share/apps/gcc/7.4.0/bin/g++ \
-DCMAKE_Fortran_COMPILER=/share/apps/gcc/7.4.0/bin/gfortran

编译完成后,写上环境变量:

export HDF5_ROOT=/home/jwxu/programs/hdf5-1.12.1
export PATH=$PATH:$HDF5_ROOT/bin
export CPATH=$CPATH:$HDF5_ROOT/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HDF5_ROOT/lib

2.2 安装GSL库
从官网或镜像(https://mirrors.nju.edu.cn/gnu/gsl)下载,笔者使用的是2.6版本。

tar -xf gsl-2.6.tar.gz
mv gsl-2.6 gsl
cd gsl
./configure --prefix=/home/jwxu/programs/gsl-2.6 CC=gcc CXX=g++ FC=gfortran
make -j && make install
cd ..
rm -rf gsl

编译完成后,写上环境变量:

export GSL_ROOT=/home/jwxu/programs/gsl-2.6
export PATH=$PATH:$GSL_ROOT/bin
export CPATH=$CPATH:$GSL_ROOT/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GSL_ROOT/lib

2.3 安装Boost库
https://sourceforge.net/projects/boost/files/boost/1.57.0/下载Boost安装包,笔者使用的是1.57.0版本。

tar -xf boost_1_57_0.tar.bz2
mv boost_1_57_0 boost
cd boost
./bootstrap.sh --prefix=/home/jwxu/programs/boost_1_57_0 --with-libraries=all --with-toolset=gcc
./b2 -j16 --layout=tagged link=static,shared install
cd ..
rm -rf boost

编译完成后,写上环境变量:

export BOOST_ROOT=/home/jwxu/programs/boost_1_57_0
export BOOST_INCLUDE=$BOOST_INCLUDE:$BOOST_ROOT/include
export BOOST_LIB=$BOOST_LIB:$BOOST_ROOT/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$BOOST_ROOT/lib
export CPATH=$CPATH:$BOOST_ROOT/include

2.4 安装OpenMolcas+QCMaquis+NEVPT2
本步骤开始,新版本的安装方法与旧版本完全不同。到https://gitlab.com/Molcas/OpenMolcas下载程序主分支,对于可联网的机子,也可直接通过git clone https://gitlab.com/Molcas/OpenMolcas.git下载。

unzip OpenMolcas-v22.10.zip
mv OpenMolcas-v22.10 OpenMolcas-QCMaquis
cd OpenMolcas-QCMaquis
mkdir build bin && cd build
CC=gcc CXX=g++ FC=gfortran cmake -DLINALG=MKL -DOPENMP=ON -DDMRG=ON -DNEVPT2=ON -DCMAKE_INSTALL_PREFIX=/home/jwxu/programs/OpenMolcas-QCMaquis ..

注意,虽然官方及多数教程表示5.4及以上版本的GNU compiler就可以满足要求,但实测发现某些机子上也会遇到一些问题,如指定用7.4版本的GNU compiler则没有问题,如:

cmake .. -DLINALG=MKL -DOPENMP=ON -DDMRG=ON -DNEVPT2=ON -DCMAKE_INSTALL_PREFIX=/home/jwxu/programs/OpenMolcas-QCMaquis \
-DCMAKE_C_COMPILER=/share/apps/gcc/7.4.0/bin/gcc \
-DCMAKE_CXX_COMPILER=/share/apps/gcc/7.4.0/bin/g++ \
-DCMAKE_Fortran_COMPILER=/share/apps/gcc/7.4.0/bin/gfortran

https://github.com/qcscine下载QCMaquis和NEVPT2压缩包,假定放在/home/jwxu/programs目录下。对于可联网的机子,可以直接git clone相应链接下载。对于不能联网的机子,首先按照以下步骤跳过编译QCMaquis过程中的更新检查:

cd /home/jwxu/programs/OpenMolcas-QCMaquis/build/External/qcmaquis/tmp
rm -f qcmaquis-gitclone.cmake qcmaquis-gitupdate.cmake
touch qcmaquis-gitclone.cmake qcmaquis-gitupdate.cmake
cd ../src
rm -rf qcmaquis
cp /home/jwxu/programs/qcmaquis-master.zip .
unzip qcmaquis-master.zip
mv qcmaquis-master qcmaquis

然后在/home/jwxu/programs/OpenMolcas-QCMaquis/build/External/qcmaquis/src/qcmaquis/dmrg/CMakeLists.txt中添加以下语句,否则编译无法通过。

add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0)

对NEVPT2作类似处理跳过更新检查:

cd /home/jwxu/programs/OpenMolcas-QCMaquis/build/External/nevpt2_ext/tmp
rm -f nevpt2_ext-gitclone.cmake nevpt2_ext-gitupdate.cmake
touch nevpt2_ext-gitclone.cmake nevpt2_ext-gitupdate.cmake
cd ../src
rm -rf nevpt2_ext
cp /home/jwxu/programs/nevpt2-master.zip .
unzip nevpt2-master.zip
mv nevpt2-master nevpt2_ext

将/home/jwxu/programs/OpenMolcas-QCMaquis/build/External/nevpt2_ext/src/nevpt2_ext/CMakeLists.txt的第24行中ENABLE_MOLCAS的值改为ON:

option(ENABLE_MOLCAS          "Enable compilation within OpenMOLCAS framework" ON)

然后手动复制以下文件:

cd /home/jwxu/programs/OpenMolcas-QCMaquis/build/Tools
mkdir -p distributed-4rdm
cd distributed-4rdm
cp ../../External/nevpt2_ext/src/nevpt2_ext/tools-distributed-rdm/* .

编译过程中OpenMolcas会从编译好的QCMaquis目录下寻找这几个文件,但实际上新版本中是由NEVPT2提供,故手动复制。然后就可以开始编译了。

cd ../..
make -j && make -j install

如果此时编译到NEVPT2时报有关无法定位到libqdnevpt2.a的错,可先行编译NEVPT2,然后再将相应库文件复制到指定位置,如:

cd ./External/nevpt2_ext/src/nevpt2_ext/
CC=gcc CXX=g++ cmake .
make -j
cp ./lib* ../../../../lib/

然后编译即可正常通过。