VASP Libxc实操:能量、力与一致性
用五版本80个实际结果读取完整自由能、原子力与应力,解释水分子的小能量偏移及相对能量比较。
阅读本篇目录
完成输入与提交后,本篇说明“从哪里读结果、怎么比较、哪些量不能混用”。对照的是同版本、同一固定几何与PAW下的内置泛函和Libxc实现,不用不同方法绝对总能的高低判断谁更准确。
1. 先把参考数据重新提取出来#
下载五版本Libxc实算包,新目录解压:
python3 -m zipfile -e vasp-Libxc-five-version-wave306-*.zip .
cd vasp-Libxc-five-version-wave306
bash run.sh
结果在results/implementation-differences.csv、water-energy-controls.csv和DATA.json;三张图在plots/。reference/fields/保留全部80个条件的完整坐标、力、应力、晶胞、元素和电子自由能数组,不抽样,也不把能量人为平移到重合。
head results/implementation-differences.csv
cat results/water-energy-controls.csv
ls reference/fields | head
2. 从自己的vasprun.xml读完整结果#
若自己的计算放在my-Si:
module purge
module load pymatgen/2026.9.24
python read_vasp_result.py my-Si --output my-result
cat my-result/result.json
读取器已在本组五个版本的实际XML上使用。my-result/fields.npz和JSON包含完整坐标、晶胞、力、应力与e_fr_energy。结构的分数坐标按实际晶胞转成Å;力为eV/Å,应力为kbar。
这里的能量是电子自由能/TOTEN。 要比较energy(sigma→0)或其他定义,须对全部条件统一读取同一字段;不要一边用自由能,一边用零展宽能量。晶胞应力也不应直接改标签当成GPa,1 kbar=0.1 GPa。
3. 六种实际对照怎么看#
下表只展开6.6.1,另外四个版本的完整结果在CSV中。
| 同几何对照 | Libxc−内置 / µeV·cell⁻¹ | 最大力分量差 / µeV·Å⁻¹ |
|---|---|---|
| Si-PBE | -0.350000 | 0.120000 |
| Si-SCAN | -2.170000 | 0.010000 |
| Si-r2SCAN | 0.000000 | 0.000000 |
| Si-PBE0 | -0.360000 | 0.180000 |
| water-PBE | -35.310000 | 8.290000 |
| Fe-PBE | -0.210000 | 0.250000 |

图中的能量按原子归一,表格按整个晶胞,使用时注意分母。最大力差取全部原子、三个笛卡尔分量中的最大绝对差,不是某个原子的力模。不同版本各自配对,不把一版内置能量与另一版Libxc能量直接相减。
4. 水分子为什么有一个小偏移#
本组600 eV固定水分子的自由能差为:
| VASP版本 | Libxc−内置 / µeV·H₂O晶胞⁻¹ |
|---|---|
| 6.6.1 | -35.310000 |
| 6.5.1 | -37.190000 |
| 6.4.3 | -37.180000 |
| 6.4.2 | -35.310000 |
| 6.3.2 | -35.310000 |
这是真实保留的绝对能量差,不是把两个实现拟合到重合。内置与Libxc计算路径的细节并不要求每个绝对能量逐位一致;这组数据也不证明任意体系、任意泛函的差异都不超过表中数值。
实际使用时,选择一种实现并保持一致。比较吸附前后、不同构型或反应物与产物时,不要把内置PBE的一部分绝对能量与Libxc PBE的另一部分拼接。
5. 用相同变化检查响应#
本组还分别做了600→900 eV和同一原子位移的成对计算:
- 两个实现都改变相同参数或相同坐标。
- 分别计算自己实现内部的能量变化。
- 再比较这两个变化的差,而不是先人为减掉一个拟合常数。

从600提高到900 eV,两个实现的偏移变化约0.04–0.05 µeV/晶胞;同一位移后约0.07–0.09 µeV/晶胞。原始35–37 µeV级绝对偏移仍然存在。这里展示的是这组有限模型的响应一致性,不给出所有材料的误差上限。
cat results/water-energy-controls.csv
cat inputs/6.6.1/water-high-cutoff-libxc/INCAR
cat inputs/6.6.1/water-displaced-libxc/POSCAR
读位移响应时保持相同结构变化、晶胞、赝势、泛函和版本;若又同时更改了基组、展宽或电子数,就不能把差值只归因于那一个位移。
6. 哪些数值需要保留原始精度#
XML的力和晶胞通常比OUTCAR摘要打印得更细。本次OUTCAR体积只保留两位小数,因此与完整XML晶胞行列式存在舍入差别;不能把摘要的小数位数当成新物理差异。资料包保留XML导出的完整数组,没有强行把力舍入为零或把体积改成摘要值。
本文五版本的PBE0对照仍按原始较严格的1E−6 eV/原子能量差、1E−5 eV/Å力分量差检查;SCAN/r²SCAN按原对应范围分别处理。水分子的绝对能量对照高于1E−6 eV/原子的参考精度,因此不建议跨实现混用其绝对能量;相对变化与力应各自核对。
7. 最后留下哪些结果#
自己的新计算保留my-Si/及my-result/;附件参考比较保留results/和plots/。前者回答“我这次算到了什么”,后者回答“本组已知条件下的数值大概怎样”。全部参考为静态比较结构,带较大原子力并不表示它已完成优化;做平衡性质请先用一致设置优化自己的体系。