使用lobster进行COHP分析
时间:2025-04-09 作者:Jiaqi Z.
分类:材料计算
最后一次更新:2025-04-10
注:这部分后续可能会加入材料计算系列教程中
什么是COHP
晶体轨道哈密顿布居(Crystal Orbital Hamilton Population, COHP)是一种用于分析固体材料中原子间化学键性质的工具,由Dronskowski和Blochl在1993年提出[1]。其核心思想是通过计算哈密顿量矩阵元在原子轨道基底上的投影,定量评估相邻原子间轨道的成键(bonding)或反键(antibonding)相互作用。 COHP将能带结构能量分解为原子轨道对的相互作用能分布;从化学角度更直观地说,它是相邻原子对之间的"键权重"态密度。
与晶体轨道重叠布居(COOP)不同,COHP直接关联哈密顿量能量而非重叠积分,因此更适用于金属和半导体等强离域体系的键合分析。COHP的计算公式为:
其中,和为原子轨道系数,为哈密顿量矩阵元。负值COHP表示成键态(降低体系能量),正值则为反键态(升高体系能量)。
COHP图谱能明确展示成键(bonding)和反键(antibonding)对能带能量的贡献,通常与态密度(DOS)图并列呈现(DOS仅显示电子分布,而COHP揭示其键合特性)。正如对电子态密度(DOS)积分可得到体系总电子数,对COHP进行能量积分则可量化特定原子接触("化学键")对能带能量的贡献:换言之,积分COHP(ICOHP)的绝对值反映了键强。
如何使用COHP分析成键or反键
计算费米能级以下的COHP积分,如果积分小于0,则表示成键;如果大于0则表示反键。
使用VASP计算COHP的方法
1. 结构优化
如同正常的结构优化一样,在此不赘述。
2. 自洽计算
与一般的自洽类似,但需要注意以下几点:
ISYM需要设置为-1- 由于处理COHP需要读取WAVECAR文件,因此需要保留WAVECAR(
LWAVE=.TRUE.) - 需要设置一个较大的
NBANDS
其中在设置NBANDS时可以首先忽略掉这个参数,直接提交任务进行自洽计算,在开始时查看OUTCAR中NBANDS的数值(使用grep命令,具体方法请详见材料计算教程中的“Linux基础-高级Linux命令-grep匹配字符串”一节)。通常来说,默认数值偏小,一般设置为默认数值的1.5-2倍。
例如,在计算时默认NBANDS=300,则可以在INCAR中设置NBANDS=500左右。
3. 使用lobster处理COHP
在服务器上使用lobster计算投影以获取COHP,(如果你是我所在课题组的成员,课题组内106节点服务器已配置lobster,其他节点如224待测试,使用前需要module load lobster,建议直接使用后面的提交任务脚本在队列系统使用)对于其他课题组,建议寻求组内帮助,或联系超算管理员。
2025-4-10更新:课题组内服务器224和105已配置lobster,导入方法和106节点相同。
在使用lobster时需要准备一个输入文件lobsterin,一个常见的模板为:
# 设置起止能量(eV)
COHPstartEnergy -10
COHPendEnergy 5
usebasisset pbeVaspFit2015
# 设置轨道
basisfunctions C 2s 2p
# 考虑两个原子间的COHP
cohpbetween atom 1 atom 2 orbitalwise
gaussianSmearingWidth 0.05
# SkipDOS 跳过DOS计算
# 保存投影文件
saveProjectionToFile
# loadProjectionFromFile 读取投影文件
其中一些参数解释如下:
COHPstartEnergy和COHPendEnergy:在绘制COHP时考虑的能量范围,类似于计算态密度时设置的EMIN和EMAXusebasisset:对于VASP计算而言,使用pbeVaspFit2015总是没错的[2](除此之外还有Budge)basisfunctions:设置电子轨道,这一部分需要参考你所使用的赝势POTCAR文件。**注意:不同的赝势版本对应不同的轨道,例如,Ti_pv和Ti相比,前者多了3p轨道;Ti_sv又比Ti_pv多了3s轨道。你所使用的轨道需要根据POTCAR对应版本设置(使用grep TIT POTCAR查看每个元素对应版本),具体所考虑的轨道可以参考网站https://www.vasp.at/wiki/index.php/Choosing_pseudopotentials里的Recommended PAW potentialscohpbetweenatomatom orbitalwise:考虑第m个原子和第n个原子之间的cohp,其编号根据POSCAR文件排序(可以借助VESTA软件在可视化当中查看原子编号。双击原子在下方会有如“Atom: 1”的字样,表明这是第1个原子。orbitalwise表示计算投影cohp(类似于PDOS一样可以查看每个轨道的贡献)gaussianSmearingWidth:高斯展宽。如果VASP中设置ISMEAR=0,则需要在这里设置展宽(INCAR中的SIGMA);如果使用的是ISMEAR=-5(正四面体方法),则可以忽略这个参数SkipDOS:跳过DOS计算,lobster可以计算处理DOS,但相比其他脚本如Vaspkit,功能不是太好,因此一般可以选择忽略DOSsaveProjectionToFile:保存投影文件,cohp在计算投影时可能耗费的时间较多,因此将其保存下来可以方便之后使用loadProjectionFromFile读取而加快处理速度。
将文件设置完成后执行lobster即可得到处理后的文件。在输出结果中需要关注abs. charge spilling表示spilling误差,如果误差小于5%则表示计算正常(5%是官方给的数据,一般建议为2%)。
4. 绘图与后处理
在绘制cohp时需要使用wxDragon,可以在官网下载,也可以直接点击这里下载(注意:测试发现官网上的新版本在导出xy格式时有问题,需要“回调”至老版本。如果你没有安装,可以直接在这里下载可用于数据导出的老版本;如果你已经安装,无论是官网或者2025年4月10日之前在本篇文章对应链接下载的,需要删除原有安装包与解压文件,重新解压新文件)。下载完成后打开,将服务器上的COHPCAR.lobster下载到本地并导入软件中,选择合适的轨道进行可视化,完成后将数据导出为XY格式的文件并使用Origin进行绘图。(wxDragon的UI界面比较老)
注意:注意!注意!在开始时我们所说COHP在费米能级以下积分为负表示成键,积分为正表示反键。但在使用wxDragon绘制COHP时,为了和COOP相对应,在绘制COHP时通常设置为相反数(即-COHP),此时积分为正表示成键,积分为负表示反键!
提交任务脚本
下面是一个在slurm队列系统提交lobster任务的一个简单脚本(sub.lobster),对于我所在课题组内的成员而言可以直接使用(如提交vasp任务一样提交即可,使用sbatch sub.lobster),对于其他课题组而言,也可根据下面的格式进行修改以适配不同的队列系统(如pbs等),具体请咨询你的导师、你的课题组同学或者超算相关管理员。
你可以在这里直接下载脚本文件到本地,点击下载
#!/bin/bash
SBATCH -n 56
SBATCH -N 1
打印任务信息
cho "Starting job $SLURM_JOB_ID at " `date`
cho "SLURM_SUBMIT_DIR is $SLURM_SUBMIT_DIR"
cho "Running on nodes: $SLURM_NODELIST"
# 执行任务
## 载入lobster
module load lobster
##unlimited the stack size
#ulimit -s unlimited
lobster > lobster.out 2>lobster.err
# 任务结束
echo "Job $SLURM_JOB_ID done at " `date`
上一篇:日麻系列教程1:日麻役种常见一览
下一篇:Roselia Live 「Sei stark」返图
同分类上一篇:Linux当中for与VASPKIT“联动”
同分类下一篇:使用sed与正则表达式修改INCAR参数