symfc 与Phonopy、Phono3py联用
从实际原生HDF导出到声子能带和RTA热导,核对结构、原子顺序与单位。
阅读本篇目录
导出文件后,再让目标程序真正读取并计算一个物性,能检查结构与力常数是否对应。本例同时完成Phonopy声子和Phono3py三声子RTA。
下载完整Si实例包,解压到自己的工作目录。包内保留123个真实静态力条件、独立训练/验证/测试划分、14个拟合条件、原生导出文件与绘图脚本。
1. 先取得同一套导出文件#
cp -r reference/labels labels
bash fit.sh Si16-fc23-c4p2
ls fits/Si16-fc23-c4p2/
联用时把这三份文件作为一套传递:
phonopy_params.yaml
fc2.hdf5
fc3.hdf5
FORCE_CONSTANTS为二阶文本输出,方便其他Phonopy流程。model.npz和四阶示例HDF保留原始symfc顺序,不能与上述已重排的原生HDF混用。
2. Phonopy色散#
bash analyze.sh
默认用参考结果重新运行Phonopy路径计算并画图:Γ→X→Γ→L,每段41点。脚本通过 phonopy.load(..., force_constants_filename='fc2.hdf5') 读取实际文件,并使用本例原胞的分数倒空间坐标。

力常数的eV/Ų、晶胞的Å和声子质量共同决定频率。这里使用Phonopy的Si默认质量,频率输出THz。不能将原胞/常规晶胞的路径坐标无说明地互换。
3. Phono3py真正读取并求解#
bash transport.sh
底层公开API读取的是实际导出的文件:
p = phono3py.load(
'phonopy_params.yaml',
fc2_filename='fc2.hdf5',
fc3_filename='fc3.hdf5',
is_nac=False,
is_compact_fc=False,
)
p.mesh_numbers = [4, 4, 4]
p.sigmas = [0.2]
p.init_phph_interaction(exclude_gamma_acoustic=True)
p.run_thermal_conductivity(temperatures=[300], write_kappa=True)
本例300 K、4×4×4、σ=0.2 THz得到κxx=κyy=κzz= 48.462580 W/(m·K),非对角项接近零。这是固定NEP模型与有限FC2/FC3下的接口例子,不是已收敛Si热导率。
4. 读张量#
module load phono3py/4.8.2
python - <<'PY'
import h5py
with h5py.File('transport/kappa-m444-s0.2.hdf5') as f:
print(f['kappa'][:])
PY
分量顺序为xx、yy、zz、yz、xz、xy,单位W/(m·K)。配套程序还用实际热容、群速度和半峰宽独立重建RTA总量。
这个API例子没有额外边界散射;不要假定所有API输出都含有命令行默认的边界参数。进一步的积分、寿命、累计热导与收敛流程见Phono3py专题。
四阶常数不参与这里的三声子RTA。需要四声子散射时,应使用支持FC4的独立输运程序和适配格式,不能只把 fc4.hdf5 放进Phono3py目录就认为计算包含了四声子项。