Phono3py JDOS、自能与谱函数
实际运行JDOS、虚实自能与公开API谱函数,区分采样频率、声子带和展宽参数。
阅读本篇目录
JDOS描述参与三声子过程的可用相空间;自能进一步包含相互作用信息;谱函数则展示某个q点与声子带的频率响应。它们的曲线不是同一种物理量。
下载完整实例包,解压到自己的工作目录。包内含真实输入、已有力输出、28个计算条件、工具命令、结果CSV和绘图脚本。
1. 实际计算的条件#
本组采用4×4×4网格、原生网格点编号1、300 K、101个频率采样点。ISE、RSE与谱函数选择第4条声子带。网格点编号1由原生Bz网格定义,不能把它直接称为“路径上的第一个高对称点”;HDF5保留对应网格设置。
bash prepare.sh
bash run.sh jdos-q4-gp1
bash run.sh ise-q4-gp1
bash run.sh rse-q4-gp1
bash run.sh spectral-q4-gp1
2. JDOS#
底层命令:
phono3py-load --jdos --mesh 4 4 4 --ts 300 --sigma 0.1 \
--exclude-gamma-acoustic --gp 1 --num-freq-points 101 \
phono3py_disp.yaml
读取 jdos-m444-g1-s0.1-t300.dat:第一列是频率THz,后两列是原生JDOS通道。JDOS反映相空间,不能单独替代散射率或直接给出热导率。
3. 虚自能与实自能#
phono3py-load --ise --mesh 4 4 4 --ts 300 --sigma 0.1 \
--exclude-gamma-acoustic --gp 1 --num-freq-points 101 \
--bi 4 -- phono3py_disp.yaml
phono3py-load --rse --mesh 4 4 4 --ts 300 --sigma 0.1 \
--exclude-gamma-acoustic --gp 1 --num-freq-points 101 \
--bi 4 -- phono3py_disp.yaml
CLI的 --bi 4 为1起始带序号;API中同一条带使用0起始索引3。gammas-*.dat 给虚自能半峰宽,deltas-*.dat 给实自能频移,两者单位THz。RSE文件中的 e0.1 标记该计算的ε,不要把文件名误读成热导率结果。
4. 谱函数用配套API入口#
本例Phono3py 4.8.2使用 spectral_api.py,由 bash run.sh spectral-q4-gp1 自动准备三份输入和设置文件。核心调用如下:
p.mesh_numbers = [4, 4, 4]
p.sigmas = [0.1]
p.band_indices = [[3]]
p.init_phph_interaction(exclude_gamma_acoustic=True)
p.run_spectral_function(
[1], [300], num_frequency_points=101,
write_txt=True, write_hdf5=True,
)
这是实际运行的公开API路线。不同版本的命令行入口存在差异,本例不把帮助列表出现的 --spf 当作已验证可直接替换的运行命令。
5. 画图与解释#
bash analyze.sh
ls analysis-reference/figures/spectral-jdos.png

谱函数横轴为THz,纵轴为THz⁻¹;本例101点网格相对稀疏,窄峰的面积和峰位会受频率步长影响。需要定量峰宽或归一化积分时,应增加采样并检查频率窗口,而不是从这张教学曲线直接读取精确寿命。
脚本独立用频率、半峰宽和实部频移重建谱函数,与原生HDF5对照;同一个条件下的API半峰宽也与独立ISE命令输出一致。