基本参考cnqiang的教程Intel编译WannierTools (cndaqiang.github.io)
,唯一不同是Makefile,不知道为什么使用新版本的wannier tools里面的Makefile.intel-mpi报错,
mpif90 -fpp -DMPI -fpe3 -O3 -DARPACK -DINTELMKL -O3 -static-intel -nogen-interface -I/opt/ohpc/pub/apps/oneapi2022/mkl/2022.1.0/include -c module.f90
gfortran: error: unrecognized command line option ‘-fpp’; did you mean ‘-cpp’?
gfortran: error: unrecognized command line option ‘-fpe3’; did you mean ‘-fdec’?
gfortran: error: unrecognized command line option ‘-static-intel’; did you mean ‘-static-pie’?
gfortran: error: unrecognized command line option ‘-nogen-interface’; did you mean ‘-Wimplicit-interface’?
make: *** [module.o] Error 1
换成之前安装的老版本的Makefile之后就顺利编译了,放在这里备忘。注意把OBJ换成新版的。
OBJ = module.o sparse.o wt_aux.o math_lib.o symmetry.o \
readHmnR.o inverse.o proteus.o \
eigen.o ham_qlayer2qlayer.o psi.o unfolding.o rand.o \
ham_slab.o ham_bulk.o ek_slab.o ek_bulk_polar.o ek_bulk.o \
readinput.o fermisurface.o surfgreen.o surfstat.o \
mat_mul.o ham_ribbon.o ek_ribbon.o \
fermiarc.o berrycurvature.o \
wanniercenter.o dos.o orbital_momenta.o \
landau_level_sparse.o landau_level.o lanczos_sparse.o \
berry.o wanniercenter_adaptive.o \
effective_mass.o findnodes.o \
sigma_OHE.o sigma.o Boltz_transport_anomalous.o \
2D_TSC.o \
main.o
#OBJ = module.o wt_aux.o math_lib.o symmetry.o readHmnR.o inverse.o proteus.o \
# eigen.o ham_qlayer2qlayer.o psi.o unfolding.o \
# ham_slab.o ham_bulk.o ek_slab.o ek_bulk_polar.o ek_bulk.o \
# readinput.o fermisurface.o surfgreen.o surfstat.o \
# mat_mul.o ham_ribbon.o ek_ribbon.o \
# fermiarc.o berrycurvature.o \
# wanniercenter.o dos.o orbital_momenta.o \
# berry.o wanniercenter_adaptive.o \
# effective_mass.o findnodes.o sigma_AHC.o \
# main.o
# compiler
F90 = mpiifort -fpp -DMPI
INCLUDE = -I${MKLROOT}/include
WFLAG = -nogen-interface
OFLAG = -O3 -g -traceback -static-intel
FFLAG = $(OFLAG) $(WFLAG)
LFLAG = $(OFLAG)
# blas and lapack libraries
# static linking
LIBS = -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a \
${MKLROOT}/lib/intel64/libmkl_sequential.a \
${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl
# dynamic linking
# LIBS = -L/${MKLROOT}/lib/intel64 -lmkl_core -lmkl_sequential -lmkl_intel_lp64 -lpthread
main : $(OBJ)
$(F90) $(LFLAG) $(OBJ) -o wt.x $(LIBS)
cp -f wt.x ../bin
.SUFFIXES: .o .f90
.f90.o :
$(F90) $(FFLAG) $(INCLUDE) -c $*.f90
clean :
rm -f *.o *.mod *~ wt.x
wannier tools计算声子拓扑
使用wannier_tools计算拓扑声子,需要将力常数文件FORCE_CONSTANTS转化为哈密顿量文件phonopyTB_hr.dat,这个可以通过wannier_tools里面的utility
中的脚本实现,需要注意的是,它里面的脚本是python2的,而且适配的phonopy版本比较低,1.11.8,试了高版本的会不间断的报错。
相比于低版本的phonopy,高版本里面可以自动指定PRIMITIVE_AXES = AUTO
但是这只对1.14.0
之后的版本适用,我的方法是先使用高版本的phonopy输出转移矩阵(在计算声子谱的命令里加一个 -v
),然后在band.conf
文件中使用PRIMITIVE_AXIS
手动指定转移矩阵,注意老版本的这个参数是PRIMITIVE_AXIS
而不是PRIMITIVE_AXES
,指定后面这个不管用,识别不了。。。