ABACUS 晶格热导率与寿命分析
从实际ABACUS力常数到ShengBTE,提取热导率、寿命、平均自由程和收敛对照。
阅读本篇目录
下载完整输入、42个力计算结果、6个热输运条件和绘图脚本。解压进入附件根目录。先用已有结果熟悉提取与画图:
bash analyze.sh
结果表在 reference/analysis,6张高清图在 reference/figures。这个命令只处理附件内的实际计算结果,不启动新的DFT或热输运任务。下面按准备输入、提交、检查、提取的顺序操作。新计算请使用新解压目录,已有 work 时脚本会停止,避免覆盖结果。
1 声子稳定后,再准备热输运#
先完成声子实操及三阶力常数。整套GPU模板最后会自动准备6个热输运条件;手动流程使用:
module load phono3py/4.8.2
python -B make_thermal_inputs.py work
输入在 work/thermal-inputs。脚本先检查主要声子模型没有明显虚频、力常数转换一致,再创建目录,已有目录时不覆盖。以下是300 K、4×4×4 q网格的实际CONTROL:
&allocations
nelements=1,
natoms=2,
ngrid(:)=4 4 4
&end
&crystal
lfactor=0.543,
lattvec(:,1)=0.0 0.5 0.5,
lattvec(:,2)=0.5 0.0 0.5,
lattvec(:,3)=0.5 0.5 0.0,
elements="Si",
types=1 1,
positions(:,1)=0.00 0.00 0.00,
positions(:,2)=0.25 0.25 0.25,
scell(:)=2 2 2
&end
¶meters
T=300.,
scalebroad=1.0,
maxiter=200,
eps=1e-6,
nticks=40
&end
&flags
nonanalytic=.FALSE.,
convergence=.FALSE.,
improved_iteration=.TRUE.,
isotopes=.TRUE.,
autoisotopes=.FALSE.,
nanowires=.FALSE.,
wigner=.FALSE.,
onlyharmonic=.FALSE.,
nthreads=1
&end
lfactor=0.543 是nm,与5.43 Å一致;scell=2 2 2对应DFT超胞,ngrid是声子输运q网格;convergence=.FALSE.计算RTA,迭代对照改为 .TRUE. 并使用 improved_iteration。scalebroad=1.0是本模型的散射积分展宽设置,不是通用收敛结论。
实际ISOTOPES为:
Si 28.0855 1.0
这里是均匀有效质量28.0855,质量方差g=0,用来与声子模型保持一致;不代表天然同位素混合,也不能当作真实纯同位素硅的质量。
2 单独提交CPU后处理#
GPU力计算成功后,再提交:
sbatch thermal.slurm
安装的 shengbte/2.1.0-8173m 使用GNU13.3、OpenMPI5.0.10、MKL2024.2和spglib2.7,要求AVX512 CPU,不能直接放在P100主机E5 v3上运行。选择可用的相容CPU资源;模板按CPU分区规则申请整节点,这个小模型本身只使用1进程、1线程,不用它判断并行性能。若CPU分区暂不可用,可先处理附件已有输出、读图和熟悉流程。
6个条件分别比较q网格、温度及RTA/迭代方法。脚本运行后会提取数据和画图,新结果在 work/analysis 和 work/figures。单个条件在已分配的相容CPU环境中,本质上运行:
module load shengbte/2.1.0-8173m
cd work/thermal-inputs/si-q4-T300-rta
mpirun -np 1 ShengBTE
这段手动方式会在当前输入目录产生输出,与 thermal.sh 创建独立 thermal-results 的完整方式二选一,不要混用结果目录。完整教程建议直接用提交模板。
3 先看数值和q网格变化#
cat reference/thermal-results/si-q4-T300-rta/BTE.KappaTensorVsT_RTA
cat reference/thermal-results/si-q4-T300-iterative/BTE.KappaTensorVsT_CONV
cat reference/analysis/THERMAL-VALIDATION.json
实际主算例结果如下,单位W/(m·K):
| q网格 | 温度/K | 方法 | 热导率 |
|---|---|---|---|
| 3³ | 300 | RTA | 36.097825 |
| 4³ | 300 | RTA | 58.897394 |
| 6³ | 300 | RTA | 89.766588 |
| 4³ | 100 | RTA | 224.850487 |
| 4³ | 600 | RTA | 28.885641 |
| 4³ | 300 | 迭代 | 53.362974 |

300 K的3³、4³、6³结果变化仍明显,尚不能把任意一项当作收敛硅热导率。这组数据展示完整操作与检查方法。独立重新计算全部力后,4³、300 K的RTA约59.943641,迭代约54.385746,与主算例相差约1.8%/1.9%;两次原生输出的原子力在输出精度内一致,但二阶文件末位约1.2×10⁻¹⁴ eV/Ų的差异,在这个粗网格简并模处理中引起了群速度与热导率变化。这提示该模型对数值细节敏感;短程FC3、粗q网格及简并模处理都需要进一步检查,应保留这种变化并继续做参数收敛,不能强制把两次曲线改得完全相同。
4 寿命、平均自由程怎样提取#
module purge
module load phono3py/4.8.2
python -B analyze_thermal.py reference
python -B plot_results.py reference
| 原生文件 | 数据含义 |
|---|---|
BTE.omega |
角频率rad/ps,除2π才是THz |
BTE.v_full |
完整q网格群速度,km/s,数值等同nm/ps |
T300K/BTE.w |
模式总散射率ps⁻¹,RTA寿命τ=1/w |
T300K/BTE.kappa_scalar |
第0行RTA,后续行为迭代结果 |
BTE.qpoints_full |
完整q网格到不可约点的映射 |
thermal-data.npz |
已整理寿命相关原始量、RTA累计曲线与迭代数据 |
RTA平均自由程为 |v|τ,本单位下直接得到nm。脚本用完整q网格的实际速度、不可约点散射率映射和量子模式热容,独立重建κ的迹/3;六个条件均与原生RTA数值吻合。简并模处不能用一个不可约速度模长乘权重来替代完整速度。

Γ点零频/零散射率不提供有限寿命,原生 BTE.w_final 中可能出现未定义值。保留原文件,按该版原生求和规则排除Γ点,不把NaN改成0再解释成材料寿命。

本例迭代在8步后相对变化约7.05×10⁻⁷。迭代收敛只是当前离散模型的求解器收敛,不是q网格、超胞或FC3范围收敛;图中的寿命和平均自由程对应RTA,不能直接换名为迭代寿命。后续依次检查电子k网格与力精度、位移幅度、超胞大小、FC3距离、q网格和积分展宽,再讨论材料值。