Phonopy准谐近似:五个体积到热膨胀
基于鸢算科技集群实际VASP数据的Phonopy 4.8.3终端操作、输入、数据和图片。
阅读本篇目录
下载完整输入、原始输出和后处理脚本。解压后进入phonopy-workflows子目录。在已分配的CPU资源中运行bash run.sh,可重建本文全部后处理结果;这不会重新提交VASP任务。
输入需要两类能量#
每个体积需要一份静态电子能和一套该体积下的声子热自由能。将E电子(V)+F振动(V,T)按体积拟合后,寻找每个温度的自由能最低点。只在一个体积下计算声子不能直接得到热膨胀。
本例复用集群真实硅计算:基准体积的96%、98%、100%、102%、104%,每个体积含16原子超胞的位移受力及2原子原胞静态电子能。本次用Phonopy 4.8.3的Vinet EOS重新做QHA后处理;这与旧教程中的五点二次拟合拟合形式不同,最后几位不必完全相同。
1 检查体积、受力和静态目录配对#
ls si/si-phonon-v*.yaml
ls si/calculations/si-qha-static-v*/OUTCAR
python analyze_si.py
cat si/analysis/RESULTS.json
脚本逐体积重新读取受力,求力常数、16³网格和0–800 K、每50 K的振动热力学,然后把电子能和振动自由能传给PhonopyQHA。脚本读取的是OUTCAR的energy(sigma->0),每项归一到同一2原子原胞。
2 理解矩阵形状和单位#
qha = phonopy.PhonopyQHA(
volumes=volumes, # ų,长度为体积数
electronic_energies=energies, # eV,同一原胞
temperatures=temperatures, # K
free_energy=free_energy, # kJ/mol,形状[温度, 体积]
cv=heat_capacity, # J/(mol K)
entropy=entropy, # J/(mol K)
eos='vinet', t_max=700
)
这里API接受的振动自由能为kJ/mol,内部处理单位换算;不要先自行换成eV后仍按此接口传入。电子能则是eV。五个体积的顺序必须与热力学矩阵各列一致。
3 读取实际结果#
| 温度/K | 平衡原胞体积/ų | 体膨胀系数/K⁻¹ |
|---|---|---|
| 0 | 41.080236 | 端点占位,不用于导数判断 |
| 100 | 41.070265 | −3.413891×10⁻⁶ |
| 300 | 41.078591 | 5.125071×10⁻⁶ |
| 500 | 41.136946 | 8.418965×10⁻⁶ |
| 700 | 41.212750 | 9.833822×10⁻⁶ |

低温局部负体膨胀是这套谐力常数和拟合给出的结果,并不意味着出现负体积。对立方晶体的小应变,可将体膨胀系数除以3得到线膨胀系数;各向异性材料不能这样直接处理。
所有拟合最低点都在本例采样的39.2570–42.5284 ų范围内。若自己的最低点跑到体积边界之外,应补算体积点,而不是外推后直接发布结果。QHA不包含充分的显式非谐效应;五体积和小超胞仅作流程参考。
需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。