symfc专题

symfc 与Phonopy、Phono3py联用

从实际原生HDF导出到声子能带和RTA热导,核对结构、原子顺序与单位。

更新于 2026-10-30约 3 分钟阅读按任务与环境选择适用配置
阅读本篇目录

导出文件后,再让目标程序真正读取并计算一个物性,能检查结构与力常数是否对应。本例同时完成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') 读取实际文件,并使用本例原胞的分数倒空间坐标。

真实Phonopy色散

力常数的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目录就认为计算包含了四声子项。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