Vasp编译安装教程二-插件篇

2023-05-26
4分钟阅读时长

VTST

1.拷贝源码

在vtst官网下载vtst-code源码包

image-20241114164210707

https://theory.cm.utexas.edu/vtsttools/download.html

解压

tar xzf vtstcode-197.tgz

复制对应vasp版本的vtst到src里

cp vtstcode-197/vtstcode6.3/* src/ -rf

2.修改 main.F

修改src下main.F文件,vim/vi 打开文件 关键词CHAIN_FORCE定位到3519行

CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
     LATT_CUR%A,LATT_CUR%B,IO%IU6)

修改为(添加TSIF)

CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
     TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)

vasp>=6.2 还需要修改

IF (LCHAIN) CALL chain_init( T_INFO, IO)

修改为

CALL chain_init( T_INFO, IO)

3.修改 .objects

修改src下.objects文件(注意是个隐藏文件)

定位到chain.o这一行,再它前面添加下面信息,注意斜杠后面没有空格,制表符用tab打出来

vasp5 和 6.1 添加的内容

bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \
fire.o lanczos.o neb.o qm.o opt.o

vasp6.3

bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \
fire.o lanczos.o neb.o qm.o \
pyamff_fortran/*.o ml_pyamff.o \
opt.o \

image-20241114164224204

对于vasp6.3还需要修改一处,src/makefile 文件中找到LIB 和 dependencies 对应的行 分别改成如下

LIB= lib parser pyamff_fortran
dependencies: sources libs

4.VTSTSCRIPTS

VTST下还有一些vtstscripts脚本,它的安装很简单

下载好后解压,将其路径添加到系统PATH环境变量里

例如解压后路径为 /home/bit/vasp.6.3.0/vtstscripts-1033

添加/etc/profile或~/.bashrc最后一行,重新登陆终端或source环境变量配置文件生效

export PATH=/home/bit/vasp.6.3.0/vtstscripts-1033:$PATH

VASPSOL

vasp隐式溶剂化模型,该模型描述了静电、空化和色散对溶质和溶剂之间相互作用的影响,提供了一种计算上有效的方法来计算溶剂化对分子和晶体表面以及反应势垒的影响

1.下载源码

git clone https://github.com/henniggroup/VASPsol.git

国内网慢可以试试加速器下载

git clone https://ghproxy.com/https://github.com/henniggroup/VASPsol.git

将solvation.F拷贝到vasp的src目录下

cp VASPsol/src/solvation.F src/ -rf

2.打补丁

VASP 5.2.12 / 5.3.3 / 5.3.5

(注意打补丁符号是 <)

cd src
patch -p1 < <path to the interface patch file>

注意这3个版本的补丁不在网上提供,需要联系 [email protected]

VASP >= 5.4.1

patch src/pot.F < <path to the pbz_patch_541 patch file>

VASP >= 6.1.0

patch -p0 < <path to the pbz_patch_610 patch file>

vasp 6.3.0

下载第三方补丁并解压

wget https://github.com/henniggroup/VASPsol/files/8495230/VASPsol_VASP630.zip && unzip VASPsol_VASP630.zip

然后复制到src里,再进行打补丁

patch -p0 < VASPsol_VASP630.patch

3.修改makefile.include

vasp>=5.4.4 , CPP_OPTIONS选项里添加 -Dsol_compat

image-20241114164235975

VASP OPT 固定基矢优化结构

1.旧版 应力张量法

重写vasp源码下 src/constr_cell_relax.F 文件

!-----------------------------------------------------------------------
!
! At present, VASP does not allow to relax the cellshape selectively
! i.e. for instance only cell relaxation in x direction.
! To be more precisse, this behaviour can not be achived via the INCAR
! or POSCAR file.
! However, it is possible to set selected components of the stress tensor
! to zero.
! The most conveninent position to do this is the routines 
! CONSTR_CELL_RELAX  (constraint cell relaxation).
! FCELL contains the forces on the basis vectors.
! These forces are used to modify the basis vectors according
! to the following equations:
!
!      A_OLD(1:3,1:3)=A(1:3,1:3) ! F90 style 
!      DO J=1,3
!      DO I=1,3
!      DO K=1,3
!        A(I,J)=A(I,J) + FCELL(I,K)*A_OLD(K,J)*STEP_SIZE
!      ENDDO
!      ENDDO
!      ENDDO
! where A holds the basis vectors (in cartesian coordinates).
!
!-----------------------------------------------------------------------

      SUBROUTINE CONSTR_CELL_RELAX(FCELL)
      USE prec
      REAL(q) FCELL(3,3)

!     just one simple example
!     relaxation in x directions only
!      SAVE=FCELL(1,1)
!      FCELL=0   ! F90 style: set the whole array to zero
!      FCELL(1,1)=SAVE
!     relaxation in z direction only
!      SAVE=FCELL(3,3)
!      FCELL=0   ! F90 style: set the whole array to zero
!      FCELL(3,3)=SAVE

      LOGICAL FILFLG
      INTEGER ICELL(3,3)
      INQUIRE(FILE='OPTCELL',EXIST=FILFLG)
      IF (FILFLG) THEN
         OPEN(67,FILE='OPTCELL',FORM='FORMATTED',STATUS='OLD')
         DO J=1,3
            READ(67,"(3I1)") (ICELL(I,J),I=1,3)
         ENDDO
         CLOSE(67)
         DO J=1,3
         DO I=1,3
            IF (ICELL(I,J)==0) FCELL(I,J)=0.0
         ENDDO
         ENDDO
      ENDIF
    
      RETURN
      END SUBROUTINE

参考 https://blog.shishiruqi.com/2019/05/05/constr/

2.新版

下载源码

git clone  https://github.com/Chengcheng-Xiao/VASP_OPT_AXIS.git

国内镜像加速可用

git clone https://ghproxy.com/https://github.com/Chengcheng-Xiao/VASP_OPT_AXIS.git

仅固定对角线项法

stress_relax.patch文件拷贝到 VASP 发行版的根目录中,运行命令

patch -p0 < stress_relax.patch

此补丁让 VASP 读取在每个 SCF 循环之后调用的文件OPTCELL,并使用其中的信息来确定要修复的对角线应力分量。

OPTCELL文件格式

xx yy zz

例如:

1 1 0

将修复zz应力张量的分量。

请注意,对于此补丁,我们只能修复对角线应力张量元素,因此它更适合正交晶胞或至少与其他晶格矢量垂直的晶格矢量。

另请注意,ISIF=3晶格弛豫需要 。

固定特定的应力张量元素法

stress_relax_finner.patch文件拷贝到 VASP 发行版的根目录,运行命令

patch -p0 < stress_relax_finner.patch

这个补丁让 VASPIOPTCELL直接从INCAR.

IOPTCELL格式:

IOPTCELL = xx yx zx xy yy zy xz yz zz

例如:

IOPTCELL = 1 1 0 1 1 0 0 0 0

将放松应力张量的xxxyyxyy分量,同时保持其他分量固定(为零)

点阵法

警告:此方法仅适用于IBRION=2并可能导致数值不稳定性

该补丁可以直接固定格子。

这是通过在共轭梯度步骤的每次几何更新之后重新分配晶格元素的原始值来实现的。(修改于dyna.F

此外,修改应力张量以减少直接固定引入的不稳定性。(修改于constr_cell_relax.F)。

要使用此方法:

cell_relax.patch文件拷贝到 VASP 发行版的根目录中。并输入:

patch -p0 < cell_relax.patch

这个补丁让 VASPIOPTCELL直接从INCAR.

IOPTCELL格式:

IOPTCELL = xx xy xz yx yy yz zx zy zz

例如:

IOPTCELL = 1 1 0 1 1 0 0 0 0

将放松点阵矩阵的xxxyyxyy分量,同时保持其他分量固定它还将修复应力张量的xzyzzxzyzz

VASPKIT

建议使用conda创建虚拟环境再安装vaspkit

1.conda安装教程

这里使用mini版的conda (清华源)

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

安装

bash Miniconda3-latest-Linux-x86_64.sh

1.Please, press ENTER to continue

回车继续

2.按下q跳过产品介绍

3.Do you accept the license terms? [yes|no] [no] »> yes

输入yes 接受条款 回车继续

4.Miniconda3 will now be installed into this location: /home/bit/miniconda3

  • Press ENTER to confirm the location
  • Press CTRL-C to abort the installation
  • Or specify a different location below

[/home/bit/miniconda3] »>

选择安装目录,回车就用上面给的默认的,也可以输入路径回车将会安装到指定目录中

4.Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no] [no] »> yes

初始化 输入yes 回车

重新登陆终端,创建一个虚拟环境,这里python用了3.6版本,虚拟环境的名字叫vasp

conda create -n vasp python=3.6

激活环境

conda activate vasp

如果觉得创建虚拟环境慢,可以添加加速源 编辑 ~/.condarc

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

运行 conda clean -i 清除索引缓存

2.安装依赖

pip install numpy scipy matplotlib

3.安装vaspkist

下载源码包 https://sourceforge.net/projects/vaspkit/files/Binaries/

wget https://gigenet.dl.sourceforge.net/project/vaspkit/Binaries/vaspkit.1.4.1.linux.x64.tar.gz

解压

tar xzf vaspkit.1.4.1.linux.x64.tar.gz

进入目录执行安装脚本

cd vaspkit.1.4.1/ 
./setup.sh

4.配置vaspkit

编辑~/.vaspkit

修改下面几项为你的赝势文件和python可执行文件的正确路径

LDA_PATH                      =     ~/POTCAR/LDA                   #  Path of LDA potential
PBE_PATH                      =     ~/POTCAR/PBE                   #  Path of PBE potential
GGA_PATH                      =     ~/POTCAR/GGA                   #  Path of PW91 potential
PYTHON_BIN                    =     ~/anaconda3/bin/python3        #  Python executable program with its installation path. Recommend Anaconda package

重新登陆终端vaspkist正常可用

phonopy

安装

在上面的vaspkit的vasp虚拟环境下继续

pip install phonopy

验证

git clone https://github.com/phonopy/phonopy.git

进入Si算例目录

cd phonopy/example/Si/

执行

phonopy -f vasprun.xml

输出

        _
  _ __ | |__   ___  _ __   ___   _ __  _   _
 | '_ \| '_ \ / _ \| '_ \ / _ \ | '_ \| | | |
 | |_) | | | | (_) | | | | (_) || |_) | |_| |
 | .__/|_| |_|\___/|_| |_|\___(_) .__/ \__, |
 |_|                            |_|    |___/
                                      2.12.0

Python version 3.6.13
Spglib version 2.0.2

Displacements were read from "phonopy_disp.yaml".
counter (file index): 1
"FORCE_SETS" has been created.
                 _
   ___ _ __   __| |
  / _ \ '_ \ / _` |
 |  __/ | | | (_| |
  \___|_| |_|\__,_|

ase

ASE是用Python编程语言编写的原子模拟环境,旨在设置,引导和 分析原子模拟

安装,同样使用刚才创建的conda虚拟环境

然后安装依赖

pip install numpy scipy matplotlib flask pytest pytest-mock pytest-xdist spglib

安装ase

pip install ase