LOBSTER:PAW波函数正交性检查
用实际Si2输入演示skipPAWOrthonormalityTest,说明关闭提示不会修复波函数,并给出运行命令。
阅读本篇目录
LOBSTER默认检查输入PAW能带的正交性。skipPAWOrthonormalityTest 可以跳过这个输入检查,但它不会修复错误波函数。本篇用实际Si₂结果和单独的故意破坏输入对照,说明何时应保留检查。
1. 下载并先看实际结果#
下载Si₂实际后处理结果、输入与读取绘图脚本,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd lobster-PAW-input-check
bash read.sh
bash plot.sh
默认只读取随包结果。图在 figures,CSV在 analysis-read。

软件为官方LOBSTER6.0.0预编译CPU程序,程序标识g++9.3.0,使用OpenMP;本例1线程,不使用GPU做后处理。DFT波函数来自此前同一次Si₂计算,没有为此重新计算DFT。
2. 这个开关怎么写#
正常情况下不写该开关,保留默认检查。本例另建副本演示:
COHPStartEnergy -30
COHPEndEnergy 20
COHPSteps 500
basisSet pbeVaspFit2015
basisFunctions Si 3s 3p
printTotalSpilling
useDecimalPlaces 8
cohpGenerator from 0.1 to 2.6 orbitalWise
DensityOfEnergy
writeDOV
writeBasisFunctions
BWDF
BWDFCOHP
skipPAWOrthonormalityTest
关键行为只有最后一行:
skipPAWOrthonormalityTest
Si的基组为 3s 3p。换元素、势文件或投影基组时,必须按自己的体系修改,不能照搬Si的基组。
3. 在自己的Si₂结果副本上运行#
先按LOBSTER入门准备完整、同一次计算的VASP输出,再运行:
python3 prepare.py /你的Si2计算目录
cd work-new
sbatch ../submit.sh
squeue -u "$USER"
准备脚本会检查INCAR、POSCAR、CONTCAR、KPOINTS、POTCAR、WAVECAR、OUTCAR和vasprun.xml;存在IBZKPT时一并复制。它只复制到新建目录,原DFT目录保持不变。POTCAR和WAVECAR需使用自己有权使用的文件,下载包不附带这些文件。
提交模板按1MPI×56CPU申请本站CPU整节点;LOBSTER实际使用1个线程,计费按整节点规则。
完成后:
cd ..
cat work-new/valid-skip/lobsterout
grep -i 'orthonormality' work-new/valid-skip/lobsterout
head work-new/valid-skip/CHARGE.lobster
对本例相同结构、势文件和基组,关闭检查前后的COHP、ICOHP及电荷结果一致;读入的两个原子总电荷仍为零。若按本例原参数复现,可运行 bash read.sh work-new。读取脚本中的定量参考是这份Si₂数据;换成其他材料时应调整自己的参考,不能要求其成键数值与Si相同。
4. 为什么“没有提示”不等于输入正确#
本次另在自有测试副本中,把一个k点的一条能带波函数系数乘2,故意破坏归一化。这个输入只用于检查行为,不作为物理模型或成键结果。
系数乘2使该态的范数平方变成4,相对单位范数的偏差为3。实际结果是:
| 条件 | 输入是否被故意破坏 | 是否跳过检查 | 正交性提示 |
|---|---|---|---|
| 正常输入 | 否 | 是 | 没有该错误提示 |
| 破坏输入 | 是 | 否 | 报告正交性误差约3 |
| 破坏输入 | 是 | 是 | 该提示被抑制,错误输入仍然存在 |
WARNING: PAW bands of k-point 0 0 0
WARNING: only fulfill orthonormality with an accuracy of 3
图和检查结果CSV把正常物理结果与故意破坏输入的对照分开。不要把后两种条件产生的成键表用于材料分析,也不要用关闭检查的方法掩盖输入问题。
5. 实际使用建议#
通常保留默认检查。遇到正交性提示,先核对WAVECAR是否完整,以及POTCAR、结构、k点和计算版本是否匹配。只有已经确认同一份输入可靠、反复进行不同LOBSTER后处理时,再考虑该开关;它不会减少DFT计算成本,也不是改善投影质量的参数。