官网
安装
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_PBEif(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,-是负号,XXX和CCC分别对应交换和关联的数字编号
具体数值见./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 协议 ,转载请注明出处!