ShengBTE 网格、温度与展宽
用实际q=3到12、六个温度和三档展宽演示数值敏感性及继续收敛的判断。
阅读本篇目录
求解器迭代完成后,还要检查q网格、温度设置和散射能量守恒的展宽。本篇固定同一套真实DFT力常数,一次只改变一个量。

1. 改q网格#
CONTROL的allocations组:
ngrid(:)=6 6 6
这里是原胞倒空间的声子q采样,不是DFT电子k点,也不是位移超胞尺寸。完整资料包分别提供3、4、6、8、10、12网格条件。
bash run.sh si-q12-300K-rta
cat work/si-q12-300K-rta/BTE.KappaTensorVsT_RTA
相同300K、天然同位素、scalebroad=1的实际结果:
| q网格 | RTA热导迹/3,W/(m·K) |
|---|---|
| 3×3×3 | 33.656155 |
| 4×4×4 | 55.852613 |
| 6×6×6 | 84.429054 |
| 8×8×8 | 96.605452 |
| 10×10×10 | 106.769142 |
| 12×12×12 | 109.659104 |
q=10到12仍变化约2.7%,而q=3与较密网格差异很大。当前曲线用于判断下一步需要更密采样,不能因程序正常结束就把q=6当作收敛值。正式研究还需继续检查力常数超胞、三阶范围和DFT设置。
2. 改温度#
parameters组的 T=300. 选择单个温度。本例在q=6下实际计算100、200、300、400、600、900K。同一套力常数保持不变,所以这里没有重新做结构热膨胀或温度相关力常数拟合。
bash run.sh si-q6-600K-rta
cat work/si-q6-600K-rta/BTE.cvVsT
cat work/si-q6-600K-rta/BTE.KappaTensorVsT_RTA
实际100K和900K的RTA值分别约275.240、27.712W/(m·K),只对应这个有限模型。多温度区间还可用T_min/T_max/T_step,不能同时保留优先的T又期望它自动扫描;完整语法见官方手册。
3. 改展宽#
scalebroad=1.0
本例实际比较0.5、1.0、1.5。q=6、300K的RTA值依次为85.2712、84.4291、82.4304W/(m·K)。小展宽可能需要更密q网格;不能只挑一个看起来接近期望值的组合。
4. 推荐的检查顺序#
先确认声子和力常数合理,再固定一套温度/同位素条件比较q网格;随后在较密网格观察展宽敏感性;迭代求解时另外收紧eps。把不同层次的数值误差分开,比只把单个参数设得很大更容易判断结果。
资料包与运行入口#
下载力常数、25组完整输入、实际输出及全部分析画图脚本。解压后先检查输入、重画随包参考:
bash check-inputs.sh
bash analyze.sh
完整重新计算25组BTE后处理,在新解压目录提交:
sbatch run.slurm
只算一个q=6、300K RTA条件用 sbatch single.slurm,可编辑其中的条件名。模板遵守CPU分区整节点56核申请规则;这些小例实际使用1个MPI进程、1个计算线程,旨在学习输入和物理结果。大体系需要另按规模调整并行设置,不能用这些小例作性能推荐。
已经获得CPU计算资源时,可以直接调用 bash run.sh 条件名;不要把普通登录节点当计算节点。整套完成后:
bash analyze.sh work
图片在 work/figures/,数值摘要在 work/analysis/RESULTS.json。单例可直接看其 BTE.* 文件,统一分析需要25组完整结果。脚本不会覆盖已有work目录,重新计算请重新解压。
环境:ShengBTE2.1.0,GCC/GFortran13.3、Open MPI5.0.10、MKL2024.2 GF_LP64 sequential,模块 shengbte/2.1.0-8173m;此构建需要AVX-512 CPU,不能直接放到P100主机的旧CPU上运行。输入检查使用hiPhive1.5和Phonopy4.8.3,脚本分别加载对应环境,无需把所有依赖混装进同一Python。
力常数来自本集群已有的真实ABACUS Si16位移计算,本批只重新求解和分析BTE,没有新做DFT。三阶模型范围3Å,电子参数、超胞和q网格仍有有限性;本专题是操作与数值检查参考,不将结果当作收敛的硅材料热导率或CPU性能数据。