计算化学公社

 找回密码 Forget password
 注册 Register
Views: 11872|回复 Reply: 21
打印 Print 上一主题 Last thread 下一主题 Next thread

[CP2K] 请教利用CP2K输出的.bs文件绘制能带图

[复制链接 Copy URL]

62

帖子

0

威望

1659

eV
积分
1721

Level 5 (御坂)

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

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


3809

帖子

3

威望

1万

eV
积分
20344

Level 6 (一方通行)

围观吃瓜群众

2#
发表于 Post on 2021-8-28 04:26:44 | 只看该作者 Only view this author
要不给个bs的例子看看?我整个python的版本试试。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

62

帖子

0

威望

1659

eV
积分
1721

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2021-8-28 07:50:27 | 只看该作者 Only view this author
本帖最后由 玉米猫 于 2021-8-28 07:58 编辑

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

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

wo3.jpeg (111.96 KB, 下载次数 Times of downloads: 49)

wo3.jpeg

WO3.png (116.81 KB, 下载次数 Times of downloads: 42)

WO3.png

WO3.bs.set-1.csv

13.78 KB, 下载次数 Times of downloads: 51

WO3.bs

45.61 KB, 下载次数 Times of downloads: 43

3809

帖子

3

威望

1万

eV
积分
20344

Level 6 (一方通行)

围观吃瓜群众

4#
发表于 Post on 2021-8-28 11:27:46 | 只看该作者 Only view this author
玉米猫 发表于 2021-8-28 07:50
我又摸索了一下,现在已经用gnuplot做出了能带图,形状和练习里给的差不多,但纵坐标的值有差别,我查了查 ...

肯定不是0 10 20...这样。在你的BS文件当中已经标注了special point,你需要逐个对应并标注。
按道理,横轴应该是倒空间中cartresian两个点矢量的模累加起来的,但bs应该给的是分数坐标,可能还需要额外的晶格或倒格矢的信息才能换算到cartresian的情况。

评分 Rate

参与人数
Participants 1
eV +4 收起 理由
Reason
玉米猫 + 4 正解

查看全部评分 View all ratings

日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

62

帖子

0

威望

1659

eV
积分
1721

Level 5 (御坂)

5#
 楼主 Author| 发表于 Post on 2021-8-28 14:20:13 | 只看该作者 Only view this author
卡开发发 发表于 2021-8-28 11:27
肯定不是0 10 20...这样。在你的BS文件当中已经标注了special point,你需要逐个对应并标注。
按道理, ...

请问老师有什么好的方法吗?感觉这个数据处理好麻烦

3809

帖子

3

威望

1万

eV
积分
20344

Level 6 (一方通行)

围观吃瓜群众

6#
发表于 Post on 2021-8-28 21:39:22 | 只看该作者 Only view this author
玉米猫 发表于 2021-8-28 14:20
请问老师有什么好的方法吗?感觉这个数据处理好麻烦

没啥特别好的方法。我不确定ASE对CP2K的后处理搞得怎么样,你可以测试看看。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

496

帖子

11

威望

4281

eV
积分
4997

Level 6 (一方通行)

7#
发表于 Post on 2021-9-3 17:10:59 | 只看该作者 Only view this author
本帖最后由 丁越 于 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网站上什么要用它产生的晶胞参数和坐标呢?我看它和原始晶胞参数是有些区别的,但是不知道它为什么这样做。




202109031531379052..png (82.25 KB, 下载次数 Times of downloads: 43)

202109031531379052..png

评分 Rate

参与人数
Participants 2
eV +7 收起 理由
Reason
如果有哈 + 3 赞!
玉米猫 + 4 我很赞同

查看全部评分 View all ratings

自由发挥,野蛮生长

148

帖子

0

威望

888

eV
积分
1036

Level 4 (黑子)

8#
发表于 Post on 2021-9-3 21:29:57 | 只看该作者 Only view this author
才看到,bs文件格式被开发者更新了,你直接pip install cp2k-output-tools 就行,里面有最新封包的bs2csv的bash命令你搜搜就知道怎么用了,或者你去官网下载这个包提取里面的py文件这样可以修改需要改动的地方

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
玉米猫 + 2 谢谢

查看全部评分 View all ratings

62

帖子

0

威望

1659

eV
积分
1721

Level 5 (御坂)

9#
 楼主 Author| 发表于 Post on 2021-9-4 08:52:16 | 只看该作者 Only view this author
本帖最后由 玉米猫 于 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)



62

帖子

0

威望

1659

eV
积分
1721

Level 5 (御坂)

10#
 楼主 Author| 发表于 Post on 2021-9-4 08:54:38 | 只看该作者 Only view this author
Aridea 发表于 2021-9-3 21:29
才看到,bs文件格式被开发者更新了,你直接pip install cp2k-output-tools 就行,里面有最新封包的bs2csv的 ...

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

3809

帖子

3

威望

1万

eV
积分
20344

Level 6 (一方通行)

围观吃瓜群众

11#
发表于 Post on 2021-9-4 12:39:17 | 只看该作者 Only view this author
丁越 发表于 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,所以转换格式的话你可以自己研究下,有问题欢迎讨论。

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
丁越 + 5 谢谢老师解答

查看全部评分 View all ratings

日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

3809

帖子

3

威望

1万

eV
积分
20344

Level 6 (一方通行)

围观吃瓜群众

12#
发表于 Post on 2021-9-4 12:41:32 | 只看该作者 Only view this author
玉米猫 发表于 2021-9-4 08:52
谢谢回复,我在谷歌论坛上查阅了他们的讨论。现在CP2K应该是只支持纯泛函计算band structure的,因为CP2K ...

MS的点可能是对的,但是path不太好。vasp对大体系是不快,但实在不行比如DFT-1/2或MBJ泛函可以试试,个别体系有奇效。

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
玉米猫 + 2 谢谢

查看全部评分 View all ratings

日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

63

帖子

0

威望

732

eV
积分
795

Level 4 (黑子)

13#
发表于 Post on 2022-3-3 00:27:03 | 只看该作者 Only view this author
所以现在cp2k下,超胞结构的能带还能算吗?在有ms的前提下。是不是还是用ms比较好

3809

帖子

3

威望

1万

eV
积分
20344

Level 6 (一方通行)

围观吃瓜群众

14#
发表于 Post on 2022-3-3 08:55:25 | 只看该作者 Only view this author
madhatter 发表于 2022-3-3 00:27
所以现在cp2k下,超胞结构的能带还能算吗?在有ms的前提下。是不是还是用ms比较好

算肯定可以算,前后处理需要想一些办法。MS的话看模块,算能带的话通常要多个k点,且对固体的晶格参数还是比较敏感的,个别体系还需要DFT+U,这样看DMol3未必是好的选择,CASTEP能满足这些点,从Delta测试集的结果看CASTEP的赝势确实也要更可靠一些,ONETEP用的是超胞法,反折叠这些工作搞不好得自己写程序折腾,但具体我不大了解。用什么其实无所谓,既然有版权找顺手的,解决问题效率高的都没什么问题。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

1

帖子

0

威望

147

eV
积分
148

Level 2 能力者

15#
发表于 Post on 2022-6-29 16:27:00 | 只看该作者 Only view this author
请问一下,下载官方给的脚本后执行python cp2k_bs2csv.py WO3.bs命令.发现并未报错,但一直找不到输出的.csv文件,这是哪里出现问题?

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-2-22 01:24 , Processed in 0.198407 second(s), 30 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list