计算化学公社

标题: 请教利用CP2K输出的.bs文件绘制能带图 [打印本页]

作者
Author:
玉米猫    时间: 2021-8-27 22:43
标题: 请教利用CP2K输出的.bs文件绘制能带图
最近在学习用CP2K计算材料的能带,看了官网的练习后,现在已经得到了输出的.bs文件,但卡在了绘制能带图这一步,按照练习的操作得到的都是直线。我去google的cp2k group里检索了一下,发现基本上都是这个流程:将.bs文件转换为.csv文件,然后用matlab/gnuplot/自己写的脚本绘制能带图,但不同版本的输出文件内容格式应该是不一样的(我的.bs文件内容格式跟官网练习给出的格式就很不同,我的cp2k是8.1版本的,官网的练习是17年的),不知道会不会导致官方提供的python脚本转换出的.csv文件出现问题。希望有经验的老师能够不吝赐教。

PS:希望Multiwfn将来能有利用.bs文件直接绘制能带图的功能!



作者
Author:
卡开发发    时间: 2021-8-28 04:26
要不给个bs的例子看看?我整个python的版本试试。
作者
Author:
玉米猫    时间: 2021-8-28 07:50
本帖最后由 玉米猫 于 2021-8-28 07:58 编辑

我又摸索了一下,现在已经用gnuplot做出了能带图,形状和练习里给的差不多,但纵坐标的值有差别,我查了查,应该是没有扣除费米能级的原因,我再学习一下gnuplot尝试一下。另外想问一下横坐标怎么标注K点?就是在x轴0 10 20 30 40 50处以此标上gamma X M gamma R M吗?小白刚接触,希望老师能够指导一下,如果有更简单的方法,也希望老师能够不吝赐教,谢谢。

附上了我重复练习得到的.bs文件、转换得到的.csv文件、绘制得到的能带图和练习里给出的能带图

作者
Author:
卡开发发    时间: 2021-8-28 11:27
玉米猫 发表于 2021-8-28 07:50
我又摸索了一下,现在已经用gnuplot做出了能带图,形状和练习里给的差不多,但纵坐标的值有差别,我查了查 ...

肯定不是0 10 20...这样。在你的BS文件当中已经标注了special point,你需要逐个对应并标注。
按道理,横轴应该是倒空间中cartresian两个点矢量的模累加起来的,但bs应该给的是分数坐标,可能还需要额外的晶格或倒格矢的信息才能换算到cartresian的情况。
作者
Author:
玉米猫    时间: 2021-8-28 14:20
卡开发发 发表于 2021-8-28 11:27
肯定不是0 10 20...这样。在你的BS文件当中已经标注了special point,你需要逐个对应并标注。
按道理, ...

请问老师有什么好的方法吗?感觉这个数据处理好麻烦
作者
Author:
卡开发发    时间: 2021-8-28 21:39
玉米猫 发表于 2021-8-28 14:20
请问老师有什么好的方法吗?感觉这个数据处理好麻烦

没啥特别好的方法。我不确定ASE对CP2K的后处理搞得怎么样,你可以测试看看。
作者
Author:
丁越    时间: 2021-9-3 17:10
本帖最后由 丁越 于 2021-9-3 19:54 编辑
玉米猫 发表于 2021-8-28 14:20
请问老师有什么好的方法吗?感觉这个数据处理好麻烦

