thirdorder 三阶力常数入门
从Si位移、VASP原子力到三阶力常数与ShengBTE,按步骤完成实际流程。
阅读本篇目录
thirdorder负责生成用于三阶力常数的位移结构,再从DFT原子力重构非谐相互作用。它本身不计算DFT电子结构,也不直接给出热导率;本专题把它与VASP、Phonopy和ShengBTE连起来。

1. 这套实例做了什么#
| 步骤 | 本例输入 | 得到什么 |
|---|---|---|
| 生成位移 | Si原胞,2×2×2或3×3×3超胞 | 16或54原子的位移POSCAR |
| 固定结构求力 | 同一PBE设置、EDIFF=1E−6 | 真实VASP vasprun.xml与OUTCAR |
| 收集三阶常数 | 按原生位移顺序排列的XML | FORCE_CONSTANTS_3RD |
| 准备二阶常数 | 对应超胞的正负谐波位移原子力 | FORCE_CONSTANTS_2ND |
| 热输运 | 两种力常数与CONTROL | 热导率、散射率和模态数据 |
本例在集群实际计算了102个不同的固定结构DFT条件。thirdorder的三组设置一共生成112个位移文件,其中完全相同的结构可共享同一次求力,另有匹配的谐波力输入。重复使用只发生在POSCAR字节和电子设置均相同的情况下。
2. 先重画已有数据#
下载完整Si实例包。在新目录解压后操作;包内有真实VASP输入和原始力输出、位移映射、三阶/二阶力常数、ShengBTE结果、CSV和高清图,不含POTCAR。
bash analyze.sh
输出 analysis-reference/:包括热导率汇总CSV、力差分对照和5张图。这一步不启动DFT,也不重新求解热输运。
3. 完整跑一遍后处理#
在另一个新解压目录执行:
bash run-all.sh
顺序为:原生sow生成结构 → 按映射读取包内真实DFT原子力 → 原生reap生成三阶常数 → 求对应二阶常数 → 运行10个ShengBTE条件 → 导出CSV和图片。脚本保护已有结果目录,重复完整流程请重新解压。
这里复用包内已经完成的真实DFT力,不额外启动102次VASP。新材料或新结构必须先完成自己的DFT求力,不能沿用本包的Si原子力。
4. 分步骤学习#
bash prepare.sh
bash reap.sh
bash transport.sh
bash analyze.sh work
依次阅读:位移与求力 → 力收集与reap → 截断与超胞 → ShengBTE联用。
5. 环境和计算范围#
thirdorder为1.1.4,Python 3.11、GCC/G++13.3与spglib 2.7.0。实际DFT使用VASP6.6.1 P100构建,NVHPC25.3/CUDA12.8;二阶接口使用 phono3py/4.8.2 环境内的Phonopy4.8.1;三阶格式读取由hiPhive1.5完成。热导率使用ShengBTE2.1.0、GCC/GFortran13.3、Open MPI5.0.10和MKL2024.2。
小规模后处理限制为单线程;DFT与大型热输运请使用所申请的计算资源。当前ShengBTE构建需要支持AVX-512的CPU,不能仅凭GPU节点名称判断其CPU是否兼容。
本例的Si16/54、3/4 Å截断与4³/6³ q网格用于理解操作和参数影响,还不能作为最终收敛的Si材料热导率。