使用Phonopy的DFPT方法计算声子谱及热力学性质
如何使用Phonopy的DFPT计算声子谱和热力学性质
Phonopy安装
请务必保证Python版本为3.7或以上,并配置了环境变量(即python3命令可以直接运行)
Phonopy是一个用于计算晶体材料声子谱和热力学性质的Python库。要使用Phonopy进行DFPT(密度泛函微扰理论)计算,首先需要安装Phonopy。可以通过以下命令安装:pip install phonopy
使用以下命令检查Phonopy是否安装成功:
如果看到类似上面的输出,说明Phonopy安装成功。
如果输出是 command not found: phonopy,则说明Phonopy没有安装成功或没有配置环境变量。可以尝试如下命令配置环境变量:export PATH="$PATH:/opt/Python312/bin/",记得将路径替换成你的python安装路径下的bin目录。如果有效,记得将这行命令添加到你的 .bashrc,以便每次登录时自动加载。
Phonopy的DFPT计算
参考官网:VASP-DFPT & phonopy calculation Phonopy支持使用DFPT计算声子谱和热力学性质。以下是使用Phonopy进行DFPT计算的步骤:
一、 准备VASP输入文件
1. 准备POSCAR文件
-
首先,将优化后的结构保存为POSCAR-unitcell文件。
-
创建一个新的目录(如
phonopy-dfpt),并将POSCAR-unitcell文件复制到该目录下。 -
使用Phonopy进行扩胞。扩胞原则:扩胞原则:扩大接近100个原子,超胞晶格大于10A。使用以下命令进行扩胞操作:
Terminal window phonopy -d --dim 2 2 2 -c POSCAR-unitcell其中,
--dim 2 2 2表示将原胞扩展为2x2x2的超胞。 这将生成多个POSCAR文件(如POSCAR-000, POSCAR-001等),每个文件对应一个原子位移。但是这些POSCAR-{number}文件在DFPT计算中并不需要。这些文件是在有限位移法(Finite Displacement Method)中使用的。 -
接下来,使用Phonopy生成
phonopy_disp.yaml文件:Terminal window phonopy --dim 2 2 2 -c POSCAR-unitcell这将生成一个名为
phonopy_disp.yaml的文件,其中包含了超胞的位移信息。
2. 设置INCAR文件
需要使用VASP计算完美超胞的力学常数,要设置IBRION = 8,以下为一个适用于的INCAR文件示例:
PREC = Accurate ENCUT = 500 IBRION = 8 EDIFF = 1.0e-08 IALGO = 38 ISMEAR = 1 SIGMA = 0.2 LREAL = .FALSE. ADDGRID = .TRUE. LWAVE = .FALSE. LCHARG = .FALSE.其他文件
KPOINTS:可以使用Vaspkit生成K点网格,建议使用较高的K点密度(如0.01),以确保计算精度。但是如果K点密度过高,可能会导致计算时间过长以及内存不足等问题。(我尝试过使用0.04,也能算出来结果)POTCAR:使用VASP的POTCAR文件,确保包含所有元素的赝势。
二、 运行VASP计算
按照计算集群的要求,提交VASP计算任务。
三、 计算声子谱
-
首先,需要计算力学常数。在Vasp计算完成之后,确定”vasprun.xml”中存在hessian矩阵(Hessian matrix),这表明力学常数计算成功。那么就可以使用Phonopy提取力学常数。运行如下命令,得到
FORCE_CONSTANTS文件:Terminal window phonopy --fc vasprun.xml -
获取高对称点信息。可以使用VaspKit的305功能生成高对称点信息。Vaspkit会生成一个名为
KPATH.phonopy的文件,其中包含了高对称点的信息。将这个文件的名字改为band.conf。这个文件的内容如下:将其中的DIM改为你想要的超胞维度(如DIM = 2 2 2,如果不想扩胞,设置为1 1 1),然后就可以进行下一步的计算了
-
计算声子谱。运行以下命令:
Terminal window phonopy-load --dim='2 2 2' -c POSCAR-unitcell band.conf同样的,
--dim参数需要与你的超胞维度一致。计算完成后,会得到band.yaml文件,其中包含了声子谱的计算结果。
绘制声子谱
Phonopy提供了绘制声子谱的功能。可以使用以下命令绘制声子谱:
phonopy-bandplot -o phonopy-bandplot.jpg这将生成一个名为phonopy-bandplot.jpg的文件,其中包含了声子谱的图像。但是这个图太过简陋,建议将数据下载到本地进行绘图
以下为一个绘图的Python脚本示例:
Phonopy画图示例
计算热力学性质
Phonopy还可以计算热力学性质,如比热容、熵等。 可以使用以下命令计算热力学性质:
phonopy --dim 2 2 2 -t mesh.conf -c POSCAR-unitcell同样的,--dim参数需要与你的超胞维度一致。计算完成后,会生成一个名为thermal.yaml的文件,其中包含了热力学性质的计算结果。
错误处理
存在虚频
如果在计算声子谱时发现存在虚频,可能是由于以下原因:
-
声子谱的计算需要对原胞结构进行高精度的充分优化,否则易出现虚频。可以用如下方式进行优化:
- 设置INCAR文件中的精度参数
EDIFF=1E-08EDIFFG=1E-3- 使用更高的K点网格进行计算,在Vaspkit中设置更低的数值(如0.01)来生成K点网格。K点数字为奇数时貌似不容易出现计算错误现象。
开萌笔记本