官网给的这个WO3的例子是立方晶系的,我用origin画了一个四方晶系的WO3能带。大概流程是这样的:
1.把晶体的cif(原胞画,超胞画出来的能带是折叠的)文件上传到seekpath网站,产生高对称点路径,并且下方有cp2k的输出文件模板。
2.cp2k_bs2csv.py转化.bs能带数据文件为.csv文件。举例来说我的四方晶系WO3高对称点路径是ΓXMΓZRAZ|XR|MA,因此脚本处理后就会产生9个.csv文件(实际上只是对.bs文件中能量重新排列了一下)。第一个文件对应ΓX,第二个文件对应XM。。。。以此类推。.csv文件中,前三列是k点的分数坐标(seekpath网站上倒空间布里渊区信息那一块就有)。举例来说,对于ΓX,cp2k输入文件中NPOINTS 10,这就相当于从ΓX之间我们均匀撒10个k点,因此我们可以从第一个.csv文件看到均匀间隔的11个k点,之后的几列是每个k点对应的能带能量E(k)。
3.将这9个.csv文件导入origin同一个worksheet中(file,多个ASCII文件导入,导入设置中‘多文件导入模式’选择‘新建行’ )。由于所有相邻k点都是均匀间隔的,我们删去前三列k点坐标中任意两列,保留的一列作为X轴,其数值我们按照0,0.05,0.1,0.15......等间距重新设置。这是因为我们要把ΓXMΓZRAZ|XR|MA画在一条横坐标轴上,所以只需要考虑相邻高对称点相对间隔并且慢慢往上加间距就行。(gamma-X相距0.5,X-M相距0.5....)
4.能量扣除fermi能级能量后作为Y轴
5.高对称点在X轴位置自己数一下,在X轴上如何标注参考http://blog.wangruixing.cn/2019/07/11/band3/

我也是初学小白,对于能带图处理我的理解不知道有没有错误,有错误的地方还请多多指正。另外还有两个问题没有搞清楚,手动@卡开发发老师,还请老师指教:
1.对于掺杂晶胞,或者缺陷等,我们必须要构建超胞模型,那么这种超胞模型cp2k算能带如何构建高对称点路径,以及后续的能带反折叠处理?我知道vaspkit可以处理这种能带反折叠计算,但是对于cp2k我感觉好难啊,完全无从下手
2.seekpath网站上什么要用它产生的晶胞参数和坐标呢?我看它和原始晶胞参数是有些区别的,但是不知道它为什么这样做。





作者
Author:
Aridea    时间: 2021-9-3 21:29
才看到,bs文件格式被开发者更新了,你直接pip install cp2k-output-tools 就行,里面有最新封包的bs2csv的bash命令你搜搜就知道怎么用了,或者你去官网下载这个包提取里面的py文件这样可以修改需要改动的地方
作者
Author:
玉米猫    时间: 2021-9-4 08:52
本帖最后由 玉米猫 于 2021-9-4 09:05 编辑
丁越 发表于 2021-9-3 17:10
官网给的这个WO3的例子是立方晶系的,我用origin画了一个四方晶系的WO3能带。大概流程是这样的:
1.把晶 ...

谢谢回复,我在谷歌论坛上查阅了他们的讨论。现在CP2K应该是只支持纯泛函计算band structure的,因为CP2K目前杂化泛函/ADMM还都不支持K点。对于某些体系纯泛函PBE会显著低估band gap,而目前band structure计算常用的是精度更高的杂化泛函HSE06。CP2K还在快速发展阶段,也是最近的版本才支持K点计算,我认为现阶段band structure计算还是用VASP比较好,也期待CP2K的进一步发展。

对于你的问题,我认为可以用MS的CASTEP生成高对称点路径来计算(就是用MS来代替seekpath)




作者
Author:
玉米猫    时间: 2021-9-4 08:54
Aridea 发表于 2021-9-3 21:29
才看到,bs文件格式被开发者更新了,你直接pip install cp2k-output-tools 就行,里面有最新封包的bs2csv的 ...

谢谢回复,我就是按照你说的方法进行的,目前也都没问题了。现在发现CP2K计算band structure只支持纯泛函,所以打算尝试一下VASP。

作者
Author:
卡开发发    时间: 2021-9-4 12:39
丁越 发表于 2021-9-3 17:10
官网给的这个WO3的例子是立方晶系的,我用origin画了一个四方晶系的WO3能带。大概流程是这样的:
1.把晶 ...

0、按道理这些长度是按照倒空间的长度来定的,你计算一个长度肯定是通过Cartesian坐标去算,而这里给的是分数坐标,按道理要通过倒格矢G去换算,也就是kpoint_cart=dot(kpoint_frac,G)。
1、unfolding的部分我其实不是很熟悉算法,vaspkit我也不怎么用。其实可以提供文献来研究下或者你也可以根据vaspkit输入的需求自己写程序将cp2k的结果fake成vasp的输出。
2、应该犯不上用seekpath找,ase里面的dft.kpoints类其实很有用,不过我不怎么用cp2k,所以转换格式的话你可以自己研究下,有问题欢迎讨论。

