Phonopy study

Phonopy的学习主要参照官网的内容: https://atztogo.github.io/phonopy

Phonopy 安装

Step 1: 安装Phonopy 所需的phonon环境包。
sudo apt-get install python-dev python-numpy python-matplotlib python-yaml python-h5py
Step 2: 在 https://pypi.org/project/phonopy/#files 中下载phonopy安装包phonopy-1.13.2.32.tar.gz。然后解压该软件,进入解压后的目录打开终端,输入下面的代码进行phonopy安装即可。
sudo python setup.py install
Step 3:查看phonopy位置,如输出phonopy的路径即安装成功。
which phonopy

Phonopy 使用

依据官网的教程,使用VASP和Phonopy进行结构热力学性质和声子谱等一系列性质的计算,并同官网的结果相检验。

有限位移方法计算结构力常数

计算力常数是计算结构声子性质的第一步,计算力常数的方法有两种:有限位移方法和密度泛函微扰理论。有限位移方法通过计算结构中各个原子微小位移前后能量的变化获得结构力常数。
Step 1:准备需要计算到结构的VASP输入文件,此处命名为POSCAR-unitcell。(一般为已经优化完成的结构)

POSCAR-unitcell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NaCl
1.00000000000000
5.6903014761756712 0.0000000000000000 0.0000000000000000
0.0000000000000000 5.6903014761756712 0.0000000000000000
0.0000000000000000 0.0000000000000000 5.6903014761756712
4 4
Direct
0.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.5000000000000000 0.5000000000000000
0.5000000000000000 0.0000000000000000 0.5000000000000000
0.5000000000000000 0.5000000000000000 0.0000000000000000
0.5000000000000000 0.5000000000000000 0.5000000000000000
0.5000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.5000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.5000000000000000

使用下面命令生成2x2x2的超胞SPOSCAR文件(扩胞是消除虚频常用的方法),包含位移信息的disp.yaml文件,以及对应各个原子各个方向位移后的POSCAR-001 … POSCAR-00N文件(如无对称性,这些文件的数量等于POSCAR中原子数量的6倍,对应于各个原子三个自由度上正负方向的位移)。
phonopy -d --dim="2 2 2" -c POSCAR-unitcell
step2:将各个POSCAR-001 … POSCAR-00N分别作为POSCAR用VASP进行静态计算(用shell编个循环语句的shell脚本计算即可),得到vasprun.xml-001 … vasprun.xml-00N 文件。

静态计算INCAR

1
2
3
4
5
6
7
8
9
PREC = Accurate
IBRION = -1
ENCUT = 500
EDIFF = 1.0e-08
ISMEAR = 0; SIGMA = 0.01
IALGO = 48
LREAL = .FALSE.
LWAVE = .FALSE.
LCHARG = .FALSE

step3:再用phonopy处理即可得到力常数FORCE_SETS文件

1
phonopy -f vasprun.xml-{001..00N}

密度泛函微扰理论计算结构力常数

用VASP-DFPT计算力常数更为简单,同时还能给出体系简正振动频率,伯恩有效电荷,压电常数等信息(LEPSILON = .TRUE.),所以我们计算的时候主要采取这种方法。
step1:将超胞SPOSCAR重命名为POSCAR作为VASP的输入文件计算体系力常数(用超胞进行计算能获得更准确到结果)。
mv SPOSCAR POSCAR
Step 2: 用IBRION = 8 和 NSW = 1计算体系力常数。为使受力计算更准确,提高电子步迭代收敛要求(EDIFF = 1E-8,并将是空间积分LREAL设为FALSE。具体INCAR如下。

INCAR

1
2
3
4
5
6
7
8
9
10
11
12
PREC = Accurate
ENCUT = 500
IBRION = 8
EDIFF = 1.0e-08
IALGO = 38
ISMEAR = 0; SIGMA = 0.01
LREAL = .FALSE.
ISYM = 0
ADDGRID = .TRUE.
LWAVE = .FALSE.
LCHARG = .FALSE.
LEPSILON = .TRUE.

准备好KPOINTS和POTCAR文件就可以进行VASP计算了,计算后用下面的命令检查是否存在虚頻(此处存在虚頻,是因为我们直接用的官网的POSCAR,该结构没有用我们计算用到参数和赝势进行优化)。
grep 'cm-1' OUTCAR
Step 3: 用下面到命令从输出文件vasprun.xml得到包含力常数的文件FORCE_CONSTANTS。
phonopy --fc vasprun.xml

计算声子谱

Step 1: 新建band.conf文件,设定计算声子谱的参数。由于我们关心的是POSCAR-unitcell的声子性质,而计算受力时是用超胞进行计算,所以在band.conf中需要注明DIM = 2 2 2,而在step2和step3计算时用参数 -c POSCAR-unitcell使计算的结果对应扩胞前的结构。

band.conf

1
2
3
4
5
6
ATOM_NAME = Na Cl
DIM = 2 2 2
PRIMITIVE_AXIS = 0 0.5 0.5 0.5 0 0.5 0.5 0.5 0
FORCE_CONSTANTS = READ
BAND = 0.00 0.00 0.00 0.50 0.00 0.00 0.50 0.50 0.00 0.00 0.00 0.00 0.50 0.50 0.50
BAND_POINTS = 200

Step 2: 输入下面命令计算声子谱。

Step 3: 通过下面两个命令使用phonopy-bandplot脚本可直接画出声子谱或得到文本格式的声子谱数据。
phonopy-bandplot
phonopy-bandplot --gnuplot >PhononBAND.dat

计算声子谱态密度和体系热力学性质

step 1:新建mesh.conf文件。

mesh.conf

1
2
3
4
ATOM_NAME = Na Cl
DIM = 2 2 2
MP = 8 8 8
FORCE_CONSTANTS = READ

step 2:使用下面的命令计算体系声子谱的态密度。
phonopy -p mesh.conf -c POSCAR-unitcell

step 3:使用下面的命令计算体系的热力学性质(自由能,零点能,熵,热容)。
phonopy -t -p mesh.conf -c POSCAR-unitcell >thermal_properties.dat

文章目录
  1. 1. Phonopy 安装
  2. 2. Phonopy 使用
    1. 2.1. 有限位移方法计算结构力常数
    2. 2.2. 密度泛函微扰理论计算结构力常数
    3. 2.3. 计算声子谱
    4. 2.4. 计算声子谱态密度和体系热力学性质
,