LOBSTER专题

LOBSTER:强制能窗与费米能采样

用同一Si2投影比较自动网格与forceEnergyRange,读取实际能量点、费米能位置和ICOHP。

更新于 2026-11-14约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

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

同一Si2投影的COHP曲线及费米能附近的实际采样点

使用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,或使用资料包脚本提取自己的实际数据。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