LOBSTER 投影误差与算法设置
RMSp、两种spilling定义、Gaussian/四面体与只读XML的使用边界。
阅读本篇目录
下载28组输入、实际输出和四张数据图,保存为example.zip:
python3 -m zipfile -e example.zip .
cd lobster-switch-examples
bash results.sh
bash plot.sh
本组使用LOBSTER6.0.0官方g++9.3.0静态OpenMP程序;复用此前集群VASP6.6.1计算的Si两原子金刚石结构,a=5.43Å、7³网格、ENCUT=520eV、EDIFF=10⁻⁶。VASP环境为NVHPC25.3、CUDA12.8、HPC-X2.22.1、MKL2023.2。没有新增DFT,28组操作均实际运行;其中专家选项用于理解定义变化,不建议作为默认设置。
完整VASP输入在vasp-inputs/,POTCAR、WAVECAR和二进制投影缓存不分发。重算需要您自己完成的同源VASP输出;先按LOBSTER输入准备生成波函数,再按本文提交后处理。
1. RMSp与spilling不是同一个指标#
RMSp
noMemoryMappedFiles
onlyReadVasprun.xml
cat inputs/projection-RMSp/lobsterin
sbatch job.slurm projection-RMSp --source "$(pwd)/my-vasp"
head -n 12 reference-results/projection-RMSp/RMSp.lobster
RMSp逐k点、逐带反映投影误差,可能增加计算量;本例第1个k点第1带的RMSp约0.00309385、归一NRMSp约0.0228693。它不等于全占据空间的电荷spilling百分数,不能直接拿0.003与1.46%做大小排名。
noMemoryMappedFiles改变波函数读取缓存方式,不是减少体系本征物理内存的方法。onlyReadVasprun.xml强制从XML取得相关VASP信息;它可能放弃其他原生文件更高的数值精度,适合明确输入合同的兼容比较,不是普遍精度升级。
2. 保留绝对spilling定义#
cat inputs/ordinary-spilling-definition/lobsterin
sbatch job.slurm ordinary-spilling-definition --source "$(pwd)/my-vasp"
grep -i 'spilling' reference-results/ordinary-spilling-definition/lobsterout
该例加入doNotUseAbsoluteSpilling,原生电荷spilling变为约−0.93%,而标准绝对定义约1.46%。负值来自所选定义中误差正负相消,不能据此宣称“投影比零误差还好”。普通教程与质量比较继续使用绝对电荷spilling,同时说明基组、波函数和占据条件。
3. 四面体积分开关#
useOriginalTetrahedronMethod
sbatch job.slurm original-tetrahedron --source "$(pwd)/my-vasp" --projection "$(pwd)/projection-source/projectionData.lobster"
本例原始VASP为完整7³网格,具备相应积分信息。该开关用于对照旧四面体实现,不把它当作任意Γ点分子体系都能使用的设置。Gaussian展宽另由gaussianSmearingWidth控制,LOBSTER不保证直接沿用您在VASP里写的SIGMA;有关能量窗口、DOE/DOV和BWDF见已有教程。
4. 运行后应看什么#
先读程序是否写完、实际采用了哪些基函数和能带,再看绝对spilling、电子数/电荷、所需文件和对应数值定义。本例的输入完整可查,但关闭正交化、旧spilling或旧积分算法都不是默认建议。带数超过局域基组时的处理也见基组质量教程,不要仅凭退出码或输出文件大小判断物理结果。
固定版本参数依据是随正式安装包提供的LOBSTER6.0.0用户手册;软件及文献入口见LOBSTER官网。