cndaqiang Web Linux DFT

ONCVPSP安装使用

2022-04-13
cndaqiang
RSS

官网

Mat-Sim Research

安装

ROOT=$PWD
mkdir -p $ROOT/source
cd $ROOT/source

libxc和lapack的安装方法,参考centos6.5 gcc Openmpi 编译octopus-4.1.2,怀柔计算中心/SSLAB编译octopus记录,不再重复写了.

注意目前仅测试libxc2.1.1版本可以,2.0.0,4.3,5.1.2存在各种问题

#
wget http://www.tddft.org/programs/libxc/down.php?file=2.1.1/libxc-2.1.1.tar.gz -O libxc-2.1.1.tar.gz
tar xzvf libxc-2.1.1.tar.gz
cd libxc-2.1.1
./configure --prefix=$ROOT/libxc-2.1.1  CC=gcc CXX=g++ FC=gfortran
make
make install

编译好lapack和libxc后

wget http://www.mat-simresearch.com/oncvpsp-3.3.1.tar.gz
tar xzvf oncvpsp-3.3.1tar.gz
cd oncvpsp-3.3.1

修改make.inc中的库项为

#LIBS = -L/usr/local/lapack/lib -llapack -lrefblas
LIBS = -L/home/cndaqiang/code/math/lib -llapack -lrefblas

#LIBS += -L/usr/local/libxc/lib -lxcf90 -lxc
#FFLAGS += -I/usr/local/libxc/include
LIBS += -L/home/cndaqiang/code/libxc-2.1.1/lib -lxc
FFLAGS += -I/home/cndaqiang/code/libxc-2.1.1/include

编译时会自动和之前的计算结果进行对比

make

编译Multi-projector ONCVPSP-4.0.1 (beta release)

方法同上,但是源代码存在一个小issue. libxc在3.0.0版本后更新了xc_f90_info_refs等函数

cndaqiang@mommint:~/code/source$ grep 'subroutine xc_f90_info_refs(' libxc-2.1.1/src/libxc.f90
    subroutine xc_f90_info_refs(info, number, str, s)
cndaqiang@mommint:~/code/source$ grep 'subroutine xc_f90_info_refs(' libxc-4.3.4/src/libxc.f90
    subroutine xc_f90_info_refs(info, number, s)

oncvpsp-4.0.1在针对此更新的代码修改有些小问题,将oncvpsp-4.0.1/src/functionals.F90中的

257 #if LIBXC_VERSION>=300
258     type(xc_f90_pointer_t) :: str
259 #endif

修改为

257 #if LIBXC_VERSION>=300
258 #else
259     type(xc_f90_pointer_t) :: str
260 #endif

其他编译过程同3.3.1

使用

准备输入文件

cndaqiang@mommint:~/code/source/oncvpsp-3.3.1$ mkdir mydata
cndaqiang@mommint:~/code/source/oncvpsp-3.3.1$ mkdir cndaqiang.data
cndaqiang@mommint:~/code/source/oncvpsp-3.3.1$ cd cndaqiang.data
cndaqiang@mommint:~/code/source/oncvpsp-3.3.1/cndaqiang.data$ cp ~/ONCVPSP/abinit/Si.in .

计算

../src/oncvpsp.x < Si.in > Si.out

提取结果(参考../scripts/run.sh)

awk 'Begin{out=0};/END_PSP/{out=0}; {if(out == 1) {print}};\
        /Begin PSP_UPF/{out=1}' Si.out > Si.upf

对比结果

cndaqiang@mommint:~/code/source/oncvpsp-3.3.1/cndaqiang.data$ ../scripts/fldiff.pl ~/ONCVPSP/abinit/Si_ONCV_PBE_sr.upf Si.upf
6
<  scalar-relativistic version 3.3.0 08/16/2017 by D. R. Hamann
>  scalar-relativistic version 3.3.1 12/12/2017 by D. R. Hamann
72
<        date="170818"
>        date="220413"
Summary  : different lines= 3 , max abs_diff= 1.000e-01 (l.6), max rel_diff= 1.000e+00 (l.6)(python37)

其他

  • 自旋轨道耦合oncvpspnr.x < Si.in > Si.out

修改输入文件中的交换关联泛函

修改输入文件中的iexc为具体的值

# atsym  z   nc   nv     iexc    psfile
Si   14.00   3   2   4   upf
  • 1,2,3,4的值是确定的,如src/vout.f90,如3,4分别对应XC_LDA_X&XC_LDA_C_PZ,XC_GGA_X_PBE&XC_GGA_C_PBE
     if(iexc .eq. 1) then
     call excwig(rhot,vxc,exca,mmax)
     else if(iexc .eq. 2) then
     call exchdl(rhot,vxc,exca,mmax)
     else if(iexc .eq. 3) then
     call excpzca(rhot,vxc,exca,mmax)
     else if(iexc .eq. 4) then
     call excggc(rhot,vxc,exca,rr,mmax)
     else if (iexc < 0) then
     call exc_libxc(iexc,al,rhot,vxc,exca,rr,mmax)
     else
     write(6,'(/a,i4)') 'vout: ERROR bad input iexc =',iexc
     stop
     end if
    
  • 其他值为-XXXCCC,-是负号,XXXCCC分别对应交换和关联的数字编号
    具体数值见./doc/libxc_use.txt,如-001009即和3等价,为XC_LDA_X&XC_LDA_C_PZ

新生成的一些赝势

利用pipidog/ONCVPSP新计算的赝势

  • ONCVPSP_LDA, 使用新生成的PZ和之前的PBE计算石墨烯的能带对比

本文首发于我的博客@cndaqiang.
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!


上一篇 Nginx学习

目录

访客数据