前言:
而今大家对“centos6安装vasp”都比较关注,咱们都需要剖析一些“centos6安装vasp”的相关资讯。那么小编同时在网摘上网罗了一些对于“centos6安装vasp””的相关文章,希望同学们能喜欢,姐妹们快快来学习一下吧!注:本文来源于计算化学公社lqid的原创教程。
VASP从6.2.0开始支持DFT-D4 方法(),但是需要作为外部包在编译的时候额外编译进去()。实际操作的时候,笔者发现其实想要用上带DFT-D4的vasp没那么简单,本贴子记录了一下本人在学校的hpc集群上安装Grimme的dftd4程序和编译带dftd4的vasp.6.2.1时的过程,希望对有兴趣和需求的人有启发和帮助。
1. 安装dftd4在社长的博文()中有对DFT-D4方法的介绍,而且提供了2种编译方法——简单粗暴的方法和基于meson+ninja的编译方法。当时的dftd4是ver 2.0,目前最新的dftd4已经到了ver 3.3.0,程序已经被重写了一遍。但是非常蛋疼的是,vasp的代码中用的api是基于2.x版本的,如果编译的dftd4是3.2.0及之前的3.x版本,vasp编译会出错,好在3.3版中重新增加了vasp用的2.x api。(, )
编译环境:GCCcore-10.3.0, CentOS Linux release 8.4.2105, meson-0.58.0, ninja-1.10.2, python-3.9.5 笔者分别在Intel® Parallel Studio XE 2020 Update 1 (19.1.1.217)和Intel® Parallel Studio XE 2019 Update 1 (19.0.1.144)环境下尝试编译dftd4。
根据dftd4的github上的指南(),用以下4条指令编译dftd4
meson setup _buildmeson test -C _build --print-errorlogsmeson configure _build --prefix=/path/to/installmeson install -C _build但是笔者发现均无法正常编译,并且没有产生ver 3.3.0新加的给vasp使用的旧api。
首先编译问题可以在第一条命令中,添加通过指定编译器的环境变量解决。如果是Intel® Parallel Studio XE 2020 update 1 (19.1.1.217)环境,则用
FC=ifort CC=icc CXX=icpc meson setup _build
如果是Intel® Parallel Studio XE 2019 update 1 (19.0.1.144)环境,则用FC=ifort meson setup _build
(在笔者的测试中,如果反过来均会报错导致编译失败,非常神奇但是不清楚为什么)然后在第三条指令中,加入-Dapi_v2=True 变成
meson configure _build --prefix=/path/to/install -Dapi_v2=True
来生成vasp可用的api。最后在.bashrc 中加入并且source ~/.bashrc
export LD_LIBRARY_PATH=$HOME/bin/dftd4/lib64:$LD_LIBRARY_PATH
(编译dftd4时--prefix=$HOME/bin/dftd4)2. 编译vasp(关于编译vasp中遇到的问题不在本贴子的讨论范围内)Vasp wiki中()给出指南是这样的(应该适用于ver 2.x版本的dftd3
CPP_OPTIONS += -DDFTD4LLIBS += -Lyour-libdftd4-build -ldftd4INCS += -Iyour-libdftd4-build/libdftd4.a.p笔者英语能力有限,实在是没理解your-libdftd4-build到底是指什么目录,并且ver 3.x 的dftd4似乎没有生成libdftd4.a.p 文件。我用以下路径能够得到编译成功并且可以使用dftd4的vasp二进制文件
CPP_OPTIONS += -DDFTD4LLIBS += -L$HOME/bin/dftd4/lib64 -ldftd4INCS += -I$HOME/bin/dftd4/include/dftd4/intel-xx.x.x.xxx(若编译dftd4时--prefix=$HOME/bin/dftd4)其中intel-xx.x.x.xxx中的数字为编译时使用的intel编译器版本号
p.s.其实在写本贴的时候dftd4还在3.2版,但是支持vasp的源代码compat.f90已经在github page上了,原本是想介绍一下怎么用compat.f90微微魔改一下dftd4的代码,提前体验这个新功能的,结果计划赶不上变化hhhhhhh
3. 在vasp.6.2.0前的版本使用dftd4我发现在vasp.6.1.0中已经有关于dftd4的源代码,主要是vdwforcefield.F和subdftd4.F这两个。简单对比了一下发现和6.2.0的没什么区别,应该是可以直接用。再之前的版本,根据dftd4的GitHub page上的一个subproject ,似乎可以通过修改和增加代码来用上dftd4,这里搬运一下。
首先修改src/vdwforcefield.F文件,在vdw_forces_main subroutine中加入
USE vdwD4
然后在!c D3(BJ-damping) by Jonas MoellmanCASE(12) CALL vdw_forces_D3(IO,LATT_CUR,DYN,T_INFO,TSIF,TIFOR,TOTEN,ELEM,historycounter,4,IVDW)
下方加入
! D4-ATM(EEQ) implemented by Eike CaldeweyherCASE(13) CALL vdw_forces_D4(IO,LATT_CUR,DYN,T_INFO,TSIF,TIFOR,TOTEN,ELEM,IVDW)然后找到vdw_read subroutine中读取INCAR中IVDW flag的值的这段代码
IF (IVDW==1 .OR. IVDW==2 .OR. IVDW==3 .OR. IVDW==4 .OR. (IVDW>=10 .AND. IVDW<=12) .OR. && IVDW==101 .OR. (IVDW>=20 .AND. IVDW<=22) .OR. IVDW==26 .OR. IVDW==202 && .OR. IVDW==212 .OR. IVDW==263 .OR. IVDW==612 ) THEN LVDW=.TRUE.ELSE LVDW=.FALSE. CALL PROCESS_INCAR(LOPEN, IO%IU0, IO%IU5, 'LVDW', LVDW, IERR, WRITEXMLINCAR) IF (LVDW) IVDW=1ENDIF
把(IVDW>=10 .AND. IVDW<=12)改成(IVDW>=10 .AND. IVDW<=13)
然后把subdftd4.F放到src文件夹下。如果是vasp5的话,需要把subdftd4.F中所有关于vtutor的代码注释掉,vtutor module是vasp6新加的。
最后修改/src/.object,找到subdftd3.o\,在它下面一行加上subdftd4.o\。
然后就可以修改makeflie.include进行编译了。不过注意这里CCP_OPTIONS里是-DWITH_DFTD4不是-DDFTD4
本文原始链接:
标签: #centos6安装vasp