官网
安装
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
,-
是负号,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 协议 ,转载请注明出处!