LOBSTER:强制能窗与费米能采样
用同一Si2投影比较自动网格与forceEnergyRange,读取实际能量点、费米能位置和ICOHP。
阅读本篇目录
LOBSTER输出COHP曲线时,实际能量网格可能经过自动调整。forceEnergyRange 用于保留用户指定的能窗。本篇用同一份Si₂投影,在请求的 −12~+2 eV 能窗上比较两种方式;能量轴均相对费米能。
1. 下载并读取实际数据#
下载两种条件的实际输出、输入与绘图工具,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd lobster-force-energy-window
bash read.sh
bash plot.sh
cat analysis-read/LOBSTER-force-energy-window.csv

使用LOBSTER6.0.0官方g++9.3.0预编译CPU程序、OpenMP1线程。已有DFT波函数和投影缓存直接复用,这里只改变输出采样条件。
2. 两份lobsterin有什么差别#
自动调整的输入:
COHPStartEnergy -12
COHPEndEnergy 2
COHPSteps 500
basisSet pbeVaspFit2015
basisFunctions Si 3s 3p
printTotalSpilling
useDecimalPlaces 8
cohpGenerator from 0.1 to 2.6 orbitalWise
DensityOfEnergy
writeDOV
writeBasisFunctions
loadProjectionFromFile
BWDF
BWDFCOHP
强制能窗的输入在以上内容最后添加:
forceEnergyRange
两份均写 COHPSteps 500。loadProjectionFromFile 使用已有投影,要求缓存与当前结构、基组、能带和k点匹配。修改这些内容后,不能继续把旧缓存当作新投影。
3. 在同一次Si₂结果上重新后处理#
先按投影缓存教程生成匹配的 projectionData.lobster,再运行:
python3 prepare.py /你的完整Si2结果和投影缓存目录
cd work-new
sbatch ../submit.sh
squeue -u "$USER"
脚本顺序执行 auto-window 和 forced-window 两个条件。作业结束后:
cd ..
head -2 work-new/auto-window/COHPCAR.lobster
head -2 work-new/forced-window/COHPCAR.lobster
cat work-new/forced-window/lobsterout
bash read.sh work-new
bash plot.sh
提交模板按1MPI×56CPU申请本站CPU整节点;LOBSTER实际使用1个线程,计费按整节点规则。
这些控制文件和读取脚本针对本篇Si₂示例。换材料时先修改元素基组和自己的数据参考,不要把不同结构的缓存混在一起。
4. 实际网格是多少#
| 条件 | 实际点数 | 实际范围 / eV | 最接近费米能的采样点 / eV |
|---|---|---|---|
| 自动调整 | 501 | −12.00801603~+2.02004008 | 0 |
| forceEnergyRange | 500 | −12~+2 | +0.00801603 |
本例自动网格包含精确的费米能零点,范围略有扩展;强制网格保留指定端点,但500个等距点没有恰好落在零点。因此不要只按INCAR式的输入习惯猜输出网格,应直接读取COHPCAR第一列。
module load ase/3.29.0
python - <<'PYCODE'
import numpy as np
from pathlib import Path
for name in ['auto-window', 'forced-window']:
p = Path('reference-results') / name / 'COHPCAR.lobster'
lines = p.read_text().splitlines()
columns = 1 + 2 * int(lines[1].split()[0])
data = np.array([list(map(float, line.split()))
for line in lines[2:] if len(line.split()) == columns])
energy = data[:, 0]
print(name, len(energy), energy[0], energy[-1],
energy[np.argmin(abs(energy))])
PYCODE
如果请求的能窗完全处于费米能以下,不应指望自动调整一定把整个物理范围扩展到零。本次另一个 −12~−2 eV 条件的自动输出仍处在零点以下。需要包含费米能时,应先主动设置跨过零点的能窗,再核对实际采样。
5. ICOHP和曲线积分怎样区分#
本例两种网格都写出了 ICOHPLIST.lobster,表格数值一致。不能把文档中的“可能不输出ICOHP”理解为只要打开此开关就一定没有ICOHP文件。
head reference-results/auto-window/ICOHPLIST.lobster
head reference-results/forced-window/ICOHPLIST.lobster
ICOHP单位为eV;COHP图的纵轴保留程序原生标度。指定能窗的曲线积分、截断窗口末端的累计量,与按占据和费米能定义的成键积分不是可以随意替换的数。比较能窗时,先确认能量轴、是否包含费米能以及文件表头中的积分定义。
本例四组原子对的总COHP、轨道分量之和和ICOHP分量之和均一致。下载网格与求和结果CSV,或使用资料包脚本提取自己的实际数据。