支持qm/mm的gromacs编译(gromacs+cp2k)

Gromacs支持两种qm/mm编译方式:①联合MIMIC(步骤简单);②联合CP2K(十分复杂)。前者很久以前就加入了gromacs安装手册中,但是始终无法正确编译,我至今都没有看到有此方法的成功案例。估计原因出在MIMIC上,该库的作者迟迟没有做出更新,一年前就关注了该项目的进度,到现在都没有半点变化,失望。。。 无奈只能选择第二种手段,联合CP2k的方法是2022版本新加入的,此方法难点在cp2k的安装上。我也是走了很多弯路才编译成功,为了让更少的人走弯路,所以我将自己安装过程详实地记录下来。
以下用到的文件:公众号回复“qm”获取。

1.安装cp2k

1.1安装cp2k依赖文件

gromacs要求cp2k版本大于8.1,这里我用了8.2版本。安装前确保gcc、g++、gfortran版本分别为7.5、7.5、8.4,如果是其他版本不保证能成功。

tar -jvxf cp2k-8.2.tar.bz2
cd cp2k-8.2/tools/toolchain/
bash ./install_cp2k_toolchain.sh --with-elpa=no --enable-cuda=no --with-spla=no --with-libint=install --with-openmpi=install --with-plumed=install --with-openblas=install --with-scalapack=install --with-gsl=install --with-hdf5=install --with-libvdwxc=install --with-libxc=install --with-libxsmm=install --with-spfft=install 
#此步骤确保plumed、openblas、scalapack、fftw都安装无误


可能的报错

  • 上述安装过程如果出现如下字样可不必理会
# path/to/cp2k/tools/toolchain/scripts/tool_kit.sh: eval: line 515: syntax error near unexpected token `('
  • 执行上述脚本可能跳过scalapack而不安装,可以用下调命令手动完成
bash path/to/cp2k/tools/toolchain/scripts/stage4/install/install_scalapack.sh
  • 如果上条还是报错,可以进入下载文件夹下手动编译完成
cd path/to/cp2k/tools/toolchain/build/scalapack-2.1.0/build
make
make install
  • 执行完后,用文本编辑器打开path/to/cp2k/tools/toolchain/scripts/stage4/install/install_scalapack.sh,注释掉58-69行以及49行的rm命令。
bash path/to/cp2k/tools/toolchain/scripts/stage4/install/install_scalapack.sh

1.2编译libcp2k.a文件

上述依赖软件安装完毕后,在path/to/cp2k/tools/toolchain/install/arch文件夹下有这样一些文件:

支持qm/mm的gromacs编译(gromacs+cp2k)_第1张图片

用文本编辑器打开local.psmp,检索fftw-3.3.8、openblas-0.3.10、scalapack-2.1.0字样是否存在,若缺失则按照文件格式将这些依赖软件安装路径信息补全:

支持qm/mm的gromacs编译(gromacs+cp2k)_第2张图片

此外,local.psmp文件LIBS所在行必须保证有-lscalapack -lplumed -lfftw3_mpi -lfftw3 -lfftw3_omp -lopenblas。如果缺失要手动补齐。

支持qm/mm的gromacs编译(gromacs+cp2k)_第3张图片

完成上述操作后,执行下述命令:

cp path/to/cp2k/tools/toolchain/install/arch/* path/to/cp2k/arch/
source path/to/cp2k/tools/toolchain/install/setup
#注意!!!执行完上条命令后不要再关闭终端了,如果又重开了新终端,则需要再运行一次上条命令
cd path/to/cp2k/
make ARCH=local VERSION="psmp" libcp2k

运行无误后,在path/to/cp2k/lib/local/psmp路径下应该有libcp2k.a文件。


2.给gromacs打plumed补丁(可选)

由于咱们在上面安装cp2k依赖软件时已经安装了cp2k,所以不必再装了,所需要做的是将其添加至环境变量:

export PLUMED2_HOME=path/to/cp2k/tools/toolchain/install/plumed-2.6.2
export PATH=$PLUMED2_HOME/bin:$PATH
export LD_LIBRARY_PATH=$PLUMED2_HOME/lib:$LD_LIBRARY_PATH

解压gromacs-2022,并打补丁:

tar -zvxf gromacs-2022.tar.gz
cd gromacs-2022
plumed patch -p

执行上条命令后,选择3号选项。(为什么不选择版本号更接近2022的4号呢?你可以试试,patch会出错,且如果忽略,后续编译也会出错。都是试出来的教训!)

支持qm/mm的gromacs编译(gromacs+cp2k)_第4张图片

3.编译gromacs


3.1编译GPU加速版(单精度)

双精度和gpu冲突

sudo cmake .. -DCMAKE_INSTALL_PREFIX=/home/$USER/gmx_qm_gpu \
-DGMX_FFT_LIBRARY=fftw3 -DBUILD_SHARED_LIBS=OFF -DGMXAPI=OFF \
-DGMX_INSTALL_NBLIB_API=OFF -DGMX_CP2K=ON -DCP2K_DIR=path/to/cp2k/lib/local/psmp \
-DCP2K_LINKER_FLAGS=" 需要添加的东西 " \ 
-DGMX_GPU=CUDA -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda

sudo make
sudo make install

上述汉字部分用local.psmp文件中的信息替换,如下图所示:

支持qm/mm的gromacs编译(gromacs+cp2k)_第5张图片


3.2编译CPU双精度

sudo cmake .. -DCMAKE_INSTALL_PREFIX=/home/$USER/gmx_qm_gpu \
-DGMX_FFT_LIBRARY=fftw3 -DBUILD_SHARED_LIBS=OFF -DGMXAPI=OFF \
-DGMX_INSTALL_NBLIB_API=OFF -DGMX_CP2K=ON -DCP2K_DIR=path/to/cp2k/lib/local/psmp \
-DCP2K_LINKER_FLAGS=" 需要添加的东西 " \ 
DGMX_DOUBLE=ON

sudo make
sudo make install

4.gromacs启用qm的参数示例:

qmmm-active              = true
qmmm-qmgroup             = QMatoms
qmmm-qmmethod            = PBE
qmmm-qmcharge            = 0
qmmm-qmmultiplicity      = 1

支持qm/mm的gromacs编译(gromacs+cp2k)_第6张图片

你可能感兴趣的:(MD相关,bash,linux,python)