3.7.2 密度泛函微扰法(DFPT)#
(1)INCAR(可以用vaspkit101-DT生成,但是vaspkit生成的INCAR需要自己稍加修改,尤其是ENCUT)。IBRION=8控制DFPT计算,DFPT方法不能设置NCORE为非默认参数1,否则会报错。如果你的体系需要考虑磁性或者+U等,INCAR中需要加入相应的参数,否则力常数就算不对。
# for DFPT phonopy
ISMEAR = 0
SIGMA = 0.05
IBRION = 8
EDIFF = 1E-08
PREC = Accurate
ENCUT = 400
IALGO = 38
KPAR = 4
LREAL = .FALSE.
LWAVE = .FALSE.
LCHARG = .FALSE.
ADDGRID = .TRUE.(2)超胞POSCAR,生成方式与前面3.7.1一样,记得把phonopy生成的SPOSCAR直接命名为POSCAR;
(3)KPOINTS和POTCAR生成方式与前面3.7.1一样,KPOINTS要在超胞下生成。
(4)提交任务,确认计算成功结束。由于计算超胞,所以速度会较慢,可能要几个小时,对于大体系或者对称性很低的结构甚至要几天。
可以自行查看OUTCAR/OSZICAR/result等文件,对比DFPT计算与scf或者relax的不同。
(5)从vasprun.xml中提取FORCE_CONSTANTS文件,(此时会生成一个力常数文件),注意,提取命令和有限位移法不一样。
phonopy --fc vasprun.xml(6)准备KPATH.phonopy文件(名字不重要)
KPATH.phonopy与有限位移法的文件唯一区别在于:
要设置FORCE_CONSTANTS=READ
(7)计算声子色散与态密度
phonopy -c ucell KPATH.phonopy -p -s这里需要提供一开始用于333扩胞时的标准原胞,命名为ucell(名字可任意)
(8)为了得到方便画图的声子谱数据,运行命令,得到phband.dat文件,第一行就是高对称q点坐标,画图方式和能带图一样。
phonopy-bandplot --gnuplot > phband.dat讨论
(1)算声子时,有限位移法(Finite Displacement,FD)和密度泛函微扰(DFPT)两种方法该选哪个?
我个人算的大量例子中,两种方法得到的声子谱结果是几乎一样的,并且两种方法计算量差别不大。但是由于有限位移法可以提交很多个任务,同时算多个displacement下的结构,因此可以实现“多任务同时计算”来更短时间内得到结果。而DFPT方法只能提交一个任务进行计算,不同displacement下的计算需要依次进行(可以查看OSZICAR和OUTCAR),而且INCAR中没法设置NCORE进一步加速计算,因此相比于FD方法耗时更久。一旦总时长超过超算单个任务时间限制(大部分超算中心单个任务时间限制在48h以内),或者由于断电导致任务中断时,DFPT是没法进行续算的。
因此,总得来说,当你可以同时提交很多个任务时,建议优先考虑FD方法;否则,DFPT方法从操作上来说是更简便的,因为不需要像FD那样写for循环对多个displacement下的结构建立计算文件夹。
(2)对于VASP来说,DFPT方法和有限位移法都需要扩胞,那么扩多大的胞合适?扩胞越大越好吗?
原则上要测试不同扩胞下算得的结果,即做收敛性测试。如果想偷懒,那扩胞得到的超胞三条轴长度都超过10Å会是一个不错的选择(有时可能需要15A)。

同时,实测发现,有些体系频率对扩胞大小和扩胞方式十分敏感;扩胞方式指的是221,222,332这种扩胞方式,这可能还需要更多的测试研究。
(3)在DFPT方法和Finit-Displacement方法时,KPOINTS该取多少?
原则上做超胞的能量-k点收敛性测试,想偷懒的话,取0.025~0.04的密度会是不错的选择。特别强调,有些时候只取Gamma点是不够的。
有些特殊情况下,Phonopy处理得到的声子谱中,存在一些很平坦的线,理论上phdos里面在相应的频率区间内应该也有峰。但是画出来的phdos里面对应的频率区间没有看到峰。这可能是由于计算phdos时选用了四面体法导致的bug,改成高斯展宽方法可以解决(https://zhuanlan.zhihu.com/p/1938351431577997979)