Python脚本提取COHP数据

在多相催化体系计算中,经常会讨论原子间的成键相互作用,比如吸附原子与金属原子间的COHP(Crystal Orbital Hamilton Populations),但lobster计算输出文件COHPCAR.lobster经常包含多个轨道作用,手动提取比较繁琐。使用wxdragon尽管可以查看相应的轨道作用,但无法一次性导出多组数据。为了偷懒,写了个Python小程序,可以方便快速地根据需要查看和输出指定轨道的COHP及ICOHP数据。

脚本运行

运行环境:Python3
在COHP计算结束后,在所在文件夹运行python cohp.py,如下图:
fig1

程序会自动打印出当前文件夹中COHPCAR.lobster包含的COHP对应的名字,程序处于用户待输入状态;
输入all all,程序会画出总的COHP图:
fig2

关闭图形界面,程序会提示是否保存当前的COHP数据,输入y,会把该组数据cohp_all-all.dat保存到当前文件夹;敲击Enter键,不保存数据,程序进入待输入状态,可输入下一组COHP名称;
输入3dyz 3dxz等,可查看轨道分量的COHP;
可输入多组数据名称,用分号隔开,如3d 3d; 4s 4s,程序会弹出对应的COHP图:
fig3
脚本运行窗口同时会打印出相应的ICOHP值
fig4

关闭图形窗口后,可输入y保存当前数据到文件cohp_3d-3d_4s-4s.dat中,敲击Enter键不保存数据;
再次敲击Enter键,退出程序。
程序输出的COHP数据格式如下:
fig5

可导入到Origin中作图,或编写python脚本作图。

请注意:
脚本只针对lobster-3.2.0版本的COHPCAR.lobster测试过,其他版本COHPCAR.lobster格式一样的话应该也适用;
当前目录需存在COHPCAR.lobster文件;

2021.06.09 已适配自旋极化ISPIN=2和非自旋极化ISPIN=1两种情况。
2022.01.19 更新支持all 3dxz等轨道对

脚本下载

点击下载代码cohp.py