作者
Author:
卡开发发    时间: 2021-9-4 12:41
玉米猫 发表于 2021-9-4 08:52
谢谢回复,我在谷歌论坛上查阅了他们的讨论。现在CP2K应该是只支持纯泛函计算band structure的,因为CP2K ...

MS的点可能是对的,但是path不太好。vasp对大体系是不快,但实在不行比如DFT-1/2或MBJ泛函可以试试,个别体系有奇效。
作者
Author:
madhatter    时间: 2022-3-3 00:27
所以现在cp2k下,超胞结构的能带还能算吗?在有ms的前提下。是不是还是用ms比较好
作者
Author:
卡开发发    时间: 2022-3-3 08:55
madhatter 发表于 2022-3-3 00:27
所以现在cp2k下,超胞结构的能带还能算吗?在有ms的前提下。是不是还是用ms比较好

算肯定可以算,前后处理需要想一些办法。MS的话看模块,算能带的话通常要多个k点,且对固体的晶格参数还是比较敏感的,个别体系还需要DFT+U,这样看DMol3未必是好的选择,CASTEP能满足这些点,从Delta测试集的结果看CASTEP的赝势确实也要更可靠一些,ONETEP用的是超胞法,反折叠这些工作搞不好得自己写程序折腾,但具体我不大了解。用什么其实无所谓,既然有版权找顺手的,解决问题效率高的都没什么问题。
作者
Author:
taoyanxi    时间: 2022-6-29 16:27
请问一下,下载官方给的脚本后执行python cp2k_bs2csv.py WO3.bs命令.发现并未报错,但一直找不到输出的.csv文件,这是哪里出现问题?
作者
Author:
Doria    时间: 2022-9-29 17:31
taoyanxi 发表于 2022-6-29 16:27
请问一下,下载官方给的脚本后执行python cp2k_bs2csv.py WO3.bs命令.发现并未报错,但一直找不到输出的.cs ...

我最开始也是这样,你可以尝试pip install cp2k-output-tools后直接运行cp2k_bs2csv FileName.bs就可以了
作者
Author:
renj864878110    时间: 2024-1-25 16:37
我用python cp2k-bs.py WO3.bs时,什么也没得到呢?没有产生出WO3.bs.set-1.csv.请问这是怎么回事?
作者
Author:
renj864878110    时间: 2024-1-25 16:38
丁越 发表于 2021-9-3 17:10
官网给的这个WO3的例子是立方晶系的,我用origin画了一个四方晶系的WO3能带。大概流程是这样的:
1.把晶 ...

我用python cp2k-bs.py WO3.bs时,什么也没得到呢?没有产生出WO3.bs.set-1.csv.请问这是怎么回事?
作者
Author:
chenguang    时间: 2024-5-17 11:01
玉米猫 发表于 2021-8-28 07:50
我又摸索了一下,现在已经用gnuplot做出了能带图,形状和练习里给的差不多,但纵坐标的值有差别,我查了查 ...

我也遇到了费米能级的问题,请问如何扣除费米能级
作者
Author:
logzzz    时间: 2024-5-17 15:37
chenguang 发表于 2024-5-17 11:01
我也遇到了费米能级的问题,请问如何扣除费米能级

http://bbs.keinsci.com/thread-44474-1-1.html
作者
Author:
于浩    时间: 2024-8-28 10:59
玉米猫 发表于 2021-9-4 08:52
谢谢回复,我在谷歌论坛上查阅了他们的讨论。现在CP2K应该是只支持纯泛函计算band structure的,因为CP2K ...

我现在得到了一个高对称点路径的文件 完全不知道如何标注 他们写的我看不懂 用的是官网的方法
作者
Author:
于浩    时间: 2024-8-28 11:00
玉米猫 发表于 2021-9-4 08:52
谢谢回复,我在谷歌论坛上查阅了他们的讨论。现在CP2K应该是只支持纯泛函计算band structure的,因为CP2K ...

我现在得到了一个高对称点路径的文件 完全不知道如何标注 他们写的我看不懂 用的是官网的方法




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3