QE输出的矩阵元有很多的NaN
大家好,我用qe-6.3里的bands.x执行文件计算matrix elements of the momentum operator p between conduction and valence bands(需设置lp=.true.),
计算步骤是
pw.x <scf.in>scf.out
pw.x <band.in>band.out
bands.x <bands.in>bands.out
在第二步band.in的输入文件中,如果我使用的K点比较密的话,比如:
K_POINTS {crystal_c}
3
0.00 0.00 0.00 0
1.00 0.00 0.00 45
0.00 1.00 0.00 45
输出的matrix elements就会有很多的NaN(not a number);
但如果我用较疏的k-mesh,比如
K_POINTS {crystal_c}
3
0.00 0.00 0.00 0
1.00 0.00 0.00 15
0.00 1.00 0.00 15
输出矩阵元素都可以正常显示,我试了不同的服务器,结果都是如此,我也查询了一些资料,大多认为是数学库对角化的问题。但我不明白为什么会和设置的k点疏密有关?大家有计算这个或者遇到此类问题的吗?希望大家给一些建议,任何指点建议都可以,谢谢~ 返回小木虫查看更多
今日热帖
我一般这样用
K_POINTS {crystal_b}
2
0.00 0.00 0.00 101 !Gamma
0.50 0.00 0.00 1 !X
你可以看看手册,了解他们的含义。
既然是数学库的问题,那把你的解决方案也贴一个过来,为以后的人提供方便吧!
哈哈,这个问题解决了,刚存够了15个金币,可以回帖了,所以现在才来说一下。。。
我用的是intel2017+impi编译的
configure --prefix=soft/QuantumEspresso/qe-6.3 --with-scalapack=intel CC="icc" FC="ifort" F77="ifort" MPICC="mpiicc" MPIF90="mpiifort"
这样设置的话,BLAS会自动链接 BLAS_LIBS=-lmkl_intel_lp64 -lmkl_sequential -lmkl_core
问题就出在-lmkl_sequential身上,我手动链接BLAS_LIBS=“-L/compilers_and_libraries_2017.4.196/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core" 就可以了
不过make.inc有几个地方也需要改动一下:
将-qopenmp添加到FFLAGS和LDFLAGS,
FFLAGS="-O2 -assume byterecl -g -traceback -qopenmp"
LDFLAGS="-static-intel -qopenmp"
我是看其他人的make.inc文件这样的设置,不过他告诉我,他的也是qe自动寻找链接到的这些数学库,我在好几个超算中心测试,自动链接到的都是-lmkl_sequential,虽然这样链接对qe大部分计算没有问题,但是lp=.true.时计算matrix elements of the momentum operator p就会出现矩阵元为NaN的情况,所以我需要手动强行链接-lmkl_intel_thread ,
谢谢回复,K_POINTS的不同设置方式对于band.in都可以用,不过我计算的是光电相关的东西,需要全布里渊区计算,所以没有像平时计算能带那样只给出高对称点的设置
嗯嗯,已整理