Eastsheng's Wiki

晶格热导率 + 声子寿命计算流程(基于 phono3py + VASP)

2025-09-18 18:11:28

[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
    14
    SYSTEM = 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 批量计算)

目标:对每个位移超胞计算原子受力。

📂 输入文件(放在每个 xxx 目录里):

  • POSCAR ← 从 POSCAR-xxx 复制而来

    1
    2
    3
    4
    5
    for i in $(seq 1 160); do
    dir=$(printf "%05d" $i)
    mkdir -p $dir
    cp POSCAR-$dir $dir/POSCAR
    done

    INCAR

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ISMEAR = 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:对应的赝势。

  • INCAR、POTCAR、KPOINTS

    1
    2
    3
    4
    for i in $(seq 2 160); do
    dir=$(printf "%05d" $i)
    cp 00001/INCAR 00001/KPOINTS 00001/POTCAR $dir/
    done

📌 每个目录运行 VASP,得到 vasprun.xml

  • run vasp

    1
    2
    3
    4
    5
    6
    7
    8
    for i in $(seq 1 160); do
    dir=$(printf "%05d" $i)
    cd $dir/
    echo "----" $i "----"
    mpirun -np 4 vasp_std
    cd ..
    done


Step 4:提取力常数

收集所有 vasprun.xml 文件,提取二阶 & 三阶力常数。

1
2
phono3py --cf3 {00001..00160}/vasprun.xml
phono3py --fc-symmetry
  • {00001..00160}包括所有的结构

输出:

  • fc2.hdf5 → 二阶(谐)力常数
  • fc3.hdf5 → 三阶(非谐)力常数

Step 5:计算晶格热导率

导热系数计算的一个例子是:

1
2
3
phono3py --mesh 11 11 11 --br | tee out.txt
# or phono3py --fc3 --fc2 --mesh="11 11 11" --br | tee out.txt

这个计算可能需要很长时间。——thm调用一个四面体方法进行布里渊区域积分,用于声子寿命计算,这是默认选项。相反,——sigma选项可以用于涂抹宽度。

在这个命令中,声子在许多网格点上的寿命是连续计算的。每个网格点的声子寿命计算可以单独计算,因为它们是独立的,计算时不需要通信。操作步骤如下

1
2
3
# phono3py --fc3 --fc2 --mesh 11 11 11 --br --wgp 
# phono3py --mesh 11 11 11 --br --write-gamma --gp 0 1 2 3 4 5 12 13 14 15
# phono3py --fc3 --fc2 --mesh 11 11 11 --br --read-gamma

说明:

  • --mesh="11 11 11":声子布里渊区网格(越大越精确,但计算量更大)。

Step 6:计算声子寿命

声子寿命与散射率信息已存储在 kappa-m202020.hdf5 中。

可视化:

1
phono3py-kdeplot kappa-m202020.hdf5

输出:

  • 图像文件(显示声子寿命分布 vs. 频率)。
  • lifetime

✅ 最终产物

  1. 热导率 κ(T) from out.txtkappa-m111111.hdf5
  2. 声子寿命分布 from phono3py-kdeplot

参考

[1] https://mp.weixin.qq.com/s/6vISOZp7NLFqfWSfYcT2Tg

[2] https://phonopy.github.io/phono3py/vasp.html