FourPhonon:谐波相空间的多温度操作
把当前onlyharmonic多温度任务拆成独立固定温度目录,实际提取ZnS 300和600 K加权相空间。
阅读本篇目录
对当前FourPhonon1.3-fix20260924的onlyharmonic路径,建议每个温度单独一个目录,明确写T。本篇沿用真实ZnS非解析修正例,分别处理NAC开关与300/600 K,共四个干净目录。
unzip fourphonon-ZnS-NAC-wave670-*.zip
cd fourphonon-ZnS-NAC
bash results.sh
bash plot.sh
以上只读参考表并绘图,不启动DFT。新的原生计算以普通账号sbatch job.slurm提交,脚本自动准备干净目录、计算并提取结果;reference-data/是已完成参考,results/才是新执行的提取结果。CPU申请cpu-8173m独占整节点1任务×56核,本小例内部1MPI×1线程,计费仍按整节点。程序为FourPhonon1.3-fix20260924 CPU版,oneAPI2024.2、Intel MPI2021.13与顺序MKL,适用AVX512 CPU;本例不报告CPU节点性能对照。
1. 为什么不在这里直接填温度范围#
当前谐波相空间分支在多温度循环中切换相对目录,后续温度的输出可能没有进入应有的目录。日志打印了300/600 K,不足以证明两个温度文件都正确保存。本例因此不采用这条路径的温度范围输出,使用下面的固定温度输入:
# NAC-on-T300/CONTROL 的 parameters 段
¶meters
T=300, scalebroad=1
&end
另一个目录改成T=600。不要同时留下旧的范围参数和已有输出,让读表脚本猜测文件属于哪个温度。此建议针对这里的onlyharmonic路径,不把它扩展成所有正常输运温度循环都有同一问题。
2. 一次提交,目录彼此独立#
sbatch job.slurm
find cases -name BTE.WP3
应分别得到:
cases/NAC-off-T300/T300K/BTE.WP3
cases/NAC-off-T600/T600K/BTE.WP3
cases/NAC-on-T300/T300K/BTE.WP3
cases/NAC-on-T600/T600K/BTE.WP3
资料包的run.py逐目录启动原生程序,extract.py根据目录的明确温度读取对应表。新的计算目录和原始输入目录分别为cases/与inputs/cases/,参考数据始终单独保留。
3. 实际加权相空间#
cat results/ZnS-phase-fixedT.csv
| NAC | T / K | 按等价q权重求和的原生WP3 |
|---|---|---|
| 关闭 | 300 | 0.0058361692 |
| 关闭 | 600 | 0.0116733080 |
| 开启 | 300 | 0.0057231410 |
| 开启 | 600 | 0.0114420500 |
WP3包含热占据和频率权重,因此温度变化会改变它;同一NAC条件下,300/600 K使用相同二阶常数,谐波本征频率保持一致。本例没有做温度重整化,不能把加权相空间的变化叫成温度导致的声子软化。

这里的WP3仍是原生加权相空间量,不是散射率或热导。要进一步得到温度相关散射,需要对应三阶/四阶常数与完整求解;要得到温度重整化的二阶常数,还需匹配温度的受力采样和拟合。
4. 每个温度检查自己的结果#
grep 'Temperature=' cases/NAC-on-T300/native.log
grep 'Temperature=' cases/NAC-on-T600/native.log
head cases/NAC-on-T300/T300K/BTE.WP3
head cases/NAC-on-T600/T600K/BTE.WP3
确认日志温度、输出路径、CONTROL和提取表一致,再做温度曲线。处理其他体系时沿用这一目录原则,不能仅因程序返回0或文件名含T300就假定数据温度正确。