[toc]
晶格热导率 + 声子寿命计算流程(基于 phono3py + VASP)
Step 1:结构精细优化
目标:得到充分弛豫的晶体结构。
要求:能量收敛到 1e-8 eV 以上,力小于 1e-3 eV/Å。
📂 输入文件:
POSCAR-unitcell:初始晶胞结构
INCAR:
1
2
3
4
5
6
7
8
9
10
11
12
13
14SYSTEM = SiC relaxation
ISTART = 0
ICHARG = 2
ENCUT = 500
PREC = Accurate
EDIFF = 1E-08
ISMEAR = 0
SIGMA = 0.01
IBRION = 2
NSW = 100
EDIFFG = -1E-03
LREAL = .FALSE.
LWAVE = .FALSE.
LCHARG = .FALSE.KPOINTS:推荐 Monkhorst–Pack 网格,比如
6 6 6
。POTCAR:元素对应的赝势。
📌 运行 VASP,最后得到优化后的 CONTCAR → 作为后续 POSCAR-unitcell
。
Step 2:生成位移超胞
目标:生成有限位移所需的超胞。
1 | phono3py -d --dim="2 2 3" -c POSCAR-unitcell |
说明:
--dim="2 2 3"
:构造 2×2×3 的超胞。输出:多个
POSCAR-xxx
文件,每个文件表示一个原子被轻微位移后的结构。
Step 3:计算力(VASP 批量计算)
目标:对每个位移超胞计算原子受力。
📂 输入文件(放在每个 POSCAR-xxx
目录里):
POSCAR ← 从
POSCAR-xxx
复制而来INCAR:
1
2
3
4
5
6
7
8
9
10
11ISMEAR = 0
SIGMA = 0.01
IBRION = -1
EDIFF = 1E-08
PREC = Accurate
ENCUT = 500
IALGO = 38
LREAL = .FALSE.
LWAVE = .FALSE.
LCHARG = .FALSE.
ADDGRID= .TRUE.(与声子谱有限位移计算相同,不让离子移动,仅计算力)
KPOINTS:比如
4 4 4
(根据超胞大小适当缩小 k 网格)。POTCAR:对应的赝势。
📌 每个目录运行 VASP,得到 vasprun.xml
。
Step 4:提取力常数
收集所有 vasprun.xml
文件,提取二阶 & 三阶力常数。
1 | phono3py --cf3 {00001..000xx}/vasprun.xml |
- {00001..000xx}要包括所有的结构
输出:
fc2.hdf5
→ 二阶(谐)力常数fc3.hdf5
→ 三阶(非谐)力常数
Step 5:计算晶格热导率
先对称化力常数并生成必要文件:
1 | phono3py --dim="2 2 3" --sym-fc -c POSCAR-unitcell |
再计算热导率(Boltzmann transport equation, RTA 近似):
1 | phono3py --fc3 --fc2 --dim="2 2 3" --mesh="20 20 20" -c POSCAR-unitcell --br | tee out.txt |
说明:
--mesh="20 20 20"
:声子布里渊区网格(越大越精确,但计算量更大)。输出:
kappa-m202020.hdf5
→ 热导率和散射率数据out.txt
→ 结果文本,最后部分是各方向的 κ(W/mK)。
Step 6:计算声子寿命
声子寿命与散射率信息已存储在 kappa-m202020.hdf5
中。
可视化:
1 | phono3py-kdeplot kappa-m202020.hdf5 |
输出:
- 图像文件(显示声子寿命分布 vs. 频率)。
✅ 最终产物
- 热导率 κ(T) from
out.txt
和kappa-m202020.hdf5
- 声子寿命分布 from
phono3py-kdeplot